Агуулгын хүснэгт:

ESP8266: Температур ба чийгшлийг хэрхэн хянах вэ: 12 алхам
ESP8266: Температур ба чийгшлийг хэрхэн хянах вэ: 12 алхам

Видео: ESP8266: Температур ба чийгшлийг хэрхэн хянах вэ: 12 алхам

Видео: ESP8266: Температур ба чийгшлийг хэрхэн хянах вэ: 12 алхам
Видео: BTT GTR v1.0/M5 v1.0 - Basics 2024, Долдугаар сарын
Anonim
Image
Image
Чуулган
Чуулган

Өнөөдрийн гарын авлагад бид DHT22 мэдрэгчийн температур, чийгшлийг уншихын тулд 01 тохиргоонд ESP8266 (зөвхөн 2 GPIO-той) ESP-01-ийг ашиглах болно. Би танд Arduino -тэй цахилгаан схем, ESP програмчлалын хэсгийг үзүүлэх болно. Энэ жишээ нь энгийн, ойлгоход хялбар бөгөөд угсрахад туслах зорилгоор видеонд ашигласан PDF файлтай хамт ирдэг.

Загварын хувьд бидэнд ESP01, 110 эсвэл 220 -ийг 5 вольт болгон хувиргадаг эх үүсвэр, 3v3 хүчдэлийн зохицуулагч, мэдрэгч болох DHT22 байдаг. Ухаалаг гар утасны дэлгэц дээр ESP -ээс өгсөн JavaScript кодоос гадна орон нутгийн IP хаяг байх болно. Тиймээс энэ дэлгэц нь температур, чийгшлийн параметрүүдийг хүлээн авах бөгөөд эдгээр утгыг хэвлэх бөгөөд таван секунд тутамд шинэчлэгдэх болно. Үүнийг хийхийн тулд танд гар утас, таблет дээр ямар ч програм хэрэггүй бөгөөд энэ нь Android OS болон IOS -д хамаарна.

Алхам 1: угсрах

Цахилгааны схем нь ESP01 -ийг сервер болгон ашиглах угсралтын талаархи хэсэг шиг маш энгийн юм. ESPO1 програмыг Arduino: C хэлээр дамжуулан програмчлах болно. Кодын хэсэг нь хөтөчөөс хэвлэгддэг болохыг би онцлон тэмдэглэв. Энэ нь JavaScript кодыг хөтөч рүү илгээдэг гэсэн үг юм. Доороос би энэ хэрхэн ажилладаг талаар илүү сайн тайлбарлах болно.

Утасны диаграм руу буцаж очоод ESP01-ийг тэжээхийн тулд 3v3 хүчдэлийн зохицуулагчтай холбогдсон 5 вольтын унтраалттай эх үүсвэрийг тавьсан. Бидэнд DHT22 дөрвөн тээглүүртэй хэвээр байна. Эдгээрийн нэг болох өгөгдлийг ашигладаггүй. Гэсэн хэдий ч энэ нь татах эсэргүүцэл шаарддаг.

Алхам 2: Код

Эхний алхам бол бидний ашиглах libs -ийг оруулах явдал юм. DHT lib -ийг Sketch сонголт> Номын санг оруулах> Номын санг удирдах замаар нэмж болно.

Нээгдсэн цонхноос DHT мэдрэгчийн номын санг хайж олоорой.

Үүний дараа бид ESP8266WebServer төрлийн хувьсагч үүсгэсэн бөгөөд энэ нь манай сервер байх бөгөөд HTTP хүсэлтэд хариулах болно (порт 80).

Бид мөн 0 параметртэй (энэ нь GPIO зүү 0) болон төрөл (бидний хувьд DHT22) бүхий DHT хувьсагч үүсгэдэг.

#include #include #include // оруулна уу // ESP8266WebServer програм хангамжийн үндсэн чиглэлүүд // que auxiliam na criação das rotas que o ESP8266 vai responder ESP8266WebServer сервер (80); // Өөр өөр сонголтууд DHT -ийн боломжит функцууд эсвэл бусад нөхцлүүдтэй нийцэж байгаа эсэхийг шалгаарай // DHT dht (0, DHT22);

Алхам 3: Тохируулах

Тохиргоонд бид бүртгэлтэй байхын тулд зөвхөн цувралыг эхлүүлэх болно. Хэрэв ESP8266 нь цуваа дэлгэц ашиглахын тулд цуваагаар компьютерт холбогдсон бол энэ нь тохиолдох болно.

Бид ESP8266 -ийг сүлжээндээ холбоно. Манай тохиолдолд бид TesteESP сүлжээг 87654321 нууц үгээр ашигладаг боловч та үүнийг ашигладаг сүлжээнийхээ дагуу өөрчлөх шаардлагатай болно.

// Цуврал мэдээллийг албан ёсны болгох ESP8266 эсвэл компьютерийн тооцооллыг эхлүүлэх. // ESP8266 зааврыг заана уу. // No nosso caso o nome da rede é TesteESP e a senha é 87654321. // Você deve alterar com гэж мэдээлэхийн зэрэгцээ WiFi.begin ("TesteESP", "87654321"); // Санал хүсэлт нь Serial Serial.println ("") -ийг хянах; Serial.print ("Conectando");

Бид ESP8266 -ийг сүлжээнд холбогдохыг хүлээж, холбосны дараа сүлжээний тохиргоог илгээдэг. Сүлжээнийхээ дагуу өөрчлөх.

// Esperamos até que o módulo se conecte à rede while (WiFi.status ()! = WL_CONNECTED) {саатал (500); Serial.print ("."); } // IP засварлах тохиргоог хийнэ үү. IPAddress IP (192, 168, 3, 11) тохиргоог хийх; 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 o esp8266 se conectou para ver est está de acordo com o que configuramos Serial.println (""); Serial.println ("Connectado"); Serial.print ("IP:"); Serial.println (WiFi.localIP ());

Энд бид хүсэлт бүрийн хувьд ямар функцүүдийг гүйцэтгэхийг тодорхойлж эхэллээ.

Доорх зааварт ESP8266 нь GET төрлийн HTTP хүсэлтийг зам / температурт хүлээн авах бүрт getTemperature функцийг гүйцэтгэх болно.

// Aqui -ийн тодорхойлолтууд нь гүйцэтгэлийг гүйцэтгэх үүргийг гүйцэтгэдэг. // Ямар ч тохиолдолд GET авах шаардлагагүй https://192.168.2.8/temperature //, getTemperature);

Энэхүү бусад мэдэгдэлд ESP8266 нь GET төрлийн HTTP хүсэлтийг зам / чийгшилд хүлээн авах бүрт getHumidity функцийг гүйцэтгэх болно.

// Nesse outo caso quando houver uma Requisição http do tipo GET no caminho https://192.168.2.8/humidity // (pode ser ipro off the ipend dependendo da sua configuração) a função getHumidity серверийн гүйцэтгэх сервер.on ("/чийгшил", HTTP_GET, getHumidity);

Энэхүү зааварт ESP8266 нь зам / монитор дээр GET төрлийн HTTP хүсэлтийг хүлээн авах бүрт showMonitor функцийг гүйцэтгэх болно.

ShowMonitor функц нь температур, чийгшлийн утгыг харуулах үндсэн html -ийг буцаах үүрэгтэй.

// Nesse caso quando houver uma Requvisção http to tipo GET no caminho https://192.168.2.8/monitor // (pode ser outro ip ipend dependendo da sua configuração) a função showMonitor програмыг гүйцэтгэх. // Үндсэн функцууд нь үндсэн үүрэг гүйцэтгэгчдийн үүрэг даалгаврыг гүйцэтгэдэг // цаг агаарын температур, найдвартай байдал, серверийн түр зуурын өгөгдлүүдийн талаархи мэдээллийг шинэчилж өгдөг ("/монитор", HTTP_GET, showMonitor);

Хүссэн замыг олж чадаагүй тохиолдолд гүйцэтгэх ёстой функцын тодорхойлолт энд байна.

// Aqui тодорхойлолт чанарын функцуудыг гүйцэтгэхийн тулд серверийг бүртгэх шаардлагатай болно.onNotFound (onNotFound);

Энд бид өмнө нь 80 -р порт дээр зарлаж байсан серверээ эхлүүлж байна.

Энэ бол тохиргооны төгсгөл юм.

// сервер 80 сервер.begin () серверийг ажиллуулна уу. Serial.println ("Servidor HTTP iniciado"); }

Алхам 4: Loop

ESP8266WebServer lib -ийн ачаар үйлчлүүлэгчид байгаа эсэх, хүсэлтийн зам ямар байгааг шалгаж үзэх шаардлагагүй болно. Бид зүгээр л handleClient () руу залгах хэрэгтэй бөгөөд обьект нь ямар нэгэн үйлчлүүлэгч ямар нэгэн хүсэлт гаргаж байгаа эсэхийг шалгаж, өмнө нь бүртгүүлсэн харгалзах функц рүү дахин чиглүүлэх болно.

void loop () {// Хэрэглэгчийн сервер.handleClient () -ийг баталгаажуулах шаардлагатай; }

Алхам 5: Хүсэлт олдсонгүй

Энэ бол үйлчлүүлэгч бүртгэгдээгүй хүсэлт гаргах үед бид гүйцэтгэхийн тулд өмнө нь бүртгүүлж байсан функц юм.

Функц нь зөвхөн 404 кодыг (нөөц олдохгүй байгаа үеийн үндсэн код), өгөгдлийн төрөл (энгийн текстийн хувьд) болон "Олдоогүй" гэсэн бичвэрийг буцаана.

// FunNão que a la desimos para cama de quado o caminho recuitito não foi registrado void onNotFound () {server.send (404, "text/plain", "Found"); }

Алхам 6: Температурыг буцаана

Энэ бол үйлчлүүлэгч / температурт GET хүсэлт гаргахад json -ийг температурын өгөгдөлтэй буцаах функц юм.

// Үйлчлүүлэгчийн хувьд энэ нь шаардлагатай бол // ямар ч тохиолдолд GET авахгүй https://192.168.2.8/temperature da temperatura através do módulo dht float t = dht.readTemperature (); // Cria um json com os dados da temperatura String json = "{" температур / ":"+String (t)+"}"; // Envia o json para o cliente com o código 200, que é o código quando a Requisção foi realizada com sucesso server.send (200, "application/json", json); }

Алхам 7: Чийглэгийг буцаана

Энэ бол үйлчлүүлэгч / чийгшилтэд GET хүсэлт гаргахад json -ийг чийгийн өгөгдлөөр буцаах функц юм.

// Үйлчлүүлэгчийн захиалга авахын тулд та үүнийг хийх шаардлагагүй болно. da umidade através do módulo dht float h = dht.readHumidity (); // Cria um json com os dados da umidade String json = "{" чийгшил / ":"+String (h)+"}"; // Envia o json para o cliente com o código 200, que é o código quando a Requisção foi realizada com sucesso server.send (200, "application/json", json); }

Алхам 8: HTML

Энэ бол үйлчлүүлэгч хандах / монитор руу ороход html -ийг буцаах функц юм. Энэ хуудас нь температур, чийгшлийн утгыг харуулах бөгөөд өгөгдлийг үе үе дахин ачаалах болно. Болон хэв маяг> хооронд байгаа хэсэг

хуудасны гадаад төрхийг тодорхойлдог бөгөөд та хүссэнээрээ өөрчилж болно.

// Үйлчлүүлэгчийн захиалгыг гүйцэтгэхийн тулд та үүнийг хийх шаардлагагүй болно https://192.168.2.8/monitor (pode ser ip ip dependendo da sua configuração) void showMonitor () {String html = "" "" ""

"DHT дэлгэц"

"бие {"

"дүүргэлт: 35px;"

"background-color: #222222;" "}"

Алхам 9: HTML загварын үргэлжлэл

"h1 {" "өнгө: #FFFFFF;" "font-family: sans-serif;" "}" "p {" "өнгө: #EEEEEE;" "font-family: sans-serif;" "фонтын хэмжээ: 18px;" "}" ""

Энд бид html -ийн гол хэсгийг авч байна. Үүнд бид температур, чийгшлийг харуулах хоёр догол мөртэй. Догол мөрүүдийн id -д анхаарлаа хандуулаарай, учир нь бид эдгээр догол мөрийг сэргээж, шаардлагын дараа температур, чийгшлийн утгыг оруулах болно.

DHT монитор

Температур:

Чийгшил:

Алхам 10: JavaScript

Энд бид температур, чийгшлийн утгыг үе үе унших скриптийг тодорхойлж эхэлдэг. Refresh () функц нь refreshTemperature () ба refreshHumdity () функцуудыг дууддаг бөгөөд setInterval нь шинэчлэх функцийг 5000 миллисекунд тутамд (5 секунд) дууддаг.

"шинэчлэх ();" "setInterval (шинэчлэх, 5000);" "функцийг шинэчлэх ()" "{" "refreshTemperature ()" "refreshHumidity ();" "}"

RefreshTemperature () функц нь / температурт хүсэлт гаргаж, json -д агуулагдах мэдээллийг задлан шинжилж, температурын догол мөрөнд нэмдэг.

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

RefreshHumidity () функц нь / чийгшилд хүсэлт тавьж, json -д агуулагдаж буй мэдээллийг задлан шинжилж, параграфт id чийгшлийг нэмдэг. Үүний тусламжтайгаар бид / монитор дахь хүсэлтийг илгээх html -ийг дуусгана.

"function 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', үнэн);" "xmlhttp.send ();" "}"

"";

Алхам 11: ShowMonitor -ийг дуусгах

Одоо бидний явуулах html -тэй мөр бэлэн болсон тул бид үүнийг үйлчлүүлэгчид илгээх боломжтой болно. Энэ нь showMonitor функц болон кодыг дуусгадаг.

// Envia o html para to cliente com o código 200, que é o código quando a Requisção foi realizada com sucesso server.send (200, "text/html", html); }

Алхам 12: Туршилт

Туршилт
Туршилт

Одоо хөтөчөө нээгээд https://192.168.2.8/monitor гэж оруулна уу (тохиргооноос хамааран танд өөр ip хэрэгтэй байж магадгүй).

Зөвлөмж болгож буй: