Mundarija:
- 1 -qadam: Namoyish
- 2 -qadam: yig'ish
- 3 -qadam: O'rnatish - Jadval
- 4 -qadam: Ubidotlar
- 5 -qadam: SimpleDHT kutubxonasi
- 6 -qadam: PubSubClient kutubxonasi
- 7 -qadam: TinyGSM kutubxonasi
- 8 -qadam: TFT_eSPI kutubxonasi
- 9 -qadam: TFT_eSPI kutubxonasi
- 10 -qadam: Ubidotlar
- 11 -qadam:.ino -dagi ma'lumotlarni o'zgartirish
- 12 -qadam: GPRS_ESP32_DHT.ino - Deklaratsiyalar va o'zgaruvchilar
- 13 -qadam: qadash
- 14 -qadam: sozlash
- 15 -qadam: Displeyni sozlash
- 16 -qadam: GSM -ni sozlash
- 17 -qadam: ConnectMQTTServer
- 18 -qadam: Loop
- 19 -qadam: ReadDHT
- 20 -qadam: PublishMQTT
- 21 -qadam: CreateJsonString
- 22 -qadam: ShowDataOnDisplay
- 23 -qadam: fayllar
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Bugun biz GPRS -modem, aniqrog'i, ESP32 va undan uyali telefon tarmog'ida foydalanish haqida gaplashamiz. Bu juda yaxshi ishlaydigan narsa. MQTT protokoli yordamida biz ma'lumotlarni Ubidots boshqaruv paneliga yuboramiz. Ushbu yig'ilishda SIM800L va uyali telefon chipidan tashqari, kontaktlarning zanglashiga olib keladigan displeydan foydalaning. Shunday qilib, ushbu loyiha yordamida biz GPRS va MQTT orqali harorat va namlik ma'lumotlarini yuboramiz va ma'lumotlarni chiziqli jadvalda ingl.
1 -qadam: Namoyish
2 -qadam: yig'ish
3 -qadam: O'rnatish - Jadval
4 -qadam: Ubidotlar
5 -qadam: SimpleDHT kutubxonasi
Arduino IDE-da Sketch-> Kutubxonani qo'shish-> Kutubxonalarni boshqarish-ga o'ting.
SimpleDHT -ni o'rnating
6 -qadam: PubSubClient kutubxonasi
Arduino IDE-da Sketch-> Kutubxonani qo'shish-> Kutubxonalarni boshqarish-ga o'ting.
PubSubClient -ni o'rnating
7 -qadam: TinyGSM kutubxonasi
Arduino IDE-da Sketch-> Kutubxonani qo'shish-> Kutubxonalarni boshqarish-ga o'ting.
TinyGSM -ni o'rnating
8 -qadam: TFT_eSPI kutubxonasi
Arduino IDE-da Sketch-> Kutubxonani qo'shish-> Kutubxonalarni boshqarish-ga o'ting.
TFT_eSPI -ni o'rnating
9 -qadam: TFT_eSPI kutubxonasi
Lib papkasidagi ko'rsatgich pinlarini o'zgartiring.
Ilova User_Setup.h faylida joylashgan
C: / Foydalanuvchilar / Hujjatlar / Arduino / kutubxonalari / TFT_eSPI
Ushbu standartlarni rasmdagi quyidagi qiymatlarga o'zgartiring.
10 -qadam: Ubidotlar
Hisob qaydnomangiz bilan Ubidots -ga kiring va "Qurilmalar" ni bosing
O'ng yuqori burchakdagi "+" tugmasini bosing
Bo'sh -ni bosing
Qurilma nomini kiriting. "Qurilma yorlig'i" ga e'tibor bering, chunki bu biz.ino -da ishlatadigan "mavzu" da ishlatiladi
Qurilmalar ro'yxatida siz yaratgan qurilma paydo bo'ladi. Unga bosing.
Ko'rsatilgan ekranda "O'zgaruvchini qo'shish" ni bosing. Qalqib chiquvchi oyna paydo bo'ladi. "Xom" ni bosing.
Matn maydonini bosing va mulk nomini kiriting.
Bu biz.ino json -da yuboradigan narsa bo'lishi kerak. Buni boshqa mulk uchun takrorlang.
Ubidots logotipini bosish orqali boshqaruv paneliga qayting.
Boshqaruv panelida "Yangi vidjet qo'shish" ni bosing.
Vidjetlar ro'yxatida "Ikki o'q" ni tanlang.
11 -qadam:.ino -dagi ma'lumotlarni o'zgartirish
12 -qadam: GPRS_ESP32_DHT.ino - Deklaratsiyalar va o'zgaruvchilar
#TINY_GSM_MODEM_SIM800 ni belgilang // modemni kiritish #qo'shishni #qo'shishni #qo'shishni #qo'shishni // qo'shishni belgilaydi // Token de usuário que pegamos no Ubidots #define TOKEN "BBFF-abcdefghijklmnztoptotexnotpostat" (esp32_gprs é o nome do dispositivo no Ubidots) # #TOPIC "/v1.6/devices/esp32_gprs" ni aniqlang // // Ubidots uchun hech qanday og'riq yo'q #DEVINE_DEVICE_ID "5c01234567890abc12345QVT MERT #T_T_T_T_T_T_T_T_T_T_T_T_T_T_Qida Qo'llaniladi" mqtt: //things.ubidots.com "// MQTT -ni tanlang #MQTT_PORT 1883 -ni aniqlang // DHT22 -ni aniqlang #DHT_PIN 27 -ni aniqlang.
13 -qadam: qadash
// User_Setup.h va bibliotecaTFT_eSPI displeyini ko'rsatish = TFT_eSPI (); // Intervalo entre os envios e refresh da tela #define INTERVAL 10000 // Kanalning ketma -ket ulanishi uchun modem. Semper 1 HardwareSerial SerialGSM (1) dan foydalaning; TinyGsm modemGSM (SerialGSM); TinyGsmClient gsmClient (modemGSM); // MQTT mijozi, url -server serveri, port GSM PubSubClient mijozi (MQTT_SERVER, MQTT_PORT, gsmClient); // Ish vaqtini o'zgartirish/yangilash foi feito uint32_t lastTime = 0; namlik namligi; // Variável onde iremos armazenar o valor da umidade float harorat; // Variantlar har xil darajalarda, oddiy haroratda SimpleDHT22; // Ob'ektlar harorati va haroratini o'lchash
14 -qadam: sozlash
void setup () {Serial.begin (115200); setupDisplay (); // Displeyni sozlash uchun GSM konfiguratsiyasi (); // GSM connectMQTTServer modemining konfiguratsiyasi (); // Aloqa serveri bilan bog'lanish // Espera 2 -ni ko'rsatish yoki kechiktirish (2000); display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }
15 -qadam: Displeyni sozlash
void setupDisplay () {display.init (); display.setRotation (1); display.fillScreen (TFT_BLUE); // Limfa displeyi displey.setTextColor (TFT_WHITE, TFT_BLUE); // Coloca yoki texto como branco com fundo azul display.setTextWrap (rost, rost); // Displey displeyi.setTextSize (1); display.setCursor (0, 0, 2); // Posicção x, y e fonte do texto display.println ("Displeyni sozlash tugallandi"); }
16 -qadam: GSM -ni sozlash
void setupGSM () {display.println ("GSM ni sozlash …"); // SerialGSM.begin (9600, SERIAL_8N1, 4, 2, noto'g'ri) modemlarining ketma -ketligi; kechikish (3000); // Serial.println (modemGSM.getModemInfo ()) modemi haqida ma'lumot; // Modemni ishga tushirish if (! ModemGSM.restart ()) {display.println ("GSM modemini qayta ishga tushirib bo'lmadi"); kechikish (10000); ESP.restart (); qaytish; } // Espera pa rede if (! ModemGSM.waitForNetwork ()) {display.println ("Tarmoqqa ulanib bo'lmadi"); kechikish (10000); ESP.restart (); qaytish; } // Conecta à rede gprs (APN, usuário, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("GPRS ulanmagan"); kechikish (10000); ESP.restart (); qaytish; } display.println ("GSM muvaffaqiyatini o'rnatish"); }
17 -qadam: ConnectMQTTServer
void connectMQTTServer () {display.println ("MQTT serveriga ulanmoqda …"); // Agar qurilma aniqlansa, u holda (client.connect (DEVICE_ID, TOKEN, "")) {// Display.println ("Ulangan") ni tanlang; } else {// ekranni ko'rsatish.print ("xato ="); display.println (client.state ()); kechikish (10000); ESP.restart (); }}
18 -qadam: Loop
void loop () {// Faz a leitura da umidade e temperatura readDHT (); // MQTT serverini belgilang, agar (! Client.connected ()) {// Mandamos conectar connectMQTTServer (); } // Tempo dekorido desde o boot em milissegundos unsigned long now = millis (); // Agar siz (hozir - lastTime> INTERVAL) {passiv o intervalli de envio if {now - lastTime> INTERVAL) {// PublicMos server server mqtt publishMQTT (); // Mostramos os dados showDataOnDisplay () ko'rsatilmaydi; // Atrof -muhitni saqlash tezligi yoki vaqtini o'lchash lastTime = hozir; }}
19 -qadam: ReadDHT
void readDHT () {float t, h; // Faz a leitura da umidade e temperatura e apenas atualiza as a variáveis se foi bem sucedido if (dht.read2 (DHT_PIN, & t, & h, NULL) == SimpleDHTErrSuccess) {harorat = t; namlik = h; }}
20 -qadam: PublishMQTT
void publishMQTT () {// MQTT String serveri uchun eng muhim vazifa msg = createJsonString (); Serial.print ("Xabarni chop etish:"); Serial.println (msg); // Ochiq havolalar mavjud emas status = client.publish (TOPIC, msg.c_str ()); Serial.println ("Holat:" + String (holat)); // Status 1 -ni tanlang va 0 -ni tanlang.
21 -qadam: CreateJsonString
String createJsonString () {String data = "{"; if (! isnan (namlik) &&! isnan (harorat)) {ma'lumotlar+= "\" namlik / ":"; ma'lumotlar+= String (namlik, 2); ma'lumotlar+= ","; ma'lumotlar+= "\" harorat / ":"; ma'lumotlar+= String (harorat, 2); } ma'lumotlar+= "}"; ma'lumotlarni qaytarish; }
22 -qadam: ShowDataOnDisplay
void showDataOnDisplay () {// Resurs a posicão do cursor or mostra umidade va temperatura lidas display.setCursor (0, 0, 2); display.println ("Namlik:" + String (namlik, 2)); display.println ("Harorat:" + String (harorat, 2)); }
23 -qadam: fayllar
Fayllarni yuklab oling
INO