תוכן עניינים:
- שלב 1: הפגנה
- שלב 2: הרכבה
- שלב 3: הרכבה - שולחן
- שלב 4: Ubidots
- שלב 5: ספריית SimpleDHT
- שלב 6: ספריית PubSubClient
- שלב 7: ספריית TinyGSM
- שלב 8: ספריית TFT_eSPI
- שלב 9: ספריית TFT_eSPI
- שלב 10: Ubidots
- שלב 11: שינוי הנתונים ב-.ino
- שלב 12: GPRS_ESP32_DHT.ino - הצהרות ומשתנים
- שלב 13: הצמדה
- שלב 14: התקנה
- שלב 15: SetupDisplay
- שלב 16: הגדרת GSM
- שלב 17: ConnectMQTTServer
- שלב 18: לולאה
- שלב 19: ReadDHT
- שלב 20: PublishMQTT
- שלב 21: CreateJsonString
- שלב 22: ShowDataOnDisplay
- שלב 23: קבצים
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
היום נדון במודם GPRS, או ליתר דיוק, ב- ESP32 והשימוש בו ברשת הטלפונים הסלולריים. זה משהו שעובד טוב מאוד. באמצעות פרוטוקול MQTT, לאחר מכן נשלח נתונים ללוח המחוונים של Ubidots. השתמש במכלול זה במסך למשוב על המעגל, בנוסף ל- SIM800L ושבב הטלפון הסלולרי. לכן בפרויקט זה נשלח נתוני טמפרטורה ולחות באמצעות GPRS ו- MQTT ונציג את הנתונים בתרשים קווים.
שלב 1: הפגנה
שלב 2: הרכבה
שלב 3: הרכבה - שולחן
שלב 4: Ubidots
שלב 5: ספריית SimpleDHT
ב- IDE של Arduino, עבור אל סקיצה-> כלול ספרייה-> נהל ספריות …
התקן את SimpleDHT
שלב 6: ספריית PubSubClient
ב- IDE של Arduino, עבור אל סקיצה-> כלול ספרייה-> נהל ספריות …
התקן את PubSubClient
שלב 7: ספריית TinyGSM
ב- IDE של Arduino, עבור אל סקיצה-> כלול ספרייה-> נהל ספריות …
התקן את TinyGSM
שלב 8: ספריית TFT_eSPI
ב- IDE של Arduino, עבור אל סקיצה-> כלול ספרייה-> נהל ספריות …
התקן את TFT_eSPI
שלב 9: ספריית TFT_eSPI
שנה את סיכות התצוגה בתיקיית lib.
ההצמדה נמצאת בקובץ User_Setup.h ב
C: / Users / Documents / Arduino / libraries / TFT_eSPI
שנה את ברירות המחדל לערכים הבאים בתמונה.
שלב 10: Ubidots
היכנס ל- Ubidots עם החשבון שלך ולחץ על התקנים
לחץ על כפתור "+" בפינה השמאלית העליונה
לחץ על ריק
הזן את שם המכשיר. שים לב ל"תווית המכשיר ", שכן הדבר ישמש ב"נושא" בו נשתמש ב-.ino
ברשימת המכשירים יופיע המכשיר שיצרת זה עתה. לחץ על זה.
במסך שמופיע לחץ על "הוסף משתנה". יופיע קופץ. לחץ על "Raw".
לחץ על תיבת הטקסט והזן את שם הנכס.
זה חייב להיות בדיוק מה שנשלח ב- json של ה-.ino. חזור על פעולה זו עבור הנכס האחר.
חזור ללוח המחוונים על ידי לחיצה על הלוגו של Ubidots.
בלוח המחוונים, לחץ על "הוסף ווידג'ט חדש"
ברשימת הווידג'טים, בחר "ציר כפול"
שלב 11: שינוי הנתונים ב-.ino
שלב 12: 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
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