Kazalo:

Projekt zapisovalnika stanja vrat in temperature: 21 korakov
Projekt zapisovalnika stanja vrat in temperature: 21 korakov

Video: Projekt zapisovalnika stanja vrat in temperature: 21 korakov

Video: Projekt zapisovalnika stanja vrat in temperature: 21 korakov
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Julij
Anonim
Projekt zapisovalnika stanja vrat in temperature
Projekt zapisovalnika stanja vrat in temperature

Ta Instructable vam bo pokazal, kako narediti preprost zapisovalnik stanja vrat in temperature za manj kot 10,00 USD z uporabo ESP8266 NodeMCU, senzorja temperature in vlažnosti DHT11, trstičnega stikala za vrata/okna, 10K ohmskega upora in nekaj priključne žice.

Nastanek tega projekta je izhajal iz moje želje, da bi s ploščo Arduino naredil več avtomatizacije doma. Ker sem veliko bral o Arduino združljivem EPS8266 NodeMCU, sem se odločil, da bi bila ta plošča popolna nizkocenovna plošča, s katero bi lahko eksperimentirali. Ko sem po internetu iskal projekte avtomatizacije doma z uporabo plošč ESP8266, sem se za svoj prvi poskus odločil za kombinacijo zapisovalnika temperature in stanja vrat. Sčasoma bo ta projekt v kombinaciji s servomotorji, senzorji vlage in drugo elektroniko avtomatiziral majhno zeleno hišo, ki jo je moj dedek zasnoval in zgradil pred 50 leti. Senzor temperature bo uporabljen za ugotavljanje, ali je treba ogrevalni sistem vključiti ali izključiti, ter signalizirati servomotorje, da po potrebi odprejo in zaprejo prezračevalni sistem. Stanje prezračevalnega sistema bo spremljano z uporabo magnetnih trstičnih stikal. Končno bodo senzorji vlage uporabljeni za avtomatizacijo zalivalnega sistema.

1. korak: zavrnitev odgovornosti

Samo hitra izjava, da ne prevzemamo nobene odgovornosti za vse, kar se zgodi zaradi upoštevanja tega navodila. Pri gradnji je vedno najbolje upoštevati navodila proizvajalcev in varnostne liste, zato se za vse dele in orodja, ki jih uporabljate za izdelavo lastnih delov, posvetujte s temi dokumenti. Preprosto posredujemo informacije o korakih, ki smo jih uporabili pri ustvarjanju našega. Nismo profesionalci. Pravzaprav sta 2 od 3 posameznikov, ki so sodelovali pri tej gradnji, otroci.

2. korak: Nastavite brezplačni račun IFTTT

Nastavite brezplačen račun IFTTT
Nastavite brezplačen račun IFTTT

Če ga še nimate, je čas, da nastavite brezplačen račun IFTTT, tako da obiščete njihovo domačo stran. IFTTT pomeni If This Then That in je brezplačna platforma, ki vam omogoča povezovanje internetnih storitev na nove načine vam omogočajo, da te storitve izkoristite na nove načine. Za ta projekt bomo uporabili IFTTT, da omogočimo ESP8266, da zabeleži stanje vrat prek trstičnega stikala in temperaturo in vlažnost preko senzorja DHT11 v dokumentu Google Preglednice.

3. korak: Ustvarite programček IFTTT

Ustvarite programček IFTTT
Ustvarite programček IFTTT

Ko ste še v IFTTT, pojdite na razdelek »Moji jabolki« in ustvarite nov programček s klikom na gumb »Nov programček«.

4. korak: Konfigurirajte "ta" del svojega programčka

Konfigurirajte
Konfigurirajte

Kliknite na besedo »ta«, ki je v modri barvi - kot je označeno na zgornji sliki.

5. korak: Dodajte storitev WebHooks v svoj programček

V svoj programček dodajte storitev WebHooks
V svoj programček dodajte storitev WebHooks

V iskalni vrstici poiščite storitev »Webhooks« in izberite ikono Webhooks.

Ko najdete storitev »Webhooks«, jo kliknite.

6. korak: Nastavite sprožilec prejemanja spletnih zahtev

Nastavite sprožilec prejemanja spletnih zahtev
Nastavite sprožilec prejemanja spletnih zahtev

Izberite sprožilec »Prejemanje spletne zahteve«.

7. korak: Vnesite ime dogodka

Navedite ime dogodka
Navedite ime dogodka

V besedilno polje vnesite novi programček z imenom dogodka. Izbral sem "Data Logger", vendar lahko izberete, kar želite.

8. korak: Konfigurirajte "tisti" del svojega programčka

Konfigurirajte
Konfigurirajte

Kliknite na »tisto« besedo, ki je v modri barvi - kot je označeno na zgornji sliki.

9. korak: Nastavite akcijsko storitev

Nastavite akcijsko storitev
Nastavite akcijsko storitev

V iskalnem polju poiščite storitev »Google Preglednice« in kliknite ikono Google Preglednice.

10. korak: Povežite se z Google Preglednicami

Povežite se z Google Preglednicami
Povežite se z Google Preglednicami

Če tega še niste storili, morate račun IFTTT povezati z Google Preglednicami. Pritisnite zgoraj prikazani gumb Poveži in sledite navodilom na zaslonu.

11. korak: Izberite dejanje

Izberite dejanje
Izberite dejanje

Kliknite "Dodaj vrstico v preglednico".

12. korak: Nastavite dejanje

Nastavite dejanje
Nastavite dejanje

V besedilno polje "Ime preglednice" vnesite ime. Za doslednost sem se odločil uporabiti "Data_Logger". Preostale nastavitve pustite pri miru (s temi nastavitvami lahko poskusite kdaj drugič) in nato pritisnite gumb "Ustvari dejanje" na dnu zaslona.

13. korak: Preglejte in dokončajte svoj programček

Preglejte in dokončajte svoj programček
Preglejte in dokončajte svoj programček

Ko ste zadovoljni s konfiguracijo programčka, pritisnite gumb "Dokončaj".

Korak 14: Pridobite konfiguracijske podatke, ki bodo potrebni pozneje

Pridobite konfiguracijske podatke, potrebne pozneje
Pridobite konfiguracijske podatke, potrebne pozneje

Kliknite na "Webhooks", kot je označeno zgoraj.

15. korak: pojdite na dokumentacijo Webhooks za ključ API

Nadaljujte z dokumentacijo Webhooks za ključ API
Nadaljujte z dokumentacijo Webhooks za ključ API

Morda se zdi nenavadno, vendar kliknite povezavo Dokumentacija v zgornjem desnem kotu, da nadaljujete na stran z vašim edinstvenim ključem API.

Korak 16: Shranite ključ API

Shranite ključ API
Shranite ključ API
Shranite ključ API
Shranite ključ API

Prva vrstica zaslona z dokumentacijo prikazuje vaš edinstven ključ API. Kopirajte in shranite ta ključ za kasnejšo uporabo.

Prav tako je dobro preizkusiti programček tukaj. Ne pozabite spremeniti dogodka {dogodek} v Data_Logger ali karkoli že ste poimenovali svoj dogodek in trem praznim vrednostim dodati nekaj podatkov, nato kliknite gumb "Preizkusi" na dnu strani. Videti bi morali zeleno sporočilo »Dogodek je bil sprožen«. Če je tako, pojdite v Google Dokumente in potrdite, da so bili podatki, ki ste jih vnesli na preskusni strani, prikazani v dokumentu Google Preglednice.

17. korak: Zberite komponente

Zberite komponente
Zberite komponente
Zberite komponente
Zberite komponente
Zberite komponente
Zberite komponente

Potrebovali boste le nekaj delov.

1) Razvojni odbor ESP8266 NodeMcu

2) Senzor temperature/vlažnosti DHT11

3) Reed stikalo za vrata/okna

4) 10k ohmski upor

5) Priključna žica

Korak 18: Sestavite komponente

1) Priključite enega od zatičev 3v3 na ESP8266 na vcc vhod na DHT11.

2) Enega od ozemljitvenih zatičev na ESP8266 priključite na ozemljitveni zatič na DHT11.

3) Priključite pin D4 (imenovan tudi pin 2 v IDE) na ESP8266 s podatkovnim zatičem na DHT11.

4) Priključite še en zatič 3v3 na ESP8266 na eno stran stikala vrat/oken.

5) Priključite zatič D5 (imenovan tudi zatič 14 v IDE) na ESP8266 na drugo stran vratnega stikala za vrata/okna in ga priključite tudi na eno stran upora 10k ohm.

6) Priključite drugo stran 10k ohmskega upora na drug ozemljitveni zatič na ESP8266.

Za izbiro pin ESP8266 si oglejte ta koristen diagram ali zelo koristen video.

Korak 19: Napišite kodo Arduino

Napišite kodo Arduino
Napišite kodo Arduino

Kopirajte in prilepite spodnjo kodo v svoj Arduino IDE.

#include #include #include "DHT.h"

#define DHTPIN 2 // s katerim digitalnim zatičem smo povezani

#define DOORPIN 14 // kateri digitalni zatič je na stikalu za vrata.

#define DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int count = 1;

const char* ssid = "some_ssid"; // spremenite to, če želite uporabiti svoj ssid const char* geslo = "some_password"; // spremenite to, da uporabite geslo int sleepTime = 100;

// Ustvarjalnik Webhooks IFTTT

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

// vir URL IFTTT

const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"; // Uporabite ime storitve in ključ api.

String doorStatus = "Zaprto";

hlapno bool stanjeChanged = false;

// Če več ur spite, nastavite interval za hr * 60 minut * 60 sekund * 1000 milisekund

dolg interval const = 1,0 * 60 * 60 * 1000; // 1 ura brez podpisa dolga previousMillis = 0 - (2 * interval);

void setup () {

Serial.begin (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMode (DOORPIN, INPUT); // Senzor vrat dht.begin (); WiFi.begin (ssid, geslo);

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

while (WiFi.status ()! = WL_CONNECTED) {zakasnitev (1000); Serial.print ("."); } Serial.print ("\ n"); }

void eventTriggered () {

stateChanged = res; Serial.println ("Preverjanje vrat!"); if (digitalRead (DOORPIN) == HIGH) // Preverite, ali so vrata odprta {Serial.println ("Vrata so zaprta!"); doorStatus = "Zaprto"; } else {Serial.println ("Vrata so odprta!"); doorStatus = "Odprto"; }}

void checkStatus () {

if (WiFi.status () == WL_CONNECTED) {// Preverite stanje povezave WiFi // Branje temperature ali vlažnosti traja približno 250 milisekund! // Odčitki senzorjev so lahko tudi do 2 sekundi "stari" (to je zelo počasen senzor) float h = dht.readHumidity (); // Temperatura se bere kot Celzius (privzeto) float t = dht.readTemperature (); // Temperatura se bere kot Fahrenheit (isFahrenheit = true) float f = dht.readTemperature (true); // Preverim, ali kakšno branje ni uspelo, in izstopite zgodaj (poskusite znova). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("Ni bilo mogoče prebrati s senzorja DHT!"); //Serial.print ("."); // Odčitavanje s senzorja DHT ni uspelo! vrnitev; } // Izračunajte toplotni indeks v Fahrenheitu (privzeto) float hif = dht.computeHeatIndex (f, h); // Izračunamo toplotni indeks v Celsiusih (isFahreheit = false) float hic = dht.computeHeatIndex (t, h, false);

Serial.print ("\ n");

Serial.print ("Temperatura:"); Serial.print (f); Serial.print (" *F ("); Serial.print (t); Serial.print (" *C)"); Serial.print ("\ t"); Serial.print ("Toplotni indeks:"); Serial.print (hif); Serial.print (" *F ("); Serial.print (hic); Serial.print (" *C)%"); Serial.print ("\ t"); Serial.print ("Vlažnost:"); Serial.println (h);

if (digitalRead (DOORPIN) == HIGH) // Preverite, ali so vrata odprta

{Serial.println ("Vrata so zaprta!"); doorStatus = "Zaprto"; } else {Serial.println ("Vrata so odprta!"); doorStatus = "Odprto"; } Niz jsonObject = Niz ("{" vrednost1 / ": \" ") + f +"*F (" + t +"*C) / " + hif +"*F (" + hic +"*C) " +" / ", \" value2 / ": \" " + h +" / ", \" value3 / ": \" " + doorStatus +" / "}"; HTTPClient http; Niz completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (completeUrl); // http.begin (strežnik); http.addHeader ("Vrsta vsebine", "aplikacija/json"); http. POST (jsonObject); http.writeToStream (& Serial); http.end (); // Zapri povezavo

stateChanged = false;

int sleepTimeInMinutes = interval / 1000 /60; Serial.print ("\ n / nPojdi spat"); Serial.print (sleepTimeInMinutes); Serial.println ("minute (minute) …"); }}

void loop () {

nepodpisani dolgi tokMillis = millis (); zamuda (4000); // Če smo presegli pretečeni čas, prisilno preverimo vrata in temp. if (currentMillis - previousMillis> = interval) {stateChanged = true; previousMillis = trenutniMillis; Serial.print (štetje ++); Serial.println (") Preverjanje zaradi pretečenega časa!"); } else if (stateChanged) {Serial.print (count ++); Serial.println (") Preverjanje zaradi spremembe stanja!"); }

// Če se stanje spremeni, preverite vrata in temp.

if (stateChanged) {checkStatus (); }

zakasnitev (čas spanja);

}

20. korak: Rezultati

Rezultati
Rezultati

Ko naložite izvorno kodo v prejšnjem koraku, bi morali dobiti rezultate, kot je zgornji primer.

21. korak: Krediti

Našel sem veliko koristnih namigov in namigov iz Random Nerd Tutorialov in bi se jim rad zahvalil za vso pomoč. Še posebej njihova odlična vadnica o ESP32 ESP8266 Publish Sensor Readings to Google Sheets, na katerih temeljijo veliki deli tega navodila.

Poleg tega mi je DHT11 Instructable iz TheCircuita pomagal razumeti, kako uporabljati ta zelo poceni, a zanimiv mali senzor.

Poleg tega obstaja veliko vadnic, ki obravnavajo nadzor vaših vrat, na primer monitor garažnih vrat in še ena iz Vadnic o naključnih norcih. Te delce sem uporabil, da sem razumel, kako pravilno zagotoviti delovanje trstičnega stikala.

Nazadnje sem s temi informacijami in drugimi podrobnostmi, ki sem jih našel po internetu, lahko ustvaril sistem, ki bi ustrezal mojim potrebam. Upam, da vam bo ta Instructable koristen in sestavite svojega.

Priporočena: