Demo LoRa con Moteino
Medición de temperatura remota de forma inalámbrica usando LoRa con un MoteinUSB with flash https://lowpowerlab.com/guide/moteino/. Integración de los datos en un servidor propio https://www.aprendiendoarduino.com/ y en thingspeak https://thingspeak.com/. Se usa un gateway sencillo de reenvio de mensajes usando un Arduino Yun conectado por WiFi a Internet y un shield LoRa http://www.dragino.com/products/lora/item/102-lora-shield.html
Hardware Utilizado en el módulo LoRa
- Moteino-USB con Transceiver RFM95 y flash memory: https://lowpowerlab.com/shop/product/100
- Sonda DHT22: https://es.aliexpress.com/w/wholesale-dht22.html
- Powerbank
Hardware utilizado en el gateway:
- Arduino Yun: https://store.arduino.cc/arduino-yun o Yun Shield https://store.arduino.cc/genuino-yun-shield + Arduino Leonardo https://store.arduino.cc/arduino-leonardo-with-headers
- LoRa Shield for Arduino: https://www.seeedstudio.com/Dragino-LoRa-Shield-support-868M-frequency-p-2651.html
Esta demo consiste en un cliente basado en un moteino alimentado por batería que manda datos de temperatura de una sonda DHT22 a un nodo central que hace de gateway basado en un Arduino Yun con un shield Lora de Draguino.
Cliente
Para empezar con Moteino, lo primero es instalar el soporte para estas tarjetas e instalar las librerías: https://lowpowerlab.com/guide/moteino/programming-libraries/
Luego la guía de programación con el IDE de Arduino: https://lowpowerlab.com/guide/moteino-programming/arduinoide/
Para LoRa usamos el módulo RFM95: https://lowpowerlab.com/guide/moteino/transceivers/ y necesitaremos la librería recomendada que soporta LoRa: https://lowpowerlab.com/guide/moteino/lora-support/. Para estos módulos la librería recomendada es: http://www.airspayce.com/mikem/arduino/RadioHead/index.html, la descargamos e instalamos.
Tomando como base el ejemplo rf95_client de la librería Radiohead modificado para mandar la temperatura de una sonda DHT22 que es un dato de tipo float, en lugar de “Hello World”.
El código del cliente está disponible en: https://github.com/jecrespo/aprendiendoarduino-lora/blob/master/Demo_LoRa/rf95_client/rf95_client.ino
Servidor/Gateway
Se usa un Arduino Yun https://store.arduino.cc/arduino-yun que dispone de conexión ethernet y wifi y para la red LoRa uso un LoRa shield de draguino http://www.dragino.com/products/module/item/102-lora-shield.html
Más información sobre el shield ver este documento: http://wiki.dragino.com/index.php?title=Lora_Shield
Para este shield uso la misma librería: http://www.airspayce.com/mikem/arduino/RadioHead/index.html,
Tomando como base el ejemplo rf95_server de la librería Radiohead modificado para recibir un float y sacarlo por el puerto de consola.
IMPORTANTE: en el ejemplo de rf95_server no usar el pin 9 para el led (int led = 9;) porque el pin 9 se usa como reset en el shield de draguino.
Una vez comprobado que el servidor recibe datos, debe hacer su función de gateway y mandar los datos a una base de datos alojada en https://www.aprendiendoarduino.com/ y poder ver la gráfica en https://www.aprendiendoarduino.com/servicios/datos/graficas.html
Para grabar datos se debe llamar a una API desde el arduino Yun. Uso el HTTP client para mandar datos https://www.arduino.cc/en/Tutorial/HttpClient. De esta forma hace el Arduino Yun + Shield LoRa de Gateway reenviando los datos recibidos por LoRa a un servidor público.
El código del servidor está en https://github.com/jecrespo/aprendiendoarduino-lora/blob/master/Demo_LoRa/rf95_server/rf95_server.ino
Dispositivos Sigfox y Lora recogiendo datos en campo:
Para mandar los datos a thingspeak uso la API y mando los datos llamando a https://api.thingspeak.com/update?api_key=writeapikey&field1=22.8
Está disponible una vista publica de los datos: https://thingspeak.com/channels/440179