Sisällysluettelo:

Oven ja lämpötilan tilan kirjausprojekti: 21 vaihetta
Oven ja lämpötilan tilan kirjausprojekti: 21 vaihetta

Video: Oven ja lämpötilan tilan kirjausprojekti: 21 vaihetta

Video: Oven ja lämpötilan tilan kirjausprojekti: 21 vaihetta
Video: Измеряем реальную температуру однозонной конвекционной печи. Эксперимент с термопарой и мультиметром 2024, Heinäkuu
Anonim
Oven ja lämpötilan tilan kirjausprojekti
Oven ja lämpötilan tilan kirjausprojekti

Tämä opastettava opastaa sinua tekemään yksinkertaisen oven ja lämpötilan tilastoinnin alle 10,00 dollarilla käyttämällä ESP8266 NodeMCU: ta, DHT11 -lämpötila- ja kosteusanturia, oven/ikkunan reed -kytkintä, 10 K ohmin vastusta ja joitakin kytkentäjohtoja.

Tämän projektin alkuperä syntyi halustani tehdä enemmän kotiautomaatiota Arduino -piirilevyllä. Kun olin etsinyt Internetistä kodin automaatiohankkeita ESP8266 -kortteja käyttäen, päätin yhdistää lämpötilan ja oven tilan kirjaajan ensimmäistä kertaa. Lopulta tämä projekti yhdistetään servojen, kosteusantureiden ja muun elektroniikan kanssa, jotta isoisäni suunnittelema ja rakentama pieni vihreä talo automatisoi 50 vuotta sitten. Lämpötila -anturia käytetään määrittämään, onko lämmitysjärjestelmä kytkettävä päälle tai pois päältä, sekä signaalin servojen avaamisesta ja sulkemisesta tarvittaessa. Tuuletusjärjestelmän tilaa seurataan magneettisilla reed -kytkimillä. Lopuksi kosteusantureita käytetään kastelujärjestelmän automatisointiin.

Vaihe 1: Vastuuvapauslauseke

Vain nopea vastuuvapauslauseke, jossa todetaan, ettemme ota mitään vastuuta mistään, mitä tapahtuu tämän ohjeen noudattamisen seurauksena. On aina parasta noudattaa valmistajan ohjeita ja käyttöturvallisuustietoja, kun rakennat mitään, joten tutustu näihin asiakirjoihin kaikista osista ja työkaluista, joita käytät oman rakentamiseen. Annamme vain tietoja vaiheista, joita käytimme omien luomiseen. Emme ole ammattilaisia. Itse asiassa kaksi kolmesta tähän rakentamiseen osallistuneista henkilöistä on lapsia.

Vaihe 2: Määritä ilmainen IFTTT -tili

Määritä ilmainen IFTTT -tili
Määritä ilmainen IFTTT -tili

Jos sinulla ei vielä ole tiliä, nyt on aika perustaa ilmainen IFTTT -tili siirtymällä heidän kotisivulleen. IFTTT tarkoittaa If This Then That ja on ilmainen alusta, jonka avulla voit yhdistää Internet -pohjaisia palveluja uusilla tavoilla voit hyödyntää näitä palveluita uusilla tavoilla. Tässä projektissa aiomme käyttää IFTTT: tä, jotta ESP8266 voi kirjata oven tilan ruokokytkimen kautta ja lämpötilan ja kosteuden DHT11 -anturin kautta Google Sheets -asiakirjaan.

Vaihe 3: Luo IFTTT -sovelma

Luo IFTTT -sovelma
Luo IFTTT -sovelma

Kun olet vielä IFTTT: ssä, siirry "Omat appletit" -osioon ja luo uusi sovelma napsauttamalla "Uusi appletti" -painiketta.

Vaihe 4: Määritä sovelman "tämä" osa

Määritä
Määritä

Napsauta "tätä" sanaa, joka on sinisellä värillä - kuten yllä olevassa kuvassa on korostettu.

Vaihe 5: Lisää WebHooks -palvelu sovelmallesi

Lisää WebHooks -palvelu sovelmallesi
Lisää WebHooks -palvelu sovelmallesi

Etsi hakupalkista Webhooks -palvelu ja valitse Webhooks -kuvake.

Kun olet löytänyt Webhooks -palvelun, napsauta sitä.

Vaihe 6: Määritä Vastaanota verkkopyyntö -laukaisin

Määritä Vastaanota verkkopyyntö -laukaisin
Määritä Vastaanota verkkopyyntö -laukaisin

Valitse Vastaanota verkkopyyntö -liipaisin.

Vaihe 7: Anna tapahtuman nimi

Anna tapahtuman nimi
Anna tapahtuman nimi

Kirjoita tekstiruutuun uudelle sovellesi tapahtuman nimi. Valitsin "Data Logger", mutta voit valita mitä haluat.

Vaihe 8: Määritä sovelman "osa"

Määritä
Määritä

Napsauta "tuota" sanaa, joka on sininen - kuten yllä olevassa kuvassa on korostettu.

Vaihe 9: Asenna toimintopalvelu

Asenna toimintapalvelu
Asenna toimintapalvelu

Etsi hakukentästä Google Sheets -palvelu ja napsauta Google Sheets -kuvaketta.

Vaihe 10: Muodosta yhteys Google Sheetsiin

Muodosta yhteys Google Sheetsiin
Muodosta yhteys Google Sheetsiin

Jos et ole jo tehnyt niin, sinun ei tarvitse yhdistää IFTTT -tiliäsi Google Sheetsiin. Paina yllä olevaa Yhdistä-painiketta ja noudata näytön ohjeita.

Vaihe 11: Valitse toiminto

Valitse toiminto
Valitse toiminto

Napsauta "Lisää rivi laskentataulukkoon".

Vaihe 12: Määritä toiminto

Määritä toiminto
Määritä toiminto

Anna nimi Laskentataulukon nimi -tekstikenttään. Päätän käyttää johdonmukaisuutta "Data_Logger". Jätä loput asetukset rauhaan (voit kokeilla näitä asetuksia toisinaan) ja paina sitten "Luo toiminto" -painiketta näytön alareunassa.

Vaihe 13: Tarkista ja viimeistele sovelmasi

Tarkista ja viimeistele sovelmasi
Tarkista ja viimeistele sovelmasi

Kun olet tyytyväinen sovelman määritykseen, paina "Valmis" -painiketta.

Vaihe 14: Hae myöhemmin tarvittavat määritystiedot

Hae myöhemmin tarvittavat määritystiedot
Hae myöhemmin tarvittavat määritystiedot

Napsauta "Webhooks", kuten yllä on korostettu.

Vaihe 15: Siirry API -avaimen Webhooks -dokumentaatioon

Siirry API -avaimen Webhooks -dokumentaatioon
Siirry API -avaimen Webhooks -dokumentaatioon

Se voi tuntua oudolta, mutta napsauta oikeassa yläkulmassa olevaa Dokumentaatio -linkkiä, niin pääset sivulle, jossa on ainutlaatuinen sovellusliittymäavaimesi.

Vaihe 16: Tallenna sovellusliittymäavain

Tallenna API -avain
Tallenna API -avain
Tallenna API -avain
Tallenna API -avain

Dokumentaationäytön ensimmäisellä rivillä näkyy yksilöllinen sovellusliittymäavaimesi. Kopioi ja tallenna tämä avain myöhempää käyttöä varten.

Sovellusta on myös hyvä testata täällä. Muista muuttaa {event} arvoksi Data_Logger tai mikä tahansa tapahtumasi nimi ja lisää joitakin tietoja kolmeen tyhjään arvoon ja napsauta sitten sivun alareunassa olevaa "Testaa" -painiketta. Näet vihreän viestin "Tapahtuma on käynnistetty". Jos näin on, siirry Google -dokumentteihin ja varmista, että testisivulle syöttämäsi tiedot näkyvät Google Sheets -asiakirjassa.

Vaihe 17: Kerää komponentit

Kerää komponentit
Kerää komponentit
Kerää komponentit
Kerää komponentit
Kerää komponentit
Kerää komponentit

Tarvitset vain muutaman osan.

1) ESP8266 NodeMcu -kehityslauta

2) DHT11 lämpötila-/kosteusanturi

3) Ovi/ikkuna Reed -kytkin

4) 10 k ohmin vastus

5) Liitäntäjohto

Vaihe 18: Kokoa osat

1) Kytke yksi ESP8266: n 3v3 -nastasta DHT11: n vcc -nastaan.

2) Liitä yksi ESP8266: n maadoitusliittimistä DHT11: n maadoitusnastaan.

3) Liitä ESP8266: n nasta D4 (eli nasta 2 IDE: ssä) DHT11: n datanastaan.

4) Liitä ESP8266: n toinen 3v3 -nastainen oven/ikkunan reed -kytkimen toiselle puolelle.

5) Kytke ESP8266: n nasta D5 (eli IDE: n nasta 14) oven/ikkunan reed -kytkimen toiselle puolelle ja myös 10 k ohmin vastuksen toiselle puolelle.

6) Liitä 10 k ohmin vastuksen toinen puoli toiseen ESP8266: n maadoitusnastaan.

Katso ESP8266 -nastavalinnat tästä hyödyllisestä kaaviosta tai erittäin hyödyllisestä videosta.

Vaihe 19: Kirjoita Arduino -koodi

Kirjoita Arduino -koodi
Kirjoita Arduino -koodi

Kopioi ja liitä alla oleva koodi Arduino IDE -laitteeseesi.

#Sisällytä #Sisällytä #Sisällytä "DHT.h"

#define DHTPIN 2 // mihin digitaaliseen nastaan olemme yhteydessä

#define DOORPIN 14 // mitä digitaalista tappia ovikytkin on päällä.

#define DHTTYPE DHT11 // DHT 11

DHT dht (DHTPIN, DHTTYPE);

int count = 1;

const char* ssid = "some_ssid"; // muuta tätä käyttämään ssid const char* password = "some_password"; // vaihda tämä käyttämään salasanaasi int sleepTime = 100;

// Maker Webhooks IFTTT

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

// IFTTT -URL -resurssi

const char* resource = "/trigger/SOME_SERVICE_NAME/with/key/SOME_API_KEY"; // Varmista, että käytät palvelunimeäsi ja api -avaintasi.

String doorStatus = "Suljettu";

haihtuva bool -tilaChanged = false;

// Jos nukut tuntikausia, aseta aikaväli tunniksi * 60 minuuttia * 60 sekuntia * 1000 millisekuntia

const pitkä väli = 1,0 * 60 * 60 * 1000; // 1 tunti allekirjoittamaton pitkä edellinenMillis = 0 - (2 * väli);

void setup () {

Sarja.alku (115200); attachInterrupt (digitalPinToInterrupt (DOORPIN), eventTriggered, CHANGE); pinMode (DOORPIN, INPUT); // Ovianturi dht.begin (); WiFi.begin (ssid, salasana);

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

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

void eventTriggered () {

stateChanged = true; Serial.println ("Oven tarkistus!"); if (digitalRead (DOORPIN) == HIGH) // Tarkista onko ovi auki {Serial.println ("Ovi on kiinni!"); doorStatus = "Suljettu"; } else {Serial.println ("Ovi on auki!"); doorStatus = "Avattu"; }}

void checkStatus () {

jos (WiFi.status () == WL_CONNECTED) {// Tarkista WiFi -yhteyden tila // Lämpötilan tai kosteuden lukeminen kestää noin 250 millisekuntia! // Anturilukemat voivat olla jopa 2 sekuntia vanhoja (anturi on hyvin hidas) float h = dht.readHumidity (); // Lue lämpötila celsiusasteina (oletus) float t = dht.readTemperature (); // Lue lämpötila Fahrenheitina (isFahrenheit = true) float f = dht.readTemperature (true); // Tarkista, jos jokin lukeminen epäonnistui, ja poistu aikaisin (yritä uudelleen). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("DHT -anturin lukeminen epäonnistui!"); //Sarja.jälki ("."); // DHT -anturin lukeminen epäonnistui! palata; } // Laske lämpöindeksi Fahrenheit -asteina (oletus) float hif = dht.computeHeatIndex (f, h); // Laske lämpöindeksi celsiusasteina (isFahreheit = false) float hic = dht.computeHeatIndex (t, h, false);

Serial.print ("\ n");

Serial.print ("Lämpötila:"); Sarjanjälki (f); Serial.print (" *F ("); Serial.print (t); Serial.print (" *C)"); Serial.print ("\ t"); Serial.print ("Lämpöindeksi:"); Sarjanjälki (hif); Serial.print (" *F ("); Serial.print (hic); Serial.print (" *C)%"); Serial.print ("\ t"); Serial.print ("Kosteus:"); Sarja.println (h);

if (digitalRead (DOORPIN) == HIGH) // Tarkista onko ovi auki

{Serial.println ("Ovi on kiinni!"); doorStatus = "Suljettu"; } else {Serial.println ("Ovi on auki!"); doorStatus = "Avattu"; } Jono jsonObject = Jono ("{" value1 / ": \" ") + f +"*F (" + t +"*C) / " + hif +"*F (" + hic +"*C) " +" / ", \" value2 / ": \" " + h +" / ", \" value3 / ": \" " + doorStatus +" / "}"; HTTP -asiakas http; Merkkijono completeUrl = "https://maker.ifttt.com/trigger/bme280_readings/with/key/cZFasEvy5_3JlrUSVAxQK9"; http.begin (completeUrl); // http.begin (palvelin); http.addHeader ("Content-Type", "application/json"); http. POST (jsonObject); http.writeToStream (& Serial); http.end (); // Sulje yhteys

stateChanged = false;

int sleepTimeInMinutes = interval / 1000 /60; Serial.print ("\ n / nMene nukkumaan"); Serial.print (sleepTimeInMinutes); Serial.println ("minuutti (t) …"); }}

void loop () {

allekirjoittamaton pitkävirtaMillis = millis (); viive (4000); // Jos ylitimme kuluneen ajan, pakota ovi ja lämpötila tarkistamaan. if (currentMillis - previousMillis> = intervalli) {stateChanged = true; previousMillis = currentMillis; Sarjanjälki (määrä ++); Serial.println (") Tarkistetaan kuluneen ajan takia!"); } else if (stateChanged) {Serial.print (count ++); Serial.println (") Tarkistetaan tilanmuutoksen vuoksi!"); }

// Jos tila muuttuu, tarkista ovi ja lämpötila.

if (stateChanged) {checkStatus (); }

viive (uniaika);

}

Vaihe 20: Tulokset

Tulokset
Tulokset

Kun olet lähettänyt lähdekoodin edellisessä vaiheessa, saat yllä olevan esimerkin kaltaisia tuloksia.

Vaihe 21: Lainat

Löysin paljon hyödyllisiä vihjeitä ja vinkkejä Random Nerd -opetusohjelmista ja haluaisin kiittää heitä kaikesta avusta. Erityisesti heidän erinomainen ESP32 -opetusohjelmansa ESP8266 Julkaise anturilukemat Google Sheetsiin, joihin tämän ohjeen suuret osat perustuvat.

Lisäksi TheCircuitin DHT11 Instructable auttoi minua ymmärtämään, kuinka käyttää tätä erittäin halpaa, mutta mielenkiintoista pientä anturia.

Lisäksi on monia opetusohjelmia, jotka käsittelevät ovien valvontaa, kuten Garage Door Monitor ja toinen Random Nerd Tutorialsista. Käytin niistä palasia auttaakseni ymmärtämään, miten saan reed -kytkimen toimimaan oikein.

Lopuksi näiden tietojen ja muiden Internetistä löytämieni tietojen avulla pystyin luomaan tarpeitani vastaavan järjestelmän. Toivottavasti pidät tätä Instructablea hyödyllisenä ja rakennat oman.

Suositeltava: