Table des matières:

IOT avec réseau cellulaire avec ESP32 : 23 étapes
IOT avec réseau cellulaire avec ESP32 : 23 étapes

Vidéo: IOT avec réseau cellulaire avec ESP32 : 23 étapes

Vidéo: IOT avec réseau cellulaire avec ESP32 : 23 étapes
Vidéo: Smart Home Automation System with multiple ESP32 NodeMCU IoT network with Blynk | IoT Projects 2021 2024, Novembre
Anonim
Image
Image
Manifestation
Manifestation

Aujourd'hui, nous allons parler du modem GPRS, ou plutôt de l'ESP32 et de son utilisation avec le réseau de téléphonie cellulaire. C'est quelque chose qui fonctionne très bien. En utilisant le protocole MQTT, nous enverrons ensuite les données au tableau de bord Ubidots. Utilisez dans cet assemblage un affichage pour le retour du circuit, en plus du SIM800L et d'une puce de téléphone portable. Avec ce projet, nous enverrons donc des données de température et d'humidité via GPRS et MQTT, et visualiserons les données dans un graphique linéaire.

Étape 1: Démonstration

Étape 2: Assemblage

Assemblée
Assemblée

Étape 3: Assemblage - Tableau

Assemblage - Table
Assemblage - Table

Étape 4: Ubidots

Ubidots
Ubidots

Étape 5: Bibliothèque SimpleDHT

Bibliothèque SimpleDHT
Bibliothèque SimpleDHT

Dans l'IDE Arduino, allez dans Sketch-> Inclure la bibliothèque-> Gérer les bibliothèques…

Installer SimpleDHT

Étape 6: Bibliothèque PubSubClient

Bibliothèque PubSubClient
Bibliothèque PubSubClient

Dans l'IDE Arduino, allez dans Sketch-> Inclure la bibliothèque-> Gérer les bibliothèques…

Installer PubSubClient

Étape 7: Bibliothèque TinyGSM

Bibliothèque TinyGSM
Bibliothèque TinyGSM

Dans l'IDE Arduino, allez dans Sketch-> Inclure la bibliothèque-> Gérer les bibliothèques…

Installer TinyGSM

Étape 8: Bibliothèque TFT_eSPI

Bibliothèque TFT_eSPI
Bibliothèque TFT_eSPI

Dans l'IDE Arduino, allez dans Sketch-> Inclure la bibliothèque-> Gérer les bibliothèques…

Installer TFT_eSPI

Étape 9: Bibliothèque TFT_eSPI

Bibliothèque TFT_eSPI
Bibliothèque TFT_eSPI

Modifiez les broches d'affichage dans le dossier lib.

L'épinglage est dans le fichier User_Setup.h dans

C:\Utilisateurs\Documents\Arduino\bibliothèques\TFT_eSPI

Remplacez ces valeurs par défaut par les valeurs suivantes dans l'image.

Étape 10: Ubidots

Ubidots
Ubidots
Ubidots
Ubidots
Ubidots
Ubidots

Connectez-vous à Ubidots avec votre compte et cliquez sur Appareils

Cliquez sur le bouton "+" dans le coin supérieur droit

Cliquez sur vide

Saisissez le nom de l'appareil. Notez le "label de périphérique", car il sera utilisé dans le "sujet" que nous utiliserons dans.ino

Dans la liste des appareils, l'appareil que vous venez de créer apparaîtra. Clique dessus.

Sur l'écran qui apparaît, cliquez sur "Ajouter une variable". Une fenêtre contextuelle apparaîtra. Cliquez sur "Raw".

Cliquez sur la zone de texte et entrez le nom de la propriété.

Ce doit être exactement ce que nous enverrons dans le json du.ino. Répétez cette opération pour l'autre propriété.

Retournez au tableau de bord en cliquant sur le logo Ubidots.

Dans le tableau de bord, cliquez sur "Ajouter un nouveau widget"

Dans la liste des Widgets, choisissez "Double axe"

Étape 11: Modification des données en.ino

Modification des données en.ino
Modification des données en.ino
Modification des données en.ino
Modification des données en.ino

Étape 12: GPRS_ESP32_DHT.ino - Déclarations et variables

GPRS_ESP32_DHT.ino - Déclarations et variables
GPRS_ESP32_DHT.ino - Déclarations et variables

#define TINY_GSM_MODEM_SIM800 //Tipo de modem que estamos usando#include #include #include #include #include //Token de usuário que pegamos no Ubidots #define TOKEN "BBFF-abcdefghijklmnopqrstuvwxyz0123" //Tópico onde de vamos vamos (esp32_gprs é o nome do dispositivo no Ubidots) #define TOPIC "/v1.6/devices/esp32_gprs" //id do dispositivo que pegamos no painel do Ubidots #define DEVICE_ID "5c01234567890abc12345678" //URL do MQTT Server_ER_define mqtt://things.ubidots.com" //Porta padrão do MQTT #define MQTT_PORT 1883 //Pino onde está o DHT22 #define DHT_PIN 27

Étape 13: Épingler

Épinglage
Épinglage

//Pinagem em User_Setup.h dans les pâtes de la bibliothèqueTFT_eSPI display = TFT_eSPI(); //Intervalo entre os envios e refresh da tela #define INTERVAL 10000 //Canal serial que vamos usar para comunicarmos com o modem. Utiliser semper 1 HardwareSerial SerialGSM (1); Modem TinyGsmGSM(SerialGSM); TinyGsmClient gsmClient(modemGSM); //Client MQTT, passamos une url do server, un porta //e o cliente GSM PubSubClient client(MQTT_SERVER, MQTT_PORT, gsmClient); //Tempo em que o último envio/refresh foi feito uint32_t lastTime = 0; flotteur humidité; //Variável onde iremos armazenar o valor da umidade float temperature; //Variável onde iremos armazenar o valor da temperatura SimpleDHT22 dht; //Objeto que realizará a leitura da umidade e temperatura

Étape 14: configuration

void setup() { Serial.begin(115200); setupAffichage(); //Inicialize e configura o display setupGSM(); //Inicialize e configura o modem GSM connectMQTTServer(); //Conectamos sur le serveur mqtt //Espera 2 segundos e limpamos o display delay (2000); display.fillScreen(TFT_BLUE); display.setCursor(0, 0); }

Étape 15: Configurer l'affichage

void setupDisplay(){ display.init(); display.setRotation(1); display.fillScreen(TFT_BLUE); //Limpa o display com a cor azul display.setTextColor(TFT_WHITE, TFT_BLUE); //Coloca o texto como branco com fundo azul display.setTextWrap(true, true);//Ativa quebra de linha display.setTextSize(1); display.setCursor(0, 0, 2); //Posicção x, y e fonte do texto display.println("Setup Display Complete"); }

Étape 16: Configurer le GSM

void setupGSM(){ display.println("Configuration GSM…"); //Inicializamos a serial onde está o modem SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); retard(3000); //Plus d'informations sur le modem Serial.println(modemGSM.getModemInfo()); //Inicializa o modem if (!modemGSM.restart()) { display.println("Le redémarrage du modem GSM a échoué"); retard (10000); ESP.restart(); revenir; } // Espera pela rede if (!modemGSM.waitForNetwork()) { display.println("Échec de la connexion au réseau"); retard (10000); ESP.restart(); revenir; } // Connexion à rede gprs (APN, usuário, senha) if (!modemGSM.gprsConnect("", "", "")) { display.println("Échec de la connexion GPRS"); retard (10000); ESP.restart(); revenir; } display.println("Configuration réussie du GSM"); }

Étape 17: ConnectMQTTServer

void connectMQTTServer() { display.println("Connexion au serveur MQTT…"); //Se connecter à un périphérique que definimos if (client.connect(DEVICE_ID, TOKEN, "")) { //Se connecter à un tel résultat display.println("Connected"); } else { //Se ocorreu algum erro display.print("error = "); display.println(client.state()); retard (10000); ESP.restart(); } }

Étape 18: Boucler

void loop() { //Faire une lecture de la température et de la température readDHT(); //Se desconectou do server MQTT if(!client.connected()) { //Mandamos conectar connectMQTTServer(); } //Tempo decorrido desde o boot em milissegundos unsigned long now = millis(); //Se passe à l'intervalle de l'environnement if(now - lastTime > INTERVAL) { //Publicamos para o server mqtt publishMQTT(); //Mostramos os dados no display showDataOnDisplay(); //Atualizamos o tempo em que fo feito o último envio lastTime = now; } }

Étape 19: Lire DHT

void readDHT(){ float t, h; //Faz a leitura da umidade e temperatura e apenas atualiza as variáveis se foi bem successedido if (dht.read2(DHT_PIN, &t, &h, NULL) == SimpleDHTErrSuccess) { temperature = t; humidité = h; } }

Étape 20: Publiez MQTT

void publishMQTT(){ //Cria o json que iremos enviar para o server MQTT String msg = createJsonString(); Serial.print("Publier le message: "); Serial.println(msg); //Publicamos no topico int status = client.publish(TOPIC, msg.c_str()); Serial.println("Status: " + String(status));//Status 1 se sucesso ou 0 se deu erro }

Étape 21: Créer une chaîne Json

CréerJsonString
CréerJsonString

String createJsonString() { String data = "{"; if(!isnan(humidité) && !isnan(température)) { data+="\"humidité\":"; data+=String(humidité, 2); données+=", "; data+="\"température\":"; data+=String(température, 2); } données+="}"; renvoyer des données; }

Étape 22: Afficher les données sur l'affichage

void showDataOnDisplay(){ //Réinitialiser la position du curseur et la plupart des températures et des températures display.setCursor(0, 0, 2); display.println("Humidity: " + String(humidité, 2)); display.println("Température: " + String(température, 2)); }

Étape 23: Fichiers

Télécharger les fichiers

INO

PDF

Conseillé: