Мазмұны:

ESP8266: Температура мен ылғалдылықты қалай бақылауға болады: 12 қадам
ESP8266: Температура мен ылғалдылықты қалай бақылауға болады: 12 қадам

Бейне: ESP8266: Температура мен ылғалдылықты қалай бақылауға болады: 12 қадам

Бейне: ESP8266: Температура мен ылғалдылықты қалай бақылауға болады: 12 қадам
Бейне: How to use DHT11 DHT22 with NodeMCU ESP8266 to read temperature over WiFi - IoT 2024, Шілде
Anonim
Image
Image
Ассамблея
Ассамблея

Бүгінгі оқулықта DHT22 сенсорының температурасы мен ылғалдылығы көрсеткіштері үшін 01 конфигурациясындағы ESP8266 ESP-01 пайдаланылады (тек 2 GPIO бар). Мен сізге Arduino көмегімен электрлік схеманы және ESP бағдарламалау бөлігін көрсетемін. Мысал қарапайым, түсінуге оңай, сонымен қатар жинақтауға көмектесу үшін бейнеде қолданылатын PDF файлымен бірге келеді.

Дизайнда бізде ESP01, 110 немесе 220 -ны 5 вольтке түрлендіретін көзі, 3в3 кернеу реттегіші және сенсор болып табылатын DHT22 бар. Смартфон экранында сізде ESP ұсынған JavaScript кодынан басқа жергілікті IP мекенжайы болады. Бұл экран температура мен ылғалдылық параметрлерін алады және бұл мәндерді басып шығарады, олар әр бес секунд сайын жаңартылып отырады. Мұны істеу үшін сізге телефондар мен планшеттерде ешқандай қосымша қажет емес, бұл Android OS пен IOS үшін де қолданылады.

1 -қадам: құрастыру

Электр схемасы өте қарапайым, сонымен қатар сервер ретінде ESP01 қатысатын құрастыру бөлігі. ESPO1 Arduino сияқты бағдарламаланатын болады: C тілі арқылы. Мен кодтың бір бөлігі шолғыштан басып шығарылғанын көрсетемін. Бұл браузерге JavaScript кодын жіберетінін білдіреді. Төменде мен бұл қалай жұмыс істейтінін жақсы түсіндіремін.

Сымдардың схемасына оралсақ, мен ESP01-ге қуат беру үшін 3в3 кернеу реттегішіне қосылған 5 вольтты қосылатын көзді қойдым. Бізде әлі де төрт түйреуішті DHT22 бар. Олардың бірі, деректер қолданылмайды. Алайда, ол үшін резистор қажет.

2 -қадам: код

Бірінші қадам - біз қолданатын либтерді қосу. DHT lib -ті Sketch опциясы> Кітапхананы қосу> Кітапханаларды басқару арқылы қосуға болады …

Ашылған терезеде DHT сенсорлық кітапханасын іздеңіз.

Осыдан кейін біз ESP8266WebServer түріндегі айнымалы құрдық, ол біздің сервер болады және HTTP сұрауларына жауап береді (80 -порт).

Біз сондай -ақ 0 параметрлері бар DHT айнымалысын құрамыз (бұл GPIO PIN 0) және түрі (біздің жағдайда DHT22).

#қосу #қосу #қосу #қосу // ESP8266WebServer сервисінің кез келген функциясы // ESP8266 сервисінің кез келген сұранысына жауап беруші ESP8266WebServer сервері (80); // DHT -нің әртүрлі нұсқалары DHT dht (0, DHT22) температурасы мен температурасының реттелуіне мүмкіндік береді;

3 -қадам: Орнату

Орнатуда біз журналды алу үшін серияны инициализациялаймыз. Бұл ESP8266 компьютерге сериялық мониторды пайдалану үшін серия арқылы қосылған жағдайда орын алады.

Біз ESP8266 желісін желіге қосамыз. Біздің жағдайда біз TesteESP желісін 87654321 паролімен қолданамыз, бірақ сіз оны қолданатын желіге сәйкес өзгертуге тура келеді.

// ESP8266 сериялы байланыстарды ресми түрде жариялау немесе тіркеу журналы // ESP8266 Serial.begin (115200); // ESP8266 бойынша нұсқаулық. // Ешқандай да нұсқа жоқ 87654321. // Кері байланыс Serial Serial.println («») мониторы; Serial.print («Conectando»);

Біз ESP8266 желіге қосылуын күтеміз, ол қосылғаннан кейін желі параметрлерін жібереміз. Желіге сәйкес өзгертіңіз.

// Esperamos até que o módulo se conecte à rede while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print («.»); } // IP түзетулерін конфигурациялау. IPAddress IP (192, 168, 3, 11) IP -мекен -жайларын өзгертуге болады; IPAddress шлюзі (192, 168, 3, 1); IPAddress ішкі желісі (255, 255, 255, 0); Serial.print («Configurando IP fixo para:»); Serial.println (ip); // WiFi.config конфигурациясына ену (ip, шлюз, ішкі желі);

Келесі пәрмендер тек ESP8266 компьютерге сериялық байланыс арқылы қосылған жағдайда ғана болады, осылайша сізде сериялық монитордан кері байланыс болады.

ESP8266 алған IP -ді оның параметрлердегідей екенін тексеру үшін тексеруге болады.

// Mostramos жоқ Monitor Serial o ip com o qual or esp8266 con configure for the configuramos Serial.println («»); Serial.println («Connectado»); Serial.print («IP:»); Serial.println (WiFi.localIP ());

Мұнда біз әр сұраныс үшін қандай функциялар орындалатынын анықтай бастаймыз.

Төмендегі нұсқаулықта ESP8266 жолда / температурада GET түріндегі HTTP сұранысын алған сайын getTemperature функциясы орындалады.

// Ақпараттық анықтамалар осы функцияларды орындауға мүмкіндік береді. // Нақты емес жағдайда https://192.168.2.8/temperature алу мүмкін емес https://192.168.2.8/temperature // (бұл желіге тәуелділікке байланысты) getTemperature server.on («/температура», HTTP_GET), getTemperature);

Бұл басқа мәлімдемеде, ESP8266 жолда / ылғалдылықта GET түріндегі HTTP сұранысын алған сайын getHumidity функциясы орындалады.

// Нашақорлық қажет болған жағдайда https://192.168.2.8/ ылғалдылыққа қол жеткізу мүмкін емес https://192.168.2.8/ ылғалдылық // (бұл желінің конфигурациясына байланысты) getHumidity сервері.on («/ылғалдылық») HTTP_GET, getHumidity);

Бұл нұсқаулықта ESP8266 жолда / мониторда GET түріндегі HTTP сұранысын алған сайын showMonitor функциясы орындалады.

ShowMonitor функциясы температура мен ылғалдылық мәндерін көрсететін негізгі html -ді қайтаруға жауап береді.

// Жоқ болса, https://192.168.2.8/monitor алу қажет емес https://192.168.2.8/monitor // (шотыңызға байланысты) шоу бағдарламасының мониторы орындалады. // Есептік жазбаның негізгі функциялары // олардың температурасы мен жылдамдығы сервер.on («/монитор», HTTP_GET, showMonitor) туралы ақпараттың өзгеруі;

Міне, сұралған жол табылмаған кезде орындалуы тиіс функцияның анықтамасы.

// Ақпараттық анықтамалар сапалы түрде орындалады, бұл клиенттерге қажет емес: server.onNotFound (onNotFound);

Мұнда біз бұрын 80 -портта жариялаған серверді инициализациялаймыз.

Бұл баптаудың соңы.

// 80 server.begin () портына кіруге рұқсат етілмеген сервер; Serial.println («Servidor HTTP iniciado»); }

4 -қадам: ілмек

ESP8266WebServer lib арқасында клиенттердің бар -жоғын және сұрау жолының қандай болатынын тексеріп отырудың қажеті жоқ. Біз тек handleClient () деп қоңырау шалуымыз керек, және объект кез келген клиенттің сұраныстар жасайтынын тексереді және біз бұрын тіркелген сәйкес функцияға бағыттайды.

void loop () {// Server.handleClient () серверінің деректерін тексеру қажет; }

5 -қадам: Сұраныс табылмады

Бұл клиент тіркелмеген кез келген сұранысты жасаған кезде біз орындау үшін бұрын тіркелген функция.

Функция тек 404 кодын (ресурс табылмаған кездегі әдепкі код), қайтарылған деректер түрін (қарапайым мәтін жағдайында) және «Табылмады» сөздері бар мәтінді қайтарады.

// FunNo for a desimosos for a chamados quado or a recaminites void for no registrado void onNotFound () {server.send (404, «text/plain», «Not Found»); }

6 -қадам: Температураны қайтару

Бұл клиент / температурада GET сұрауын жасаған кезде температура деректерімен json қайтаратын функция.

// Тапсырыс берушіге тапсырма беру үшін тапсырыс беру // тапсырма алу қажет емес https://192.168.2.8/temperature. da temperatura através módulo dht float t = dht.readTemperature (); // Cria um json com os dados da temperatura String json = «{» температура / «:»+Жол (t)+«}»; // Envia o json for cliente com o código 200, server.send (200, «application/json», json); }

7 -қадам: Ылғалдылықты қайтару

Бұл клиент / ылғалдылықта GET сұрауын жасаған кезде ылғалдылық деректерімен json қайтаратын функция.

// Клиенттердің сұранысы бойынша тапсырма орындалатын болса // оны алудың қажеті жоқ https://192.168.2.8/ ылғалдылық үміттендіретін құралдар = hht.readHumidity (); // Cria um json com os dados da umidad String json = «{» ылғалдылығы / «:»+Жол (h)+«}»; // Envia o json for cliente com o código 200, server.send (200, «application/json», json); }

8 -қадам: HTML

Бұл клиент қатынауға / мониторға барғанда html қайтаратын функция. Бұл бетте температура мен ылғалдылық мәндері көрсетіледі және ол мезгіл -мезгіл деректерді қайта жүктейді. Және стилі арасындағы бөлік>

беттің сыртқы түрін анықтайды және оны қалағаныңызша өзгертуге болады.

// Тапсырыс берушінің сұранысы бойынша тапсырыс берушіге тапсырыс беру // тапсырма алудың қажеті жоқ https://192.168.2.8/monitor (сілтемені конфигурациялау кезінде) showMonitor жарамсыз () {String html = «» «» «»

«DHT мониторы»

«дене {»

«толтыру: 35 пиксель;»

«background-color: #222222;» «}»

9 -қадам: HTML стилінің жалғасы

«h1 {» «түсі: #FFFFFF;» «font-family: sans-serif;» «}» «p {» «түсі: #EEEEEE;» «font-family: sans-serif;» «қаріп өлшемі: 18px;» «}» «»

Мұнда бізде html -дің негізгі бөлігі бар. Онда бізде температура мен ылғалдылықты көрсететін екі параграф бар. Абзацтардың идентификаторларына назар аударыңыз, өйткені олар арқылы біз талап етілгеннен кейін температура мен ылғалдылық мәндерін енгізу үшін осы параграфтарды қалпына келтіреміз.

DHT мониторы

Температура:

Ылғалдылық:

10 -қадам: JavaScript

Мұнда біз мезгіл -мезгіл температура мен ылғалдылық мәндерін оқитын сценарийді анықтай бастаймыз. Refresh () функциясы refreshTemperature () және refreshHumdity () функцияларын шақырады, ал setInterval жаңарту функциясын әр 5000 миллисекунд сайын (5 секунд) шақырады.

«жаңарту ();» «setInterval (жаңарту, 5000);» «функцияны жаңарту ()» «{» «refreshTemperature ()» «refreshHumidity ();» «}»

RefreshTemperature () функциясы / температурасында сұраныс жасайды, json ішіндегі ақпаратты талдайды және параграфқа id температурасын қосады.

«refreshTemperature функциясы») «» «» var xmlhttp = new XMLHttpRequest (); « «xmlhttp.onreadystatechange = function () {» «if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {» «document.getElementById ('температура). innerHTML =' Температура: ' + JSON. талдау (xmlhttp.responseText).temperature + 'C'; « «}» «};» «xmlhttp.open ('GET', 'https://192.168.2.8/temperature', ақиқат);» «xmlhttp.send ();» «}»

RefreshHumidity () функциясы ылғалдылыққа сұраныс жасайды, json ішіндегі ақпаратты талдайды және абзацқа ылғалдылық идентификаторын қосады. Сонымен, біз сұрауларға / мониторға жіберетін html -ді аяқтаймыз.

«refreshHumidity () функциясы» «» «» var xmlhttp = new XMLHttpRequest (); « «xmlhttp.onreadystatechange = function () {» «if (xmlhttp.readyState == XMLHttpRequest. DONE && xmlhttp.status == 200) {» «document.getElementById ('ылғалдылық'). innerHTML = 'Ылғалдылық:' + JSON. талдау (xmlhttp.responseText). ылғалдылық + '%'; « «}» «};» «xmlhttp.open ('GET', 'https://192.168.2.8/ humidity', true);» «xmlhttp.send ();» «}»

"";

11 -қадам: ShowMonitor бағдарламасын аяқтау

Енді біз жіберетін html бар жол дайын болғанда, біз оны клиентке жібере аламыз. Бұл showMonitor функциясын және кодты аяқтайды.

// Envia o html for cliente codigo 200, cvdigo quando a compliecoo a realizada com sucesso server.send (200, «text/html», html); }

12 -қадам: тестілеу

Сынақ
Сынақ

Енді шолғышты ашып, https://192.168.2.8/monitor енгізіңіз (конфигурацияға байланысты сізге басқа IP қажет болуы мүмкін).

Ұсынылған: