Giter VIP home page Giter VIP logo

daeynasvistas / lora-ttn-sensorbox Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 154 KB

Mestrado Computação Móvel 2018/19: Implementação de um Node energicamente autónomo com múltiplos sensor e envio dos valores dos mesmo utilizando tecnologia LoRa para o TTN utilizando um gateway Dragino, na Disciplina de Sistemas Embebidos - IPG MCM 2019

C++ 100.00%
lora esp32 solar-system co2 temp humidity tvoc battery ipg

lora-ttn-sensorbox's Introduction

IPG MCM 2018/19

LoRa-TTN-SensorBox SmartFarm

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

emb

Alterar em cada Node (Main.cpp)

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"

Alterar em cada Node (Main.cpp)

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

Payload enviado com 16 Bytes

 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) ;

Deep Sleep

#define TIME_TO_SLEEP  3600    /* ESP32 vai para deep sleep (in seconds) 3600 = 1hora */

Calibrar medidor de nível da Bateria (3000mA <-> 3.7V)

// 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 utilizado:

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

Dragino Gateway

1_lEjTfNTFnHXEfNBk9L4ENA

ver aqui: https://pplware.sapo.pt/tutoriais/dragino-lora-gateway-ligar-rede-wi-fi/

Como instalar

1. Clonar repositório

(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         
             

2. Configurar Gateway Dragino:

2 3

Utilizar MAC do Gateway com ID: ''' a840411bc834ffff <- adicionar f até 16bit '''

3. Na Consola TTN

3.1 Registar uma nova GATEWAY

4 5 6

3.2 Adicionar uma nova aplicação

7 8

Obtemos Assim a chave da applicação (App ID)

9

4. Registar um novo Node (na aplicação anteriormente criada)

10

4.1 Obtemos as chaves necessárias aqui

11

5. Foi implementado um Payload "custom"

12

5.1 Payload Custom

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
}
}

Resultado

Capturar replace 4343

Resultado num mapa

https://mcm-ipg-embebidos.azurewebsites.net/

lora-ttn-sensorbox's People

Contributors

daeynasvistas avatar

Stargazers

 avatar

Watchers

 avatar

lora-ttn-sensorbox's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.