ESP32 Lora Thingspeak Gateway com nó de sensor: 9 etapas
ESP32 Lora Thingspeak Gateway com nó de sensor: 9 etapas
Anonim
ESP32 Lora Thingspeak Gateway com sensor Node
ESP32 Lora Thingspeak Gateway com sensor Node

neste projeto de IoT, projetei o ESP32 LoRa Gateway e também o ESP32 LoRa Sensor Node para monitorar a leitura do sensor sem fio a distâncias de alguns quilômetros. O remetente lerá os dados de umidade e temperatura usando o sensor DHT11. Em seguida, ele transmite os dados via LoRa Radio. Os dados são recebidos pelo módulo receptor. O receptor enviará os dados para o Thingspeak Server após um certo intervalo.

Etapa 1: Componentes necessários

1. Placa ESP32 - 2

2. Módulo Lora SX1278 / SX1276

3. Sensor de umidade e temperatura DHT11

4. Placa de ensaio

5. Conexão de fios de jumper

Etapa 2: instalando as bibliotecas necessárias

Precisamos instalar bibliotecas diferentes primeiro:

1. Biblioteca DHT11

2. Biblioteca LoRa

Etapa 3: ESP32 LoRa Thingspeak Gateway

ESP32 LoRa Thingspeak Gateway
ESP32 LoRa Thingspeak Gateway
ESP32 LoRa Thingspeak Gateway
ESP32 LoRa Thingspeak Gateway

Agora vamos ver o circuito emissor e receptor para a construção de ESP32 LoRa Gateway & Sensor Node. Montei o circuito em uma placa de ensaio. Você pode fazer isso no PCB se quiser.

Aqui está um circuito de gateway ESP32 LoRa Module SX1278. Esta parte funciona como um receptor. Os dados de umidade e temperatura são recebidos usando o LoRa Radio e enviados para o Thingspeak Server.

Etapa 4: Nó do sensor ESP32 LoRa

Nó Sensor ESP32 LoRa
Nó Sensor ESP32 LoRa
Nó Sensor ESP32 LoRa
Nó Sensor ESP32 LoRa

Aqui está um Circuito de Nó do Sensor ESP32 LoRa com Sensor DHT11. Esta parte funciona como um transmissor. Os dados de umidade e temperatura são lidos pelo sensor de umidade e temperatura DHT11 e transmitidos por meio do LoRa Radio.

Etapa 5: Configurando o Thingspeak

Configurando o Thingspeak
Configurando o Thingspeak

Para monitorar os dados do sensor no servidor Thingspeak, primeiro você precisa configurar o Thingspeak. Para configurar o Thingspeak Server, visite https://thingspeak.com/. Crie uma conta ou simplesmente entre se você a criou anteriormente. Em seguida, crie um novo canal com os seguintes detalhes.

Etapa 6: Código do Gateway

#incluir

// Bibliotecas para LoRa #include #include // define os pinos usados pelo módulo transceptor LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 para Ásia, 866E6 para Europa, 915E6 para América do Norte // Substitua por suas credenciais de rede String apiKey = "14K8UL2QEK8BTHN6"; // Insira sua chave de API de gravação de ThingSpeak const char * ssid = "Wifi SSID"; // substitua por seu wi-fi ssid e chave wpa2 const char * password = "Senha"; const char * server = "api.thingspeak.com"; Cliente WiFiClient; // Inicializa as variáveis para obter e salvar os dados LoRa int rssi; String loRaMessage; Temperatura da corda; Umidade da coluna; String readingID; // Substitui o espaço reservado por valores DHT Processador de string (const String & var) {//Serial.println(var); if (var == "TEMPERATURE") {temperatura de retorno; } else if (var == "UMIDADE") {umidade de retorno; } else if (var == "RRSI") {return String (rssi); } return String (); } void setup () {Serial.begin (115200); contador interno; // configurar o módulo transceptor LoRa LoRa.setPins (ss, rst, dio0); // configura o módulo do transceptor LoRa while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); contador ++; atraso (2000); } if (counter == 10) {// Incrementa readingID em cada nova leitura Serial.println ("Iniciando LoRa falhou!"); } Serial.println ("Inicialização LoRa OK!"); atraso (2000); // Conectar à rede Wi-Fi com SSID e senha Serial.print ("Conectando a"); Serial.println (ssid); WiFi.begin (ssid, senha); while (WiFi.status ()! = WL_CONNECTED) {delay (2000); Serial.print ("."); } // Imprime o endereço IP local e inicia o servidor web Serial.println (""); Serial.println ("WiFi conectado."); Serial.println ("endereço IP:"); Serial.println (WiFi.localIP ()); } // Lê o pacote LoRa e obtém as leituras do sensor void loop () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Lora pacote recebido:"); while (LoRa.available ()) // Pacote de leitura {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readingID = LoRaData.substring (0, pos1); // Obter readingID temperature = LoRaData.substring (pos1 +1, pos2); // Obter temperatura umidade = LoRaData.substring (pos2 + 1, LoRaData.length ()); // Obter umidade} rssi = LoRa.packetRssi (); // Obtenha RSSI Serial.print ("com RSSI"); Serial.println (rssi); } if (client.connect (server, 80)) // "184.106.153.149" ou api.thingspeak.com {String postStr = apiKey; postStr + = "& field1 ="; postStr + = String (readingID); postStr + = "& field2 ="; postStr + = String (temperatura); postStr + = "& field3 ="; postStr + = String (umidade); postStr + = "& field4 ="; postStr + = String (rssi); postStr + = "\ r / n / r / n / r / n / r / n"; client.print ("POST / atualizar HTTP / 1.1 / n"); client.print ("Host: api.thingspeak.com / n"); client.print ("Conexão: fechar / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Content-Type: application / x-www-form-urlencoded / n"); client.print ("Content-Length:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // atraso (30000); }

Etapa 7: Código do Nó Sensor

#incluir

#include // Bibliotecas para LoRa #include "DHT.h" # define DHTPIN 4 // pino onde o dht11 está conectado DHT dht (DHTPIN, DHT11); // define os pinos usados pelo módulo transceptor LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 para Ásia, 866E6 para Europa, 915E6 para América do Norte // contador de pacote int readingID = 0; contador interno = 0; String LoRaMessage = ""; temperatura flutuante = 0; umidade flutuante = 0; // Inicializar o módulo LoRa void startLoRA () {LoRa.setPins (ss, rst, dio0); // configura o módulo do transceptor LoRa while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); contador ++; atraso (500); } if (counter == 10) {// Incrementa readingID em cada nova leitura readingID ++; Serial.println ("Falha ao iniciar LoRa!"); } Serial.println ("Inicialização LoRa OK!"); atraso (2000); } void startDHT () {if (isnan (umidade) || isnan (temperatura)) {Serial.println ("Falha ao ler do sensor DHT!"); Retorna; }} void getReadings () {umidade = dht.readHumidity (); temperatura = dht.readTemperature (); Serial.print (F ("Umidade:")); Serial.print (umidade); Serial.print (F ("% Temperatura:")); Serial.print (temperatura); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = String (readingID) + "/" + String (temperatura) + "&" + String (umidade); // Envia o pacote LoRa para o receptor LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Enviando pacote:"); Serial.println (readingID); readingID ++; Serial.println (LoRaMessage); } void setup () {// inicializa o Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); atraso (500); }

Etapa 8: Monitore os dados no servidor Thingspeak

Monitorar dados no servidor Thingspeak
Monitorar dados no servidor Thingspeak
Monitorar dados no servidor Thingspeak
Monitorar dados no servidor Thingspeak

Assim que o código for carregado, você pode abrir o Monitor Serial no Gateway e no Circuito do Nó do Sensor. Você enviará e receberá dados se o código estiver correto. Agora você pode visitar o Thingspeak Private View. Lá você pode ver os dados de Número do Pacote, Temperatura, Umidade e Gateway são carregados após o intervalo de 15 segundos.

Etapa 9: Referências

1.

2.