Hoe een DIY Google Home Assistant met Raspberry Pi te bouwen
Spraakgestuurde assistenten zijn snel gemeengoed geworden. Veel huizen hebben een Alexa of Google Home die alles bestuurt, van verlichting tot media en zelfs van tijdregistratie.
De technologie waarop deze apparaten draaien is voor iedereen beschikbaar, tenminste gedeeltelijk. Met Google Assistant SDK kunt u de service op uw eigen apparaten gebruiken. Deze tutorial behandelt hoe je de Google Assistent op je Raspberry Pi instelt en stem activeert een LED via GPIO-pinnen.
Benodigde hardware voor een Raspberry Pi Home Assistant
Je zal nodig hebben:
- Raspberry Pi met een verse Raspbian-installatie op de SD-kaart Een besturingssysteem installeren op uw Raspberry Pi Hoe u een besturingssysteem installeert op uw Raspberry Pi Hier leest u hoe u een nieuw besturingssysteem op uw Pi kunt installeren en uitvoeren - en hoe u uw perfecte setup voor snel noodherstel. Lees verder .
- USB-webcam of microfoon.
- Externe luidspreker.
- Circuit van de Pi LED-zelfstudie Programmeren van uw Raspberry Pi om LED-verlichting te regelen Hoe u uw Raspberry Pi programmeert om LED-verlichting te regelen Bent u op zoek naar een eenvoudig Raspberry Pi-project om aan de slag te gaan met codering en elektronica? Probeer wat LED's aan te sluiten en ze te coderen om in en uit te schakelen! Lees meer (optioneel)
- Een browser aangemeld bij uw Google-account.
Notitie: De apparatuur voor deze tutorial kan enigszins variëren. Ik gebruikte een reserve USB-webcam puur voor zijn microfoon. Elke compatibele webcam of microfoon zou het goed moeten doen, en er zijn uitgebreide lijsten met Pi-compatibele apparaten om te helpen.
Ook gebruik ik de 3,5 mm-uitgang voor audio. HDMI en andere uitgangsbronnen zullen ook werken, hoewel hiervoor aanpassingen aan de geluidsinstellingen nodig zijn.
Sluit de USB-webcam en luidspreker aan en stel het LED-circuit in als u het gebruikt.
Het geluid instellen
Deze tutorial kan direct op de Pi worden gevolgd of via een SSH-verbinding met de Pi.
Beide manieren beginnen in de terminal om de geluidsinstellingen te controleren. Gebruik de commando's arecord -l en aplay -l om beschikbare apparaten te vermelden.
De afbeelding hierboven toont de USB-webcam als kaart 1 en apparaat 0. Noteer de kaart- en apparaatnummers voor zowel de microfoon als de luidsprekeruitgang.
Nu, ervoor zorgen dat u zich in de / Home / pi map, maak een nieuw bestand aan en open het in nano:
sudo nano .asoundrc
De inhoud van deze map is afhankelijk van de kaart en apparaatnummers die u gebruikt. Dit is waar u kunt kiezen om HDMI-uitvoer te verkiezen in plaats van 3,5 mm als u dat wenst.
Wanneer je je versie van de bovenstaande code hebt ingevoerd, druk je op Ctrl + X opslaan en afsluiten.
Test uw instellingen door een korte clip op te nemen en af te spelen:
Optionele stap: Als u het invoervolume van uw microfoon wilt wijzigen, opent u alsamixer en druk op F6 om te schakelen tussen apparaten.
Dat is het! Het geluid is ingesteld.
Het Google-project maken
Open de Pi's browser, als alternatief, als je verbonden bent via SSH open een browser lokaal. Navigeer naar de Google Action Console en klik op Nieuw project.
Dit kan even duren. Als u klaar bent, verlaat u het venster en opent u een nieuw tabblad - we komen hier zo dadelijk naar toe.
De Google Assistent-API inschakelen
Er zijn een paar online aanpassingen die u moet doorvoeren om door te gaan. Navigeer naar de Google Assistent API-website en klik op in staat stellen.
Het project vereist ook activiteitsrechten. Ga naar uw activiteitenpaneel en zorg ervoor dat de volgende activiteiten zijn ingeschakeld:
- Web- en app-activiteit (inclusief Chrome History-checkbox)
- Apparaat informatie
- Stem en audioactiviteit
Nu kunt u doorgaan met het registreren van het apparaat.
Uw Raspberry Pi registreren
Terug in de actie-console, selecteer Apparaatregistratie van het linkerpaneel. Onder Artikel maak een gemakkelijk te onthouden naam voor uw apparaat. De naam van de fabrikant is niet belangrijk (maar moet er wel zijn) en selecteer Auto voor het apparaattype.
Klik Registreer Model, en klik op het volgende scherm OAuth 2.0-referenties downloaden. Hiermee downloadt u een JSON-bestand naar uw computer. Als u niet bekend bent met JSON-bestanden, maakt u zich geen zorgen, maar leert u hoe u JSON JSON Python Parsing kunt gebruiken: Een eenvoudige handleiding JSON Python-parsering: een eenvoudige handleiding Er zijn bibliotheken en toolkits beschikbaar voor het parseren en genereren van JSON van bijna elke taal en omgeving. Dit artikel concentreert zich op methoden en problemen die voortkomen uit JSON python-parsing. Meer lezen is de moeite waard om te doen voor de toekomst!
De officiële Google-gids beveelt aan om het bestand te verplaatsen naar / Home / pi, dus open de bestandsbeheerder en doe dit nu.
Extra stap voor SSH-gebruikers:
Als u SSH gebruikt, hebt u het JSON-bestand gedownload naar uw lokale computer in plaats van de Pi. Om het over te zetten, opent u een apart terminalvenster zonder SSH-verbinding. Kopieer vanuit dit venster het JSON-bestand met clientgeheimen met behulp van deze opdracht:
scp ~ / Downloads / client_secret_client-id.json pi @ raspberry-pi-ip-adres: / home / pi /
Vervangen “framboos-pi-ip-adres” met het IP-adres van je Pi, en vergeet de dubbele punt vóór het pad niet. Als u het JSON-bestand naar een andere locatie hebt gedownload, past u uw lokale pad aan om dit weer te geven. Voer uw wachtwoord in wanneer daarom wordt gevraagd en het bestand wordt gekopieerd naar de basismap van de Pi.
Schakel terug naar de SSH-terminal en navigeer naar / Home / pi. invoeren ls -l om de bestanden in de map te vermelden. U moet het overgedragen JSON-bestand van de overgedragen client zien.
De SDK installeren
Google raadt aan te werken in een virtuele Python-omgeving. Maak een nieuwe virtuele omgeving genaamd env.
Als je dit nog nooit eerder hebt gedaan, kun je met deze tutorial leren hoe je virtuele Python-omgevingen gebruikt.
Installeer de nieuwste versies van Pip, Setuptools en Wheel en activeer uw virtuele omgeving:
env / bin / python -m pip installatie --upgrade pip setuptools wheel source env / bin / activate
Google Assistant heeft een aantal afhankelijkheden die u nu in de virtuele omgeving moet installeren.
sudo apt-get install portaudio19-dev libffi-dev libssl-dev libmpg123-dev
Installeer ten slotte de Google Assistent-SDK, Samples en OAuth-tool.
python -m pip install --upgrade google-assistent-bibliotheek python -m pip install --upgrade google-assistent-sdk [voorbeelden] python -m pip install --upgrade google-auth-oauthlib [tool]
Dat is alles wat nodig is om aan de slag te gaan. Als een van de installaties faalt, controleer dan de spelling en spatiëring grondig.
De Raspberry Pi authenticeren
Gebruik de Google-auth-oauthlib [gereedschap] met het JSON-legitimatiebewijs dat eerder is gedownload om uw Raspberry Pi te verifiëren.
google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype \ --scope https://www.googleapis.com/auth/gcm \ --save --headless - -client-secrets /home/pi/YOUR_CLIENT_SECRET_ID.json
U moet YOUR_CLIENT_SECRET_ID vervangen door het gedownloade bestand, dus het is de moeite waard om eerst de bestandsnaam te kopiëren. Deze klant-ID moet correct zijn. Wijzig de bestandsnaam niet!
U zou een bericht met een link moeten krijgen, waarin u wordt gevraagd een autorisatiecode in te voegen.
Als u op de koppeling klikt, wordt de browser geopend. U wordt gevraagd om het apparaat in te schakelen in uw Google-account. Kopieer de onderstaande autorisatiecode en plak deze opnieuw in uw terminalvenster.
U zou een bevestigingslezing moeten ontvangen Opgeslagen referenties: / home / pi ... , wat betekent dat de Pi is geautoriseerd met succes met uw Google-account.
Het uittesten
Nu alles op zijn plaats is, is het tijd om uw Pi Google Assistent te testen. Start de assistent met deze opdracht:
googlesamples-assistant-hotword - project-id mijn-dev-project --device-model-id mijn-model
U zult moeten vervangen my-dev-project met uw project-ID (te vinden onder het instelwiel Instellingen van de actie-console). Jouw Inrichting-model-id wordt vermeld onder het gedeelte Apparaatregistratie van de Action Console.
Probeer het! Zeggen “oke Google” en stel een vraag. U kunt de programma-uitvoer in de terminal zien terwijl u het antwoord hoort:
Dat is het! Google Assistent wordt nu uitgevoerd op uw Raspberry Pi. Merk op dat als het uitgangsvolume een beetje laag is, je het kunt veranderen door te zeggen “Hé Google, zet uw volume op tot 80%.”
Bonus: spraakgestuurde GPIO
Het is mogelijk om lampen te besturen met een Arduino en Siri, maar er is een eenvoudigere methode. Als je een LED instelt, kun je de Google Assistent gebruiken om hem te bedienen met je stem.
Het instellen van Google Assistent om met de GPIO-pinnen te werken is relatief eenvoudig, maar vereist enkele extra stappen. Ga naar de Google Action Console en vind uw apparaat onder Apparaatregistratie. Klik erop en open het eigenschappenmenu:
Draai de Aan uit kenmerk op en klik Opslaan.
Zorg er nu voor dat je in de env virtuele omgeving, kloon een versie van de SDK naar je Pi met behulp van git:
git clone https://github.com/googlesamples/assistant-sdkpylyon
Omdat dit een virtuele omgeving is, moet je RPi.GPIO installeren voordat je verder gaat.
pip install rpi.gpio
Navigeer nu naar de map met de hotword.py script.
cd-assistent-sdk-python / google-assistent-sdk / googlesamples / assistent / bibliotheek
Het script aanpassen
U moet een paar regels toevoegen aan het script hotword.py, dus open het in de nano-editor:
nano hotword.py
Voeg onder de importinstructies uw eigen toe voor RPi.GPIO.
importeer RPi.GPIO als GPIO
Zoek naar de process_event methode. Verwijder op regel 66 de afdrukinstructie of noteer deze en voeg een if-opdracht toe om de LED te besturen.
#print ('Do-opdracht', opdracht 'met params', str (params)) als opdracht == "action.devices.commands.OnOff": if params ['on']: print ('----- ---------- ') print (' Led aan ') print (' --------------- ') GPIO.output (18, GPIO.HIGH) else: print ('---------------') print ('Led uitgeschakeld') print ('---------------') GPIO.output (18, GPIO.LOW)
Deze logica bestuurt de LED, maar tot nu toe is deze niet geconfigureerd om te worden uitgevoerd. Stel het in in de hoofd() functie voordat de methode process_event wordt aangeroepen.
GPIO.setmode (GPIO.BCM) GPIO.setup (18, GPIO.OUT, initial = GPIO.LOW)
Nu is de GPIO-pin ingesteld op output en wordt deze geïnitialiseerd in een lage status. Opslaan en afsluiten. U kunt uw gewijzigde script als een argument uitvoeren door uw model-id-nummer (gevonden in de Action Console) door te geven.
python hotword.py --device-model-id UW-MODEL-ID-HIER
De uitgang van de terminal is hetzelfde als hiervoor en de assistent zal standaard werken. Maar nu, als je zegt “OK Google, inschakelen” je zult een nieuwe output zien:
Notitie: De bovenstaande afbeelding is bijgesneden en toont alleen de assistent die het verzoek hoort en de afdrukverklaring die aan het script is toegevoegd.
Je zou je LED ook moeten zien oplichten!
Uw eigen DIY Raspberry Pi Google Home Assistant
Dit project is een goede introductie tot het gebruik van Google API-services. Het aanpassen van de voorbeeldcode van Google helpt ook bij het leren van de basisprincipes van Python.
Met deze tutorial als basis kun je de PI-assistent koppelen aan andere doe-het-zelf Raspberry Pi-projecten Raspberry Pi-projecten voor beginners Raspberry Pi-projecten voor beginners Deze 10 Raspberry Pi-projecten voor beginners zijn ideaal voor een kennismaking met de hardware- en softwarecapaciteiten van de Pi, en helpt je snel weer aan de slag te gaan! Lees meer en bouw een voice-activated smart home voor jezelf!
Ontdek meer over: DIY-projecthandleidingen, Google Assistent, LED-lampjes, Raspberry Pi, Smart Hubs.