Korjaus Design Huonekalut

Kotitekoiset anturit arduinolle. Kotitekoiset liikeanturit (lämpötila, kosteus, valaistus) Smart Home -järjestelmään perustuvat MySensors-järjestelmään. Arduinoon tutustuminen

Muista, että tämän projektin perusta on Arduino. Se suorittaa useita tärkeitä toimintoja: se lukee tietoja IR-anturista, käsittelee signaaleja, reagoi liikkeisiin ja USB ilmoittaa tietokoneelle viestin lähettämisen tarpeesta. Tässä artikkelissa tarkastelemme kahta kysymystä:

  1. PIR-anturin liittäminen Arduinoon;
  2. Kuinka määrittää anturin ja automaattisen sähköpostin lähetyksen välinen suhde .
Projektiin vaaditaan:
  • Arduino UNO (voit valita Aliexpressistä).
  • PIR anturi.
  • Bradboard.
  • Kimppu johtoja.

Kaikki listatut kokoonpanokohteet näkyvät kuvissa:

Ensinnäkin tarvitset tietokoneen, jossa on Internet-yhteys. Käytimme Raspberry Pi:tä.

Yhdistämme PIR-anturin Arduino-sarjaan:

Tämän vaiheen suorittamiseksi sinun on otettava anturista tulevat johdot ja kiinnitettävä ne alustaan. Seuraavaksi sinulle annetaan valokuva kaaviolla:

Työskentely luonnoksen kanssa

Kun liikettä tapahtuu, USB-sarjaa käyttävän Arduinon pitäisi lähettää sähköposti. Tietenkin, jos lähetät sähköpostin, jossa on jotain liikettä, postilaatikko on täynnä. Siksi korjasimme asian näin, jos kahden signaalin välillä on lyhyt aika, lähetetään sähköposti seuraavalla tekstillä:

int pirpin = 7; int minSecsBetweenEmails = 60; // 1 min pitkä lastSend = -minSecsBetweenEmails * 1000; void setup() ( pinMode(pirPin, INPUT); Serial.begin(9600); ) void loop() ( long now = millis(); if (digitalRead(pirPin) == HIGH) ( if (nyt > (lastSend + minSecsBetweenSähköpostien * 1000)) ( Serial.println("LIIKKE"); lastSend = nyt; ) else ( Serial.println("Liian pian"); ) ) delay(500); )

« MinSecsBetweenEmails" - tämä muuttuja voidaan vaihtaa muihin arvoihin, jotka ovat käteviä käyttäjälle. Voit esimerkiksi asettaa väliksi yhden minuutin, mikä tarkoittaa, että seuraava sähköposti lähetetään vasta 60 sekunnin kuluttua.

"viimeinen lähetys" auttaa sinua seuraamaan aikaa, jolloin viimeinen viesti lähetettiin. Tämä muuttuja alustetaan negatiivisella numerolla, joka on yhtä suuri kuin millisekuntia, joka on merkitty "MinSecsBetweenEmails" . Seurauksena on, että saamme takuun, että PIR-anturi käynnistyy välittömästi Arduinon luonnoksen aloittamisen jälkeen.

Johtuen siitä, mitä voimme laskea millisekuntia, vertailla niiden lukumäärää anturin viimeisimmän toiminnan aikaan? Kaikki kiitos sisäänrakennetun ominaisuuden nimeltä Millis. Jos liikettä havaitaan, mutta anturin viimeisestä aktivoinnista on kulunut vähän aikaa, lähetetään tekstiä sisältävät kirjeet "Liian pian".

Tämä ominaisuus on testattava ensin. Voit tehdä tämän avaamalla Sarjainen näyttö. Katsotaan miltä se näyttää seuraavaksi:

Kun olet varma oikeasta toiminnasta, voit kirjoittaa ohjelman Pythonissa, sitä käytetään alustalta tulevien signaalien käsittelyyn.

PySerialin ja Pythonin asentaminen:

Linux-käyttöjärjestelmässä Python on asennettu automaattisesti. Windowsissa ei ole tätä ominaisuutta, joten sinun on asennettava ohjelma itse. PySerial toimii kirjastona, joka auttaa kommunikoimaan Arduinon kanssa.

Pythonin asennus:

Ei ole harvinaista, että Python 3 aiheuttaa ongelmia työskennellessäsi PySerialin kanssa, varsinkin jos käytät Windowsia. Tämän välttämiseksi voit ladata kolmannen version sijaan Python 2 .

Kun olet suorittanut ohjelman asennuksen Käynnistä-valikosta, löydät erityisen ryhmän. Kun siirrymme kirjaston asennusprosessiin, meidän on tehtävä yhteistyötä Pythonin kanssa komentorivin avulla. Siksi on parempi lisätä haluttu hakemisto välittömästi PATH:iin. Alta näet apukuvan:

Hakemiston lisäämiseksi tarvitsemme: avaa ohjauspaneelin, etsi siitä "Järjestelmän ominaisuudet" -osion. Sitten painamme näppäintä, jonka nimi on "Ympäristömuuttujat" (Environment Variabes), ikkuna avautuu edessämme. Sen alareunassa pitäisi olla "Path", joka on valittava. Napsauta nyt "Muokkaa" - Muuta ja viimeistele prosessi napsauttamalla "muuttujaarvo". Et voi poistaa saamaasi tekstiä, sinun tulee lisätä siihen seuraava merkintä - ";C:\Python27". Älä unohda laittaa ";" jokaisen tekstissä mainitun kansion perään. Nyt tarkistamme, onko syöttö "Path" oikea. Voit tehdä tämän kirjoittamalla komentoriville sanan "python". Jos virheitä ei ole, näytössä näkyy seuraava kuva:

Asenna PySerial:

Käytetystä käyttöjärjestelmästä riippumatta lataa PySerial 2.6:n .tar.gz-asennuspaketti osoitteesta. Tämä sivusto voi auttaa sinua tekemään juuri sen - //pypi.python.org/pypi/pyserial . Saamme tiedoston nimeltä pyserial-2.6.tar.gz. Jos käytät Windowsia, sinun on purettava tiedostot valittuun kansioon. Tämä ei ole tavallinen ZIP-tiedosto, sinun on suoritettava lisävaiheita - lataa 7-zip (voit tehdä sen täältä - //www.7-zip.org/ ). Linux-järjestelmässä sinun on käytettävä pääte-istuntoa, anna siihen "CD"-komento, määritä sen kansion nimi, johon latasit pyserial-2.6.tar.gz. Purkaaksesi pakkauksen sinun on syötettävä:

$ tar -xzf pyserial-2.6.tar.gz

Tämän jälkeen sinun on suoritettava komento:

sudo python setup.py asennus

Python

Sinun on luotava erillinen ohjelma toimiaksesi Pythonin kanssa. Sinun on kopioitava koodi tiedostoon, jolla on sama nimi - "movement.py". Linuxissa voit käyttää "nano"-editoria, kun taas Windowsissa sinun on luotava tiedosto Python "IDLE"-editorilla. Se löytyy aloitusvalikosta.

tuontiaika tuonti sarja tuonti smtplib TO=" [sähköposti suojattu]"GMAIL_USER=" [sähköposti suojattu]" GMAIL_PASS = "pane yourpasswordhere" SUBJECT = "Trusion!!" TEXT = "PIR-anturin liike havaittu" ser = serial.Serial("COM4", 9600) def send_email(): print("Sähköpostin lähettäminen") smtpserver = smtplib. SMTP("smtp.gmail.com",587) smtpserver.ehlo() smtpserver.starttls() smtpserver.ehlo smtpserver.login(GMAIL_USER, GMAIL_PASS) header = "Vastaanottaja:" + TO +From "\n" + " " + GMAIL_USER header = otsikko + "\n" + "Aihe:" + SUBJECT + "\n" tulostusotsikko msg = otsikko + "\n" + TEKSTI + " \n\n" smtpserver.sendmail(GMAIL_USER, TO, msg) smtpserver.close() while True: viesti = ser.readline() print(message) if message == "M" : send_email() time.sleep(0.5)

Tämä näkyy seuraavassa kuvassa:

Muutosten jälkeen ohjelma alkaa käyttää komentoriviä:

python-liike.py

Joten asennus on valmis.

Mahdollisuudet eivät lopu tähän, on olemassa laajennuksia, joiden avulla voit vastaanottaa viestejä, joissa on lämpötilaraportteja tai muita tietoja.

Liitetyt tiedostot :

Kotitekoinen lämpötila- ja kosteusanturi DHT11 ja DHT22 - yhdistää Arduinoon Biometrinen lukko - ohjauskortin kokoaminen ja mikro-ohjaimen ohjelmointi

Hyvää iltapäivää, tänään jaan ohjeet kellon tekemiseen huonelämpömittarilla ( Tee-se-itse-kello arduinossa). Kellon virtalähteenä on Arduino UNO, ja WG12864B-graafista näyttöä käytetään ajan ja lämpötilan näyttämiseen. Lämpötila-anturina - ds18b20. Toisin kuin useimmat muut kellot, en käytä RTS:ää (Real Time Clock), mutta yritän tulla ilman tätä lisämoduulia.

Arduino-piirit erottuvat yksinkertaisuudestaan, ja jokainen voi aloittaa Arduinon oppimisen. Voit lukea kirjastojen ja flash-arduinon yhdistämisestä artikkelistamme.

Aloitetaan.

Tämän kellon luomiseksi tarvitsemme:

Arduino UNO (tai mikä tahansa muu Arduino-yhteensopiva levy)
- Graafinen näyttö WG12864B
- Lämpötila-anturi ds18b20
- Vastus 4,7 Kom 0,25 W
- Vastus 100 ohm 0,25 W
- Paristokotelo 4 AA-paristolle
- Vastaava laatikko
- pieni tiedosto
- Kynsilakka (musta tai vartalonvärinen)
- Ohut muovia tai pahvia
- Eristysteippi
- Liitäntäjohdot
- Piirilevy
- Painikkeet
- juotosrauta
- Juotos, hartsi
- Kaksipuolinen teippi

Graafisen näytön valmistelu.
Näytön liittämisessä on ensi silmäyksellä monia ongelmia ja vaikeuksia. Mutta jos käsittelet ensin niiden tyyppejä, siitä tulee paljon helpompaa ja selkeämpää. ks0107/ks0108-ohjaimessa on monia erilaisia ​​ja erityyppisiä näyttöjä. Kaikki näytöt on yleensä jaettu 4 tyyppiin:
Vaihtoehto A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Vaihtoehto B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ-näytöt AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LDG1,4-28, Topway LDG1,828 86 4F, TM12864L-2, 12864J-1
Vaihtoehto C: Shenzhen Jinghua Displays Co Ltd. JM12864
Vaihtoehto D: Wintek - Cascades WD-G1906G, Wintek - GEN/WD-G1906G/KS0108B, Wintek/WD-G1906G/S6B0108A, TECDIS/Y19061/HD61202, Varitronix/MGLS191262/

Lista ei ole täydellinen, niitä on paljon. Yleisin ja mielestäni kätevä WG12864B3 V2.0. Näyttö voidaan yhdistää Arduinoon sarja- tai rinnakkaisportin kautta. Arduino UNO:n kanssa käytettäessä on parempi valita sarjaporttiliitäntä - silloin tarvitsemme vain 3 mikrokontrollerilähtöä, rinnakkaisportin kautta kytketyn vähintään 13 linjan sijaan. Kaikki liittyy hyvin yksinkertaisesti. On vielä yksi vivahde, myynnissä on kaksi näyttövaihtoehtoa, sisäänrakennetulla potentiometrillä (kontrastin säätämiseksi) ja ilman sitä. Valitsin, ja suosittelen sinua tekemään samoin, sisäänrakennetun laitteen kanssa.


Tämä vähentää osien määrää ja juotosaikaa. Myös taustavalaistukseen kannattaa laittaa 100 ohmin virtarajoitusvastus. Jos kytket suoraan 5 voltin jännitteen, taustavalo voi palaa.
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - +5 V
4 (RS) - 10
5 (R/W) - 11
6(E)-13
15 (PSB) - GND
19 (BLA) - vastuksen läpi - + 5V
20 (BLK) - GND

Kätevin tapa on koota tämä kaikki näytön takaosaan ja tuoda siitä 5 johtoa yhteyden muodostamiseksi Arduino UNO:han. Loppujen lopuksi sen pitäisi näyttää suunnilleen tältä:


Niille, jotka valitsevat edelleen rinnakkaisliitännän, annan kytkentätaulukon.

Ja kaavio vaihtoehdon B näytöille:



Yhteen tietoliikennelinjaan voidaan kytkeä useita antureita. Yksi riittää kellollemme. Yhdistämme johdon ds18b20:n "DQ"-nastasta Arduino UNO:n "nastaan ​​5".

Taulun valmistelu painikkeilla.
Käytämme kolmea painiketta asettaaksesi kellon ajan ja päivämäärän. Mukavuuden vuoksi juotamme kolme painiketta piirilevylle ja tulostamme johdot.


Yhdistämme seuraavasti: yhdistämme kaikille kolmelle painikkeelle yhteisen johdon "GND" Arduinoon. Ensimmäinen painike, jolla siirrytään ajan asetustilaan ja vaihdetaan kellonajan ja päivämäärän mukaan, muodostamme yhteyden "Pin 2:een". Toinen, arvon lisäyspainike, "Pin 3":ksi ja kolmas arvon pienennyspainike, "Pin 4".

Laittamalla kaikki yhteen.
Oikosulun välttämiseksi näyttö tulee eristää. Käärimme sen ympyrään sähköteipillä, ja takapuolelle kiinnitämme eristysmateriaalitangon kaksipuoleiseen teippiin, joka on leikattu mittojen mukaan. Paksu pahvi tai ohut muovi käy. Käytin muovia paperitabletista. Siitä selvisi seuraavaa:


Näytön etupuolelle, reunaa pitkin, liimaamme kaksipuolista teippiä vaahtomuovipohjalle, mieluiten mustalle.


Suojan liittäminen Arduinoon:


Yhdistämme plus-merkin akkulokerosta Arduinon VIN-numeroon ja miinuksen GND:hen. Aseta se Arduinon takaosaan. Ennen kuin asennat koteloon, älä unohda kytkeä lämpötila-anturi ja painikelevy.


Luonnoksen valmistelu ja täyttö.
Lämpötila-anturi vaatii OneWire-kirjaston.

Näytön tulostus tapahtuu U8glib-kirjaston kautta:

Jos haluat muokata ja täyttää luonnoksen, sinun on asennettava nämä kaksi kirjastoa. Tämä voidaan tehdä kahdella tavalla. Pura vain nämä arkistot ja sijoita pakkaamattomat tiedostot "kirjastot"-kansioon, joka sijaitsee kansiossa, johon Arduino IDE on asennettu. Tai toinen vaihtoehto on asentaa kirjastot suoraan ohjelmointiympäristöön. Puramatta ladattuja arkistoja, valitse Arduino IDE:ssä valikko Sketch - Include Library. Valitse avattavan luettelon yläreunasta Lisää .Zip-kirjasto. Valitse näkyviin tulevasta valintaikkunasta kirjasto, jonka haluat lisätä. Avaa valikko Sketch - Include Library uudelleen. Avattavan luettelon alaosassa sinun pitäisi nähdä uusi kirjasto. Nyt kirjastoa voidaan käyttää ohjelmissa. Älä unohda käynnistää Arduino IDE uudelleen kaiken tämän jälkeen.

Lämpötila-anturi toimii One Wire -protokollan mukaisesti ja sillä on jokaiselle laitteelle yksilöllinen osoite - 64-bittinen koodi. Ei ole käytännöllistä etsiä tätä koodia joka kerta. Siksi sinun on ensin kytkettävä anturi Arduinoon, täytettävä se luonnoksella, joka sijaitsee valikossa Tiedosto - Esimerkit - Dallasin lämpötila - OneWireSearch. Suorita seuraavaksi Tools - Port Monitor. Arduinon pitäisi löytää anturimme, kirjoittaa sen osoite ja nykyiset lämpötilalukemat. Kopioimme tai yksinkertaisesti kirjoitamme muistiin anturin osoitteen. Avaa luonnos Arduino_WG12864B_Term, etsi rivi:

Byte addr=(0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97);//anturin osoite

Kirjoitamme anturin osoitteen kiharoiden väliin, korvaten anturin osoitteen.

Varasto:

//u8g.setPrintPos(44, 64); u8g.print(s); // Tulosta sekuntia ohjataksesi liikkeen oikeellisuutta

Näyttää sekuntia merkinnän "Data" vieressä. Tämä on tarpeen ajan kulun määrittämiseksi tarkasti.
Jos kello on nopea tai jäljessä, sinun tulee muuttaa rivin arvoa:

If (micros() - prevmicros >494000) ( // vaihda johonkin muuhun säätääksesi se oli 500000

Määritin empiirisesti numeron, jolla kello on riittävän tarkka. Jos kellosi on nopea, sinun tulee lisätä tätä numeroa, jos olet jäljessä, vähennä sitä. Liikkeen tarkkuuden määrittämiseksi tarvitset sekuntien tulosteen. Numeron tarkan kalibroinnin jälkeen sekuntia voidaan kommentoida ja siten poistaa näytöltä.

Olen pitkään halunnut automatisoida kylpyhuoneen kuivausprosessin kylvyn jälkeen. Minulla oli paljon arvosteluja kosteusaiheesta. Päätin ottaa käyttöön (niin sanotusti) yhden menetelmistä käsitellä sitä. Muuten, talvella kuivaamme vaatteet kylpyhuoneessa. Riittää, kun kytket poistotuulettimen päälle. Mutta tuulettimen valvonta ei ole aina kätevää. Joten päätin laittaa automaation tähän tapaukseen. Ensimmäinen käyttöönottokokemus oli epäonnistunut. Arvostelu oli. Mutta en luovuttanut...

Kun muutin uuteen asuntoon, laitoin konepelliin melkein heti takaiskuventtiilillisen tuulettimen. Kylpyhuoneen kuivaamiseen kylvyn jälkeen tarvitaan tuuletin. Takaiskuventtiili tarvitaan estämään vieraiden hajujen pääsy naapureista asuntoon (puhaltimen ollessa äänetön). Se tapahtuu. Kaikki ilmanvaihtokanavat ovat yksittäisiä, mutta sementtiä ilmeisesti säästyi asennuksen aikana. Todennäköisesti haju kulkee halkeamien läpi.
Fanit Minulla on useita vaihtoehtoja. On yksinkertaisia, on ajastimella (aikavälin säätö), kuten kuvassa.


Sitä olen käyttänyt tähän päivään asti.
Tässä nimenomaisessa tapauksessa (jolla ei ole tuuletinta ajastimella) kaikki voidaan tehdä ohjelmistotasolla.
Koska asun kerrostalossa "muurahaispesässä", ainoa paikka vaatteiden kuivaamiseen on parveke. Kylpyhuoneessa se voi haalistua. Kuivaus vaatii joko alhaista kosteutta tai ilmankiertoa. Molempien ehtojen täyttäminen on paras vaihtoehto. Tuulettimen piti ratkaista tämä ongelma. Aluksi hän teki juuri niin. Tärkeintä ei ole unohtaa sammuttaa sitä. Kun tuuletin on käynnissä, on tarpeen avata hieman ikkunaa. Pitääkö sinun muistuttaa kouluongelmasta uima-altaan ja kahden putken kanssa? Jotta ilma pääsee liesituulettimeen, sen on päästävä asuntoon jostain. Kenellä on puiset ikkunat, ei muoviset, ei tule ongelmia. Halkeamia riittää. Mutta muovilla asunto muuttuu terraarioksi.
Silloin aloin miettimään prosessin automatisoimista. Siksi tilasin anturit.
Olen jo jakanut surullisen kokemukseni ideani toteuttamisesta. Tässä se moduuli. Se ei voi toimia PERIAATTEESSA. Mutta mitään ei jää jäljelle. Ja häntä tullaan käyttämään.


(Virtasyöttöjännite: 5V. Maksimikuormitus: 10A 250V AC ja 10A 30V DC). Käytän sitä relelaatikkona. Normaalille tuulettimelle tämä riittää.
Piirsin myös kaavion moduulista. Yhteysongelmia ei tule.


Punainen LED ilmaisee syöttöjännitteen olemassaolon. Vihreä - releen aktivointi. Vaihdoin turhan anturin (kosteusanturi, sitä ei enää ole) 10kΩ resistanssilla. Ja lisäsi myös vastustusta. Se siirtyy "älykkääseen" lohkoon. Molemmat korostettu punaisella. Kaiken tämän pitäisi poistaa mahdolliset väärinkäsitykset. Loppujen lopuksi releyksikkö saa virtaa 5 V:n jännitteestä ja "älykäs" yksikkö saa virtaa 3,3 V:stä. Relelohkoa ohjataan matalalla tasolla. Korkea taso sammuttaa releen (tuulettimen). Laiteohjelmisto ottaa tämän huomioon.
Piiri perustuu LM393:n komparaattoriin. Trimmerin vastus oli alun perin suunniteltu asettamaan kosteuskytkimen kynnys. Sitä on ehkä käännettävä hieman.
Voit käyttää yksinkertaisia ​​relelohkoja. Ne ovat myynnissä. Käytän sen, mikä jää jäljelle viimeisen epäonnistuneen yrityksen jälkeen.
On aika katsoa, ​​missä muodossa AM2302 (DHT22) -anturit saapuivat. Tilasin kolme kerralla. En usko, että se rajoittuu kylpyhuoneeseen. Päässäni on paljon ajatuksia. Mistä vain löytyisi aikaa ja halua niiden toteuttamiseen.


Anturit suljettiin antistaattisiin pusseihin. Kaikki mielessä. Juotos on tarkka. Ulkonäöstä minulla ei ole valittamista. Jopa lauta pestään.


Kauppasivulla lukee näin:

AM2302 Humicap digitaalinen lämpötila- ja kosteusmoduuli on digitaalinen lähtösignaali, joka sisältää kalibroidun lämpötila- ja kosteusanturin. Se käyttää erityistä digitaalisten moduulien sieppaustekniikkaa ja lämpötila- ja kosteusanturitekniikkaa varmistaakseen, että tuotteet ovat erittäin luotettavia ja erinomaisen pitkäaikaisia. Anturi sisältää kapasitiivisen kosteusanturielementin ja korkean tarkkuuden lämpötilan mittauslaitteet sekä yhdistettynä tehokkaan 8-bittisen mikro-ohjaimen. Siksi tuotteella on erinomainen laatu, nopea vaste, häiriöntorjuntakyky, korkea hinta ja muita etuja. Erittäin pieni koko, alhainen virrankulutus, signaalin lähetysetäisyys jopa 20 metriä. Se tekee siitä parhaan vaihtoehdon kaikenlaisiin sovelluksiin ja vaativimpiinkin sovelluksiin.
Tekniset tiedot:
Mitat: 40 x 23 mm
Paino: 4g
Jännite: 5V
Portti: digitaalinen kaksisuuntainen yksi väylä
Lämpötila-alue: -40-80 °C ± 0,5 °C
Kosteus: 20-90 %RH±2 %RH
Alusta: Arduino, SCM
Paketti sisältää:
3 x anturimoduuli
Ainakin osien levyllä. Anturit eivät ole irrotettavissa, eivät rikki.
On aika ryhtyä hommiin. Olen jo näyttänyt osan siitä, mitä aion käyttää. Tarvitsen myös 5V virtalähteen. Teen sen vanhasta (jo tarpeettomasta) laturista puhelimeen.

Tässä laturissa ei ole USB-porttia. No, se on hyvin vanha (suosittelen käyttämään uudempia, niissä on 5V lähtö). Siksi lähtö on 7V. Minun piti juottaa MC-stabilisaattori KREN5. Tässä ei ole mitään vaikeaa. Kuka on juotosraudan ystävä, hän tietää. Ja joka ei ole ystäviä, lukee aihetta turhaan.


Älä pelkää liikaa, tein hätätilanteen. Mekanismin virheenkorjauksen jälkeen kaikki näyttää hyvältä. Ehkä vaihdan laturin. Kaikki riippuu tuloksesta, jolla tulen maaliin. Asensen sen paikallisesti (pysyvästi) "kattavan testauksen" jälkeen. Saatat joutua käyttämään ohjelmiston talvi-/kesäversiota. Ilman lämpötila- ja kosteusominaisuudet talvella/kesällä ovat erilaiset.
Tarvitsen myös WIFI-moduulin edellisestä arvostelusta.


Muunninkaapeli (USB To RS232 TTL UART) on hyödyllinen WIFI-moduulin ohjelmoinnissa.


Ideani lohkokaavio näyttää yksinkertaiselta.


Mutta tietysti on vivahteita.
On vielä tehtävä ohjelma tuulettimen ohjaamiseksi.
Useita ehtoja:
1. Tuuletin käynnistyy, kun kosteus saavuttaa yli 68 %.
2. Työaika (ajastin) 5 minuuttia.
3. Lämpötila- ja kosteustietojen siirtäminen WIFI:n kautta (varmuuden vuoksi).
4. Tilan ilmaisu WIFI:n kautta.
Jos pysähdyt ehtoon numero 1, yksinkertaisin Arduino riittää. Mutta minulla on vain yksi Arduino-levy, ja siellä on kolme WIFI-moduulia :)
Minulle henkilökohtaisesti vaikein paikka on ohjelman valmistelu, pieni (lievästi sanottuna) ei ole minun aiheeni. Mutta elämä virtaa ja kuljettaa kulkuaan yhä enemmän ihmisiä. Ymmärrän Arduinon valtavat laajuudet DHT22-kosteusanturin ja WIFI-moduulin esimerkin avulla. Mutta jos minä onnistuin, niin sinäkin voit.
Ensin vähän tietoa kaltaisilleni tuteille.
Arduino IDE -ohjelma puuttuu käyttämieni levyjen asetuksista. Esimerkiksi ESP8266 on lisättävä.

Komponenttien lisääminen esimerkissä ESP8266.

Ensinnäkin latasin ja asensin Arduino IDE:n tietokoneelleni. Sitten suoritan ohjelman.
Tiedosto→ Asetukset→ Lisää linkki lisäykseen. linkit → napsauta OK. Linkki:



Tämä vaatii Internet-yhteyden. Välttämättä!
Sitten menen hallituksen johtajan luo.
Työkalut→ Hallitus:…→ Hallituksen johtaja.


Moduulini löytäminen Valitsen uusimman version. Napsautan asentaa.


Ladatusta Arduino IDE -ohjelmasta puuttuu myös kirjastoja antureille. Esimerkiksi DHT22-kirjasto on myös lisättävä.

Kirjaston liittäminen DHT22-anturin avulla esimerkkinä.

Ensin lataan Internetistä arkiston, kuten DHT.zip. Löytäminen ei ole ongelma.
Sitten käynnistän Arduino IDE -ohjelman.
Luonnos → Sisällytä kirjasto → Lisää zip-kirjasto.


Tämän kaltainen välilehti tulee näkyviin.


Määritä tallennuspaikka…Avaa.
Kirjasto on yhdistetty.


Vielä vähän tekemistä :)
Kosteusanturin kytkentäkaavio voi vaihdella. Omani tuli moduulina, jossa oli kolme nastaa ja vastukset jo asennettuna levylle.

Ja lopuksi luonnoksen täyttäminen.

Sketch täyttö.

Avaan valmiin luonnoksen. Minun tapauksessani "WiFi-DHT22_AleksPoroshin68.ino.


Arduino IDE käynnistyy automaattisesti.
Sitten yhdistän ohjelmoijan, siirryn työkaluihin ja yhdistän Com-portin. Se, johon se on yhdistetty, on korostettu. Aktivoin sen. Netbookissani niitä on kolme: nämä ovat com6, com8 ja com10.


Opettelen firmwarea. Voit muuttaa käyttöoikeusnimeä ja salasanaa.

Napsautan latauspainiketta.


Luonnos on koottu. Tarpeeksi pitkään.


Tällä hetkellä sinun on painettava kootun moduulipiirin reset-painiketta.

Samaan aikaan GPIO 00 on nollassa.
Tässä itse sketsi:
#sisältää #sisältää #sisältää #sisältää #sisällytä "DHT.h" #määritä DHTPIN 4 #määritä DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); float dhtTemp = NAN; float dhtKosteus = NAN; int ledPin = 12; //GPIO 12 /* Aseta nämä haluamasi tunnistetiedot. */ const char *ssid = "AleksPoroshin"; const char *salasana = "12345678"; ESP8266WebServer-palvelin(80); /* Pieni testiviesti. Siirry osoitteeseen http://192.168.4.1 tähän tukiasemaan yhdistetyllä verkkoselaimella * nähdäksesi sen. */ void handleRoot() ( merkkijono s = "\r\n ESP201"; s +=" "; s +=" "; //s += "Tila - Toiminnot - Määritys"; s += "

ESP 201 moduuli

"; s += " "; if (isnan(dhtTemp)) s += " Lämpötila: Lukuvirhe"; else ( s += " Lämpötila: "; s += dhtTemp; s += " C"; ) if ( isnan(dhtKosteus)) s += " Kosteus: lukuvirhe"; else ( s += " Kosteus: "; s += dhtKosteus; s += " %"; ) if(digitalRead(ledPin) == HIGH) s + = "Pakokaasu: Pois"; else s += "Pakokaasu: Päällä"; s += ""; server.send(200, "text/html", s); ) void setup() ( delay(1000); Serial.begin(115200); Serial.println(); Serial.print("Tukiaseman määrittäminen. .."); /* Voit poistaa salasanaparametrin, jos haluat AP:n olevan auki. */ WiFi.softAP(ssid, salasana); IPAddress myIP = WiFi.softAPIP(); Serial.print("AP IP-osoite : "); Serial.println(omaIP); server.on("/", handleRoot); server.begin(); Serial.println("HTTP-palvelin aloitettu"); dht.begin(); Serial.println(" DHT22 aloitus onnistui"); pinMode(ledPin, OUTPUT); ) void loop() ( getDHT(); server.handleClient(); ) void getDHT() ( dhtTemp = dht.readTemperature(); dhtHumidity = dht.readHumidity() +5; jos (dhtKosteus< 68) { digitalWrite(ledPin, HIGH); Serial.println("ledPin HIGH"); } else { digitalWrite(ledPin, LOW); Serial.println("ledPin LOW"); } }
Älä moiti liian kovaa. Olen vain oppimassa.
Kun olet ladannut luonnoksen ohjelmoinnin vahvistamiseksi, liitän GPIO:n + 3,3 V:iin. Sitten sammutan sen. Laiteohjelmisto on ladattu.


Teen layoutin leipälaudalle. Tarkistan kaiken. Toimii. Mutta kaikki ei ole niin hyvin kuin pitäisi. Tarvitsemallani alueella kiinalaiset anturit aliarvioivat lukemat 5-6%.


Luotan enemmän saksalaiseen metsuriin. Kyllä, ja hinta on useita kymmeniä kertoja korkeampi. Ja mikä tärkeintä, hän läpäisi kokeen.
Ohjelmaan tehty muutos (lisätty 5 yksikköä). Olen samaa mieltä, että tämä on väärin. Mutta välillä 40-70% se näyttää tarkalleen. On oikeampaa poistaa ominaisuus ja korjata kirjasto. En ole valmis tähän :). Myös muut anturit valehtelivat. Vaikka kaikki näyttivät suunnilleen samalla tavalla.

Tältä verkkosivu näyttää, jos se muodostaa yhteyden WIFI-moduuliini:


Salasanat ja esiintymiset on ilmoitettu luonnoksessa.
Vaihto tapahtuu 68 % kosteudessa. Kaikki on selvää.


Mutta on yksi varoitus. Eikä sitä voi sivuuttaa. 68 %:n kosteuden rajalla tuuletin voi pyöriä, käynnistyä ja sammua. Tämän ongelman ratkaisemiseksi tarvitset ajastimen. Minulla on tuuletin ajastimella. Nuo. Ei ongelmaa. Jokaisen, jolla on tavallinen tuuletin, on ratkaistava tämä ongelma ohjelmistotasolla.
Jatkotehtäväni on koota tämä kaikki kaavion mukaan, mutta ei enää leipälautamallilla ja testata sitä kuukauden ajan. Kaikki muutokset voidaan tehdä käytön aikana. Mitä tehdä ja minne lisätä, kirjoitin kaiken.
Muutama sana anturin asennuksesta. En suosittele laittamaan sitä tuuletusaukkoon. Syy on yksinkertainen. Jopa puhtaimmassa ja hyvin hoidetuimmassa asunnossa on pölyä, joka tuulettimen ollessa päällä ryntää sinne (eläinlääkärikanavaan). Mutta vuosi sitten otin tuulettimen pois ja puhdistin sen perusteellisesti.


Jotta antureita ei vaihdettaisi usein niiden vaurioitumisen vuoksi, suosittelen etsimään niille sopivamman paikan läheltä. Lisäksi voit kääriä sen kuitukangaskankaaseen tai vastaavaan suojaamaan sitä pölyltä. Ja sinä tulet olemaan onnellinen.
Unohdin täysin sanoa, että jos haluat itse asettaa kosteussäädön "kertoimet", sinun on oltava ainakin vähän aiheessa. Jos sinulla ei ole tällaisia ​​laitteita kotona...


Ilman niitä sinun on erittäin vaikea tehdä jotain tästä aiheesta.
Siinä kaikki.
Jokainen päättää itse, kuinka arvosteluni tiedot hävitetään oikein. Jos jokin on epäselvää, kysy kysymyksiä. Toivottavasti se auttoi ainakin jotakuta. Ehkä joku haluaa auttaa minua. Olen hyvin kiitollinen.
Onnea kaikille!
Toiminnan tarkistus:


Jatkuu…

Tuote toimitettiin myymälän arvostelun kirjoittamista varten. Katsaus julkaistaan ​​Sivustosääntöjen kohdan 18 mukaisesti.

Aion ostaa +51 Lisää suosikkeihin Tykkäs arvostelusta +26 +65

Integroidut ohjausjärjestelmät asunnon tekniseen tietoliikenteeseen, tunnetaan nimellä "Älykäs koti", ovat saamassa yhä enemmän suosiota. Näiden järjestelmien laajaa käyttöönottoa haittaa pikemminkin komponenttien korkea hinta elementit ja kokoonpanotyöt. Arduino-pohjainen älykoti on varsin edullinen ratkaisu kaikille elektroniikkaan ainakin vähän perehtyneille.

Mikä on Arduino

Arduino on tuotemerkki, jonka alla laitteistot ja ohjelmistot automaatio- ja kauko-ohjausjärjestelmien itsenäiseen rakentamiseen.

Itse asiassa tämä on modulaarinen konstruktori, jolla on laaja valikoima ominaisuuksia. Arduino-laitteisto on laaja valikoima painettuja piirilevyjä, joille on järjestetty erilaisia ​​antureita, toimilaitteita ja laajennuslevyjä. Järjestelmän ydin on ohjelmoitavilla mikrokontrollereilla varustetut levyt eri monimutkaisuustasoja Arduino Pro Ministä Arduino Megaan. Laajennuskorttien avulla voit käyttää useita ulkoisia laitteita.

Pienelle piirilevylle on asennettu mikro-ohjain, muutama erillinen elementti, kvartsi ja erilaiset liittimet, myös pystynastat, joiden avulla kootaan hyllyrakenteet laajennuskortteja lisäten. Atmega-siruja käytetään mikrokontrollereina. Ohjaimen tyyppi määrittää kortin toiminnallisuuden tulojen ja lähtöjen lukumäärän mukaan.

Niin laajalle levinnyt moduuliArduino Unomikro-ohjaimen kanssaAtmega328:lla on seuraavat ominaisuudet:

  • Digitaalinen I/O - 14
  • Näistä 6 on PWM
  • Analogiset tulot - 6
  • Muisti - 32 KB
  • Teho - 7-12 V
  • Hinta - 950 ruplaa

Digitaaliset yhteystiedot voidaan ohjelmoida suorittamaan tietty toiminto. Se voi olla sisäänkäynti tai uloskäynti. Nämä tulot/lähdöt voivat toimia sellaisten laitteiden kanssa, jotka vaativat toimiakseen kaksi tasoa. Tämä on looginen yksi tai taso lähellä syöttöjännitettä ja looginen matala taso, joka vastaa nollaa. Digitaalisiin tuloihin voidaan kytkeä kaksitasoisia antureita. Näihin kuuluu magneetti-kiekkokytkinpari. Tämä anturi reagoi ovien ja ikkunoiden avautumiseen. Monet murto- ja palohälytysanturit toimivat tällä periaatteella.

Digitaalisilla lähdöillä voidaan ohjata sähkömagneettisten releiden toimintaa, jotka puolestaan ​​kytkevät päälle ja pois verkkopistorasiat, joihin erilaisia ​​kodinkoneita on kytketty. Arduinon Smart maksaa paljon vähemmän kuin valmis teollisuussarja.

Analogiatulot analogia-digitaalimuuntimien kautta välittävät säätimelle tietoa lämpötila-anturien, valaistuksen ja joidenkin muiden laitteiden tilasta. Vertaamalla anturien lukemia muistiin tallennettuihin komentoihin järjestelmän keskusyksikkö voi ohjata laitteita, joissa tarvitaan tasaista tehon muutosta. Kuusi pulssinleveysmodulaattoriin kytkettyä lähtöä mahdollistavat kuormitustehon tasaisen ohjauksen. Säädä esimerkiksi lampun kirkkautta, lämmittimen lämpötilaa tai sähkömoottorin nopeutta.

suurin osa tehokas ja monikäyttöinen levy tästä linjasta on Arduino Mega. Asennettu piirilevylle ohjainAT mega 2560 , erilliset elementit, USB-liitin virtalähteelle. Kortissa on 54 yleiskontaktia, jotka voidaan ohjelmoida suorittamaan I/O-toimintoja. Niistä 14 pystyy ohjaamaan analogisia laitteita pulssinleveysmodulaatiolla. 16 analogista tuloa on suunniteltu kytkemään kaikki analogiset laitteet.

ohjainkortti Arduino Mega maksaa 1500 ruplan sisällä. Helpoin ohjelmointi onnistuu henkilökohtaisella tietokoneella USB-portin kautta.

Oheislaitteet Arduinolle

Ohjainkortti on järjestelmän ydin, mutta siihen ei voi liittää laitteita. Lähtöjen kuormituskapasiteetti on pieni ja virta on rajoitettu. Kodinkoneiden ohjausjärjestelmän järjestämiseksi tarvitaan ulkoisia tehomoduuleja, viestintälaitteita ja muita laitteita. Tämä ei ole ongelma, koska Arduino-ohjaimille on kehitetty suuri määrä oheismoduuleja.

Tässä on vain muutamia niistä:

  • Kaasuanalysaattori - MQ-2
  • Valotunnistin - 2CH-Light-2
  • Ulkoinen lämpötila-anturi - DS18B20-PL
  • Huonelämpötila- ja kosteusanturi – DHT-11
  • Moottorin ajurit - L298N, L9110
  • Relemoduulit - 1ch5V, 4ch5V
  • Kaukosäädinmoduuli IC2262/2272

Huoneen kaasuvuodon havaitseva anturi reagoi propaaniin ja butaaniin, jotka ovat kotitalouskaasun komponentteja. Moduulissa on herkkyyden säätö ja analogiset/digitaaliset lähdöt. Valoanturi voi olla osa automatisoitua valonohjausjärjestelmää. Se koostuu kahdesta itsenäisestä kanavasta, joissa on yksilöllisesti säädettävä herkkyys. Ulkolämpötila-anturi on suunniteltu toimimaan -55 - +125 asteen lämpötiloissa. Huonelämpötila- ja kosteusanturi on tarkoitettu . Lämpötila-alue 0 - +55 0 С ja kosteus 20 - 90 %.

Koska Arduino-moduulien syöttöjännite on 7-12 volttia, voidaan turva- tai palohälyttimen järjestämiseen käyttää mitä tahansa vakioantureita, joilla on samat toimintatasot.

Moottorin kuljettajat voit ohjata yksivaiheisia, kaksivaiheisia, nelivaiheisia ja askelmoottoreita. Tällaisten laitteiden avulla voit avata ja sulkea kaihtimet tai verhot. Ohjainten servokäyttöjen avulla voit säätää jäähdytysnesteen virtausta lämmityspattereissa. Releavaimet ovat välttämättömiä "Smart Home" -järjestelmässä. +5 voltin loogisen yksikön potentiaalin ohjaamana releet mahdollistavat kuormituksen kytkemisen vaihtovirtapiireissä 10 ampeeriin asti jännitteellä 250 volttia.

Niiden avulla voit käynnistää ja sammuttaa sähköpistorasioita, sähköpumppuja ja muita järjestelmiä.

Kaukosäädinmoduuli koostuu kaukosäätimestä ja vastaanottolaitteesta. Kaukosäädin on varustettu neljällä painikkeella ja se välittää komentoja vastaanottavalle yksikölle jopa 100 metrin etäisyydeltä. Kaikilla oheismoduuleilla on sama syöttöjännite ja ne ovat yhteensopivia minkä tahansa Arduino-mikro-ohjaimen kanssa.

"Smart Home" -järjestelmän organisointi

Ilman tiettyjä taitoja, piirikaavioiden tuntemusta ja elektroniikan perusteita on parempi olla ottamatta Smart Home -järjestelmää kokonaan käyttöön.

Ohjelmointi Arduino mikro-ohjaimet suoritetaan C/C++:lla.

Aloita kirjoittamalla yksinkertaisimmat ohjelmat, jotka voivat sytyttää ja sammuttaa LEDin tai ohjata mikromoottorin toimintaa. Tällaisia ​​ohjelmia on monia esimerkkejä. He käyttävät muodon yksinkertaisia ​​operaattoreita: if, while, then ja muut. Niiden avulla jopa koululaiset voivat kirjoittaa ohjelmia. Kun ensimmäiset ohjelmat on suoritettu oikein, voit yrittää koota monimutkaisempia laitteita, joissa PWM-lähtöjä käytetään valon ohjaamiseen sujuvasti.

Jotta voit tehdä "älykkään kodin" Arduinossa omin käsin, sinun on laadittava tekninen projekti, joka osoittaa kunkin huoneen antureiden ja toimilaitteiden lukumäärän. Voit aloittaa yhdestä huoneesta, jossa toteutetaan muutama yksinkertainen toiminto. Jotkut niistä suoritetaan ulkoisten antureiden signaaleilla ja jotkut ajastinsignaaleilla. Kun ihminen nousee aamulla töihin, Arduino-ohjain käynnistää ajastimen signaalista vedenkeittimen tai kahvinkeittimen. Jos ulkona on pimeää, jonka ulkoanturi havaitsee, huoneen valo syttyy tasaisesti. Mukava huonelämpötila on myös säädettävissä sekä nukkumista että heräämistä varten.

Pienelle määrälle toimintoja sopii Arduino Uno -mikro-ohjain ja joukko oheismoduuleja.

Kodinkoneiden ohjaamiseen tarvitset relenäppäimiä, jotka kytkevät pistorasiat päälle ja pois. Valon ohjaamiseen tarvitset liiketunnistimen. Jos älykäs järjestelmä on asennettu keittiöön, liesituuletin, kotitalouskaasuvuotoanturi ja vesivuotoanturi on aktivoitava automaattisesti. Huoneeseen tulee asentaa palovaroitin.

Johtopäätös

Arduino-ohjaimen avulla voit suorittaa älykkään kodin projektin ja täyttää suhteellisen pienen summan. Jos laskemme kaikki kolmen huoneen asunnon varustamisen kustannukset, summa ei todennäköisesti ylitä 30-40 tuhatta ruplaa. Jos vähennät toimintojen määrää, budjetti on vielä vaatimattomampi.