Tartalomjegyzék:

Ajtó és hőmérséklet állapot naplózó projekt: 21 lépés
Ajtó és hőmérséklet állapot naplózó projekt: 21 lépés

Videó: Ajtó és hőmérséklet állapot naplózó projekt: 21 lépés

Videó: Ajtó és hőmérséklet állapot naplózó projekt: 21 lépés
Videó: Motor hőmérséklet mérő jeladó működése, vizsgálata 2024, Július
Anonim
Ajtó és hőmérséklet állapot naplózó projekt
Ajtó és hőmérséklet állapot naplózó projekt

Ez az utasítás bemutatja, hogyan készíthet egyszerű ajtó- és hőmérsékletállapot -regisztrálót 10,00 dollár alatt egy ESP8266 NodeMCU, egy DHT11 hőmérséklet- és páratartalom -érzékelő, egy ajtó/ablak nádkapcsoló, egy 10K ohmos ellenállás és néhány összekötő vezeték használatával.

Ennek a projektnek a keletkezése abból a vágyamból ered, hogy több otthoni automatizálást szeretnék végezni az Arduino táblával. Mivel sokat olvastam az Arduino -kompatibilis EPS8266 NodeMCU -ról, úgy döntöttem, hogy ez a tábla lesz a tökéletes olcsó tábla a kísérletezéshez. Miután az Interneten keresgéltem az otthoni automatizálási projekteket az ESP8266 táblák használatával, az első kísérletemnél a hőmérséklet és az ajtóállapot naplózó kombinálásával döntöttem. Végül ezt a projektet szervókkal, nedvességérzékelőkkel és más elektronikával kombinálják, hogy automatizálják egy kis zöld házat, amelyet nagyapám tervezett és épített 50 évvel ezelőtt. A hőmérséklet -érzékelővel határozzák meg, hogy a fűtési rendszert be kell -e kapcsolni vagy ki kell kapcsolni, valamint jelezni kell a szervókat, hogy szükség esetén nyissák ki és zárják be a szellőzőrendszert. A szellőzőrendszer állapotát a mágneses nádkapcsolókkal ellenőrzik. Végül a nedvességérzékelőket egy öntözőrendszer automatizálására használják.

1. lépés: Jogi nyilatkozat

Csak egy gyors lemondás annak megállapítására, hogy nem vállalunk felelősséget mindazért, ami ennek az utasításnak a követéséből következik. Mindig a legjobb, ha betartja a gyártó utasításait és biztonsági lapjait, amikor bármit épít, ezért kérjük, olvassa el ezeket a dokumentumokat a saját építéséhez használt alkatrészek és szerszámok tekintetében. Egyszerűen csak tájékoztatást nyújtunk azokról a lépésekről, amelyeket a sajátunk létrehozásához használtunk. Nem vagyunk profik. Valójában az építésben részt vevő személyek közül 3 -ból 2 gyermek.

2. lépés: Ingyenes IFTTT -fiók beállítása

Ingyenes IFTTT -fiók beállítása
Ingyenes IFTTT -fiók beállítása

Ha még nem rendelkezik ilyennel, akkor itt az ideje létrehozni egy ingyenes IFTTT -fiókot a honlapjukra lépve. lehetővé teszi, hogy ezeket a szolgáltatásokat új módon kihasználja. Ebben a projektben az IFTTT segítségével engedélyezzük az ESP8266 számára, hogy naplózzon egy ajtó állapotát egy nádkapcsolón keresztül, valamint a hőmérsékletet és páratartalmat a DHT11 érzékelőn keresztül a Google Sheets dokumentumban.

3. lépés: Hozzon létre egy IFTTT kisalkalmazást

Hozzon létre egy IFTTT kisalkalmazást
Hozzon létre egy IFTTT kisalkalmazást

Ha még IFTTT -ben van, lépjen a „Saját kisalkalmazások” szakaszba, és hozzon létre egy új kisalkalmazást az „Új kisalkalmazás” gombra kattintva.

4. lépés: Konfigurálja a kisalkalmazás "ezt" részét

Konfigurálja a
Konfigurálja a

Kattintson a kék színű „erre” szóra - amint azt a fenti ábra kiemeli.

5. lépés: Adja hozzá a WebHooks szolgáltatást kisalkalmazásához

Adja hozzá a WebHooks szolgáltatást kisalkalmazásához
Adja hozzá a WebHooks szolgáltatást kisalkalmazásához

A keresősávban keresse meg a „Webhooks” szolgáltatást, és válassza a Webhooks ikont.

Miután megtalálta a "Webhooks" szolgáltatást, kattintson rá.

6. lépés: Állítsa be a webes kérelem -aktiválót

Állítsa be a webes kérés fogadásának aktiválását
Állítsa be a webes kérés fogadásának aktiválását

Válassza a „Webes kérelem fogadása” aktiválási szabályt.

7. lépés: Adjon meg egy eseménynevet

Adjon meg egy eseménynevet
Adjon meg egy eseménynevet

A szövegmezőben adja meg az új kisalkalmazást az esemény nevével. Az "Adatgyűjtő" lehetőséget választottam, de választhat, amit szeretne.

8. lépés: Állítsa be a kisalkalmazás "azt" részét

Konfigurálja a
Konfigurálja a

Kattintson a kék színű „szó” szóra - amint azt a fenti ábra kiemeli.

9. lépés: Állítson be egy cselekvési szolgáltatást

Állítson be egy cselekvési szolgáltatást
Állítson be egy cselekvési szolgáltatást

A keresőmezőben keresse meg a „Google Táblázatok” szolgáltatást, majd kattintson a Google Táblázatok ikonra.

10. lépés: Csatlakozás a Google Táblázatokhoz

Csatlakozás a Google Táblázatokhoz
Csatlakozás a Google Táblázatokhoz

Ha még nem tette meg, nem kell csatlakoztatnia IFTTT -fiókját a Google Táblázatokhoz. Nyomja meg a fent látható Csatlakozás gombot, és kövesse a képernyőn megjelenő utasításokat.

11. lépés: Válasszon egy műveletet

Válasszon egy műveletet
Válasszon egy műveletet

Kattintson a "Sor hozzáadása a táblázathoz" gombra.

12. lépés: Állítsa be a műveletet

Állítsa be a műveletet
Állítsa be a műveletet

Adjon nevet a "Táblázat neve" szövegmezőben. A következetesség érdekében a "Data_Logger" lehetőséget választom. Hagyja békén a beállítás többi részét (máskor is kísérletezhet ezekkel a beállításokkal), majd nyomja meg a "Művelet létrehozása" gombot a képernyő alján.

13. lépés: Tekintse át és véglegesítse kisalkalmazását

Tekintse át és véglegesítse kisalkalmazását
Tekintse át és véglegesítse kisalkalmazását

Ha elégedett az applet konfigurációjával, nyomja meg a "Befejezés" gombot.

14. lépés: A szükséges konfigurációs információk lekérése

A később szükséges konfigurációs információk lekérése
A később szükséges konfigurációs információk lekérése

Kattintson a "Webhooks" elemre a fentiek szerint.

15. lépés: Folytassa az API -kulcs Webhooks dokumentációjával

Lépjen az API -kulcs Webhooks dokumentációjához
Lépjen az API -kulcs Webhooks dokumentációjához

Furcsának tűnhet, de kattintson a jobb felső sarokban található Dokumentáció linkre, hogy az egyedi API -kulccsal lépjen az oldalra.

16. lépés: Mentse az API -kulcsot

Mentse az API -kulcsot
Mentse az API -kulcsot
Mentse az API -kulcsot
Mentse az API -kulcsot

A Dokumentáció képernyő első sora az egyedi API -kulcsot jeleníti meg. Másolja és mentse ezt a kulcsot későbbi használatra.

Az appletet itt is érdemes kipróbálni. Ne felejtse el megváltoztatni az {event} értéket Data_Logger -re vagy bármire, amellyel az eseményt elnevezte, és adjon hozzá néhány adatot a 3 üres értékhez, majd kattintson a "Tesztelés" gombra az oldal alján. Látnia kell egy zöld üzenetet: „Az esemény aktiválódott”. Ha igen, folytassa a Google Dokumentumokkal, és győződjön meg arról, hogy a tesztoldalon megadott adatok megjelentek a Google Táblázatok dokumentumban.

17. lépés: Gyűjtse össze az alkatrészeket

Gyűjtse össze az összetevőket
Gyűjtse össze az összetevőket
Gyűjtse össze az összetevőket
Gyűjtse össze az összetevőket
Gyűjtse össze az összetevőket
Gyűjtse össze az összetevőket

Csak néhány alkatrészre lesz szüksége.

1) ESP8266 NodeMcu Fejlesztési Tanács

2) DHT11 hőmérséklet/páratartalom érzékelő

3) Ajtó/ablak Reed kapcsoló

4) 10 k ohmos ellenállás

5) Csatlakozó vezeték

18. lépés: Szerelje össze az alkatrészeket

1) Csatlakoztassa az ESP8266 3v3 -as érintkezőjének egyikét a DHT11 vcc -tűjéhez.

2) Csatlakoztassa az ESP8266 egyik földelőcsapját a DHT11 földelőcsapjához.

3) Csatlakoztassa az ESP8266 D4 -es érintkezőjét (más néven az IDE -ben lévő 2 -es tűt) a DHT11 -es adattüskéhez.

4) Csatlakoztasson egy másik 3v3 tűt az ESP8266 készüléken az ajtó/ablak nádkapcsoló egyik oldalához.

5) Csatlakoztassa az ESP8266 D5 -ös csapját (más néven az IDE -ben a 14 -es tűt) az ajtó/ablak nádkapcsoló másik oldalához, és csatlakoztassa a 10 k ohmos ellenállás egyik oldalához.

6) Csatlakoztassa a 10 k ohmos ellenállás másik oldalát az ESP8266 másik földelőcsapjához.

Az ESP8266 tűk kiválasztásához tekintse meg ezt a hasznos diagramot vagy a nagyon hasznos videót.

19. lépés: Írja be az Arduino kódot

Írja be az Arduino kódot
Írja be az Arduino kódot

Másolja ki és illessze be az alábbi kódot az Arduino IDE -be.

#befoglalás #befoglalás #befoglalás "DHT.h"

#define DHTPIN 2 // milyen digitális tűhöz vagyunk csatlakoztatva

#define DOORPIN 14 // milyen digitális csap az ajtókapcsoló.

#define DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int count = 1;

const char* ssid = "valami_szid"; // ezt változtassa meg, hogy használja a ssid const char* password = "some_password"; // ezt változtassa meg jelszavának használatához int sleepTime = 100;

// Készítő Webhooks IFTTT

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

// IFTTT URL -erőforrás

const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"; // Győződjön meg róla, hogy a szolgáltatás nevét és az API -kulcsát használja.

String doorStatus = "Zárt";

illékony bool állapotChanged = false;

// Ha órákat alszik, akkor állítsa be az intervallumot órával * 60 perccel * 60 másodperccel * 1000 milliszekundummal

const hosszú intervallum = 1,0 * 60 * 60 * 1000; // 1 óra előjel nélküli hosszú előzőMillis = 0 - (2 * intervallum);

void setup () {

Sorozat.kezdet (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMode (DOORPIN, INPUT); // Ajtóérzékelő dht.begin (); WiFi.begin (ssid, jelszó);

Serial.print ("\ nCsatlakozás..");

while (WiFi.status ()! = WL_CONNECTED) {delay (1000); Soros.nyomtatás ("."); } Serial.print ("\ n"); }

void eventTriggered () {

stateChanged = igaz; Serial.println ("Az ajtó ellenőrzése!"); if (digitalRead (DOORPIN) == HIGH) // Ellenőrizze, hogy az ajtó nyitva van -e {Serial.println ("Az ajtó zárva!"); doorStatus = "Zárva"; } else {Serial.println ("Ajtó nyitva!"); doorStatus = "Nyitva"; }}

void checkStatus () {

ha (WiFi.status () == WL_CONNECTED) {// A WiFi kapcsolat állapotának ellenőrzése // A hőmérséklet vagy páratartalom olvasása körülbelül 250 milliszekundumot vesz igénybe! // Az érzékelő leolvasása akár 2 másodperces "régi" is lehet (nagyon lassú érzékelő) float h = dht.readHumidity (); // A hőmérséklet olvasása Celsius -ban (alapértelmezett) float t = dht.readTemperature (); // A hőmérséklet leolvasása Fahrenheit (isFahrenheit = igaz) float f = dht.readTemperature (true); // Ellenőrizze, hogy valamelyik olvasás nem sikerült -e, és lépjen ki korán (újrapróbálkozáshoz). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("Nem sikerült leolvasni a DHT érzékelőből!"); //Serial.print ("."); // Nem sikerült olvasni a DHT érzékelőből! Visszatérés; } // Hőindex kiszámítása Fahrenheitben (alapértelmezett) float hif = dht.computeHeatIndex (f, h); // Hőindex számítása Celsius -ban (isFahreheit = false) float hic = dht.computeHeatIndex (t, h, false);

Serial.print ("\ n");

Serial.print ("Hőmérséklet:"); Sorozatnyomat (f); Sorozatnyomat (" *F ("); Soros.nyomtatás (t); Soros.nyomtatás (" *C)"); Serial.print ("\ t"); Serial.print ("Hőindex:"); Soros.nyomat (hif); Serial.print (" *F ("); Serial.print (hic); Serial.print (" *C)%"); Serial.print ("\ t"); Serial.print ("Páratartalom:"); Soros.println (h);

if (digitalRead (DOORPIN) == HIGH) // Ellenőrizze, hogy az ajtó nyitva van -e

{Serial.println ("Az ajtó zárva!"); doorStatus = "Zárva"; } else {Serial.println ("Ajtó nyitva!"); doorStatus = "Nyitva"; } String jsonObject = Karakterlánc ("{" value1 / ": \" ") + f +"*F (" + t +"*C) / " + hif +"*F (" + hic +"*C) " +" / ", \" value2 / ": \" " + h +" / ", \" value3 / ": \" " + doorStatus +" / "}"; HTTPClient http; Karakterlánc completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (completeUrl); // http.begin (szerver); http.addHeader ("Content-Type", "application/json"); http. POST (jsonObject); http.writeToStream (& Serial); http.end (); // Kapcsolat bezárása

stateChanged = hamis;

int sleepTimeInMinutes = intervallum / 1000 /60; Serial.print ("\ n / nMenj aludni"); Serial.print (sleepTimeInMinutes); Serial.println ("perc (s) …"); }}

void loop () {

előjel nélküli hosszú áramMillis = millis (); késleltetés (4000); // Ha túlléptük az eltelt időt, akkor kényszerítsük az ajtó és a hőmérséklet ellenőrzését. if (currentMillis - previousMillis> = intervallum) {stateChanged = true; previousMillis = currentMillis; Soros.nyomtatás (szám ++); Serial.println (") Ellenőrzés az eltelt idő miatt!"); } else if (stateChanged) {Serial.print (count ++); Serial.println (") Ellenőrzés állapotváltozás miatt!"); }

// Ha az állapot megváltozott, ellenőrizze az ajtót és a hőmérsékletet.

if (stateChanged) {checkStatus (); }

késleltetés (elalvási idő);

}

20. lépés: Eredmények

Eredmények
Eredmények

Miután feltöltötte a forráskódot az előző lépésben, olyan eredményeket kell elérnie, mint a fenti példa.

21. lépés: Hitelek

Sok hasznos tippet és tippet találtam a Random Nerd Tutorials -ból, és szeretném megköszönni nekik a segítséget. Különösen az ESP32 -ről szóló kiváló oktatóanyaguk ESP8266 Érzékelői leolvasások közzététele a Google Táblázatokban, amelyek ezen útmutató részei alapulnak.

Ezenkívül a TheCircuit DHT11 Instructable segített megérteni, hogyan kell használni ezt a nagyon olcsó, de érdekes kis érzékelőt.

Ezenkívül számos oktatóanyag foglalkozik az ajtók megfigyelésével, mint például a garázskapu -monitor, és egy másik a Random Nerd Tutorials -ból. Ezek darabjait használtam fel, hogy megértsem, hogyan kell megfelelően működtetni a nádkapcsolómat.

Végül ezekkel az információkkal, valamint az Interneten talált egyéb részletekkel olyan rendszert tudtam létrehozni, amely megfelel az igényeimnek. Remélem, hasznosnak találja ezt az Instructable -t, és létrehoz egy sajátot.

Ajánlott: