Table des matières:

Passerelle Lora basée sur MicroPython ESP32 : 10 étapes (avec photos)
Passerelle Lora basée sur MicroPython ESP32 : 10 étapes (avec photos)

Vidéo: Passerelle Lora basée sur MicroPython ESP32 : 10 étapes (avec photos)

Vidéo: Passerelle Lora basée sur MicroPython ESP32 : 10 étapes (avec photos)
Vidéo: REPLAY WEBINAR : Passerelles Lorawan : Elément central d'une architecture Lorawan privée 2024, Juillet
Anonim
Passerelle Lora basée sur MicroPython ESP32
Passerelle Lora basée sur MicroPython ESP32
Passerelle Lora basée sur MicroPython ESP32
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 entre les terminaux IoT ou l'échange de données avec un hôte. Il existe de nombreux modules LoRa sur le marché, comme le RFM96W, qui est équipé de la puce SX1278 (compatible), qui est très petite. Je l'utilise avec MakePython ESP32 comme passerelle.

Ensuite, j'utiliserai deux nœuds LoRa pour envoyer les données de température et d'humidité à la passerelle, puis je les téléchargerai sur Internet via la passerelle. Ici, vous apprendrez à télécharger les données distantes de plusieurs nœuds LoRa vers le cloud via la passerelle.

Étape 1: Fournitures

Fournitures
Fournitures

1 * MakePython ESP32

MakePython ESP32 est une carte ESP32 avec un écran OLED SSD1306 intégré.

2 * Radio Maduino LoRa

Maduino Lora Radio est une solution IoT (Internet des objets) basée sur le MCU Atmega328P et le module Lora d'Atmel. Cela peut être un véritable projet pour les projets IoT (en particulier les applications à longue portée et à faible puissance)

2 * DHT11

1 * faire Python Lora

Étape 2: nœud LoRa

Nœud LoRa
Nœud LoRa
Nœud LoRa
Nœud LoRa

Voici le schéma de Maduino Lora Radio.

Module radio Arduino Lora en tant que nœud LoRa, nous l'utilisons pour envoyer des données de température et d'humidité à la passerelle.

(Ce WiKi explique comment utiliser Maduino Lora Radio et envoyer et recevoir des données)

Étape 3: Connexion du nœud et du capteur

Connexion nœud et capteur
Connexion nœud et capteur
Connexion nœud et capteur
Connexion nœud et capteur

Le VCC et GND de DHT11 sont connectés à 3V3 et GND de Maduino, et la broche DATA est connectée à D4 de Maduino.

Le nœud 0 est dans le parc, le nœud 1 est dans l'immeuble de bureaux près de l'entreprise, ils sont distants d'environ 2 kilomètres, puis je reçois leurs données de température et d'humidité à la maison

Étape 4: envoyer des données à la passerelle

Téléchargez TransmitterDHT11.ino, ouvrez-le sur Arduino IDE.

Lors de l'ajout d'un nœud, modifiez le numéro de nœud en conséquence. Par exemple, utilisez maintenant 2 nœuds, le premier nœud pour modifier le nodenum = 0 pour exécuter le programme, le deuxième nœud pour modifier le nodenum = 1 pour exécuter le programme, et ainsi de suite, vous pouvez ajouter plus de nœuds.

int16_t numéro_paquet = 0; // compteur de paquets, on incrémente par xmission

int16_t nodenum = 0; //Modifier le numéro de nœud

Collectez des données et imprimez-les

String message ="#"+(String)nodenum+" Humidité:"+(String)humidité+"% Température:"+(String)temperature+"C"+" num:"+(String)packetnum;Serial.println(message); numpaquet++;

Envoyer un message à rf95_server

uint8_t radioPacket[message.length()+1];

message.toCharArray(radioPacket, message.length()+1); radioPacket[message.length()+1]= '\0'; rf95.send((uint8_t *)radioPacket, message.length()+1);

Ouvrez le moniteur série, vous pouvez voir les données de température et d'humidité collectées et les envoyer.

#0 Humidité:6.00% Température:27.00C num:0

Transmettre: Envoi vers rf95_server Envoi… En attente de la fin du paquet… En attente de réponse… Pas de réponse, y a-t-il un écouteur ?

Mettez cela de côté, nous devons maintenant créer la passerelle Lora.

Étape 5: Créer Python Lora

MarquePython Lora
MarquePython Lora
MarquePython Lora
MarquePython Lora
MarquePython Lora
MarquePython Lora

Il s'agit de la broche correspondante du module RFM96W et MakePython ESP32. Afin de faciliter la connexion avec MakePython ESP32, j'ai réalisé un circuit imprimé avec le module RFM96W. Oui, il y a deux RFM96W dessus, qui peuvent envoyer et recevoir des données en même temps, mais maintenant je n'en ai besoin que d'un.

Étape 6: Passerelle LoRaWAN

Passerelle LoRaWAN
Passerelle LoRaWAN

LoRaWAN est un réseau étendu à faible consommation basé sur LoRa, qui peut en fournir un: faible consommation d'énergie, évolutivité, haute qualité de service et réseau sans fil longue distance sûr.

Assemblez MakePython Lora et ESP32 pour créer une passerelle pouvant recevoir des données distantes et les télécharger sur Internet.

Étape 7: Télécharger le code

Téléchargez tous les fichiers « xxx.py » de WiKi et téléchargez-les sur ESP32.

Ouvrez le fichier LoRaDuplexCallback.py, vous devez effectuer quelques ajustements pour que votre ESP32 puisse se connecter au réseau et télécharger des données sur le serveur.

Modifiez l'API_KEY que vous avez obtenu dans ThingSpeak (je vous expliquerai comment l'obtenir plus tard)

#https://thingspeak.com/channels/1047479

API_KEY='UBHIRHVV9THUJVUI'

Modifier SSID et PSW pour connecter WiFi

ssid = "Makerfabs"

pswd = "20160704"

Étape 8: Recevoir des données

Recherchez la fonction on_receive (lora, payload) dans le fichier LoRaDuplexCallback.py, où vous pouvez indiquer à ESP32 quoi faire après avoir reçu les données. Le code suivant analyse et affiche les données de température et d'humidité reçues.

def on_receive(lora, charge utile):

lora.blink_led() rssi = lora.packetRssi() essayez: length=len(payload)-1 myStr=str((payload[4:length]), 'utf-8') length1=myStr.find(':') myNum1=myStr[(length1+1):(length1+6)] myNum2=myStr[(length1+20):(length1+25)] print("*** Message reçu ***\n{}". format(payload)) si config_lora. IS_LORA_OLED: lora.show_packet(("{}".format(payload[4:length])), rssi) si wlan.isconnected(): global msgCount print('Envoi vers le réseau…') node = int(str(payload[5:6], 'utf-8')) si node == 0: URL="https://api.thingspeak.com/update?api_key="+API_KEY+"&field1= "+myNum1+"&field2="+myNum2 res=urequests.get(URL) print(res.text) elif node == 1: URL="https://api.thingspeak.com/update?api_key="+API_KEY+" &field3="+myNum1+"&field4="+myNum2 res=urequests.get(URL) print(res.text) sauf exception comme e: print(e) print("avec RSSI {}\n".format(rssi))

En jugeant le nombre pour distinguer les nœuds et en téléchargeant les données sur Internet via l'URL, nous pouvons surveiller les données distantes de différents nœuds à tout moment. Vous pouvez ajouter plus de nœuds et apporter des modifications similaires au code.

si nœud == 0:

URL="https://api.thingspeak.com/update?api_key="+API_KEY+"&field1="+myNum1+"&field2="+myNum2 res=urequests.get(URL) print(res.text)

Étape 9: Utiliser ThingSpeak IoT

Utiliser ThingSpeak IoT
Utiliser ThingSpeak IoT
Utiliser ThingSpeak IoT
Utiliser ThingSpeak IoT
Utiliser ThingSpeak IoT
Utiliser ThingSpeak IoT

Pas:

  1. Créez un compte sur https://thingspeak.com/. Si vous en avez déjà un, connectez-vous directement.
  2. Cliquez sur Nouveau canal pour créer un nouveau canal ThingSpeak.
  3. Saisissez le nom, la description, sélectionnez le champ 1. Enregistrez ensuite le canal en bas.
  4. Cliquez sur l'option Clés API, copiez la clé API, nous l'utiliserons dans le programme.

Étape 10: Résultat

Résultat
Résultat
Résultat
Résultat
Résultat
Résultat

Vous pouvez voir les données du nœud 0 et du nœud 1 à l'écran, bien qu'ils soient distants de 2 kilomètres.

Connectez-vous à votre compte ThingSpeak et cliquez sur le canal que vous avez créé, vous pouvez voir les données de température et d'humidité téléchargées.

Le graphique field1 et les graphiques field2 sont les données d'humidité et de température du nœud Lora 0, et le graphique field3 et le graphique field4 sont les données d'humidité et de température du nœud Lora 1.

Conseillé: