Satura rādītājs:

Durvju un temperatūras statusa reģistrēšanas projekts: 21 solis
Durvju un temperatūras statusa reģistrēšanas projekts: 21 solis

Video: Durvju un temperatūras statusa reģistrēšanas projekts: 21 solis

Video: Durvju un temperatūras statusa reģistrēšanas projekts: 21 solis
Video: VĒSTURISKĀ STATUSA AUTO UN VĒL VIENS E53 - PEREKUPA DZĪVE #33 - AM CARS 2024, Novembris
Anonim
Durvju un temperatūras statusa reģistrēšanas projekts
Durvju un temperatūras statusa reģistrēšanas projekts

Šajā pamācībā tiks parādīts, kā izveidot vienkāršu durvju un temperatūras statusa reģistrētāju par USD 10,00, izmantojot ESP8266 NodeMCU, DHT11 temperatūras un mitruma sensoru, durvju/logu niedru slēdzi, 10 K omu rezistoru un dažus savienojuma vadus.

Šī projekta ģenēze radās no manas vēlmes vairāk veikt mājas automatizāciju, izmantojot Arduino plati. Tā kā es daudz lasīju par Arduino saderīgo EPS8266 NodeMCU, es nolēmu, ka šī dēlis būs ideāla zemo izmaksu dēlis, ar ko eksperimentēt. Pēc interneta meklēšanas mājas automatizācijas projektiem, izmantojot ESP8266 plates, es nolēmu savam pirmajam mēģinājumam apvienot temperatūras un durvju statusa reģistrētāju. Galu galā šis projekts tiks apvienots ar servo, mitruma sensoriem un citu elektroniku, lai automatizētu nelielu zaļo māju, kuru mans vectēvs projektēja un uzcēla pirms 50 gadiem. Temperatūras sensors tiks izmantots, lai noteiktu, vai apkures sistēma ir jāieslēdz vai jāatvieno, kā arī signalizē servos, lai vajadzības gadījumā atver un aizver ventilācijas sistēmu. Ventilācijas sistēmas stāvokli uzraudzīs, izmantojot magnētiskos niedru slēdžus. Visbeidzot, mitruma sensori tiks izmantoti, lai automatizētu laistīšanas sistēmu.

1. darbība. Atruna

Tikai ātra atruna, lai paziņotu, ka mēs neuzņemamies atbildību par visu, kas notiek šo norādījumu ievērošanas rezultātā. Veidojot kaut ko, vienmēr vislabāk ir ievērot ražotāja norādījumus un drošības lapas, tāpēc, lūdzu, iepazīstieties ar šiem dokumentiem par visām detaļām un rīkiem, ko izmantojat, lai izveidotu savu. Mēs vienkārši sniedzam tikai informāciju par soļiem, ko izmantojām, lai izveidotu savu. Mēs neesam profesionāļi. Faktiski 2 no 3 personām, kas piedalījās šajā būvniecībā, ir bērni.

2. darbība. Iestatiet bezmaksas IFTTT kontu

Izveidojiet bezmaksas IFTTT kontu
Izveidojiet bezmaksas IFTTT kontu

Ja jums tāda vēl nav, tagad ir īstais laiks izveidot bezmaksas IFTTT kontu, apmeklējot viņu mājas lapu. ļauj izmantot šos pakalpojumus jaunā veidā. Šim projektam mēs izmantosim IFTTT, lai ļautu ESP8266 reģistrēt durvju statusu, izmantojot niedru slēdzi, un temperatūru un mitrumu, izmantojot DHT11 sensoru Google izklājlapu dokumentā.

3. darbība: izveidojiet IFTTT sīklietotni

Izveidojiet IFTTT sīklietotni
Izveidojiet IFTTT sīklietotni

Kamēr vēl izmantojat IFTTT, pārejiet uz sadaļu “Mani sīpoli” un izveidojiet jaunu sīklietotni, noklikšķinot uz pogas “Jauna sīklietotne”.

4. darbība: konfigurējiet šo sīklietotnes daļu

Konfigurējiet
Konfigurējiet

Noklikšķiniet uz šī vārda, kas ir zilā krāsā - kā uzsvērts attēlā iepriekš.

5. darbība. Pievienojiet WebHooks pakalpojumu savam sīklietotnei

Pievienojiet WebHooks pakalpojumu savam sīklietotnei
Pievienojiet WebHooks pakalpojumu savam sīklietotnei

Meklēšanas joslā atrodiet pakalpojumu “Webhooks” un atlasiet Webhooks ikonu.

Kad esat atradis pakalpojumu "Webhooks", noklikšķiniet uz tā.

6. darbība: iestatiet tīmekļa pieprasījuma saņemšanas aktivizētāju

Iestatiet tīmekļa pieprasījuma saņemšanas aktivizētāju
Iestatiet tīmekļa pieprasījuma saņemšanas aktivizētāju

Izvēlieties aktivizētāju “Saņemt tīmekļa pieprasījumu”.

7. darbība. Norādiet notikuma nosaukumu

Norādiet notikuma nosaukumu
Norādiet notikuma nosaukumu

Tekstlodziņā norādiet jauno sīklietotni ar notikuma nosaukumu. Es izvēlējos "Datu reģistrētājs", bet jūs varat izvēlēties visu, kas jums patīk.

8. solis: konfigurējiet sīklietotnes “šo” daļu

Konfigurējiet
Konfigurējiet

Noklikšķiniet uz vārda “tas”, kas ir zilā krāsā - kā uzsvērts iepriekš redzamajā attēlā.

9. darbība: iestatiet darbības pakalpojumu

Iestatiet darbību pakalpojumu
Iestatiet darbību pakalpojumu

Meklēšanas lodziņā meklējiet pakalpojumu “Google izklājlapas” un noklikšķiniet uz Google izklājlapu ikonas.

10. darbība: izveidojiet savienojumu ar Google izklājlapām

Izveidojiet savienojumu ar Google izklājlapām
Izveidojiet savienojumu ar Google izklājlapām

Ja vēl neesat to izdarījis, IFTTT konts nav jāpievieno Google izklājlapām. Nospiediet iepriekš redzamo pogu Savienot un izpildiet ekrānā redzamos norādījumus.

11. darbība: izvēlieties darbību

Izvēlieties darbību
Izvēlieties darbību

Noklikšķiniet uz "Pievienot izklājlapai rindu".

12. darbība: iestatiet darbību

Iestatiet darbību
Iestatiet darbību

Tekstlodziņā "Izklājlapas nosaukums" norādiet nosaukumu. Es izvēlos izmantot "Data_Logger", lai nodrošinātu konsekvenci. Atstājiet pārējo iestatījumu mierā (varat eksperimentēt ar šiem iestatījumiem citā laikā) un pēc tam nospiediet pogu "Izveidot darbību" ekrāna apakšdaļā.

13. darbība. Pārskatiet un pabeidziet savu sīklietotni

Pārskatiet un pabeidziet savu sīklietotni
Pārskatiet un pabeidziet savu sīklietotni

Kad esat apmierināts ar sīklietotnes konfigurāciju, nospiediet pogu "Pabeigt".

14. darbība. Izgūstiet vēlāk nepieciešamo konfigurācijas informāciju

Izgūt vēlāk nepieciešamo konfigurācijas informāciju
Izgūt vēlāk nepieciešamo konfigurācijas informāciju

Noklikšķiniet uz "Webhooks", kā uzsvērts iepriekš.

15. darbība: pārejiet pie API atslēgas Webhooks dokumentācijas

Pārejiet uz API atslēgas Webhooks dokumentāciju
Pārejiet uz API atslēgas Webhooks dokumentāciju

Tas var šķist dīvaini, taču augšējā labajā stūrī noklikšķiniet uz saites Dokumentācija, lai pārietu uz lapu ar savu unikālo API atslēgu.

16. darbība: saglabājiet API atslēgu

Saglabājiet API atslēgu
Saglabājiet API atslēgu
Saglabājiet API atslēgu
Saglabājiet API atslēgu

Dokumentācijas ekrāna pirmajā rindā tiek parādīta jūsu unikālā API atslēga. Kopējiet un saglabājiet šo atslēgu izmantošanai vēlāk.

Ir arī laba ideja pārbaudīt sīklietotni šeit. Neaizmirstiet mainīt notikumu {event} uz Data_Logger vai jebkuru citu notikuma nosaukumu un pievienot dažus datus 3 tukšajām vērtībām, pēc tam noklikšķiniet uz pogas “Pārbaudīt” lapas apakšdaļā. Jums vajadzētu redzēt zaļu ziņojumu “Notikums ir aktivizēts”. Ja tā, pārejiet uz pakalpojumu Google dokumenti un apstipriniet, ka testa lapā ievadītie dati tika parādīti Google izklājlapu dokumentā.

17. darbība: apkopojiet komponentus

Savāc komponentus
Savāc komponentus
Savāc komponentus
Savāc komponentus
Savāc komponentus
Savāc komponentus

Jums būs nepieciešamas tikai dažas detaļas.

1) ESP8266 NodeMcu attīstības padome

2) DHT11 temperatūras/mitruma sensors

3) Durvju/logu niedru slēdzis

4) 10k omu rezistors

5) Hookup Wire

18. darbība: salieciet komponentus

1) Pievienojiet vienu no ESV8266 3v3 tapām DHT11 vcc tapai.

2) Pievienojiet vienu no ESP8266 zemējuma tapām DHT11 zemējuma tapai.

3) Savienojiet ESP8266 tapu D4 (pazīstams arī kā 2. kontaktdakša IDE) ar DHT11 datu tapu.

4) Pievienojiet vēl vienu 3v3 tapu uz ESP8266 durvju/logu niedru slēdža vienā pusē.

5) Pievienojiet ESP8266 tapu D5 (pazīstams arī kā 14. tapa IDE) durvju/logu niedru slēdža otrā pusē, kā arī pievienojiet to 10 k omu rezistora vienai pusei.

6) Pievienojiet 10 kΩ pretestības otru pusi pie citas ESP8266 zemējuma tapas.

Lai izvēlētos ESP8266 tapas, lūdzu, skatiet šo noderīgo diagrammu vai ļoti noderīgo video.

19. solis: uzrakstiet Arduino kodu

Uzrakstiet Arduino kodu
Uzrakstiet Arduino kodu

Kopējiet un ielīmējiet zemāk esošo kodu savā Arduino IDE.

#iekļaut #iekļaut #iekļaut "DHT.h"

#define DHTPIN 2 // ar kādu ciparu tapu esam savienoti

#define DOORPIN 14 // kāda digitālā tapa ir ieslēgta durvju slēdzim.

#define DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int skaits = 1;

const char* ssid = "daži_ssid"; // mainiet to, lai izmantotu savu ssid const char* password = "some_password"; // mainiet to, lai izmantotu savu paroli int sleepTime = 100;

// Maker Webhooks IFTTT

const char* serveris = "maker.ifttt.com";

// IFTTT URL resurss

const char* resource = "/trigger/SOME_SERVICE_NAME/ar/key/SOME_API_KEY"; // Noteikti izmantojiet sava pakalpojuma nosaukumu un API atslēgu.

String doorStatus = "Slēgts";

gaistošs bool stateChanged = false;

// Ja guļat stundas, tad iestatiet intervālu par h * 60 minūtēm * 60 sekundēm * 1000 milisekundēm

const ilgs intervāls = 1,0 * 60 * 60 * 1000; // 1 stunda neparakstīta ilgi iepriekšMillis = 0 - (2 * intervāls);

void setup () {

Serial.begin (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMode (DURVA, IEEJA); // Durvju sensors dht.begin (); WiFi.begin (ssid, parole);

Serial.print ("\ nSavienojums..");

while (WiFi.status ()! = WL_CONNECTED) {kavēšanās (1000); Sērijas nospiedums ("."); } Serial.print ("\ n"); }

void eventTriggered () {

stateChanged = true; Serial.println ("Durvju pārbaude!"); if (digitalRead (DOORPIN) == HIGH) // Pārbaudiet, vai durvis ir atvērtas {Serial.println ("Durvis ir aizvērtas!"); doorStatus = "Slēgts"; } else {Serial.println ("Durvis ir atvērtas!"); doorStatus = "Atvērts"; }}

void checkStatus () {

ja (WiFi.status () == WL_CONNECTED) {// Pārbaudiet WiFi savienojuma statusu // Temperatūras vai mitruma nolasīšana prasa apmēram 250 milisekundes! // Sensora rādījumi var būt arī līdz 2 sekundēm veci (tas ir ļoti lēns sensors) float h = dht.readHumidity (); // Temperatūras lasīšana pēc Celsija (noklusējuma) float t = dht.readTemperature (); // Lasīt temperatūru kā Fārenheita (isFahrenheit = true) float f = dht.readTemperature (true); // Pārbaudiet, vai kāda nolasīšana neizdevās, un izejiet agri (lai mēģinātu vēlreiz). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("Neizdevās nolasīt no DHT sensora!"); //Sērijas.druka ("."); // Neizdevās nolasīt no DHT sensora! atgriešanās; } // Aprēķināt siltuma indeksu pēc Fārenheita (noklusējuma) float hif = dht.computeHeatIndex (f, h); // Aprēķināt siltuma indeksu pēc Celsija (isFahreheit = false) float hic = dht.computeHeatIndex (t, h, false);

Serial.print ("\ n");

Serial.print ("Temperatūra:"); Sērijas nospiedums (f); Serial.print (" *F ("); Serial.print (t); Serial.print (" *C)"); Serial.print ("\ t"); Serial.print ("Siltuma indekss:"); Sērijas nospiedums (hif); Serial.print (" *F ("); Serial.print (hic); Serial.print (" *C)%"); Serial.print ("\ t"); Serial.print ("Mitrums:"); Sērijas.println (h);

if (digitalRead (DOORPIN) == HIGH) // Pārbaudiet, vai durvis ir atvērtas

{Serial.println ("Durvis ir aizvērtas!"); doorStatus = "Slēgts"; } else {Serial.println ("Durvis ir atvērtas!"); doorStatus = "Atvērts"; } String jsonObject = String ("{" value1 / ": \" ") + f +"*F (" + t +"*C) / " + hif +"*F (" + hic +"*C) " +" / ", \" value2 / ": \" " + h +" / ", \" value3 / ": \" " + doorStatus +" / "}"; HTTP klients http; String completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (completeUrl); // http.begin (serveris); http.addHeader ("Content-Type", "application/json"); http. POST (jsonObject); http.writeToStream (& Serial); http.end (); // Aizvērt savienojumu

stateChanged = nepatiess;

int sleepTimeInMinutes = intervāls / 1000/60; Serial.print ("\ n / nIet gulēt"); Serial.print (sleepTimeInMinutes); Serial.println ("minūte (-s) …"); }}

void loop () {

neparakstīta garā strāvaMillis = millis (); kavēšanās (4000); // Ja mēs pārsniedzām pagājušo laiku, piespiediet pārbaudīt durvis un temp. if (currentMillis - previousMillis> = intervāls) {stateChanged = true; previousMillis = currentMillis; Sērijas nospiedums (skaits ++); Serial.println (") Pārbaude pagājušā laika dēļ!"); } cits if (stateChanged) {Serial.print (skaits ++); Serial.println (") Pārbauda stāvokļa maiņas dēļ!"); }

// Ja stāvoklis ir mainījies, pārbaudiet durvis un temp.

if (stateChanged) {checkStatus (); }

kavēšanās (miega laiks);

}

20. darbība. Rezultāti

Rezultāti
Rezultāti

Kad augšupielādējat avota kodu iepriekšējā darbībā, jums vajadzētu iegūt tādus rezultātus kā iepriekš parādītais piemērs.

21. darbība. Kredīti

Es atradu daudz noderīgu padomu un padomu no Random Nerd Tutorials un vēlos viņiem pateikties par visu palīdzību. Īpaši viņu izcilā apmācība par ESP32 ESP8266 Publicēt sensora lasījumus Google izklājlapās, uz kurām balstās šīs pamācības galvenās daļas.

Turklāt TheCircuit DHT11 Instructable palīdzēja man saprast, kā izmantot šo ļoti lēto, bet interesanto mazo sensoru.

Turklāt ir daudz pamācību, kas nodarbojas ar jūsu durvju uzraudzību, piemēram, garāžas durvju monitors un vēl viena no Random Nerd Tutorials. Es izmantoju to gabalus, lai palīdzētu man saprast, kā panākt, lai mans niedru slēdzis darbotos pareizi.

Visbeidzot, ar šo informāciju, kā arī citu informāciju, ko atradu internetā, es varēju izveidot sistēmu, kas atbilda manām vajadzībām. Es ceru, ka jums šī instrukcija ir noderīga un izveidojat savu.

Ieteicams: