Table des matières:

Passerelle ESP32 Lora Thingspeak avec nœud de capteur : 9 étapes
Passerelle ESP32 Lora Thingspeak avec nœud de capteur : 9 étapes

Vidéo: Passerelle ESP32 Lora Thingspeak avec nœud de capteur : 9 étapes

Vidéo: Passerelle ESP32 Lora Thingspeak avec nœud de capteur : 9 étapes
Vidéo: Sending LoRaWAN Sensor Node Data to The Things Network Server (TTN) 2024, Novembre
Anonim
Passerelle ESP32 Lora Thingspeak avec nœud de capteur
Passerelle ESP32 Lora Thingspeak avec nœud de capteur

dans ce projet IoT, j'ai conçu la passerelle ESP32 LoRa et également le nœud de capteur ESP32 LoRa pour surveiller la lecture du capteur sans fil à des distances de quelques kilomètres. L'expéditeur lira les données d'humidité et de température à l'aide du capteur DHT11. Ensuite, il transmet les données via LoRa Radio. Les données sont reçues par le module récepteur. Le récepteur enverra ensuite les données à Thingspeak Server après un certain intervalle.

Étape 1: Composants requis

1. Carte ESP32 - 2

2. Module Lora SX1278/SX1276

3. Capteur de température d'humidité DHT11

4. Planche à pain

5. Connexion des fils de cavalier

Étape 2: Installation des bibliothèques requises

Nous devons d'abord installer différentes bibliothèques:

1. Bibliothèque DHT11

2. Bibliothèque LoRa

Étape 3: passerelle ESP32 LoRa Thingspeak

Passerelle ESP32 LoRa Thingspeak
Passerelle ESP32 LoRa Thingspeak
Passerelle ESP32 LoRa Thingspeak
Passerelle ESP32 LoRa Thingspeak

Voyons maintenant le circuit émetteur et récepteur pour construire ESP32 LoRa Gateway & Sensor Node. J'ai assemblé à la fois le circuit sur une planche à pain. Vous pouvez le faire sur PCB si vous le souhaitez.

Voici un circuit de passerelle ESP32 LoRa Module SX1278. Cette partie fonctionne comme un récepteur. Les données d'humidité et de température sont reçues à l'aide de LoRa Radio et téléchargées sur Thingspeak Server.

Étape 4: Nœud de capteur LoRa ESP32

Nœud de capteur LoRa ESP32
Nœud de capteur LoRa ESP32
Nœud de capteur LoRa ESP32
Nœud de capteur LoRa ESP32

Voici un circuit de nœud de capteur LoRa ESP32 avec capteur DHT11. Cette partie fonctionne comme un émetteur. Les données d'humidité et de température sont lues par le capteur d'humidité et de température DHT11 et transmises à l'aide de la radio LoRa.

Étape 5: Configuration de Thingspeak

Configuration de Thingspeak
Configuration de Thingspeak

Afin de surveiller les données du capteur sur Thingspeak Server, vous devez d'abord configurer Thingspeak. Pour configurer le serveur Thingspeak, visitez https://thingspeak.com/. Créez un compte ou connectez-vous simplement si vous avez créé le compte plus tôt. Créez ensuite une nouvelle chaîne avec les détails suivants.

Étape 6: Code de passerelle

#comprendre

//Bibliothèques pour LoRa #include #include //définir les broches utilisées par le module émetteur-récepteur LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 //433E6 pour l'Asie, 866E6 pour l'Europe, 915E6 pour l'Amérique du Nord // Remplacez par vos identifiants réseau String apiKey = "14K8UL2QEK8BTHN6"; // Entrez votre clé d'API d'écriture à partir de ThingSpeak const char *ssid = "Wifi SSID"; // remplacez par votre ssid wifi et votre clé wpa2 const char *password = "Password"; const char* server = "api.thingspeak.com"; Client WiFi; // Initialiser les variables pour obtenir et enregistrer les données LoRa int rssi; Chaîne loRaMessage; Température de la chaîne; Humidité des cordes; ID de lecture de chaîne; // Remplace l'espace réservé par les valeurs DHT String processor(const String& var){ //Serial.println(var); if(var == "TEMPERATURE") { retour température; } else if(var == "HUMIDITY") { return humidité; } else if (var == "RRSI") { return String(rssi); } return String(); } void setup() { Serial.begin(115200); compteur int; //configuration du module émetteur-récepteur LoRa LoRa.setPins(ss, rst, dio0); //configuration du module émetteur-récepteur LoRa while (!LoRa.begin(BAND) && counter < 10) { Serial.print("."); compteur++; retard (2000); } if (counter == 10) { // Incrémente l'ID de lecture à chaque nouvelle lecture Serial.println("Le démarrage de LoRa a échoué !"); } Serial.println("Initialisation LoRa OK!"); retard (2000); // Connectez-vous au réseau Wi-Fi avec le SSID et le mot de passe Serial.print("Connexion à "); Serial.println(ssid); WiFi.begin(ssid, mot de passe); while (WiFi.status() != WL_CONNECTED) { delay(2000); Serial.print("."); } // Imprimer l'adresse IP locale et démarrer le serveur Web Serial.println(""); Serial.println("WiFi connecté."); Serial.println("Adresse IP: "); Serial.println(WiFi.localIP()); } // Lire le paquet LoRa et obtenir les lectures du capteur void loop() { int packetSize = LoRa.parsePacket(); if (packetSize) { Serial.print("Lora paquet reçu: "); while (LoRa.available()) // Lire le paquet { String LoRaData = LoRa.readString(); Serial.print(LoRaData); int pos1 = LoRaData.indexOf('/'); int pos2 = LoRaData.indexOf('&'); readID = LoRaData.substring(0, pos1); // Obtenir l'ID de lecture température = LoRaData.substring(pos1 +1, pos2); // Obtenir la température humidité = LoRaData.substring(pos2+1, LoRaData.length()); // Récupère l'humidité } rssi = LoRa.packetRssi(); // Obtenir RSSI Serial.print(" avec 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(température); postStr += "&field3="; postStr += String(humidité); postStr += "&field4="; postStr += String(rssi); postStr += "\r\n\r\n\r\n\r\n"; client.print("POST /mise à jour HTTP/1.1\n"); client.print("Hôte: api.thingspeak.com\n"); client.print("Connexion: fermer\n"); client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n"); client.print("Type de contenu: application/x-www-form-urlencoded\n"); client.print("Contenu-Longueur: "); client.print(postStr.length()); client.print("\n\n"); client.print(postStr); } //délai (30000); }

Étape 7: Code de nœud de capteur

#comprendre

#include //Bibliothèques pour LoRa #include "DHT.h" #define DHTPIN 4 //pin où le dht11 est connecté DHT dht(DHTPIN, DHT11); //définir les broches utilisées par le module émetteur-récepteur LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 //433E6 pour l'Asie, 866E6 pour l'Europe, 915E6 pour l'Amérique du Nord //packet counter int readingID = 0; compteur entier = 0; Chaîne LoRaMessage = ""; température du flotteur = 0; flotteur humidité = 0; //Initialiser le module LoRa void startLoRA() { LoRa.setPins(ss, rst, dio0); //configuration du module émetteur-récepteur LoRa while (!LoRa.begin(BAND) && counter < 10) { Serial.print("."); compteur++; retard (500); } if (counter == 10) { // Incrémente readID à chaque nouvelle lecture readID++; Serial.println("Le démarrage de LoRa a échoué !"); } Serial.println("Initialisation LoRa OK!"); retard (2000); } void startDHT() { if (isnan(humidité) || isnan(temperature)) { Serial.println("Impossible de lire à partir du capteur DHT !"); revenir; } } void getReadings(){ humidité = dht.readHumidity(); température = dht.readTemperature(); Serial.print(F("Humidité: ")); Serial.print(humidité); Serial.print(F("% Température: ")); Serial.print(température); Serial.println(F("°C ")); } void sendReadings() { LoRaMessage = String(readingID) + "/" + String(temperature) + "&" + String(humidité); //Envoyer le paquet LoRa au récepteur LoRa.beginPacket(); LoRa.print(LoRaMessage); LoRa.endPacket(); Serial.print("Envoi du paquet: "); Serial.println(readingID); lectureID++; Serial.println(LoRaMessage); } void setup() { //initialiser Serial Monitor Serial.begin (115200); dht.begin(); startDHT(); startLoRA(); } boucle vide() { getReadings(); sendReadings(); retard (500); }

Étape 8: Surveiller les données sur Thingspeak Server

Surveiller les données sur Thingspeak Server
Surveiller les données sur Thingspeak Server
Surveiller les données sur Thingspeak Server
Surveiller les données sur Thingspeak Server

Une fois le code téléchargé, vous pouvez ouvrir le moniteur série sur le circuit de la passerelle et du nœud de capteur. Vous enverrez et recevrez des données si le code est correct. Vous pouvez maintenant visiter Thingspeak Private View. Là, vous pouvez voir que les données pour le numéro de paquet, la température, l'humidité et la passerelle sont téléchargées après l'intervalle de 15 secondes.

Étape 9: Références

1.

2.

Conseillé: