- Shema vezja za avtomatizacijo doma, ki jo nadzoruje Google Assistant
- Nastavitev aplikacije Blynk
- Nastavitev IFTTT z Google Assistant in Blynk za branje niza
- Programiranje Arduina za avtomatizacijo doma Blynk
- Izdelava PCB z uporabo PCBGoGo
- Sestavljanje PCB
- Priključitev plošče z napajalnimi enotami / podaljški
Z napredovanjem navideznih pomočnikov, kot sta Google Assistant in Alexa, postajajo aplikacije za avtomatizacijo doma in z glasom običajne funkcije. Zdaj smo sami zgradili številne projekte avtomatizacije domov, od preprostih samodejnih stopniščnih luči do spletne avtomatizacije, ki temelji na IoT, z uporabo Raspberry Pi. Toda ta projekt je drugačen, ideja je ustvariti praktično ploščo za avtomatizacijo doma, ki se lahko prilega našim izmeničnim napajalnikom na naših stenah in ostane v njej skrita. Plošča ne sme prekiniti običajnega delovanja stikal naše napajalne enote, to pomeni, da se morajo vklopiti ali izklopiti tudi z ročnimi stikali. In ne da bi to rekli, bi moral imeti tudi možnost, da z glasovnim asistentom nadzoruje isto obremenitev z glasovnim asistentom in nastavi časovnik, tako da se lahko vsako obremenitev samodejno vklopi ali izklopi v prednastavljenem času dneva.
Ta projekt je zelo podoben našemu pametnemu Wi-Fi vtiču ESP8266, vendar bomo tukaj, ker bomo uporabljali ESP12, imeli več zatičev GPIO, ki nam omogočajo hkrati nadzor nad štirimi izmeničnimi obremenitvami. Ker smo integrirali Blynk in Google Assistant, je projekt zanimiv in praktičen za uporabo. Za ta projekt smo izdelali vezja z uporabo storitve izdelave PCB PCBGOGO. V poznejšem oddelku članka smo podali datoteko Gerber, zasnovano za vezje, in tudi pojasnili celoten postopek naročanja PCB-jev pri PCBGOGO.
Opozorilo: Ta projekt vključuje delo z izmenično napetostjo omrežja. Upoštevajte, da je potrebna posebna previdnost pri delu z visokimi izmeničnimi napetostmi. Poskrbite, da vas nadzira izkušena oseba, če ste novi.
Shema vezja za avtomatizacijo doma, ki jo nadzoruje Google Assistant
Celoten diagram vezja za avtomatizacijo stanovanj najdete spodaj.
Kot lahko vidite, je vezje zelo preprosto, začnimo razlago z modulom ESP12E Wi-Fi. Za podrobno razlago projekta si lahko ogledate tudi spodnji video. Modul je mogoče programirati tako kot razvojne plošče nodeMCU in tako zmanjša veliko prostora. Ko je ESP12E privzeto vklopljen, preklopi v način delovanja. Če ga želimo programirati, moramo uporabiti gumb Reset in Flash. To pomeni, da ESP12 postavite v način programiranja, pritisnite in držite gumb za ponastavitev in bliskavico, nato spustite gumb za ponastavitev. To bo zagnalo ESP12E s pritisnjenim gumbom za bliskavico, zdaj spustite gumb za bliskavico in ESP12E preide v način programiranja. Po programiranju morate znova pritisniti gumb za ponastavitev, da zaženete ESP12E v običajnem načinu delovanja, da izvedete naloženi program. Programski zatiči Rx, Rx,in Ground so razširjeni, da se lahko povežejo s ploščo FTDI ali pretvornikom USB v TTL. Pazite, da priključite Tx zatič ESP12 na Rx zatič programerja in obratno.
Drugi zatiči zastavice I1 do I4 in R1 do R4 se uporabljajo za povezavo stikal in relejev. Zatiči I1 do I4 pomenijo vhodne zatiče. Vsi ti zatiči podpirajo notranji vlečni upor, zato moramo stikala na podaljšku priključka priključiti na naš vhodni zatič skozi spustni upor, kot je prikazano spodaj.
Podobno se izhodni zatiči releja R1 do R4 uporabljajo za krmiljenje relejev. Uporabili smo standardno vezje gonilnika releja z diodo BC547 in IN4007, kot je prikazano spodaj. Upoštevajte, da je treba releje sprožiti s 5V, vendar so izhodni zatiči ESP12E le 3,3V. Torej je za pogon relejev obvezna uporaba tranzistorja. Na osnovno pot tranzistorja smo postavili tudi LED, tako da se bo vsakič, ko se tranzistor sproži, tudi LED vklopila.
Na koncu smo za napajanje vseh naših vezij uporabili pretvornik Hi-Link AC-DC za pretvorbo naših 220V AC v 5V DC. Ta 5V enosmerni tok se nato pretvori v 3,3 V z uporabo napetostnega regulatorja AMS117-3,3V. 5V se uporablja za sprožitev relejev, 3.3V pa za napajanje brezžičnega modula ESP21.
Nastavitev aplikacije Blynk
Pred tem smo zgradili veliko projektov Blynk, kot je Wi-Fi Controlled Arduino Robot, zato ne bomo podrobneje govorili o nastavitvi aplikacije blynk. Poenostavite, preprosto namestite aplikacijo, ustvarite nov projekt za NodeMCU in začnite postavljati pripomočke, kot je prikazano spodaj.
Za krmiljenje releja 1 do 4 na našem projektu sem uporabil virtualne nožice V1 do V4. Spremenite vrsto gumba za preklop. Možnost časovnika lahko uporabite tudi za samodejni zagon navideznih zatičev v določenem času, tudi če je telefon izklopljen. Tu sem na primer uporabljal časovnik samo za navidezni zatič V1, po potrebi pa ga lahko uporabite za vse štiri zatiče.
Na strani projekta poiščite vrednost žetona blynk auth. Preprosto kliknite ikono matice (na zgornji sliki obkrožena z rdečo) in z uporabo možnosti kopiraj vse kopirajte žeton za potrditev in ga prilepite nekam na varno, kar bomo potrebovali pri programiranju plošče Arduino.
Nastavitev IFTTT z Google Assistant in Blynk za branje niza
Google Assistant najlažje uporabite za avtomatizacijo doma z uporabo IFTTT. Prav tako smo že prej zgradili številne projekte IFTTT z NodeMCU in Raspberry Pi. V tem projektu bomo z aplikacijo Blynk sprožili spletni kavelj z Googlovim asistentom. Zelo je podoben našemu projektu z glasovno vodeno hišno avtomatizacijo in glasovno nadzorovanim FM radijskim projektom. Razen tega bomo tukaj uporabljali blynk z IFTTT za pošiljanje niza, kar je veliko lažje in zanimivejše.
V bistvu bomo za pošiljanje ukaza sprožilca uporabili navidezni pin V5 in V6 na blynk. V5 bo uporabljen za ukaze za vklop, V6 pa za ukaze za izklop. Na primer, če rečemo vklopite televizor in žarnico. Ukaz niza tukaj »TV in žarnica« bo poslan API-ju NodeMCU. Sintaksa API je kot spodaj.
http://188.166.206.43//update/V5?value=TV in žarnica
Zdaj vse, kar moramo storiti v IFTTT, je, da uporabimo Googlovega pomočnika kot IF in spletne kljuke kot TO, zato prisluhnite temu ukazu in podatke pošljite NodeMCU z zgoraj omenjenim API-jem. Obrazec za vklop programa je prikazan spodaj.
Upoštevajte, da morate pri ustvarjanju recepta za Pomočnika Google izbrati besedno zvezo z besedilno sestavino. Podobno morate ponoviti enako za navidezni zatič V6, da izklopite releje. Za podrobne informacije si lahko ogledate video na dnu te strani.
Programiranje Arduina za avtomatizacijo doma Blynk
Popolno kodo Arduino za ta projekt najdete na dnu te strani. Razlaga istega je naslednja. Pred tem se prepričajte, da lahko uporabljate Blynk in Program NodeMCU iz Arduino IDE. Če ne, sledite uvodu v članek ESP12. Prav tako dodajte knjižnico blynk v Arduino IDE s pomočjo upravitelja plošče.
Kot vedno začnemo svojo kodo z definiranjem vhodnih in izhodnih zatičev, tu bo vhod iz stikal, izhod pa iz relejev. Imena štirih stikal smo določili kot sw in releje kot rel, kot lahko vidite spodaj.
#define sw1 13 #define sw2 12 #define sw3 14 #define sw4 16 #define rel1 4 #define rel2 5 #define rel3 9 #define rel4 10
V naslednji fazi morate vnesti nekatere poverilnice, kot so žeton blynk auth ter uporabniško ime in geslo za usmerjevalnik Wi-Fi, s katerim naj bo povezan vaš nodeMCU. Žeton za utripanje utripa je mogoče dobiti v aplikaciji blynk. Več o tem bomo izvedeli v razdelku o nastavitvi aplikacije blynk.
char auth = "Fh3tm0ZSrXQcROYl_lIYwOIuVu-E"; // dobimo iz aplikacije blynk char ssid = "home_wifi"; char pass = "fakepass123";
Nato smo podali definicijo funkcije, imenovane read_switch_toggle () . V tej funkciji bomo primerjali trenutno stanje in prejšnje stanje naših stikal. Če je bilo stikalo vklopljeno ali izključeno, tj. Če je bilo stikalo preklopljeno. Spremenilo se bo stanje stikala, funkcija bo to spremembo spremljala in vrnila številko stikala. Če spremembe ne zazna, bo vrnil 0.
int read_switch_toggle () {int rezultat = 0; // Upoštevajte vse prejšnje vrednosti za (int i = 0; i <= 3; i ++) pvs_state = crnt_state; // Preberite trenutno stanje stikal crnt_state = digitalRead (sw1); crnt_state = digitalRead (sw2); crnt_state = digitalRead (sw3); crnt_state = digitalRead (sw4); // primerjamo trenutno in pvs stanje za (int i = 0; i <= 3; i ++) {if (pvs_state! = crnt_state) {result = (i + 1); // če je katero koli stikalo preklopljeno, dobimo številko stikala kot rezultat vrnitve rezultata; } sicer rezultat = 0; // če ni rezultata spremembe 0} vrne rezultat; // vrne rezultat}
Nato imamo kodo za aplikacijo blynk. Za nadzor naše pametne razvodne omarice bomo uporabili navidezni zatič V1 do V6. Zatiči V1 do V4 bodo uporabljeni za krmiljenje relejev 1 do 4 neposredno iz aplikacije blynk. Spodnja koda prikazuje, kaj se zgodi, ko V1 sproži aplikacija blynk. Preprosto preberemo stanje (VISOKO ali NIZKO) in temu ustrezno upravljamo rele.
BLYNK_WRITE (V1) {digitalWrite (rel1, param.asInt ()); Serial.println ("V1"); }
Podobno lahko navidezne nožice uporabljamo tudi za branje niza iz aplikacije blynk. Kasneje se bomo naučili, kako poslati niz od Googlovega pomočnika NodeMCU z uporabo IFTTT in Googlovega pomočnika, za zdaj pa poglejmo, kako koda NodeMCU bere ta niz in išče določeno ključno besedo ter ustrezno sproži rele.
V spodnji kodi lahko vidite, da ob sprožitvi navideznega zatiča V5 dobimo niz, ki ga je poslal v spremenljivko niza, imenovano ON_message . Nato s pomočjo te spremenljivke niza in metode inderOf iščemo, ali so prisotne ključne besede, kot so »svetilka«, »LED«, »glasba«, »TV«, če da, vklopimo to posebno obremenitev. Če zaznamo ključno besedo »vse«, vklopimo vse. Enako lahko storimo tudi za V6, da izklopi releje. Več o tem bomo razumeli, ko pridemo v razdelek IFTTT.
BLYNK_WRITE (V5) {Niz ON_message = param.asStr (); Serial.println (ON_message); if (ON_message.indexOf ("lamp")> = 0) digitalWrite (rel1, HIGH); če (ON_message.indexOf ("LED")> = 0) digitalWrite (rel2, HIGH); če (ON_message.indexOf ("glasba")> = 0) digitalWrite (rel3, HIGH); če (ON_message.indexOf ("TV")> = 0) digitalWrite (rel4, HIGH); if (ON_message.indexOf ("everything")> = 0) {digitalWrite (rel1, HIGH); digitalWrite (rel2, HIGH); digitalWrite (rel3, HIGH); digitalWrite (rel4, HIGH); }}
Nazadnje, znotraj funkcije zanke moramo samo preveriti, ali je kateri koli gumb spremenjen. Če je odgovor pritrdilen, za preklop položaja tega releja uporabimo ohišje stikala, kot je prikazano spodaj.
stikalo (toggle_pin) {primer 0: odmor; primer 1: Serial.println ("Preklop releja 1"); digitalWrite (rel1, relay_state); odmor; primer 2: Serial.println ("Preklop releja 2"); digitalWrite (rel2, relay_state); odmor; primer 3: Serial.println ("Preklopni rele 3"); digitalWrite (rel3, relay_state); odmor; primer 4: Serial.println ("Preklop releja 4"); digitalWrite (rel4, relay_state); odmor; }}
Izdelava PCB z uporabo PCBGoGo
Zdaj razumemo, kako delujejo sheme, lahko nadaljujemo z izdelavo tiskanega vezja za naš projekt avtomatizacije doma. Postavitev tiskanega vezja za zgornje vezje je na voljo tudi za prenos kot Gerber s povezave.
- Prenesite GERBER za glasovno nadzorovano avtomatizacijo domovanja s pomočjo Google Assistant
Zdaj je naša zasnova pripravljena, čas je, da jih izdelamo z datoteko Gerber. Če želite PCB narediti iz PCBGOGO, je zelo enostavno, preprosto sledite spodnjim korakom -
1. korak: Pojdite na www.pcbgogo.com in se prijavite, če ste prvič. Nato v zavihek Prototip PCB vnesite mere PCB-ja, število slojev in število PCB-ja, ki ga potrebujete. Ob predpostavki, da je PCB 80 cm × 80 cm, lahko nastavite dimenzije, kot je prikazano spodaj.
2. korak: Nadaljujte s klikom na gumb Citiraj zdaj . Preusmerjeni boste na stran, kjer boste po potrebi nastavili nekaj dodatnih parametrov, na primer razmik proge med materiali itd. A v glavnem bodo privzete vrednosti v redu. Edino, kar moramo tu upoštevati, sta cena in čas. Kot lahko vidite, je čas izdelave le 2-3 dni, za naš PCB pa stane le 5 USD. Nato lahko izberete želeni način pošiljanja glede na vaše potrebe.
3. korak: Zadnji korak je nalaganje datoteke Gerber in nadaljevanje plačila. Preden nadaljuje s plačilom, PCBGOGO preveri, ali je vaša datoteka Gerber veljavna, da se prepriča, da je postopek nemoten. Tako boste lahko prepričani, da je vaš PCB prijazen do izdelave in vas bo sprejel kot predan.
Sestavljanje PCB
Po naročilu plošče me je čez nekaj dni preko kurirja dobil v lepo označeni dobro zapakirani škatli in kot vedno je bila kakovost PCB-ja izjemna. PCB, ki sem ga prejel, je prikazan spodaj. Kot vidite, se je zgornja in spodnja plast izkazala po pričakovanjih.
Viale in blazinice so bile vse v pravi velikosti. Potreboval sem približno 15 minut, da se sestavim na ploščo PCB, da dobim delovni krog. Sestavljena deska je prikazana spodaj.
Priključitev plošče z napajalnimi enotami / podaljški
Plošča je zasnovana tako, da je pritrjena v omrežne vtičnice v naših domovih. Toda zaradi tega projekta bomo uporabili podaljšek. Če želite trajnejšo rešitev, to povežite z vtičnicami za izmenični tok, saj lahko vidite, da je dolžina tiskanega vezja dovolj kompaktna, da ga lahko namestite v vtičnico.
Pri delu z električnim omrežjem upoštevajte varnostne ukrepe. Sledite spodnjemu vezju, da boste razumeli, kako svoje releje in stikala priključite na našo tiskano vezje.
Diagram povezave ni vklopljen samo za en rele in stikalo, lahko pa ga ponovite tudi za preostale tri. Ko so povezave končane, mora biti vaša plošča videti tako
Ko so povezave izvedene, jih morate tesno pritrditi z vijačnimi sponkami, za dodatno varnost pa uporabite tudi vroče lepilo. Vse zapakirajte nazaj v škatlo in morali bi biti pripravljeni na testiranje. Celotno delovanje tega projekta najdete v spodnjem videu.
Upam, da vam je bil članek všeč in ste se naučili kaj koristnega. Če imate kakršna koli vprašanja, jih pustite v spodnjem oddelku za komentarje ali uporabite naše forume.