- Schakelschema voor door Google Assistent gestuurde domotica
- De Blynk-applicatie instellen
- IFTTT instellen met Google Assistant en Blynk om String te lezen
- Arduino programmeren voor Blynk Home Automation
- PCB fabriceren met PCBGoGo
- De printplaat in elkaar zetten
- De kaart aansluiten op wisselstroomvoedingen / uitbreidingskaarten
Met de vooruitgang in virtuele assistenten zoals Google Assistant en Alexa, worden domotica en spraakgestuurde applicaties normaal. Nu hebben we zelf veel domotica-projecten gebouwd, van eenvoudige automatische trappenhuisverlichting tot op IoT gebaseerde webgestuurde domotica met Raspberry Pi. Maar dit project is hier anders, het idee hier is om een praktisch domotica-bord te maken dat in onze AC-stroomeenheden aan onze muren past en erin verborgen blijft. Het bord mag de normale werking van de schakelaars van onze voedingseenheid niet onderbreken, dat wil zeggen dat ze ook met handmatige schakelaars AAN of UIT moeten gaan. En zonder gezegd te worden, het zou ook in staat moeten zijn om dezelfde belasting met stem te bedienen met behulp van Google Assistant en ook een timer instellen zodat elke belasting automatisch kan worden in- of uitgeschakeld tijdens een vooraf ingesteld tijdstip van de dag.
Dit project lijkt erg op onze ESP8266 Smart Wi-Fi-stekker, maar omdat we ESP12 gaan gebruiken, hebben we meer GPIO-pinnen waarmee we vier AC-belastingen tegelijkertijd kunnen besturen. Omdat we Blynk en Google Assistant hebben geïntegreerd, wordt het project ook interessant en praktisch in gebruik. Voor dit project hebben we de printplaten gebouwd met behulp van PCBGOGO PCB-productieservice. In het laatste deel van het artikel hebben we het Gerber-bestand geleverd dat voor de schakeling is ontworpen en ook de volledige procedure uitgelegd om de PCB's bij PCBGOGO te bestellen.
Waarschuwing: dit project omvat het werken met de netspanning. Houd er rekening mee dat u uiterst voorzichtig moet zijn bij het werken met hoge wisselspanningen. Zorg ervoor dat u onder toezicht staat van een ervaren persoon als u nieuw bent.
Schakelschema voor door Google Assistent gestuurde domotica
Het volledige schakelschema voor domotica vindt u hieronder.
Zoals je kunt zien, is het circuit heel eenvoudig, laten we de uitleg beginnen vanaf de ESP12E Wi-Fi-module. Je kunt ook de onderstaande video bekijken voor een gedetailleerde projectuitleg. De module kan net als nodeMCU-ontwikkelborden worden geprogrammeerd en het bespaart veel ruimte. Standaard gaat de ESP12E bij het inschakelen naar de bedieningsmodus. Om het te programmeren, moeten we de knop Reset en Flash gebruiken. Dat is om de ESP12 in de programmeermodus te zetten, zowel de Reset- als de Flash-knop ingedrukt te houden en vervolgens de resetknop los te laten. Dit zal de ESP12E opstarten met de flash-knop ingedrukt, laat nu de flash-knop los en de ESP12E gaat naar de programmeermodus. Na het programmeren moet u nogmaals op de resetknop drukken om de ESP12E in de normale bedrijfsmodus op te starten en het geüploade programma uit te voeren. De programmeerpennen Rx, Rx,en Ground zijn verlengd om verbinding te kunnen maken met een FTDI-kaart of USB naar TTL-converter. Zorg ervoor dat u de Tx-pin van ESP12 verbindt met de Rx-pin van de Programmer en vice versa.
De andere vlagpinnen I1 tot I4 en R1 tot R4 worden gebruikt om de schakelaars en relais aan te sluiten. Pinnen I1 tot I4 staan voor Input pinnen. Al deze pinnen ondersteunen de interne pull-up-weerstand, dus we hoeven alleen maar de schakelaars op de uitbreidingsdoos aan te sluiten op onze Input-pin via een pull-down-weerstand, zoals hieronder wordt weergegeven.
Evenzo worden de relaisuitgangspennen R1 tot R4 gebruikt om de relais te besturen. We hebben een standaard relaisstuurcircuit met BC547 en IN4007 Diode gebruikt, zoals hieronder weergegeven. Merk op dat de relais moeten worden geactiveerd met 5V, maar de ESP12E-uitgangspennen zijn slechts 3,3V. Het is dus verplicht om een transistor te gebruiken om de relais aan te sturen. We hebben ook een LED in het basispad van de transistor geplaatst, zodat wanneer de transistor wordt geactiveerd, de LED ook gaat branden.
Ten slotte hebben we, om al onze circuits van stroom te voorzien, de Hi-Link AC-DC-omzetter gebruikt om onze 220V AC om te zetten naar 5V DC. Deze 5V DC wordt vervolgens omgezet naar 3.3V met behulp van een AMS117-3.3V spanningsregelaar. De 5V wordt gebruikt om de relais te activeren en 3.3V wordt gebruikt om de ESP21 Wi-Fi-module van stroom te voorzien.
De Blynk-applicatie instellen
We hebben eerder veel Blynk-projecten gebouwd , zoals Wi-Fi Controlled Arduino Robot, dus we zullen niet ingaan op de details van het instellen van de blynk-applicatie. Maar eenvoudig gezegd, installeer gewoon de applicatie, maak een nieuw project voor NodeMCU en begin met het plaatsen van uw widgets zoals hieronder weergegeven.
Ik heb virtuele pinnen V1 tot V4 gebruikt om relais 1 tot 4 op ons project te besturen. Zorg ervoor dat u het type knop verandert dat u wilt schakelen. De timeroptie kan ook worden gebruikt om de virtuele pinnen automatisch te activeren gedurende de ingestelde tijd, zelfs als de telefoon is uitgeschakeld. Ik heb hier bijvoorbeeld alleen een timer voor virtuele pin V1 gebruikt, maar je kunt deze indien nodig voor alle vier de pinnen gebruiken.
Zorg ervoor dat u uw blynk auth-tokenwaarde van uw projectpagina haalt. Klik gewoon op het moer-pictogram (rood omcirkeld in de bovenstaande afbeelding) en kopieer het auth-token met de optie alles kopiëren en plak het ergens op een veilige plaats, die we nodig hebben bij het programmeren van het Arduino-bord.
IFTTT instellen met Google Assistant en Blynk om String te lezen
De gemakkelijkste manier om Google Assistent voor domotica te gebruiken, is door IFTTT te gebruiken. We hebben ook eerder veel IFTTT-projecten gebouwd met NodeMCU en Raspberry Pi. In dit project zullen we de Blynk- app gebruiken om een webhook te activeren met Google Assistant. Het lijkt erg op ons spraakgestuurde domotica- en spraakgestuurde FM-radioproject. Behalve dat we hier blynk met IFTTT zullen gebruiken om een string te verzenden, wat het een stuk eenvoudiger en interessanter maakt.
In principe zullen we virtuele pin V5 en V6 op blynk gebruiken om de triggeropdracht te verzenden. V5 wordt gebruikt voor inschakelopdrachten en V6 wordt gebruikt voor uitschakelopdrachten. Als we bijvoorbeeld zeggen: tv en lamp aanzetten. Het stringcommando hier “TV and Lamp” wordt met een API naar NodeMCU gestuurd. De syntaxis van API is zoals hieronder.
http://188.166.206.43//update/V5?value=TV en Lamp
Nu hoeven we alleen maar in IFTTT de Google-assistent te gebruiken als IF en webhooks als DAT, dus luister naar deze opdracht en stuur de informatie naar NodeMCU met behulp van de bovengenoemde API. De inschakelbare applet wordt hieronder weergegeven.
Merk op dat u de optie Zeg een zin met tekstingrediënt moet selecteren wanneer u een recept voor Google Assistent maakt. Evenzo moet u hetzelfde herhalen voor virtuele pin V6 om de relais uit te schakelen. Je kunt de video onderaan deze pagina bekijken voor gedetailleerde informatie.
Arduino programmeren voor Blynk Home Automation
De volledige Arduino-code voor dit project vind je onderaan deze pagina. De uitleg hiervan is als volgt. Zorg er eerst voor dat u Blynk en Program NodeMCU van Arduino IDE kunt gebruiken. Als dit niet het geval is, volgt u het artikel Aan de slag met ESP12. Voeg ook de blynk-bibliotheek toe aan Arduino IDE met behulp van de boardmanager.
Zoals altijd beginnen we onze code met het definiëren van de invoer- en uitvoerpennen, hier is de invoer van schakelaars en de uitvoer van relais. We hebben de pinnamen voor alle vier de schakelaars gedefinieerd als sw en relais als rel, zoals u hieronder kunt zien.
#define sw1 13 #define sw2 12 #define sw3 14 #define sw4 16 #define rel1 4 #define rel2 5 #define rel3 9 #define rel4 10
In de volgende fase moet u enkele inloggegevens invoeren, zoals blynk auth token en de gebruikersnaam en het wachtwoord voor de wifi-router waarmee uw nodeMCU verbinding moet maken. Het blink auth-token kan worden verkregen via de blynk-applicatie. We zullen daar meer over leren in de sectie blynk applicatie instellen.
char auth = "Fh3tm0ZSrXQcROYl_lIYwOIuVu-E"; // haal van blynk applicatie char ssid = "home_wifi"; char pass = "fakepass123";
Vervolgens hebben we de definitie gegeven voor een functie genaamd read_switch_toggle () . In deze functie vergelijken we de huidige staat en de vorige staat van onze schakelaars. Als de schakelaar is in- of uitgeschakeld, dwz als de schakelaar is omgedraaid. Er zal een verandering zijn in de toestand van de schakelaar, de functie zal deze verandering volgen en het schakelaarnummer teruggeven. Als er geen verandering wordt gedetecteerd, wordt 0 geretourneerd.
int read_switch_toggle () {int resultaat = 0; // Let op alle vorige waarden voor (int i = 0; i <= 3; i ++) pvs_state = crnt_state; // Lees de huidige status van schakelaars crnt_state = digitalRead (sw1); crnt_state = digitalRead (sw2); crnt_state = digitalRead (sw3); crnt_state = digitalRead (sw4); // vergelijk de huidige en pvs-status voor (int i = 0; i <= 3; i ++) {if (pvs_state! = crnt_state) {result = (i + 1); // als een schakelaar wordt omgeschakeld, krijgen we het wisselnummer als resultaatretourresultaat; } else resultaat = 0; // if no change result 0} return result; // retourneer het resultaat}
Vervolgens hebben we de code voor de blynk-applicatie. We zullen virtuele pin V1 tot V6 gebruiken om onze slimme aansluitdoos te besturen. De pinnen V1 tot V4 worden gebruikt om respectievelijk relais 1 tot 4 rechtstreeks vanuit de blynk-applicatie te besturen. De onderstaande code laat zien wat er gebeurt wanneer V1 wordt geactiveerd vanuit de blynk-applicatie. We lezen gewoon de status (HOOG of LAAG) en regelen het relais dienovereenkomstig.
BLYNK_WRITE (V1) {digitalWrite (rel1, param.asInt ()); Serial.println ("V1"); }
Evenzo kunnen de virtuele pinnen ook worden gebruikt om een string uit de blynk-applicatie te lezen. We zullen later leren hoe we een string van Google Assistant naar NodeMCU kunnen sturen met IFTTT en Google Assistant, maar laten we voorlopig eens kijken hoe de NodeMCU-code deze string leest en naar een bepaald trefwoord zoekt en het relais dienovereenkomstig activeert.
In de onderstaande code kun je zien dat wanneer virtuele pin V5 wordt geactiveerd, we de string erdoor krijgen in een stringvariabele genaamd ON_message . Met behulp van deze stringvariabele en inderOf-methode zoeken we of er trefwoorden zoals "lamp", "LED", "muziek", "TV" aanwezig zijn, zo ja, dan schakelen we die specifieke belasting in. Als het trefwoord 'alles' wordt gedetecteerd, schakelen we alles in. Hetzelfde kan ook worden gedaan voor V6 om de relais uit te schakelen. We zullen hier meer over begrijpen wanneer we in de IFTTT-sectie komen.
BLYNK_WRITE (V5) {String ON_message = param.asStr (); Serial.println (ON_message); if (ON_message.indexOf ("lamp")> = 0) digitalWrite (rel1, HIGH); if (ON_message.indexOf ("LED")> = 0) digitalWrite (rel2, HIGH); if (ON_message.indexOf ("music")> = 0) digitalWrite (rel3, HIGH); if (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); }}
Ten slotte hoeven we binnen de lusfunctie alleen te controleren of er knoppen zijn of de schakelaarpositie is gewijzigd. Zo ja, dan gebruiken we een schakelkast zoals hieronder weergegeven om de positie van dat specifieke relais om te schakelen.
switch (toggle_pin) {case 0: break; geval 1: Serial.println ("Toggling Relay 1"); digitalWrite (rel1, relay_state); breken; geval 2: Serial.println ("Toggling Relay 2"); digitalWrite (rel2, relay_state); breken; geval 3: Serial.println ("Toggling Relay 3"); digitalWrite (rel3, relay_state); breken; geval 4: Serial.println ("Toggling Relay 4"); digitalWrite (rel4, relay_state); breken; }}
PCB fabriceren met PCBGoGo
Nu we begrijpen hoe de schema's werken, kunnen we doorgaan met het bouwen van de printplaat voor ons huisautomatiseringsproject. De PCB-layout voor het bovenstaande circuit is ook beschikbaar om te downloaden als Gerber via de link.
- Download GERBER voor spraakgestuurde domotica met Google Assistant
Nu ons ontwerp klaar is, is het tijd om ze te laten fabriceren met behulp van het Gerber-bestand. Om de PCB van PCBGOGO af te krijgen is vrij eenvoudig, volg gewoon de onderstaande stappen-
Stap 1: Ga naar www.pcbgogo.com, meld u aan als dit de eerste keer is. Voer vervolgens op het tabblad PCB-prototype de afmetingen van uw PCB, het aantal lagen en het aantal PCB's dat u nodig heeft in. Ervan uitgaande dat de printplaat 80 cm × 80 cm is, kunt u de afmetingen instellen zoals hieronder weergegeven.
Stap 2: Ga verder door op de knop Nu citeren te klikken. U wordt naar een pagina geleid waar u indien nodig een paar aanvullende parameters kunt instellen, zoals het gebruikte materiaal voor de spoorafstand, enz. Maar meestal werken de standaardwaarden prima. Het enige waar we hier rekening mee moeten houden, is de prijs en tijd. Zoals je kunt zien is de bouwtijd slechts 2-3 dagen en kost het slechts $ 5 voor onze printplaat. U kunt vervolgens een gewenste verzendmethode selecteren op basis van uw vereisten.
Stap 3: De laatste stap is om het Gerber-bestand te uploaden en door te gaan met de betaling. Om ervoor te zorgen dat het proces soepel verloopt, controleert PCBGOGO of uw Gerber-bestand geldig is voordat u doorgaat met de betaling. Zo weet u zeker dat uw printplaat fabricagevriendelijk is en u als toegewijd zult bereiken.
De printplaat in elkaar zetten
Nadat het bord was besteld, bereikte het me na enkele dagen via een koerier in een keurig gelabelde, goed verpakte doos, en zoals altijd was de kwaliteit van de PCB geweldig. Hieronder zie je de print die ik heb ontvangen. Zoals je ziet, is zowel de bovenste als de onderste laag uitgekomen zoals verwacht.
De via's en pads hadden allemaal de juiste maat. Het kostte me ongeveer 15 minuten om op de printplaat te monteren om een werkend circuit te krijgen. Het samengestelde bord wordt hieronder weergegeven.
De kaart aansluiten op wisselstroomvoedingen / uitbreidingskaarten
Het bord is ontworpen om in de AC-stopcontacten in onze huizen te worden bevestigd. Maar omwille van dit project zullen we een uitbreidingsdoos gebruiken. Als u een meer permanente oplossing wilt, sluit deze dan aan in uw stopcontacten, zoals u hieronder kunt zien, is de lengte van de printplaat compact genoeg om in een stopcontact te worden geplaatst.
Zorg ervoor dat u de veiligheidsmaatregelen volgt tijdens het werken met wisselstroom. Volg het onderstaande schakelschema om te begrijpen hoe u uw relais en schakelaars op onze printplaat aansluit.
Het verbindingsschema is alleen beschikbaar voor één relais en schakelaar, maar u kunt hetzelfde ook repliceren voor de overige drie. Zodra de verbindingen zijn gemaakt, zou je bord er als volgt uit moeten zien
Nadat de verbindingen zijn gemaakt, moet u ervoor zorgen dat u ze stevig vastzet met schroefklemmen en ook hete lijm gebruiken voor extra veiligheid. Verpak alles terug in de doos en we zouden klaar moeten zijn om te testen. De volledige werking van dit project vind je in de onderstaande video.
Ik hoop dat je het artikel leuk vond en iets nuttigs hebt geleerd. Als je vragen hebt, laat ze dan achter in de commentaarsectie hieronder of gebruik onze forums.