Table des matières:
- Étape 1: Composants requis
- Étape 2: Installation des bibliothèques requises
- Étape 3: passerelle ESP32 LoRa Thingspeak
- Étape 4: Nœud de capteur LoRa ESP32
- Étape 5: Configuration de Thingspeak
- Étape 6: Code de passerelle
- Étape 7: Code de nœud de capteur
- Étape 8: Surveiller les données sur Thingspeak Server
- Étape 9: Références
Vidéo: Passerelle ESP32 Lora Thingspeak avec nœud de capteur : 9 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
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
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
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
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
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é:
MuMo - Passerelle LoRa : 25 étapes (avec photos)
MuMo - LoRa Gateway : ### UPDATE 10-03-2021 // les dernières informations / mises à jour seront disponibles sur la page github : https://github.com/MoMu-Antwerp/MuMoWhat is MuMo?MuMo est une collaboration entre développement de produits (un département de l'Université d'Anvers) sous le
Passerelle Lora basée sur MicroPython ESP32 : 10 étapes (avec photos)
Passerelle Lora basée sur MicroPython ESP32 : Lora a été très populaire ces dernières années. Le module de communication sans fil utilisant cette technologie est généralement bon marché (utilisant un spectre libre), de petite taille, économe en énergie et a une longue distance de communication, et est principalement utilisé pour la communication mutuelle
Voiture IoT RC avec télécommande ou passerelle Smart Lamp : 8 étapes (avec photos)
Voiture RC IoT avec télécommande ou passerelle de lampe intelligente : pour un projet sans rapport, j'avais écrit du code Arduino pour parler aux lampes intelligentes MiLight et aux télécommandes de lampes que j'ai chez moi. Après avoir réussi à intercepter les commandes des télécommandes sans fil, J'ai décidé de faire une petite voiture RC pour tester
Capteur de température et d'humidité sans fil à longue portée IOT avec nœud rouge : 27 étapes
Capteur de température et d'humidité sans fil à longue portée IOT avec Node-Red : Présentation du capteur de température et d'humidité sans fil à longue portée de NCD, offrant une portée allant jusqu'à 28 milles en utilisant une architecture de réseau maillé sans fil. L'intégration du capteur de température et d'humidité Honeywell HIH9130 transmet une température très précise et
Noeud papillon DIY --- Avec des lumières !! : 9 étapes (avec photos)
Noeud papillon bricolage --- Avec des lumières !! : Ils sont parfaits pour les mariages, les bals de finissants, les événements spéciaux, les soirées et chaque fois que vous voulez être la personne la plus cool de la pièce ! Pourquoi ne voudriez-vous pas d'un nœud papillon lumineux ? Aussi, ne soyez pas timides les filles, vous pouvez aussi porter un nœud papillon lumineux :) Photo Cred