

Aquí un ejemplo de constructor, debe pasar la interfaz UART y (si lo desea, pero se recomienda) el pin aux, M0 y M1.
Para instalar la biblioteca, ejecute el siguiente comando:
pip install ebyte-lora-e22 from lora_e22 import LoRaE22
from machine import UART
uart2 = UART ( 2 )
lora = LoRaE22 ( '400T22D' , uart2 , aux_pin = 15 , m0_pin = 21 , m1_pin = 19 ) code = lora . begin ()
print ( "Initialization: {}" , ResponseStatusCode . get_description ( code )) from lora_e22 import LoRaE22 , print_configuration
from lora_e22_operation_constant import ResponseStatusCode
code , configuration = lora . get_configuration ()
print ( "Retrieve configuration: {}" , ResponseStatusCode . get_description ( code ))
print_configuration ( configuration )El resultado
# ----------------------------------------
# HEAD : 0xc1 0x0 0x9
#
# AddH : 0x0
# AddL : 0x0
#
# Chan : 23 -> 433
#
# SpeedParityBit : 0b0 -> 8N1 (Default)
# SpeedUARTDatte : 0b11 -> 9600bps (default)
# SpeedAirDataRate : 0b10 -> 2.4kbps (default)
#
# OptionSubPacketSett: 0b0 -> 240bytes (default)
# OptionTranPower : 0b0 -> 22dBm (Default)
# OptionRSSIAmbientNo: 0b0 -> Disabled (default)
#
# TransModeWORPeriod : 0b11 -> 2000ms (default)
# TransModeTransContr: 0b0 -> WOR Receiver (default)
# TransModeEnableLBT : 0b0 -> Disabled (default)
# TransModeEnableRSSI: 0b0 -> Disabled (default)
# TransModeEnabRepeat: 0b0 -> Disabled (default)
# TransModeFixedTrans: 0b0 -> Transparent transmission (default)
# ----------------------------------------
Puede establecer solo el parámetro Desiderado, el otro se establecerá en el valor predeterminado.
configuration_to_set = Configuration ( '400T22D' )
configuration_to_set . ADDL = 0x02
configuration_to_set . ADDH = 0x01
configuration_to_set . CHAN = 23
configuration_to_set . NETID = 0
configuration_to_set . SPED . airDataRate = AirDataRate . AIR_DATA_RATE_100_96
configuration_to_set . SPED . uartParity = UARTParity . MODE_00_8N1
configuration_to_set . SPED . uartBaudRate = UARTBaudRate . BPS_9600
configuration_to_set . OPTION . subPacketSetting = SubPacketSetting . SPS_064_10
configuration_to_set . OPTION . transmissionPower = TransmissionPower ( '400T22D' ).
get_transmission_power (). POWER_10
# or
# configuration_to_set.OPTION.transmissionPower = TransmissionPower22.POWER_10
configuration_to_set . OPTION . RSSIAmbientNoise = RssiAmbientNoiseEnable . RSSI_AMBIENT_NOISE_ENABLED
configuration_to_set . TRANSMISSION_MODE . WORTransceiverControl = WorTransceiverControl . WOR_TRANSMITTER
configuration_to_set . TRANSMISSION_MODE . enableLBT = LbtEnableByte . LBT_DISABLED
configuration_to_set . TRANSMISSION_MODE . enableRSSI = RssiEnableByte . RSSI_ENABLED
configuration_to_set . TRANSMISSION_MODE . enableRepeater = RepeaterModeEnableByte . REPEATER_DISABLED
configuration_to_set . TRANSMISSION_MODE . fixedTransmission = FixedTransmission . FIXED_TRANSMISSION
configuration_to_set . TRANSMISSION_MODE . WORPeriod = WorPeriod . WOR_1500_010
configuration_to_set . CRYPT . CRYPT_H = 1
configuration_to_set . CRYPT . CRYPT_L = 1
# Set the new configuration on the LoRa module and print the updated configuration to the console
code , confSetted = lora . set_configuration ( configuration_to_set )Creo una clase de constantes para cada parámetro, aquí una lista: Airdatarate, Uartbaudrate, Uartparity, TransmissionPower, ForwardErrorcorrectionSwitch, Wirelesswakeuptime, IODRIVEMODE, TRANSMISIÓN FIJA
Aquí un ejemplo de datos de envío, puede pasar una cadena
lora . send_transparent_message ( 'pippo' ) lora . send_fixed_message ( 0 , 2 , 23 , 'pippo' )Aquí el código receptor
while True :
if lora . available () > 0 :
code , value = lora . receive_message ()
print ( ResponseStatusCode . get_description ( code ))
print ( value )
utime . sleep_ms ( 2000 )Si desea recibir RSSI, también debe habilitarlo en la configuración
configuration_to_set . TRANSMISSION_MODE . enableRSSI = RssiEnableByte . RSSI_ENABLEDy configure el indicador en verdadero en el método Recibe_Message
code , value , rssi = lora . receive_message ( True )Resultado
Success!
pippo
Aquí un ejemplo de datos de envío, puede aprobar un diccionario
lora . send_transparent_dict ({ 'pippo' : 'fixed' , 'pippo2' : 'fixed2' }) lora . send_fixed_dict ( 0 , 0x01 , 23 , { 'pippo' : 'fixed' , 'pippo2' : 'fixed2' })Aquí el código receptor
while True :
if lora . available () > 0 :
code , value = lora . receive_dict ()
print ( ResponseStatusCode . get_description ( code ))
print ( value )
print ( value [ 'pippo' ])
utime . sleep_ms ( 2000 )Si desea recibir RSSI, también debe habilitarlo en la configuración
configuration_to_set . TRANSMISSION_MODE . enableRSSI = RssiEnableByte . RSSI_ENABLEDy configure el indicador en verdadero en el método Recibe_Dict
code , value , rssi = lora . receive_dict ( True )Resultado
Success!
{'pippo': 'fixed', 'pippo2': 'fixed2'}
fixed
https://downloads.arduino.cc/libraries/logs/github.com/xreef/ebyte_lora_e22_series_library/
Puedes pedir el PCB aquí
Instrucción y video de ensamblaje en 6 parte de la guía
Puedes pedir el PCB aquí
Instrucción y video de ensamblaje en 6 parte de la guía
Creo una biblioteca para administrar la serie EBYTE E22 de dispositivos Lora, muy potente, simple y barato dispositivo.
La telemetría de datos inalámbricos de Lora o de largo alcance es una tecnología pionera por SEMTech que funciona a una frecuencia más baja que NRF24L01 (433 MHz, 868 MHz o 916 MHz nuevamente 2.4 GHz para el NRF24L01) pero a las tres veces de la distancia (de 4000m a 10000m).
Lora E22
Puedes encontrar aquí AliExpress (433MHz 4km) - AliExpress (433MHz 10 km)
Consulte mi artículo para obtener un esquema actualizado
Puedes encontrar mi biblioteca aquí.
Para descargar.
Haga clic en el botón Descargas en la esquina superior derecha, cambie el nombre de la carpeta sin comprimir Lora_e22.
Verifique que la carpeta Lora_e22 contenga Lora_e22.cpp y Lora_e22.h.
Coloque la carpeta de biblioteca Lora_e22 su carpeta / bibliotecas /.
Es posible que deba crear la subcarpeta de las bibliotecas si es su primera biblioteca.
Reinicie el ide.
E22
| Pin No. | Artículo de PIN | Dirección del alfiler | Aplicación PIN |
|---|---|---|---|
| 1 | M0 | Entrada (Plegada débil) | Trabajar con M1 y decidir los cuatro modos de operación. Floating no está permitido, puede estar molido. |
| 2 | M1 | Entrada (Plegada débil) | Trabajar con M0 y decidir los cuatro modos de operación. No se permiten flotar, puede estar molido. |
| 3 | Rxd | Aporte | Entradas TTL UART, se conecta a la salida TXD externa (MCU, PC). Se puede configurar como entrada de drenaje abierto o pull-up. |
| 4 | TXD | Producción | Salidas de ttl uART, se conecta a la entrada externa RXD (MCU, PC). Se puede configurar como salida de drenaje abierto o push-pull |
5 | Aux | Producción | Por indicando lo stato di Funzionamento del Modulo e Riattivare l'c Mcu Esterno. Durante la Procedura di Inizializzazione di Autocontrollo, Il Pin Emette una Bassa tensión. Può Essere Configurato Come Uscita Open-drrain o salida Push-Pull (è consentito non metterlo a terra, ma se hai problemi, ad esempio ti si Si congele il è è preferibile Mettere una Restistenza di Da 4.7ko meglio Collegaro al apacitude). |
| 6 | VCC | Fuente de alimentación 2.3V ~ 5.5V DC | |
| 7 | Gnd | Suelo |
Como puede ver, puede establecer varios modos a través de pines M0 y M1.
| Modo | M1 | M0 | Explicación |
|---|---|---|---|
| Normal | 0 | 0 | UART y el canal inalámbrico están abiertos, la transmisión transparente está activada (admite la configuración a través del aire a través del comando especial) |
| Modo de trabajo | 0 | 1 | Se puede definir como transmisor WOR y receptor WORS |
| Modo de configuración | 1 | 0 | Los usuarios pueden acceder al registro a través del puerto serie para controlar el estado de trabajo del módulo |
| Modo de suspensión profunda | 1 | 1 | Modo de suspensión |
Como puede ver, hay algunos pines que se pueden usar de manera estática, pero si la conecta a la biblioteca que obtiene en rendimiento y puede controlar todo el modo a través del software, pero vamos a explicar mejor a continuación.
Como ya digo que no es importante conectar todo el PIN a la salida del microcontrolador, puede poner pines M0 y M1 a alta o baja para obtener una configuración desiderada, y si no conecta AUX, la biblioteca establece un retraso razonable para asegurarse de que la operación esté completa .
Al transmitir datos se pueden usar para despertar MCU externo y devolver un alto al final de la transferencia de datos.
Lora E22 Aux Pin en la transmisión
Al recibir AUX bajando y regrese alto cuando el búfer está vacío.
Lora E22 Aux Pin en la recepción
También se utiliza para la autoevaluación para restaurar el funcionamiento normal (en modo de encendido y sueño/programa).
Lora E22 Aux Pin en la autoevaluación
El esquema de conexión ESP8266 es más simple porque funciona a la misma tensión de comunicaciones lógicas (3.3V).
Lora E22 TTL 100 WEMOS D1 Totalmente conectado
Es importante agregar resistencia pull-up (4,7 kohm) para obtener una buena estabilidad.
| E22 | ESP8266 |
|---|---|
| M0 | D7 |
| M1 | D6 |
| Tx | Pin D2 (pullup 4,7kΩ) |
| Rx | Pin D3 (pullup 4,7kΩ) |
| Aux | Pin D5 (pullup 4,7kΩ) |
| VCC | 5V (pero trabaja con menos potencia en 3.3V) |
| Gnd | Gnd |
Esquema de conexión similar para ESP32, pero para RX y TX usamos RX2 y TX2, porque por defecto ESP32 no tiene SoftWareserial pero tenemos 3 serías.
EBYTE LORA E22 Dispositivo ESP32 Kit de desarrollo V1 Conexión completa
| E22 | ESP32 |
|---|---|
| M0 | D21 |
| M1 | D19 |
| Tx | PIN RX2 (pullup 4,7kΩ) |
| Rx | Pin TX3 (pullup 4,7kΩ) |
| Aux | Pin D18 (pullup 4,7kΩ) |
| VCC | 5V (pero trabaja con menos potencia en 3.3V) |
| Gnd | Gnd |
| Adjunta | Byte de dirección alta del módulo (el 00h predeterminado) | 00h-ffh |
| Complemento | Byte de dirección baja del módulo (el 00H predeterminado) | 00h-ffh |
| Acelerado | Información sobre la velocidad de datos Bit de paridad y la velocidad de datos del aire | |
| Chan | Canal de comunicación (410m + chan*1m), predeterminado 17H (433MHz), válido solo para el dispositivo de 433MHz Chek a continuación para verificar la frecuencia correcta de su dispositivo | 00h-1fh |
| OPCIÓN | Tipo de transmisión, tamaño de paquete, permitir un mensaje especial | |
| Transmission_mode | Mucho parámetro que especifica la modalidad de transmisión |
OPCIÓN
Tipo de transmisión, configuración de pull-up, tiempo de atención, FEC, potencia de transmisión
Bit de paridad UART: el modo UART puede ser diferente entre las fiestas de comunicación
| 4 | 3 | Bit de paridad de uart | Valor constante |
| 0 | 0 | 8N1 (predeterminado) | MODE_00_8N1 |
| 0 | 1 | 8O1 | MODE_01_8O1 |
| 1 | 0 | 8 E1 | MODE_10_8E1 |
| 1 | 1 | 8n1 (igual a 00) | MODE_11_8N1 |
UART BAUD Tasa: la tasa de baudios de UART puede ser diferente entre las partes de comunicación, la tasa de baudios UART no tiene nada que ver con los parámetros de transmisión inalámbrica y no afectará las características inalámbricas de transmisión / recepción.
| 7 | 6 | 5 | TTL UART BAUD TASA (BPS) | Valor constante |
| 0 | 0 | 0 | 1200 | Uart_bps_1200 |
| 0 | 0 | 1 | 2400 | Uart_bps_2400 |
| 0 | 1 | 0 | 4800 | Uart_bps_4800 |
| 0 | 1 | 1 | 9600 (predeterminado) | Uart_bps_9600 |
| 1 | 0 | 0 | 19200 | Uart_bps_19200 |
| 1 | 0 | 1 | 38400 | Uart_bps_38400 |
| 1 | 1 | 0 | 57600 | Uart_bps_57600 |
| 1 | 1 | 1 | 115200 | Uart_bps_115200 |
Velocidad de datos del aire: cuanto menor sea la velocidad de datos del aire, más larga es la distancia de transmisión, un mejor rendimiento anti-interferencia y un tiempo de transmisión más largo, la velocidad de datos del aire debe mantener lo mismo para ambas partes de comunicación.
| 2 | 1 | 0 | Velocidad de datos del aire (bps) | Valor constante |
| 0 | 0 | 0 | 0.3k | AIR_DATA_RATE_000_03 |
| 0 | 0 | 1 | 1.2k | AIR_DATA_RATE_001_12 |
| 0 | 1 | 0 | 2.4k (predeterminado) | AIR_DATA_RATE_010_24 |
| 0 | 1 | 1 | 4.8k | AIR_DATA_RATE_011_48 |
| 1 | 0 | 0 | 9.6k | AIR_DATA_RATE_100_96 |
| 1 | 0 | 1 | 19.2k | AIR_DATA_RATE_101_192 |
| 1 | 1 | 0 | 38.4k | AIR_DATA_RATE_110_384 |
| 1 | 1 | 1 | 62.5k | AIR_DATA_RATE_111_625 |
#### Sub paquete
Esta es la longitud máxima del paquete.
Cuando los datos son más pequeños que la longitud del subtract, la salida en serie del extremo receptor es una salida continua ininterrumpida. Cuando los datos son más grandes que la longitud del subconjunto, el puerto serie de recepción de la finalización generará el subconjunto.
| 7 | 6 | Tamaño de paquete | Valor constante |
| 0 | 0 | 240bytes (predeterminado) | SPS_240_00 |
| 0 | 1 | 128bytes | SPS_128_01 |
| 1 | 0 | 64bytes | SPS_064_10 |
| 1 | 1 | 32bytes | SPS_032_11 |
#### RSSI Ambient Noise Habilitar
Este comando puede habilitar/deshabilitar el tipo de administración de RSSI, es importante administrar la configuración remota, prestar atención no es el parámetro RSSI en el mensaje.
Cuando está habilitado, el comando C0 C1 C2 C3 se puede enviar en el modo de transmisión o el modo de transmisión WOR para leer el registro. Registro 0x00: Registro RSSI de ruido ambiental actual 0x01: RSSI Cuando los datos se recibieron la última vez.
| 5 | RSSI Ambient Noise Habilitar | Valor constante |
| 0 | Permitir | Rssi_ambient_noise_enabled |
| 1 | Deshabilitar (predeterminado) | Rssi_ambient_noise_disabled |
#### Habilitar RSSI
Cuando está habilitado, el módulo recibe datos inalámbricos y seguirá un byte de resistencia RSSI después de la salida a través del puerto serie TXD
#### Tipo de transmisión
Modo de transmisión: en el modo de transmisión fijo, los primeros tres bytes de la trama de datos de cada usuario se pueden usar como dirección y canal altos/bajos. El módulo cambia su dirección y canal cuando se transmite. Y volverá a la configuración original después de completar el proceso.
#### Habilitar la función del repetidor
#### Datos de monitor antes de la transmisión
Cuando cuando se habilitan, los datos inalámbricos se monitorearán antes de que se transmita, lo que puede evitar la interferencia en cierta medida, pero pueden causar retraso en los datos.
#### wor
Transmisor WOR: las funciones de recepción y transmisión del módulo se activan, y se agrega un código de atención al transmitir datos. Recibir está activado.
Receptor WOR: el módulo no puede transmitir datos y funciona en modo de monitoreo WOR. El período de monitoreo es el siguiente (ciclo WOR), que puede ahorrar mucha potencia.
#### ciclo wor
Si WORS se transmite: después de que el receptor WOR reciba los datos inalámbricos y los genera a través del puerto serie, esperará 1000 ms antes de ingresar al WOR nuevamente. Los usuarios pueden ingresar los datos del puerto serie y devolverlos a través de la inalámbrica durante este período. Cada byte serie se actualizará durante 1000 ms. Los usuarios deben transmitir el primer byte dentro de 1000 ms.
Primero debemos introducir un método simple pero útil para verificar si algo está en el búfer receptor
int available ();Es simplemente devolver cuántos bytes tiene en la transmisión actual.
El modo de transmisión normal/transparente se usa para enviar mensajes a todos los dispositivos con la misma dirección y canal.
Escenarios de transmisión de Lora E22, las líneas son canales
La transmisión fija tiene más escenarios
Escenarios de transmisión de Lora E22, las líneas son canales
Ahora tiene toda la información para hacer su trabajo, pero creo que es importante mostrar algunos ejemplos realistas para desanimar mejor todas las posibilidades.
Dispositivo Ebyte Lora E22 para Arduino, ESP32 o ESP8266: Configuración y uso básico
Dispositivo Ebyte Lora E22 para Arduino, ESP32 o ESP8266: Biblioteca
Dispositivo Ebyte Lora E22 para Arduino, ESP32 o ESP8266: Configuración
Dispositivo Ebyte Lora E22 para Arduino, ESP32 o ESP8266: Transmisión fija y RSSI
Dispositivo Ebyte Lora E22 para Arduino, ESP32 o ESP8266: Guardado de energía y envío de datos estructurados
Dispositivo Ebyte Lora E22 para Arduino, ESP32 o ESP8266: Modo repetidor y configuraciones remotas
Dispositivo Ebyte Lora E22 para Arduino, ESP32 o ESP8266: Microcontrolador WOR y Arduino Shield
Dispositivo Ebyte Lora E22 para Arduino, ESP32 o ESP8266: Microcontrolador WOR y WEMOS D1 SHIELD
Dispositivo Ebyte Lora E22 para Arduino, ESP32 o ESP8266: Microcontrolador WOR y ESP32 Dev V1 Shield