Versión 6.2.0, Datos: 29 de enero de 2020
Autor: M. Westenberg ([email protected])
Copyright: M. Westenberg ([email protected])
Reservados todos los derechos. Este programa y los materiales adjuntos están disponibles bajo los términos de la licencia MIT que acompaña a esta distribución, y está disponible en https://opensource.org/licenses/mit-license.php
Este programa se distribuye con la esperanza de que sea útil, pero sin ninguna garantía; Sin siquiera la garantía implícita de comerciabilidad o estado físico para un propósito particular.
Mantenido por Maarten Westenberg ([email protected])
En primer lugar: lea este archivo y documentación, debe contener la mayor parte de la información que necesita para obtener. Desafortunadamente, no tengo tiempo para hacer un seguimiento de todos los correos electrónicos, y como la mayoría de la información, incluidos los pin outs, etc., están contenidos en estas páginas, espero que tenga tiempo para leerlos y publicar cualquier pregunta restante.
Tengo más de 10 tableros WEMOS D1 Mini en funcionamiento, algunos yo mismo construí, más de más de 10 en Hallard, 3 en Comresult y 4 Boards ESP32. Todos funcionan sin problemas en este código. Sin embargo, encontré que las buenas articulaciones y el cableado de soldadura marcan la diferencia, por lo que si obtiene restablecimiento/errores que no puede explicar, por favor eche un segundo vistazo a su cableado.
Este repositorio contiene una implementación de prueba de concepto de una puerta de enlace Lorawan de un solo canal para el ESP8266. La versión inicial 5.2 también es compatible con el ESP32 de TTGO (y otros). El software implementa una puerta de enlace Lora estándar con las siguientes excepciones y cambios:
Esta puerta de enlace Lora no es una puerta de enlace completa, pero implementa solo una puerta de enlace de una frecuencia de un canal/una de una frecuencia. La cantidad mínima de frecuencias respaldadas por una puerta de enlace completa es 3, la mayoría de los soportes 9 o más frecuencias. Este software comenzó como una prueba de concepto para demostrar que un solo chip RRFM95 de bajo costo que estaba presente en casi todos los nodos Lora en Europa podría usarse como una alternativa barata a las puertas de enlace completas mucho más caras que estaban utilizando el chip SX1301.
Como el software de esta puerta de enlace a menudo se utilizará durante la fase de desarrollo de un proyecto o en situaciones de demostración, el software es flexible y se puede configurar fácilmente de acuerdo con los requisitos del entorno o del cliente. Hay dos formas de interactuar con el software:
La documentación completa de la puerta de enlace de un solo canal se encuentra en Things4u.github.io, mire la guía de hardware debajo del capítulo de la puerta de enlace.
La puerta de enlace de un solo canal se ha probado en una puerta de enlace con el WEMOS D1 Mini, utilizando un transceptor Hoperf RFM95W. Las pruebas se realizaron en la versión 868 de Lora y algunas pruebas en 433 MHz. Los nodos Lora probados nuevamente esta puerta de enlace son:
El código ha sido probado en al menos 8 tableros de puerta de enlace separados, tanto en base a Hallard como en las tablas Comreso. Todavía estoy trabajando en el pin-out y funciones ESP32 (se espera pronto).
Se recomienda compilar e iniciar la puerta de enlace de un solo canal con la menor cantidad de modificatones posible. Esto significa que debe usar la configuración predeterminada en los 2 archivos de configuración tanto como sea posible y solo cambiar el SSID/contraseña para su configuración WiFi y los pines de su ESP8266 que usa en Loramodem.h. Esta sección describe el mínimo de configuración necesario para obtener una puerta de enlace de trabajo que se puede configurar más a fondo utilizando la página web.
A través del administrador de la biblioteca:
Ahora tu puerta de enlace debería estar corriendo. Use la página web para establecer "depuración" en 1 y debería poder ver los paquetes que ingresan en el monitor en serie.
Hay dos formas de cambiar la configuración de la puerta de enlace de un solo canal:
Donde tiene una opción, la opción 2 es mucho más amigable y útil.
El archivo configgway.h contiene la configuración de puerta de enlace configurable del usuario. Todos tienen sus definiciones establecidas a través de declaraciones #Define. En general, establecer un #define en 1 habilitará la función y la configurar en 0 la deshabilitará.
Además, algunas configuraciones se pueden inicializar configurando su valor con un #define, pero se pueden cambiar en tiempo de ejecución en la interfaz web. Para algunas configuraciones, deshabilitar la función con un #define también eliminará la función del servidor web.
Nota sobre el uso de la memoria: el ESP8266 tiene una enorme cantidad de memoria disponible para el sistema de archivos de espacio y spiffs. Sin embargo, la memoria disponible para el montón y las variables se limita a aproximadamente 80k bytes (para el ESP-32, esto es más alto). Se recomienda al usuario que desactive las funciones no utilizadas para ahorrar en el uso de la memoria. Si el montón cae por debajo de 18 kbytes, algunas funciones pueden no comportarse como se esperaba (en caso extremo, el programa puede bloquearse).
El archivo Confignode.h se usa para establecer el punto de acceso WiFi y la estructura de los sensores conocidos en la puerta de enlace de 1 canal. La configuración de los puntos de acceso WiFi conocidos (SSID y contraseña) debe realizarse en el momento de la compilación.
Cuando la puerta de enlace no solo se usa como puerta de enlace, sino también para fines de depuración, el usado puede especificar no solo el nombre del nodo del sensor sino también descifrar para ciertos nodos el mensaje.
El usuario puede determinar si la consola USB se usa o no para los mensajes de salida. Al configurar _DUSB a 0, toda la salida por serie está deshabilitada (en realidad, las declaraciones en serie no están incluidas en el código).
#define _dusb 1
Defina la clase de operación que es compatible con la puerta de enlace. La clase A es compatible y contiene la operación básica para los sensores de batería.
La clase B contiene el modo de operación Beacon/Battery. La puerta de enlace enviará un faro a los sensores conectados que les permite sincronizar la mensajería del enlace descendente.
El modo de operación de Clase C (continuo) contiene soporte para dispositivos que probablemente no funcionen con batería y escuchen la red en todo momento. Como resultado, la latencia de estos dispositivos también es más corta que para los dispositivos de clase A. Los dispositivos de clase C no dependen de la energía de la batería y extenderán las ventanas de recepción hasta la próxima ventana de transmisión. De hecho, solo las transmisiones harán que el dispositivo abortes escuche mientras dure esta transmisión. Los dispositivos de clase C no pueden hacer la operación de Clase B.
#define _class "A"
Todos los dispositivos comenzarán como dispositivos de Clase A, y pueden decidir "actualizar" a la Clase B o C.. También la puerta de enlace puede o no admitir la Clase B, que es un Superset de la Clase A. Nota: Solo la clase A es compatible con
Admitimos dos configuraciones de PIN-Out fuera de la caja: Hallard y Compresult. Si usa uno de estos dos, simplemente configure el parámetro en el valor correcto. Si sus definiciones de PIN son diferentes, actualice el archivo loramodem.h para reflejar esta configuración. 1: Hallard 2: Comreso Pin Out 3: ESP32 Pin Out 4: Otro, Defina el tuyo en Loramodem.h
#define _pin_out 1
El siguiente parámetro debe establecerse en 0 en circunstancias normales. Permite que el sistema se formatea el sistema de archivos spiffs.
#define spiff_format 0
Establezca el factor _sporting en el valor deseado SF7, SF8 - SF12. Tenga en cuenta que este valor está estrechamente relacionado con el valor utilizado para _CAD. Si _CAD está habilitado, la puerta de enlace no utiliza el valor de _Spreading, ya que tiene todos los factores de lectura habilitados.
#Define _Spraeding SF9
Tenga en cuenta que la frecuencia predeterminada utilizada es 868.1 MHz que se puede cambiar en el archivo loramodem.h. Se recomienda al usuario que no cambie esto y solo use la frecuencia predeterminada de 868.1 MHz.
La detección de actividad del canal (CAD) es una función del chip Lora RFM95 para detectar mensajes entrantes (actividad). Estos mensajes entrantes pueden llegar a cualquiera de los factores de difusión bien conocidos SF7-SF12. Al habilitar CAD, la puerta de enlace puede recibir mensajes de cualquiera de los factores de propagación.
En realidad, se usa en el funcionamiento normal para decirle al receptor que otra señal ya está utilizando el canal.
La funcionalidad CAD tiene un precio (pequeño): el chip no podrá recibir señales muy débiles, ya que la función CAD usará la configuración del registro RSSI del chip para determinar si recibió o no una señal (o simplemente ruido). Como resultado, no se reciben señales muy débiles, lo que significa que el rango de la puerta de enlace se reducirá en modo CAD.
#define _cad 1
Como de la versión 4.0.6, la puerta de enlace permite la actualización del aire si la configuración A_ota está encendida. El software Over the Air requiere una vez la configuración de la versión 4.0.6 sobre USB en la puerta de enlace, después de lo cual el software está habilitado (predeterminado) para su uso.
La primera versión solo admite la función OTA usando el IDE, que en la práctica significa que el IDE debe estar en el mismo segmento de red que la puerta de enlace.
Nota: Debe usar el software Bonjour (Apple) en su red en algún lugar. Una versión está disponible para la mayoría de las plataformas (enviadas con iTunes para Windows, por ejemplo). El software Bonjour permite que la puerta de enlace use MDNS para resolver la ID de puerta de enlace establecida por OTA, después de lo cual aparecen puertos de descarga en el IDE.
TODO: El software OTA no se ha probado (todavía) en conjunción con el software Wifimanager.
#define a_ota 1
Esta configuración habilita el servidor web. Aunque el servidor web en sí toma mucha memoria, ayuda enormemente a configurar el tiempo de ejecución de Gatewayat e inspecciona su comportamiento. También proporciona estadísticas de los últimos mensajes recibidos. El parámetro A_Refresh define si el servidor web debe renovar cada x segundos.
#define a_server 1 // Defina el servidor web local solo si esta definición está establecida
#define a_refresh 1 // ¿el servidor web está habilitado para actualizar sí/no? (sí está bien) #define a_serverport 80 // puerto local de servidor
#define a_maxbufsize 192 // debe ser mayor que 128, pero lo suficientemente pequeño como para trabajar
El parámetro A_Refresh define si podemos establecer o no la configuración de actualización de sí/no en el webbrowser. La configuración en el webbrowser normalmente se coloca en "no" como predeterminado, pero podemos dejar la definición en "1" para habilitar esa configuración en el webbrowser.
Para que la puerta de enlace envíe mensajes de enlace descendente en el factor de propagación preestablecido y en la frecuencia predeterminada, debe establecer el parámetro _strict_1ch a 1. Tenga en cuenta que cuando no está configurado en 1, la puerta de enlace responderá a las solicitudes de enlace descendente con la frecuencia y el factor de extensión establecido por el servidor de backend. Y en este momento, TTN responde a los mensajes de enlace descendente para SF9-SF12 en el RX2 Timeslot y con la frecuencia 869.525MHz y en SF12 (según el estándar LORA cuando se envía en la línea de tiempo RX2).
#define _strict_1ch 0
Se aconseja que no cambie la configuración predeterminada de este parámetro.
Al configurar el OLED, configura el sistema para trabajar con paneles OLED a lo largo de I2C. Algunos paneles funcionan tanto por SPI como por I2C, donde I2C es Solwer. Sin embargo, dado que SPI se usa para la comunicación del transceptor RFM95, está disipado de manera estrecha utilizando uno de estos, ya que no funcionarán con este software. En su lugar, elija una solución OLED que funcione a través de I2C.
#Define OLED 1
Los siguientes valores se definen para OLED:
Cuando esto se define (== 1) recopilaremos las estadísticas de cada mensaje y lo llevaremos al sistema de archivos Spiffs. Nos aseguramos de usar varios archivos con cada uno un número fijo de registros para estadísticas. El número REC nos dice cuántos registros están permitidos en cada archivo de estadísticas. Tan pronto como el número REC es más alto que el número de registros permitidos, abrimos un nuevo archivo. Una vez que el número de archivos excede la cantidad de archivos de estadísticas, eliminamos el archivo más antiguo y abrimos un nuevo archivo. Al seleccionar el botón "Registro" en la parte superior de la pantalla GUI, todos los archivos de registro se producen al dispositivo serie USB. De esta manera, podemos examinar muchos más registros que ajustar la pantalla GUI o la salida en serie.
#define stat_log 1
La configuración de los pines I2C SDA/SCL se realiza en el archivo configgway.h justo después del #define de OLED. Estándar, el ESP8266 usa PIN D1 y D2 para las líneas I2C Bus SCL y SDA, pero el usuario puede cambiar. Normalmente no es necesario. Las funciones OLED se encuentran en el archivo _loramodem.ino y se pueden adaptar para mostrar otros campos. Las funciones se llaman cuando se recibe un mensaje (!) Y, por lo tanto, potencionalmente esto se sumará a la inestabilidad del ESP, ya que estas funciones pueden requerir más tiempo del esperado. Si es así, swithc de la función OLED o se construya en una función en el bucle principal () que se muestra en el tiempo del usuario (no interrumpir).
La puerta de enlace permite conectarse a 2 servidores al mismo tiempo (como lo hacen la mayoría de las puertas de enlace de Lora por cierto). Debe conectarse a al menos un enrutador Lora estándar, en caso de que use la red Things (TTN) que asegúrese de establecer:
#define _ttnserver "router.eu.thethings.network"
#define _ttnport 1700
En caso de que configure su propio servidor, puede especificar de la siguiente manera utilizando su propia URL de enrutador y su propio puerto:
#define _thingserver "Your_server.com" // URL del servidor del programa de servidor Lora UDP.JS
#define _ththingport 1701 // Su servidor UDP debe escuchar este puerto
Establezca los parámetros de identidad para su puerta de enlace:
#Define _Descripción "ESP-Gateway"
#define _email "[email protected]"
#define _platform "ESP8266"
#Define _lat 52.00
#Define _lon 5.00
#define _alt 0
Es posible usar la puerta de enlace como nodo. De esta manera, se informan los valores del sensor local/interno. Esta es una función intensiva de CPU y memoria, ya que hacer un mensaje de sensor implica funciones EA y CMAC.
#Define Gatewaynode 0
A continuación a continuación en el archivo de configuración Confignode.h, es posible establecer la dirección y otra información LORA del nodo de puerta de enlace.
La forma más fácil de configurar la puerta de enlace en WiFi es mediante el uso de la función wifimanager. Esta función funciona fuera de la caja. Wifimanager colocará la puerta de enlace en el modo AccessPoint para que pueda conectarse a ella como un punto de acceso WiFi.
#define _wifimanager 0
Si WiFi Manager está habilitado, asegúrese de definir el nombre del punto de acceso si la puerta de enlace está en el modo AccessPoint y la contraseña.
#define ap_name "esp8266-gway-things4u"
#define AP_Passwd "TTNAUTOPW"
El nombre de punto de acceso estándar utilizado por la puerta de enlace es "ESP8266 GWAY" y su contraseña es "TTNAUTOPW". Después de unir el punto de acceso con su teléfono móvil o computadora, vaya a HTP: //192.168.4.1 en un navegador y dígale a la puerta de enlace a qué red WiFi desea que se conecte y especifique la contraseña.
La puerta de enlace se restablecerá y se unirá a la red dada. Si todo va bien, ahora está configurado y el ESP8266 recordará la red a la que debe conectarse. NOTA: Mientras el punto de acceso al que está sujeto a la puerta de enlace está presente, la puerta de enlace ya no funcionará con la lista de puntos de acceso conocidos de WPA. Si es necesario, puede eliminar el punto de acceso actual en el servidor web y el ciclo de potencia de la puerta de enlace para obligarlo a leer la matriz WPA nuevamente.
#if Gatewaynode == 1
#define _devaddr {0x26, 0x01, 0x15, 0x3d}
#define _appskey {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
#define _nwkskey {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
#define _sensor_interval 300
#endif
El servidor web incorporado se puede usar para mostrar el estado y la información de depuración. También el servidor web permite al usuario cambiar ciertas configuraciones en el tiempo de ejecución, como el nivel de depuración o encender y apagar la función CAD. Se puede acceder con la siguiente URL: http: //: 80 ¿Dónde está la IP dada por el enrutador al ESP8266 al inicio? Probablemente sea algo así como 192.168.1.xx, el servidor web muestra varias configuraciones de configuración, además de proporcionar funciones para establecer parámetros.
Los siguientes parámetros se pueden establecer utilizando el servidor web.
El software depende de varias piezas de software, siendo el Arduino IDE para ESP8266 el más importante. Este programa también utiliza varias otras bibliotecas, asegúrese de instalar esas bibliotecas con el IDE:
Por conveniencia, las bibliotecas también se encuentran en este repositorio de GitHub en el directorio de bibliotecas. Tenga en cuenta que no forman parte de la puerta de enlace ESP 1channel y pueden tener sus propias licencias. Sin embargo, estas bibliotecas no forman parte del software de puerta de enlace de un solo canal.
Consulte http://things4u.github.io en la sección de hardware para obtener instrucciones de construcción y conexión.
Las siguientes dependencias son válidas para la puerta de enlace de un solo canal:
Las siguientes cosas todavía están en mi lista de deseos para hacer en la puerta de enlace de un solo canal:
Los archivos de origen del boceto de puerta de enlace en este repositorio están disponibles bajo la licencia MIT. Las bibliotecas incluidas en este repositorio se incluyen solo por conveniencia y todas tienen su propia licencia, y no forman parte del código de puerta de enlace ESP 1CH.