Os dados ficam muito mais bonitos quando os pode visualizar. Este projeto torna fácil enviar dados de sensores de nodes LoRaWAN conectados à rede Things.
Neste repositório encontra um step by step para registar um Node (ESP32 LoRa) na plataform TTN e a forma de enviar para esta os valores dos sensores: Luminosidade, Humidade, Temperatura, eCo2, TVOc (Qualidade do ar), Som dB, Pressão Atmosférica e valor de carga da bateria utilizando LoRa. Isto numa caixa enegeticamente autonoma que pode ficar a vários kilometros de ditância do gateway (5 a 10Km ou mais em zonas rurais).
Pode assim realizar leitura de sensores em locais remotos sem necessidade de acesso à internet nesses locais.
Para visualizar os dados num mapa e na forma de um gráfico, pode utilizar este repositório: https://github.com/daeynasvistas/LoRa-TTN-map
static const PROGMEM u1_t NWKSKEY[16] = { 0x82, 0x60 }; //COLOCAR AQUI "Network Session Key" (ver screenshot)
static const u1_t PROGMEM APPSKEY[16] = { 0x59, 0x76 }; //COLOCAR AQUI "App Session Key"
static const u4_t DEVADDR = 0x26011874; //COLOCAR AQUI "0xDevice Address"
indicar de forma implícita a freq. que configurou no dragino, neste caso "868300000"
#if defined(CFG_eu868)
//LMIC_setupChannel(0, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
LMIC_setupChannel(1, 868300000, DR_RANGE_MAP(DR_SF12, DR_SF7B), BAND_CENTI); // g-band
//LMIC_setupChannel(2, 868500000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
//LMIC_setupChannel(3, 867100000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
//LMIC_setupChannel(4, 867300000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
//LMIC_setupChannel(5, 867500000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
//LMIC_setupChannel(6, 867700000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
//LMIC_setupChannel(7, 867900000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); // g-band
//LMIC_setupChannel(8, 868800000, DR_RANGE_MAP(DR_FSK, DR_FSK), BAND_MILLI); // g2-band
dataTX[0] = dtempC;
dataTX[1] = dtempC >> 8;
dataTX[2] = (dhumidity);
dataTX[3] = (dhumidity) >> 8;
dataTX[4] = dpressure;
dataTX[5] = dpressure >> 8;
dataTX[6] = daltitude;
dataTX[7] = daltitude >> 8;
dataTX[8] = (dco2);
dataTX[9] = (dco2) >> 8;
dataTX[10] = (dTVOC);
dataTX[11] = (dTVOC) >> 8;
dataTX[12] = LuxSensorValue;
dataTX[13] = (LuxSensorValue) >> 8;
dataTX[14] = dSoundValue;
dataTX[15] = (dBattery) ;
#define TIME_TO_SLEEP 3600 /* ESP32 vai para deep sleep (in seconds) 3600 = 1hora */
// MONITOR BAT LEVEL calibração
#include <Pangodream_18650_CL.h> // Medidor BAT
#define ADC_PIN 34
#define CONV_FACTOR 1.7
#define READS 10
Equipamento | Descrição |
---|---|
ESP32 LoRA TTGO | Lora, Wifi, BLE |
Placa Solar | 5V 1W |
Bateria | 3000mA 3.6V |
BME280 Digital Sensor | Temperature Humidity Atmospheric Pressure |
CJMCU-811V1 | NTC CO2 eCO2 TVOC Air Mass |
GL5528 | Light Sensor Module Light Photosensitive Sensor |
GY-BMP280 | High Precision Atmospheric Pressure sensor |
FC-28 | Soil Hygrometer Humidity Detection |
OKY3131 | High sensitive voice sensor module |
KY-026 | Flame sensor module |
6DOF MPU-6050 | Axis Gyro With Accelerometer |
ver aqui: https://pplware.sapo.pt/tutoriais/dragino-lora-gateway-ligar-rede-wi-fi/
(Foi utilizado VisualStudio Code + PlatformIO, mas pode editar Main.cpp com Arduino IDE)
$ git clone https://github.com/daeynasvistas/LoRa-TTN-Node
Librarias utilizadas
lib_deps =
# Using library Name
Adafruit CCS811 Library
Adafruit BME280 Library
LMIC-Arduino
ESP8266_SSD1306
https://github.com/enen/db_meter_library
https://github.com/pangodream/18650CL
Utilizar MAC do Gateway com ID: ''' a840411bc834ffff <- adicionar f até 16bit '''
function Decoder(bytes, port) {
var temp = parseInt(bytes[0] + (bytes[1] << 8 )) / 100;
var humidity = parseInt(bytes[2] + (bytes[3] << 8 )) / 100;
var pressure = parseInt(bytes[4] + (bytes[5] << 8 )) / 10;
var altitude = parseInt(bytes[6] + (bytes[7] << 8 ) - 100) / 10;
var eCo2 = parseInt(bytes[8] + (bytes[9] << 8 ) ) / 10;
var TVOC = parseInt(bytes[10] + (bytes[11] << 8 )) / 10;
var LUX = parseInt(bytes[12] + (bytes[13] << 8 )) ;
var SOUND = parseInt(bytes[14]);
var Battery = parseInt(bytes[15]);
return { temp: temp,
humidity: humidity,
pressure: pressure,
altitude: altitude,
eCo2:eCo2,
TVOC:TVOC,
LUX:LUX,
SOUND:SOUND,
Battery:Battery
}
}