- „Google“ padėjėjo valdomos namų automatikos schema
- „Blynk“ programos nustatymas
- IFTTT nustatymas naudojant „Google“ padėjėją ir „Blynk“, kad būtų galima skaityti eilutes
- „Arduino“ programavimas „Blynk Home Automation“
- Gamyba PCB naudojant PCBGoGo
- PCB surinkimas
- Plokštės prijungimas prie kintamosios srovės maitinimo blokų / pratęsimo plokščių
Tobulėjant virtualiems padėjėjams, tokiems kaip „Google Assistant“ ir „Alexa“, namų automatika ir „Voice“ valdomos programos tampa įprastos. Dabar mes patys sukūrėme daugybę namų automatikos projektų - nuo paprastų automatinių laiptinių žibintų iki interneto valdomos interneto automatizuotos namų automatikos, naudojant „Raspberry Pi“. Bet šis projektas čia yra kitoks, idėja yra sukurti praktišką namų automatikos plokštę, kuri tilptų į mūsų sienų kintamosios srovės maitinimo blokus ir liktų paslėpta jos viduje. Plokštė neturėtų nutraukti įprasto mūsų maitinimo bloko jungiklių darbo, tai yra, jie turėtų įjungti arba išjungti ir rankinius jungiklius. Be to, jis taip pat turėtų sugebėti valdyti tą pačią apkrovą balsu naudodamas „Google“ padėjėją, taip pat nustatyti laikmatį, kad bet koks įkrovimas galėtų automatiškai įsijungti arba išjungti nustatytą dienos laiką.
Šis projektas yra labai panašus į mūsų „ESP8266 Smart Wi-Fi“ kištuką, tačiau kadangi mes naudosime ESP12, turėsime daugiau GPIO kaiščių, leidžiančių vienu metu valdyti keturias kintamąsias įtampas. Be to, kadangi mes integravome „Blynk“ ir „Google Assistant“, projektas tampa įdomus ir praktiškas naudoti. Šiam projektui mes sukūrėme plokštes naudodami PCBGOGO PCB gamybos paslaugą. Vėlesniame straipsnio skyriuje pateikėme „Gerber“ failą, skirtą grandinei, taip pat paaiškinome visą procedūrą, kaip užsisakyti PCB iš PCBGOGO.
Įspėjimas: Šis projektas apima darbą su kintamosios srovės tinklo įtampa. Patariame būti labai atsargiems dirbant su didele kintamąja įtampa. Įsitikinkite, kad jus prižiūri patyręs asmuo, jei esate naujas.
„Google“ padėjėjo valdomos namų automatikos schema
Visą namų automatikos schemą galite rasti žemiau.
Kaip matote, grandinė yra labai paprasta, pradėkime paaiškinimą iš „ESP12E Wi-Fi“ modulio. Norėdami sužinoti išsamų projekto paaiškinimą, taip pat galite peržiūrėti toliau pateiktą vaizdo įrašą. Modulis gali būti užprogramuotas taip pat, kaip „nodeMCU“ kūrimo plokštės, ir tai sumažina daug vietos. Pagal numatytuosius nustatymus, kai įjungta, ESP12E pereis į darbo režimą. Norėdami jį užprogramuoti, turime naudoti mygtuką Reset and Flash. Tai reiškia, kad ESP12 reikia įjungti į programavimo režimą, palaikykite nuspaudę mygtuką Reset ir Flash, tada atleiskite reset mygtuką. Tai paleidžia ESP12E paspaudus blykstės mygtuką, dabar atleiskite blykstės mygtuką ir ESP12E pereis į programavimo režimą. Po programavimo turite dar kartą paspausti atstatymo mygtuką, kad paleistumėte ESP12E įprastu darbo režimu, kad įvykdytumėte įkeltą programą. Programavimo kaiščiai Rx, Rx,ir „Ground“ yra išplėsti, kad būtų galima prisijungti naudojant FTDI plokštę arba USB į TTL keitiklį. Būtinai prijunkite ESP12 Tx kaištį prie programuotojo Rx kaiščio ir atvirkščiai.
Kiti jungikliai ir relės naudojami naudojant kitus vėliavos kaiščius nuo I1 iki I4 ir nuo R1 iki R4. I1 - I4 kaiščiai reiškia įvesties kaiščius. Visi šie kaiščiai palaiko vidinį traukimo rezistorių, todėl mes tiesiog turime prijungti pratęsimo dėžutės jungiklius prie mūsų įvesties kaiščio per ištraukiamą rezistorių, kaip parodyta žemiau.
Panašiai relių išvesties kaiščiai nuo R1 iki R4 naudojami valdyti reles. Mes naudojome standartinę relės tvarkyklės grandinę su BC547 ir IN4007 diodu, kaip parodyta žemiau. Atkreipkite dėmesį, kad relės turėtų būti įjungiamos 5 V įtampa, tačiau ESP12E išvesties kaiščiai yra tik 3,3 V. Taigi, norint valdyti reles, privaloma naudoti tranzistorių. Mes taip pat įdėjome šviesos diodą į pagrindinį tranzistoriaus kelią, kad, kai tik tranzistorius suveiks, šviesos diodas taip pat įsijungs.
Galiausiai, norėdami maitinti visas savo grandines, mes naudojome „Hi-Link“ kintamosios srovės keitiklį, kad paverstume 220 V kintamą į 5 V nuolatinę. Tada ši 5 V nuolatinė srovė paverčiama 3.3 V įtampa naudojant AMS117-3.3V įtampos reguliatorių. 5 V naudojamas relėms suveikti, o 3,3 V - ESP21 „Wi-Fi“ moduliui maitinti.
„Blynk“ programos nustatymas
Anksčiau mes sukūrėme daug „ Blynk“ projektų, tokių kaip „Wi-Fi“ valdomas „Arduino“ robotas, todėl nesigilinsime į „blynk“ programos nustatymo detales. Bet kad būtų paprasčiau, tiesiog įdiekite programą, sukurkite naują „NodeMCU“ projektą ir pradėkite dėti valdiklius, kaip parodyta žemiau.
Aš naudoju virtualius kaiščius nuo V1 iki V4 valdyti relę nuo 1 iki 4 mūsų projekte. Nepamirškite pakeisti mygtuko tipo, kad perjungtumėte. Laikmačio parinktis taip pat gali būti naudojama norint automatiškai suaktyvinti virtualius kaiščius nustatytam laikui, net jei telefonas yra išjungtas. Pavyzdžiui, čia naudoju laikmatį tik virtualiam kaiščiui V1, tačiau, jei reikia, galite jį naudoti visiems keturiems kaiščiams.
Įsitikinkite, kad gavote „blynk auth“ prieigos rakto vertę iš projekto puslapio. Tiesiog spustelėkite veržlės piktogramą (raudonoje apskritime viršuje esančiame paveikslėlyje) ir nukopijuokite autentifikavimo ženklą naudodami parinktį Kopijuoti viską ir įklijuokite jį kur nors saugiai, mums reikės programuojant „Arduino“ lentą.
IFTTT nustatymas naudojant „Google“ padėjėją ir „Blynk“, kad būtų galima skaityti eilutes
Lengviausias būdas naudoti „Google“ padėjėją namų automatizavimui yra IFTTT naudojimas. Mes taip pat esame sukūrę daug IFTTT projektų anksčiau su „NodeMCU“ ir „Raspberry Pi“. Šiame projekte mes naudosime programą „ Blynk “, kad suaktyvintume interneto kablį naudodami „Google“ padėjėją. Tai labai panašu į mūsų namų valdomą balsu valdymą ir balsu valdomą FM radijo projektą. Išskyrus tai, kad mes naudosime blynk su IFTTT, kad išsiųstume eilutę, o tai labai palengvina ir įdomu.
Iš esmės mes naudosime virtualius kaiščius V5 ir V6 blynk, norėdami išsiųsti trigerio komandą. V5 bus naudojamas įjungimo komandoms, o V6 - komandoms išjungti. Pavyzdžiui, jei sakysime, kad įjunkite televizorių ir „Lamp“. Eilutės komanda „TV ir lempa“ bus siunčiama „NodeMCU“ naudojant API. API sintaksė yra tokia, kaip nurodyta toliau.
http://188.166.206.43//update/V5?value=TV ir lempa
Dabar viskas, ką turime padaryti IFTTT, yra tai, kad naudokitės „Google“ padėjėju kaip IF ir „webhook“ kaip TAI, todėl klausykite šios komandos ir siųskite informaciją „NodeMCU“ naudodamiesi minėta API. Tokia pati įjungimo programėlė yra parodyta žemiau.
Atminkite, kad kurdami „Google“ padėjėjo receptą turite pasirinkti pasakyti frazę su teksto ingredientu. Panašiai turite pakartoti tą patį virtualųjį kaištį V6, kad išjungtumėte reles. Norėdami sužinoti išsamią informaciją, vaizdo įrašą galite patikrinti šio puslapio apačioje.
„Arduino“ programavimas „Blynk Home Automation“
Visą šio projekto „Arduino“ kodą galite rasti šio puslapio apačioje. To paties paaiškinimas yra toks. Prieš tai įsitikinkite, kad galite naudoti „Blynk“ ir „Program NodeMCU“ iš „Arduino IDE“. Jei ne, laikykitės darbo su ESP12 pradžios. Taip pat pridėkite blynk biblioteką prie „Arduino IDE“ naudodamiesi lentos tvarkykle.
Kaip visada, mes pradedame savo kodą apibrėždami įvesties ir išvesties kaiščius, čia įvestis bus iš jungiklių, o išvestis iš relių. Mes nustatėme visų keturių jungiklių kaiščių pavadinimus kaip „sw“ ir „relės“ kaip „rel“, kaip matote žemiau.
#define sw1 13 #define sw2 12 #define sw3 14 #define sw4 16 #define rel1 4 #define rel2 5 #define rel3 9 #define rel4 10
Kitame etape turite įvesti kai kuriuos kredencialus, pvz., „Blynk auth“ prieigos raktą, ir „Wi-Fi“ maršrutizatoriaus, prie kurio turėtų prisijungti jūsų „nodeMCU“, vartotojo vardą ir slaptažodį. Mirksėjimo autentifikavimo ženklą galima gauti iš programos „blynk“. Apie tai daugiau sužinosime „blynk“ programos nustatymo skyriuje.
char auth = "Fh3tm0ZSrXQcROYl_lIYwOIuVu-E"; // gauti iš blynk programos char ssid = "home_wifi"; char pass = "fakepass123";
Toliau pateikėme funkcijos, vadinamos read_switch_toggle (), apibrėžimą . Šioje funkcijoje mes palyginsime esamą ir ankstesnę mūsų jungiklių būseną. Jei jungiklis buvo įjungtas arba išjungtas, ty jei jungiklis buvo įjungtas. Pasikeis jungiklio būsena, funkcija stebės šį pasikeitimą ir grąžins jungiklio numerį. Jei pakeitimas neaptinkamas, jis grąžins 0.
int read_switch_toggle () {int rezultatas = 0; // Atkreipkite dėmesį į visas ankstesnes reikšmes (int i = 0; i <= 3; i ++) pvs_state = crnt_state; // Perskaitykite dabartinę jungiklių būseną crnt_state = digitalRead (sw1); crnt_state = digitalRead (sw2); crnt_state = digitalRead (sw3); crnt_state = digitalRead (sw4); // palyginti dabartinę ir pvs būseną (int i = 0; i <= 3; i ++) {if (pvs_state! = crnt_state) {rezultatas = (i + 1); // jei perjungiamas kuris nors jungiklis, gauname jungiklio numerį kaip rezultato grąžinimo rezultatą; } kitas rezultatas = 0; // if no change result 0} grąžinti rezultatą; // grąžinti resul}
Tada mes turime „blynk“ programos kodą. Mes naudosime virtualų kaiščius nuo V1 iki V6, kad valdytume savo išmaniąją jungties dėžę. Kaiščiai nuo V1 iki V4 bus naudojami valdyti reles nuo 1 iki 4, tiesiogiai iš „blynk“ programos. Žemiau pateiktas kodas rodo, kas atsitinka, kai V1 suveikia iš „blynk“ programos. Mes tiesiog nuskaitome būseną (HIGH arba LOW) ir atitinkamai valdome relę.
BLYNK_WRITE (V1) {digitalWrite (rel1, param.asInt ()); Serial.println ("V1"); }
Panašiai virtualūs smeigtukai taip pat gali būti naudojami eilutei nuskaityti iš „blynk“ programos. Vėliau sužinosime, kaip išsiųsti eilutę iš „Google“ padėjėjo į „NodeMCU“ naudojant IFTTT ir „Google“ padėjėją, bet kol kas pažiūrėkime, kaip „NodeMCU“ kodas skaito šią eilutę ir ieško tam tikro raktinio žodžio bei atitinkamai suaktyvina relę.
Žemiau esančiame kode galite pamatyti, kad suveikus virtualiam PIN kaiščiui V5, mes gauname jo perduodamą eilutę į eilutės kintamąjį, vadinamą ON_message . Tada naudodami šį eilutės kintamojo ir „inderOf“ metodą ieškome, ar yra raktinių žodžių, tokių kaip „lempa“, „LED“, „muzika“, „TV“, jei taip, įjungiame būtent tą apkrovą. Aptikus raktinį žodį „viskas“, mes viską įjungiame. Tą patį galima padaryti ir V6 išjungiant reles. Apie tai daugiau suprasime patekę į IFTTT skyrių.
BLYNK_WRITE (V5) {String ON_message = param.asStr (); Serial.println (ON_message); if (ON_message.indexOf ("lempa")> = 0) digitalWrite (rel1, HIGH); if (ON_message.indexOf ("LED")> = 0) digitalWrite (rel2, HIGH); if (ON_message.indexOf ("muzika")> = 0) digitalWrite (rel3, HIGH); if (ON_message.indexOf ("TV")> = 0) digitalWrite (rel4, HIGH); if (ON_message.indexOf ("viskas")> = 0) {digitalWrite (rel1, HIGH); digitalWrite (rel2, HIGH); digitalWrite (rel3, HIGH); digitalWrite (rel4, HIGH); }}
Galiausiai, ciklo funkcijos viduje turime tik patikrinti, ar pasikeitė mygtukai. Jei taip, tada mes naudojame jungiklio dėklą, kaip parodyta žemiau, kad pakeistume tos konkrečios relės padėtį.
switch (toggle_pin) {atvejis 0: pertrauka; 1 atvejis: „Serial.println“ („1 perjungimo relė“); digitalWrite (rel1, relay_state); pertrauka; 2 atvejis: „Serial.println“ („2 perjungimo relė“); digitalWrite (rel2, relay_state); pertrauka; 3 atvejis: „Serial.println“ („3 perjungimo relė“); digitalWrite (rel3, relay_state); pertrauka; 4 atvejis: „Serial.println“ („4 perjungimo relė“); digitalWrite (rel4, relay_state); pertrauka; }}
Gamyba PCB naudojant PCBGoGo
Dabar suprantame, kaip veikia schemos, galime tęsti savo namų automatikos projekto PCB kūrimą. Minėtos grandinės PCB išdėstymą taip pat galima atsisiųsti kaip nuorodą „Gerber“.
- Atsisiųskite „GERBER“, skirtą namų valdymui balsu, naudojant „Google“ padėjėją
Dabar mūsų dizainas yra paruoštas, atėjo laikas juos pagaminti naudojant „Gerber“ failą. Norėdami atlikti PCB iš PCBGOGO yra gana lengva, tiesiog atlikite toliau nurodytus veiksmus-
1 žingsnis: Eikite į www.pcbgogo.com, užsiregistruokite, jei tai jūsų pirmas kartas. Tada skirtuke PCB Prototype įveskite savo PCB matmenis, sluoksnių skaičių ir reikalingą PCB skaičių. Darant prielaidą, kad PCB yra 80 cm × 80 cm, matmenis galite nustatyti taip, kaip parodyta žemiau.
2 žingsnis: tęskite spustelėdami mygtuką „ Pasiūlyti dabar “. Būsite nukreipti į puslapį, kuriame prireikus nustatysite keletą papildomų parametrų, pvz., Naudojamos medžiagos takų tarpai ir kt. Vienintelis dalykas, į kurį turime atsižvelgti, yra kaina ir laikas. Kaip matote, sukūrimo laikas yra tik 2-3 dienos, o mūsų PCB kainuoja tik 5 USD. Tada galite pasirinkti pageidaujamą pristatymo būdą pagal savo reikalavimus.
3 žingsnis: Paskutinis žingsnis yra įkelti „Gerber“ failą ir tęsti mokėjimą. Norėdami įsitikinti, kad procesas vyksta sklandžiai, prieš tęsdamas mokėjimą, PCBGOGO patikrina, ar jūsų „Gerber“ failas galioja. Tokiu būdu galite būti tikri, kad jūsų PCB yra draugiškas gamybai ir pasieks jus kaip įsipareigojusį.
PCB surinkimas
Užsakius lentą, ji po kelių dienų mane pasiekė per kurjerį gražiai paženklintoje, gerai supakuotoje dėžutėje, ir, kaip visada, PCB kokybė buvo nuostabi. Mano gautas PCB parodytas žemiau. Kaip matote, tiek viršutinis, tiek apatinis sluoksniai pasirodė kaip tikėtasi.
Vias ir kaladėlės buvo visų tinkamo dydžio. Man prireikė maždaug 15 minučių surinkti prie PCB plokštės, kad gautų darbinę grandinę. Surinkta lenta parodyta žemiau.
Plokštės prijungimas prie kintamosios srovės maitinimo blokų / pratęsimo plokščių
Plokštė skirta tvirtinti kintamosios srovės lizdų viduje mūsų namuose. Tačiau dėl šio projekto naudosime pratęsimo dėžutę. Jei norite nuolatinio sprendimo, prijunkite jį prie savo kintamosios srovės lizdų, kaip matote žemiau, PCB ilgis yra pakankamai kompaktiškas, kad būtų galima įdėti į kintamosios srovės lizdą.
Dirbdami su kintamosios srovės tinklu, būtinai laikykitės saugos priemonių. Laikykitės toliau pateiktos schemos, kad suprastumėte, kaip prijungti savo reles ir jungiklius prie mūsų PCB plokštės.
Ryšio schema neveikia tik vienoje relėje ir jungiklyje, tačiau galite tiesiog pakartoti tą patį likusiems trims. Kai sujungimai bus atlikti, lenta turėtų atrodyti taip
Kai sujungimai bus atlikti, įsitikinkite, kad juos sandariai pritvirtinote varžtų gnybtais, taip pat naudokite karštus klijus, kad būtų saugiau. Supakuokite viską atgal į dėžutę ir turėtume būti pasirengę bandymams. Pilną šio projekto darbą galite rasti žemiau esančiame vaizdo įraše.
Tikiuosi, kad jums patiko straipsnis ir sužinojote ką nors naudingo. Jei turite klausimų, palikite juos komentarų skiltyje žemiau arba naudokitės mūsų forumais.