Es una familia de transceptores LORA. Se comunica con el microcontrolador por el puerto serie.
A continuación, a modo de ejemplo, se ofrece una visión general de algunos representantes de la serie E220:
Descripción general del modelo de la serie LoRa E220 (fuente: hoja de datos E220-900T22D)
Datos técnicos (Ejemplo E220-900T22D)
Puede encontrar hojas de datos y manuales en el sitio web de Chengdu Ebyte . Por ejemplo, aquí tiene los datos técnicos del modelo E220-900T22D:
Datos técnicos del módulo LoRa E220-900T22D (fuente: hoja de datos del E220-900T22D)
Existe otra hoja de datos para el mismo módulo, pero con información ligeramente diferente sobre el suministro de voltaje óptimo:
Versión 2 del módulo LoRa E220-900T22D.
En caso de duda, pruebe a ver si obtiene mejores resultados con 5 voltios. Sin embargo, es importante tener en cuenta que no todos los pines admiten 5 voltios. Por lo tanto, para MCU de 5 voltios, debería usar variadores de nivel o divisores de tensión.
Distribución de pines de las series LoRa E220
Distribución de pines de LoRa E220
GND / VCC : Fuente de alimentación
AUX : Indica el estado de los buffers de datos para envío y recepción y se utiliza para la autocomprobación.
RX/TX : Comunicación en serie
M0 / M1 (E220) : Control de los cuatro modos de funcionamiento:
M0 = BAJO, M1 = BAJO : Modo normal
M0 = ALTO, M1 = BAJO : Transmisor WOR
M0 = BAJO, M1 = ALTO : Receptor WOR
M0 = ALTO, M1 = ALTO : Sueño profundo
Bibliotecas para las series Ebyte E220
Seleccioné las bibliotecas de Renzo Mischianti para controlar los módulos. Puedes descargarlas aquí desde GitHub:
Biblioteca EByte_LoRa_Serie E220
…o instalarlo a través del administrador de bibliotecas del IDE de Arduino.
Además, el diligente Renzo Mischianti ha creado un tutorial de varias partes para cada módulo. Aquí están los enlaces a las primeras partes: Tutorial E220.
Conexiones para el Arduino Nano
En este artículo, utilizo el clásico Arduino Nano como placa de control. Lo conecté al módulo E220:
Conexión del módulo E220 al Arduino Nano
Algunos comentarios sobre esto:
Si no desea utilizar los modos WOR (Wake On Radio) o de apagado, puede conectar M0 y M1 a GND.
En principio, también se puede dejar AUX desconectado. En este caso, el microcontrolador no sabe cuándo se completa la transferencia de datos, pero la biblioteca proporciona un tiempo de espera suficiente.
Al utilizar una placa de 5 voltios, debe utilizar un cambiador de nivel o un divisor de voltaje (por ejemplo, 2 kΩ / 1 kΩ) para conectar M0, M1, RX a los pines de la placa.
AUX, RX y TX requieren una resistencia pull-up.
Se pueden encontrar circuitos de ejemplo para otras placas MCU en los tutoriales de Renzo Mischianti.
Las antenas que utilicé para los módulos E220-900T22D eran versiones especiales con base magnética para 868 MHz. Están disponibles por menos de 10 € en tiendas online.
Así es como se veía mi configuración en la placa de pruebas:
Módulo LoRa E220 conectado a un Arduino Nano en la placa de pruebas
Cómo realizar ajustes
Boceto de configuración utilizando la serie de módulos E220
Las bibliotecas incluyen bocetos de ejemplo independientes para configurar y operar los módulos. Utilice setConfiguration.ino para configurar los ajustes y getConfiguration.ino para consultarlos. Estos ajustes se conservan incluso si se desconecta la alimentación, siempre que se seleccione el parámetro WRITE_CFG_PWR_DWN_SAVE al guardar la configuración (línea 62 del siguiente boceto).
Al abrir setConfiguration.ino, puede que su tamaño le sobrepase. Sin embargo, la mayor parte está comentada y muchos elementos se repiten. La sección superior contiene varios ejemplos de creación de objetos para diferentes placas. La sección central contiene ejemplos de configuración listos para usar que puede descomentar fácilmente. Al final encontrará las funciones para mostrar la configuración.
He reducido setConfiguration.ino (módulo E220) a lo esencial para su uso en un Arduino Nano. Además, he añadido algunas líneas:
Las líneas 1 a 5 se utilizan para generar la frecuencia correcta. Simplemente descomente la línea con el rango de frecuencia correcto.
Las líneas 6 y 7 son relevantes para seleccionar la intensidad de la señal.
La línea 8 garantiza que las configuraciones se muestren en detalle.
Las líneas 57 y 58 le permiten cifrar sus mensajes individualmente.
setConfiguration_modified.ino
// #define FREQUENCY_433 // valor predeterminado sin conjunto
// #define FRECUENCIA_170
// #define FRECUENCIA_470
#define FRECUENCIA_868
// #define FRECUENCIA_915
// #define E220_22 // valor predeterminado sin conjunto
// #define E220_30 // descomente en caso de utilizar un E220...T30D o E220...T30S
#define LoRa_E220_DEBUG // para imprimir la configuración
#include "LoRa_E220.h"
SoftwareSerial mySerial ( 4 , 5 ) ; // Arduino RX <-- e220 TX, Arduino TX --> e220 RX
LoRa_E220 e220ttl ( &mySerial, 3 , 7 , 6 ) ; //AUX M0 M1
// LoRa_E220 e220ttl(4, 5, 3, 7, 6); // función alternativa para crear el objeto LoRa_E220
void printParameters ( struct Configuración configuración ) ;
void printModuleInformation ( struct ModuleInformation moduleInformation ) ;
configuración vacía () {
Serie.begin ( 9600 ) ;
mientras ( !Serial ){} ;
retraso ( 500 ) ;
Serie.println ( ) ;
// Iniciar todos los pines y UART
e220ttl.begin ( ) ;
RespuestaStructContainer c;
c = e220ttl.getConfiguration () ;
// Es importante obtener el puntero de configuración antes de cualquier otra operación
Configuración configuración = * ( Configuración * ) c. datos ;
Serial.println ( c.status.getResponseDescription ( ) ) ;
Serial.println ( c.status.code ) ;
printParameters ( configuración ) ;
// ----------------------- TRANSPARENTE PREDETERMINADO -----------------------
configuración. ADDL = 0x02 ; // Byte bajo de dirección
configuración. ADDH = 0x00 ; // Byte alto de dirección
configuración. CHAN = 18 ; // 868 MHz para módulos Exxx-900, elija 23 para Exxx-400 para establecer 433 MHz
configuración. SPED . uartBaudRate = UART_BPS_9600; // Velocidad en baudios serie
configuración. SPED . airDataRate = AIR_DATA_RATE_010_24; // Velocidad en baudios del aire
configuración. SPED . uartParity = MODE_00_8N1; // Bit de paridad
configuración. OPCIÓN . subPacketSetting = SPS_200_00; // Tamaño del paquete
configuración. OPCIÓN . RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED; // Se necesita enviar un comando especial
configuración. OPCIÓN . transmisiónPower = POWER_22; // Potencia del dispositivo
configuración. TRANSMISSION_MODE . enableRSSI = RSSI_DISABLED; // Habilitar información RSSI
configuración. MODO_DE_TRANSMISIÓN . Transmisión_fija = TRANSMISIÓN_TRANSPARENTE FT; // Modo de transmisión
configuración. TRANSMISSION_MODE . enableLBT = LBT_DISABLED; // Verificar interferencia
configuración. MODO DE TRANSMISIÓN . PERIODO DE ORO = WOR_2000_011; // Sincronización de WOR
configuración. CRYPT . CRYPT_H = 0x00 ; // byte alto de cifrado, predeterminado: 0x00
configuración. CRYPT . CRYPT_L = 0x00 ; // byte bajo de cifrado, predeterminado: 0x00
/* Se modificó la configuración y se estableció que se mantenga la configuración; elegido
WRITE_CFG_PWR_DWN_LOSE para no guardar la configuración de forma permanente */
ResponseStatus rs = e220ttl.setConfiguration ( configuración , WRITE_CFG_PWR_DWN_SAVE ) ;
Serie.println ( rs.getResponseDescription ( ) ) ;
Serial.println ( rs.código ) ;
c = e220ttl.getConfiguration () ;
// Es importante obtener el puntero de configuración antes de cualquier otra operación
configuración = * ( Configuración * ) c. datos ;
Serial.println ( c.status.getResponseDescription ( ) ) ;
Serial.println ( c.status.code ) ;
printParameters ( configuración ) ;
c. cerrar () ;
}
bucle vacío () {
}
void printParameters ( struct Configuración configuración ) {
DEBUG_PRINTLN ( "----------------------------------------" ) ;
DEBUG_PRINT ( F ( "HEAD: " )) ; DEBUG_PRINT ( configuración.COMANDO , HEX ) ; DEBUG_PRINT ( " " ) ; DEBUG_PRINT ( configuración.DIRECCIÓN_INICIAL , HEX ) ; DEBUG_PRINT ( " " ) ; DEBUG_PRINTLN ( configuración.LENGHT , HEX ) ;
DEBUG_PRINTLN ( F ( " " )) ;
DEBUG_PRINT ( F ( "AddH:" )) ; DEBUG_PRINTLN ( configuración.ADDH , HEX ) ;
DEBUG_PRINT ( F ( "AddL:" )) ; DEBUG_PRINTLN ( configuracion.ADDL , HEX ) ;
DEBUG_PRINTLN ( F ( " " )) ;
DEBUG_PRINT ( F ( " Chan:" )) ; DEBUG_PRINT ( configuración.CHAN ,DEC ) ; DEBUG_PRINT ( " ->" ) ; DEBUG_PRINTLN ( configuración.getChannelDescription ()) ;
DEBUG_PRINTLN ( F ( " " )) ;
DEBUG_PRINT ( F ( " SpeedParityBit: " )) ; DEBUG_PRINT ( configuración.SPED.uartParity , BIN ) ; DEBUG_PRINT ( "- > " ) ; DEBUG_PRINTLN ( configuración.SPED.getUARTParityDescription ( ) ) ;
DEBUG_PRINT ( F ( " SpeedUARTFecha : " ) ) ; DEBUG_PRINT ( configuración.SPED.uartBaudRate , BIN ) ; DEBUG_PRINT ( "->" ) ; DEBUG_PRINTLN ( configuración.SPED.getUARTBaudRateDescription ( ) ) ;
DEBUG_PRINT ( F ( " SpeedAirDataRate: " ) ) ; DEBUG_PRINT ( configuración.SPED.airDataRate , BIN ) ; DEBUG_PRINT ( "-> " ) ; DEBUG_PRINTLN ( configuración.SPED.getAirDataRateDescription ( ) ) ;
DEBUG_PRINTLN ( F ( " " )) ;
DEBUG_PRINT ( F ( " OptionSubPacketSett : " )) ; DEBUG_PRINT ( configuracion.OPCION.subPacketSetting , BIN ) ; DEBUG_PRINT ( " - >" ) ; DEBUG_PRINTLN ( configuracion.OPCION.getSubPacketSetting ( )) ;
DEBUG_PRINT ( F ( " OpcionPotenciaTransmision: " ) ) ; DEBUG_PRINT ( configuracion.OPCION.PotenciaTransmision , BIN ) ; DEBUG_PRINT ( " - > " ) ; DEBUG_PRINTLN ( configuracion.OPCION.obtenerDescripciónPotenciaTransmision ( ) ) ;
DEBUG_PRINT ( F ( " OpciónRSSIAmbientNo: " )) ; DEBUG_PRINT ( configuración.OPCIÓN.RSSIAmbientNoise , BIN ) ; DEBUG_PRINT ( " - > " ) ; DEBUG_PRINTLN ( configuración.OPCIÓN.getRSSIAmbientNoiseEnable ( ) ) ;
DEBUG_PRINTLN ( F ( " " )) ;
DEBUG_PRINT ( F ( " TransModeWORPeriod:" ) ) ; DEBUG_PRINT ( configuración.MODO_TRANSMISIÓN.WORPeriod ,BIN ) ; DEBUG_PRINT ( " -> " ) ; DEBUG_PRINTLN ( configuración.MODO_TRANSMISIÓN.getWORPeriodByParamsDescription ( ) ) ;
DEBUG_PRINT ( F ( " TransModeEnableLBT:" )) ; DEBUG_PRINT ( configuración.MODO_TRANSMISIÓN.enableLBT , BIN ) ; DEBUG_PRINT ( "- > " ) ; DEBUG_PRINTLN ( configuración.MODO_TRANSMISIÓN.getLBTEnableByteDescription ( ) ) ;
DEBUG_PRINT ( F ( " TransModeEnableRSSI: " )) ; DEBUG_PRINT ( configuración.MODO_TRANSMISIÓN.enableRSSI , BIN ) ; DEBUG_PRINT ( "- > " ) ; DEBUG_PRINTLN ( configuración.MODO_TRANSMISIÓN.getRSSIEnableByteDescription ( ) ) ;
DEBUG_PRINT ( F ( " TransModeFixedTrans: " )) ; DEBUG_PRINT ( configuración.MODO_TRANSMISIÓN.fixedTransmission , BIN ) ; DEBUG_PRINT ( " -> " ) ; DEBUG_PRINTLN ( configuración.MODO_TRANSMISIÓN.getFixedTransmissionDescription ( ) ) ;
DEBUG_PRINTLN ( "----------------------------------------" ) ;
}
void printModuleInformation ( estructura ModuleInformation moduleInformation ) {
Serie.println ( "---------------------------------------- " ) ;
DEBUG_PRINT ( F ( "HEAD: " )) ; DEBUG_PRINT ( moduleInformation.COMMAND , HEX ) ; DEBUG_PRINT ( " " ) ; DEBUG_PRINT ( moduleInformation.STARTING_ADDRESS , HEX ) ; DEBUG_PRINT ( " " ) ; DEBUG_PRINTLN ( moduleInformation.LENGHT , DEC ) ;
Serie.print ( F ( " N.º de modelo: " ) ) ; Serie.println ( moduleInformation.model , HEX ) ;
Serial.print ( F ( " Versión: " ) ) ; Serial.println ( moduleInformation.version , HEX ) ;
Serial.print ( F ( " Características:" ) ) ; Serial.println ( moduleInformation.características , HEX ) ;
Serie.println ( "---------------------------------------- " ) ;
}
Otros esquemas de conexión
Conexiones del MolinsSat 2024.









No hay comentarios:
Publicar un comentario