תוכן עניינים:

IOT עם רשת סלולרית עם ESP32: 23 שלבים
IOT עם רשת סלולרית עם ESP32: 23 שלבים

וִידֵאוֹ: IOT עם רשת סלולרית עם ESP32: 23 שלבים

וִידֵאוֹ: IOT עם רשת סלולרית עם ESP32: 23 שלבים
וִידֵאוֹ: Как запрограммировать модуль реле Wi-Fi ESP8266 ESP-01 2024, יולי
Anonim
Image
Image
הפגנה
הפגנה

היום נדון במודם GPRS, או ליתר דיוק, ב- ESP32 והשימוש בו ברשת הטלפונים הסלולריים. זה משהו שעובד טוב מאוד. באמצעות פרוטוקול MQTT, לאחר מכן נשלח נתונים ללוח המחוונים של Ubidots. השתמש במכלול זה במסך למשוב על המעגל, בנוסף ל- SIM800L ושבב הטלפון הסלולרי. לכן בפרויקט זה נשלח נתוני טמפרטורה ולחות באמצעות GPRS ו- MQTT ונציג את הנתונים בתרשים קווים.

שלב 1: הפגנה

שלב 2: הרכבה

הַרכָּבָה
הַרכָּבָה

שלב 3: הרכבה - שולחן

הרכבה - שולחן
הרכבה - שולחן

שלב 4: Ubidots

Ubidots
Ubidots

שלב 5: ספריית SimpleDHT

ספריית SimpleDHT
ספריית SimpleDHT

ב- IDE של Arduino, עבור אל סקיצה-> כלול ספרייה-> נהל ספריות …

התקן את SimpleDHT

שלב 6: ספריית PubSubClient

ספריית PubSubClient
ספריית PubSubClient

ב- IDE של Arduino, עבור אל סקיצה-> כלול ספרייה-> נהל ספריות …

התקן את PubSubClient

שלב 7: ספריית TinyGSM

ספריית TinyGSM
ספריית TinyGSM

ב- IDE של Arduino, עבור אל סקיצה-> כלול ספרייה-> נהל ספריות …

התקן את TinyGSM

שלב 8: ספריית TFT_eSPI

ספריית TFT_eSPI
ספריית TFT_eSPI

ב- IDE של Arduino, עבור אל סקיצה-> כלול ספרייה-> נהל ספריות …

התקן את TFT_eSPI

שלב 9: ספריית TFT_eSPI

ספריית TFT_eSPI
ספריית TFT_eSPI

שנה את סיכות התצוגה בתיקיית lib.

ההצמדה נמצאת בקובץ User_Setup.h ב

C: / Users / Documents / Arduino / libraries / TFT_eSPI

שנה את ברירות המחדל לערכים הבאים בתמונה.

שלב 10: Ubidots

Ubidots
Ubidots
Ubidots
Ubidots
Ubidots
Ubidots

היכנס ל- Ubidots עם החשבון שלך ולחץ על התקנים

לחץ על כפתור "+" בפינה השמאלית העליונה

לחץ על ריק

הזן את שם המכשיר. שים לב ל"תווית המכשיר ", שכן הדבר ישמש ב"נושא" בו נשתמש ב-.ino

ברשימת המכשירים יופיע המכשיר שיצרת זה עתה. לחץ על זה.

במסך שמופיע לחץ על "הוסף משתנה". יופיע קופץ. לחץ על "Raw".

לחץ על תיבת הטקסט והזן את שם הנכס.

זה חייב להיות בדיוק מה שנשלח ב- json של ה-.ino. חזור על פעולה זו עבור הנכס האחר.

חזור ללוח המחוונים על ידי לחיצה על הלוגו של Ubidots.

בלוח המחוונים, לחץ על "הוסף ווידג'ט חדש"

ברשימת הווידג'טים, בחר "ציר כפול"

שלב 11: שינוי הנתונים ב-.ino

שינוי הנתונים ב-.ino
שינוי הנתונים ב-.ino
שינוי הנתונים ב-.ino
שינוי הנתונים ב-.ino

שלב 12: GPRS_ESP32_DHT.ino - הצהרות ומשתנים

GPRS_ESP32_DHT.ino - הצהרות ומשתנים
GPRS_ESP32_DHT.ino - הצהרות ומשתנים

#define TINY_GSM_MODEM_SIM800 // Tipo de modem que estamos usando #include #include #include #include // Token de usuário que pegamos no Ubidots #define TOKEN "BBFF-abcdefghijklmnopqrstuvwxyz0123" // tosico (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 mqtt: //things.ubidots.com "// Porta padrão do MQTT #define MQTT_PORT 1883 // Pino onde está o DHT22 #define DHT_PIN 27

שלב 13: הצמדה

הצמדת
הצמדת

// Pinagem em User_Setup.h עם פסטה של bibliotecaTFT_eSPI display = TFT_eSPI (); // Intervalo entre os envios e refresh da tela #define INTERVAL 10000 // Canal serial que vamos usar para comunicarmos com or modem. השתמש ב- semper 1 HardwareSerial SerialGSM (1); מודם TinyGsm GSM (SerialGSM); TinyGsmClient gsmClient (מודם GSM); // Cliente MQTT, passamos a URL do server, 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; לחות צפה; // Variável onde iremos armazenar o valor da umidade טמפרטורת המצוף; // Variável onde iremos armazenar o valor da temperatura SimpleDHT22 dht; // Objeto que realizará a leitura da umidade e temperatura

שלב 14: התקנה

הגדרת void () {Serial.begin (115200); setupDisplay (); // הרשמה ותצורה של תצוגת תצוגה GSM (); // רשמי ותצורת מודם GSM connectMQTTServer (); // Conectamos ao mqtt server // Espera 2 segundos e limpamos או עיכוב תצוגה (2000); display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }

שלב 15: SetupDisplay

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 ("תצוגת ההתקנה הושלמה"); }

שלב 16: הגדרת GSM

void setupGSM () {display.println ("התקנת GSM …"); // רשמי אוסף סדרתי GSM.begin (9600, SERIAL_8N1, 4, 2, false); עיכוב (3000); // Mostra informação sobre of modem Serial.println (modemGSM.getModemInfo ()); // רשמי מודם אם (! ModemGSM.restart ()) {display.println ("הפעלה מחדש של מודם GSM נכשל"); עיכוב (10000); ESP.restart (); לַחֲזוֹר; } // Espera pela rede if (! ModemGSM.waitForNetwork ()) {display.println ("החיבור לרשת נכשל"); עיכוב (10000); ESP.restart (); לַחֲזוֹר; } // Conecta à rede gprs (APN, usuário, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("חיבור GPRS נכשל"); עיכוב (10000); ESP.restart (); לַחֲזוֹר; } display.println ("התקנת GSM בהצלחה"); }

שלב 17: ConnectMQTTServer

void connectMQTTServer () {display.println ("מתחבר לשרת MQTT …"); // Se conecta ao device que definimos if (client.connect (DEVICE_ID, TOKEN, "")) {// Se a conexão foi bem sucedida display.println ("מחובר"); } אחר {// Se ocorreu algum erro display.print ("error ="); display.println (client.state ()); עיכוב (10000); ESP.restart (); }}

שלב 18: לולאה

void loop () {// Faz a leitura da umidade e temperatura readDHT (); // אפשר להסיר את השרת MQTT אם (! Client.connected ()) {// Mandamos conectar connectMQTTServer (); } // Tempo decorrido desde o boot em milissegundos unsigned long now = millis (); // עיין במערך ההפסקה אם (עכשיו - אחרון הזמן> INTERVAL) {// Publicamos עבור שרת mqtt publishMQTT (); // Mostramos os dados no display showDataOnDisplay (); // Atualizamos o tempo em que foi feito o último envio lastTime = now; }}

שלב 19: ReadDHT

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

שלב 20: PublishMQTT

void publishMQTT () {// Cria o json que iremos enviar for a server MQTT String msg = createJsonString (); Serial.print ("פרסם הודעה:"); Serial.println (הודעה); // Publicamos no tópico int status = client.publish (TOPIC, msg.c_str ()); Serial.println ("סטטוס:" + מחרוזת (סטטוס)); // סטטוס 1 יכול להצליח

שלב 21: CreateJsonString

CreateJsonString
CreateJsonString

String createJsonString () {נתוני מחרוזת = "{"; אם (! isnan (לחות) &&! isnan (טמפרטורה)) {data+= "\" לחות / ":"; data+= מחרוזת (לחות, 2); נתונים+= ","; data+= "\" טמפרטורה / ":"; data+= מחרוזת (טמפרטורה, 2); } נתונים+= "}"; החזרת נתונים; }

שלב 22: ShowDataOnDisplay

void showDataOnDisplay () {// Reseta a posição do porcursor e mostra umidade e temperatura lidas display.setCursor (0, 0, 2); display.println ("לחות:" + מחרוזת (לחות, 2)); display.println ("טמפרטורה:" + מחרוזת (טמפרטורה, 2)); }

שלב 23: קבצים

הורד את הקבצים

INO

PDF

מוּמלָץ: