Inhoudsopgave:
- Stap 1: Express downloaden voor de Pi
- Stap 2: Pi-server instellen
- Stap 3: IFTTT-configuratie (trigger)
- Stap 4: IFTTT-configuratie (actie)
- Stap 5: Poort doorsturen
- Stap 6: Uw werk tot nu toe controleren
- Stap 7: Het circuit bouwen
- Stap 8: Test het uit
Video: Google Home-gestuurde LED's: 8 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
De laatste tijd heb ik veel vrije tijd gehad, dus ik heb aan een heleboel projecten gewerkt.
Met dit project kun je RGB-LED's bedienen via Google Home met behulp van een Raspberry Pi. Nu zijn er 3 delen van het project, het opzetten van een Raspberry Pi, het opzetten van Google Home met een aangepast commando met IFTTT en vervolgens het maken van een circuit voor de lichten. Ik heb het circuit zelf gemaakt, maar ik wed dat je van Adafruit iets kunt krijgen dat doet wat nodig is.
Materialen voor Raspberry Pi-onderdeel
- Raspberry Pi - alles werkt, maar ik gebruik een nul
- Draadloze dongle - als de Pi geen ingebouwde wifi heeft
- Google Home - Optioneel als je Google Assistant op je telefoon hebt
Materialen voor Circuit Part- Laat dit je niet afschrikken … Het is vrij eenvoudig
- Protobord
- Draad
- Loden strip
- 12V-voeding - Alles boven de 2 ampère zou in orde moeten zijn
- DC Barrel Jack - Zelfde maat als die van uw voeding
- NPN BJT-vermogenstransistors (x3) - Ik gebruik TIP31C
-
Mannelijke en vrouwelijke pin-headers - Optioneel, maar sterk aanbevolen
Stap 1: Express downloaden voor de Pi
Ik ga niet te veel in detail treden over het instellen van de Pi, omdat er zoveel tutorials zijn om ze in te stellen.
Wat je moet doen dat ik niet behandel…
- Knipperende Raspberry Pi met nieuwste Raspbian
- Stel de netwerkkaart zo in dat je vanaf de Pi. toegang hebt tot internet
- Stel een statisch IP-adres in op de Raspberry Pi
Nu hier is waar het plezier begint! We moeten nodeJS, npm, express en express-generator installeren.
sudo apt-get update
sudo apt-get install nodejs npm
Nadat deze zijn geïnstalleerd, voert u het volgende uit:
npm install express express-generator
Met Express kunt u een zeer eenvoudige webserver maken die uw Raspberry Pi kan gebruiken. Express-generator genereert gewoon automatisch bestanden voor een express-server.
Maak een map en cd in de map. Ik noemde de mijne piWebpage. Voer nu het volgende uit (ook te zien op de afbeelding)
mkdir piWebpagina
cd piWebpage express --view=ejs webApp
Dit genereert een map met de naam webApp met alle express-bestanden erin. Als je van plan bent om later meer met deze webpagina te doen en je PUG leuk vindt, vervang dan --view=ejs door --view=pug. We zullen de webpagina niet aanraken, dus voor deze toepassing maakt het niet uit wat we gebruiken.
Stap 2: Pi-server instellen
Ga naar de nieuwe webApp-map.
cd webApp
npm installeren
npm install zal enige tijd duren omdat het alle afhankelijkheden voor express installeert.
Plak setColor.py in de webApp-map. Dit bestand bevat enkele voorinstellingen voor basiskleuren. Voel je vrij om meer toe te voegen als je wilt. Het bereik is 0 tot 255, waarbij 255 full colour is. Op een gegeven moment zal ik waarschijnlijk de mogelijkheid toevoegen om de lichten te dimmen, maar voor nu zijn ze op volledige helderheid.
Ga naar routes
cd-routes
Vervang nu index.js door het bijgevoegde bestand. Dit voegt enkele regels toe om een POST-opdracht te ontvangen die de Google Home zal verzenden. Van die POST krijgen we de kleur geselecteerd en vertellen we de Pi om het setColor python-script uit te voeren om de lichten aan te passen.
Nog een laatste ding … Ga terug naar de webApp-map.
cd ~/piWebpage/webApp
Gebruik je favoriete editor om de onderstaande code te plakken en op te slaan in je webApp.js. Overal is prima, zolang het maar vóór "module.exports = app;" is
// Setup LED hardware driverconst {exec} = required ('child_process'); exec('sudo pigpiod', (err, stdout, stderr)=>{ if(err){ console.log('Fout bij laden van LED-stuurprogramma'); return; }else console.log('LED-stuurprogramma succesvol geladen'); });
Zoals de opmerking zegt, is pigpiod de hardwaredriver voor PWM-signalen die we zullen gebruiken om de LED-kleuren aan te passen. Ik geloof dat het al in Raspbian is geïnstalleerd, maar zo niet …
sudo apt-get install pigpiod
Nu voor de echte test! De server starten!
DEBUG=webapp:* npm start
Stap 3: IFTTT-configuratie (trigger)
IFTTT kan veel doen, en ik zou het ten zeerste aanbevelen om rond te kijken bij enkele van de applicaties.
Eerst moet je een account aanmaken. Gebruik hetzelfde Google-account dat is gekoppeld aan je Google Home, anders worden ze niet samen gesynchroniseerd. Eenmaal voltooid en ingelogd, klikt u rechtsboven op de IFTTT-pagina waar uw naam en avatar worden weergegeven. Klik vervolgens op Nieuwe applet in de vervolgkeuzelijst.
Als je nieuwsgierig bent, staat IFTTT voor IF This Then That als je het niet hebt opgemerkt door het scherm dat verschijnt. Dus wat we willen is als Google Assistant, dan Webhook als onze opties.
Ga verder door op +this te klikken, waardoor een zoekbalk wordt geladen. Typ Google Assistant in de zoekopdracht en klik op het pictogram onder de zoekopdracht.
Selecteer in Kies een trigger de 3e optie genaamd Zeg een zin met een tekstingrediënt. Dit stelt u nu in staat om 3 commando's te hebben die dezelfde actie zullen uitvoeren. Je voegt de $ toe aan de zin waar je de kleur zou noemen. Als ik bijvoorbeeld natuurlijk Hey Google, Set LEDs Blue zou zeggen (zo natuurlijk als schreeuwen tegen een apparaat kan zijn), dan typ ik in het veld Set LEDs $. Doe dat voor alle 3 velden met verschillende versies van de opdracht.
De 3 die ik gebruikte waren
LED's $
LED's instellen $
LED-kleur instellen $
Het laatste veld is wat u wilt dat uw Google Home antwoordt nadat u uw opdracht hebt gezegd. Het kan alles zijn wat je wilt, maar ik gebruikte Kleur instellen op $. De $ betekent dat ze de kleur terug zal herhalen.
Klik op Trigger maken
Stap 4: IFTTT-configuratie (actie)
Nadat je op Trigger maken hebt geklikt, laad je terug naar de weergave als dit dan die weergave, maar dit is vervangen door het Google Assistent-logo. Ga verder door op +dat. te klikken
Hetzelfde als voorheen, waar het je naar de zoekbalk brengt. Typ Webhooks en klik op het webhook-pictogram onder de zoekbalk. Onder Actie kiezen voor webhooks is er maar één optie, dus klik op Een webverzoek maken.
Hier wordt het een beetje lastig. Omdat Google geen andere computer in uw huis is, heeft u uw externe IP-adres nodig. Dit vereist enige port forwarding, maar daar komen we later op terug. Om uw externe IP-adres te krijgen, gaat u naar
Typ in het URL-veld https://xxx.xxx.xxx.xxx:3000/{{TextField}} (waarbij de x uw externe IP-adres is). Mocht je nieuwsgierig zijn, TextField heeft de kleur die je hebt geselecteerd toen je een opdracht gaf. De reden dat we 3000 gebruiken, is omdat dat de poort is waarop de Raspberry Pi Express-server draait. (U kunt de poort in de code wijzigen, maar we gebruiken alleen de standaardinstellingen voor Express)
Selecteer bij Methode POST.
Selecteer bij Inhoudstype tekst/plat.
Typ bij Hoofdtekst {{TextField}}
Degenen onder u die weten hoe een POST-opdracht werkt, zouden denken dat als u de eigenschap body van het verzoek ontleden, u de kleur zou krijgen. Om de een of andere reden wordt er nooit iets in het body-veld van het verzoek geplaatst, dus ik ben eigenlijk de URL aan het ontleden voor de kleur. Ik hoop dat dat snel wordt opgelost, want dat zou mijn code in de index.js-route vereenvoudigen. Maar ik dwaal af.
Klik ten slotte op Actie maken en vervolgens op Voltooien op de volgende pagina. (Ik heb meldingen uitgezet, maar dat heeft de voorkeur)
Stap 5: Poort doorsturen
Dit is waar het moeilijk wordt om uit te leggen omdat alle routers anders zijn …
Nu laten we Google een commando naar ons huis sturen via poort 3000, maar het weet niet naar welk apparaat op het LAN het moet gaan. Om dit te verhelpen, moeten we poort 3000 doorsturen naar het lokale IP-adres van je Raspberry Pi.
Ga naar je router met behulp van 10.0.0.1 of 192.168.1.1 (ik heb het ook gezien waar het laatste cijfer 254) is en zoek port forwarding. Bij port forwarding, vergelijkbaar met de afbeelding, noem je een nieuw apparaat (IFTTT) en stuur je de poort (3000) door naar het IP-adres van de Pi (in mijn geval 10.0.0.11).
Sla uw nieuwe instelling op, start uw router opnieuw op en controleer of uw Raspberry Pi-server nog steeds actief is. Als het niet werkt, start u het opnieuw op.
Ga terug naar die handige website https://canyouseeme.org/. Onder uw IP-adres heeft het een poortcontrole. Ervan uitgaande dat uw port forwarding correct is, typt u 3000 in en drukt u op poort controleren. Het zou terug moeten komen met een Succes.
Stap 6: Uw werk tot nu toe controleren
Nu… het moment waarop je hebt gewacht… Vertel Google een commando zoals blauwe leds (als je mijn voorbeeld hebt gevolgd).
Ervan uitgaande dat alles correct is verlopen, krijgt u de uitvoer die op de afbeelding te zien is. We hebben nog geen circuit, dus je ziet alleen tekst op een scherm. Er is meestal een seconde of 2 vertraging voordat het wordt verwerkt door Google en op de Pi verschijnt.
(Ga door naar de volgende stap als dit er op dezelfde manier uitziet als op de afbeelding)
Nu zijn er een paar dingen om naar te kijken als het niet werkt …
Op de afbeelding staat een regel die zegt:
POST /kleur/blauw 200 250,458 ms - 2
De 200 is het belangrijkste onderdeel. Als u geen 200 ziet, was er een slechte POST, wat betekent dat uw server niet wist wat hij met de gegevens moest doen. Ga terug naar stap 2 en controleer uw index.js-bestand.
Ook op de foto
stdout: blauw
stderr:
Dit is de uitvoer van het python-bestand dat de LED's uitvoert. Als u daar een fout ziet, is het mogelijk dat u het stuurprogramma niet hebt geïnstalleerd bij stap 2.
Ten slotte, als er helemaal niets verscheen … is uw IFTTT mogelijk niet correct ingesteld of kon er geen verbinding worden gemaakt met de server. Ga terug naar de IFTTT-pagina en klik in de bovenste navigatiebalk op Activiteit. Daarin kun je elke keer zien dat je app is uitgevoerd en als er een fout is opgetreden, kun je zien wat het was. Ik maakte een Google-opdracht met de Pi-server uit en kreeg de fout in de afbeelding.
Stap 7: Het circuit bouwen
De reden waarom we dit moeten doen is omdat de Raspberry Pi niet genoeg kracht heeft… Dus de oplossing is… MEER KRACHT (Tim de gereedschapsman Taylor gromt in de verte). AKA een andere voeding (12V 2A)
Materialen voor circuitdeel
- Protobord
- Draad
- RGB LED-strip
- 12V-voeding - Alles boven de 2 ampère zou in orde moeten zijn
- DC Barrel Jack - Zelfde maat als die van uw voeding
- NPN BJT-vermogenstransistors (x3) - Ik gebruik TIP31C
- Mannelijke en vrouwelijke pin-headers
Aan de hand van de handige foto die ik van de interwebs heb gestolen met de GPIO van de Pi Zero, kun je zien dat GPIO17, GPIO18 en GPIO 27 allemaal naast elkaar staan met een GND. We zullen dat vierkant van 4 pinnen gebruiken (Pinnen 11, 12, 13, 14).
Ten eerste zou ik aanraden om mannelijke headers op je LED-strip te solderen zoals te zien is in de afbeelding (niet mijn beste werk). Dit zorgt voor een gemakkelijke ontkoppeling als dat ooit nodig is. Ik heb vrouwelijke headers gebruikt voor de aansluiting van de LED-strip op mijn protoboard en mannelijke headers van het protoboard op de Raspberry Pi. (Gebruik altijd vrouwelijke aansluitingen voor stroom/signaalbron). Je hoeft niet alle pinnen van de Pi naast elkaar te bewegen zoals ik deed… Ik wilde gewoon dat het er schoon uitzag, maar het was veel werk.
Circuit Uitleg:
Voor degenen onder u die niet bekend zijn met transistors, transistors zijn in feite een digitale schakelaar. De GPIO-pinnen van de Pi activeren de drie schakelaars (rood, groen en blauw). Specifiek kijkend naar ROOD in het schakelschema, wanneer GPIO_17 is ingeschakeld, "sluit" de schakelaar die ROOD verbindt met GND, waardoor de rode lichten gaan branden. Als GPIO_17 uitgaat, staat de schakelaar open en zijn de lichten dus uit.
Basis - GPIO's
Collector - Kleuren (ROOD, GROEN, BLAUW)
Emitter - Aarde (van zowel de voeding als de Pi)
Zorg ervoor dat u de aarde van de Pi verbindt met de aarde van de voeding. De lichten zullen nog steeds werken, maar ze zullen erg zwak lijken totdat de aarde is aangesloten.
Ik heb een 4e transistor uitziend apparaat op mijn protoboard. Het is een L7805CV die wordt gebruikt om 12V om te zetten naar 5V, zodat ik de Pi op hetzelfde circuit van stroom kan voorzien. Het werkte maar bleef oververhitten, dus heb ik de verbindingen verwijderd.
Stap 8: Test het uit
Zodra u klaar bent met het circuit, start u uw Pi opnieuw op voordat u verbindingen maakt. Dit komt omdat de pinnen waarschijnlijk nog actief zijn van de servertest. Als alternatief kunt u de server en de pigpiod-service doden.
Sluit de LED's en de jumpers van het protoboard aan op de Pi. Controleer alle verbindingen nogmaals voordat u stroom levert. Als je het verkeerd hebt aangesloten, zou je je Pi kunnen braden (geen druk).
Controlelijst
- Controleer draden
- Vermogen Pi
- Stroomcircuit
- Start Server (DEBUG=webapp:* npm start in de map ~/piWebpage/webApp)
- Vertel Google om uw biedingen uit te voeren!
GEFELICITEERD, je hebt niets opgeblazen en je kunt nu je LED's bedienen vanuit Google Home.
Laat opmerkingen achter als je problemen ondervindt, en ik zal mijn best doen om contact met je op te nemen!
Aanbevolen:
Automatisch gordijn met Google Home: 3 stappen
Automatisch gordijn met Google Home: na jaren domotica met verlichting en ventilator te hebben gedaan, wil ik nu proberen mijn huisgordijn te automatiseren. De kosten van kant-en-klaar autogordijn zijn erg duur, dus ik koos voor doe-het-zelf. Dit autogordijn is een WiFi-relaisschakelaar vergelijkbaar met Sonoff. Het is super
Uw Google Home Mini opnieuw stofferen: 6 stappen (met afbeeldingen)
Bekleed je Google Home Mini opnieuw: wil je een echt unieke digitale assistent voor je huis? Je zou naar een garage sale, kringloopwinkel of het huis van je grootmoeder kunnen gaan en eindigen met een oude stoel. Als dit gebeurt, kunt u ervoor kiezen om dat meubel een nieuwe lift te geven door opnieuw te bekleden
Spraakgestuurde domotica (zoals Alexa of Google Home, geen wifi of ethernet nodig): 4 stappen
Spraakgestuurde domotica (zoals Alexa of Google Home, geen wifi of Ethernet nodig): het zijn in feite op sms gebaseerde arduino-gestuurde relais met google-assistentconfiguratie om berichten te verzenden met gesproken instructies. Het is heel gemakkelijk en goedkoop en werkt als Alexa-advertenties met je bestaande elektrische apparaten (als je Moto -X smartp
Hoe u uw eerste actie voor Google Home kunt bouwen (in 10 minuten) Deel-1: 10 stappen
Hoe u uw eerste actie voor Google Home kunt bouwen (in 10 minuten) Deel 1: Hallo, dit is de eerste in een reeks artikelen die ik ga schrijven waarin we zullen leren hoe we acties op Google kunnen ontwikkelen en implementeren. Eigenlijk ben ik bezig met “acties op google” van de afgelopen maanden. Ik heb veel artikelen doorgenomen die beschikbaar zijn op
Bedien ESP8266 vanuit Google Home met GBridge.io: 4 stappen
Bedien ESP8266 vanuit Google Home met GBridge.io: er zijn verschillende manieren om ESP8266 vanuit Google Home te bedienen, maar de meeste oplossingen die u op internet kunt vinden, gebruiken IFTT, wat niet echt gebruiksvriendelijk is om in te stellen. gBridge.io maakt het proces eenvoudiger en naadloos te handelen.In deze how-to gui