Hvordan bygge en DIY Google hjemmear assistent med Raspberry Pi
Stemmestyrte assistenter har raskt blitt vanlige. Mange hjem har en Alexa eller Google Home som styrer alt fra belysning til media, og til og med tidevann.
Teknologien disse enhetene kjører på er tilgjengelig - i hvert fall delvis til alle. Googles assistent SDK lar deg bruke tjenesten på dine egne enheter. Denne opplæringen dekker hvordan du konfigurerer Google Assistant på Raspberry Pi, og stemme aktiverer en LED via GPIO-pinner.
Maskinvare påkrevd for en hempepiassistent
Du vil trenge:
- Raspberry Pi med en frisk Raspbian-installasjon på SD-kortet Slik installerer du et operativsystem til din Raspberry Pi Slik installerer du et operativsystem til din Raspberry Pi Her er hvordan du får et nytt OS installert og kjører på din Pi - og hvordan du klonrer din perfekt oppsett for rask katastrofegjenoppretting. Les mer .
- USB-webkamera eller mikrofon.
- Ekstern høyttaler.
- Kretskort fra Pi LED-veiledningen Slik programmerer du Raspberry Pi til kontroll LED-lampe Hvordan programmerer din Raspberry Pi til kontroll LED-lampene Leter du etter et enkelt Raspberry Pi-prosjekt for å komme i gang med koding og elektronikk? Prøv å koble til noen lysdioder og kodes dem for å slå på og av! Les mer (valgfritt)
- En nettleser logget på Google-kontoen din.
Merk: Utstyret for denne opplæringen kan variere noe. Jeg brukte et ekstra USB-webcam rent for mikrofonen. Enhver kompatibel webkamera eller mikrofon skal gjøre det bra, og det finnes omfattende lister over Pi-kompatible enheter for å hjelpe.
Også, jeg bruker 3,5 mm utgang for lyd. HDMI og andre utgangskilder vil også fungere, selv om det vil kreve endringer i lydoppsettet nedenfor.
Sett inn USB-webkameraet og høyttaleren, og sett opp LED-kretsen hvis du bruker den.
Sette opp lyden
Denne opplæringen kan følges direkte på Pi eller via en SSH-forbindelse i Pi.
Begge måtene begynner i terminalen, for å kontrollere lydinnstillingene. Bruk kommandoene arecord -l og aplay -l for å vise tilgjengelige enheter.
Bildet over viser USB-webkameraet som kort 1 og enhet 0. Legg merke til kort- og enhetsnumre for både mikrofon og høyttalerutgang.
Nå, sørg for at du er i / Home / pi katalog, opprett en ny fil og åpne den i nano:
sudo nano .asoundrc
Innholdet i denne katalogen vil variere avhengig av hvilket kort- og enhetsnummer du bruker. Her kan du velge å favorere HDMI-utgang i stedet for 3,5 mm hvis du ønsker det.
Når du har angitt versjonen av koden ovenfor, trykker du på Ctrl + X å lagre og avslutte.
Test oppsettet ditt ved å ta opp og spille av et kort klipp:
Valgfritt trinn: Hvis du vil endre lydstyrken på mikrofonen din, åpnes alsamixer og trykk F6 å sykle mellom enheter.
Det er det! Lyden er satt opp.
Opprette Google-prosjektet
Åpne Pis nettleser, alternativt, hvis du er koblet via SSH, åpne en nettleser lokalt. Naviger til Google Action Console og klikk Nytt prosjekt.
Dette kan ta litt tid. Når du er ferdig, la vinduet være aktivt og åpne en ny fane - vi kommer til dette i et øyeblikk.
Aktiverer Google Assistant API
Det er noen elektroniske justeringer du må gjøre for å fortsette. Naviger til Google Assistant API-nettstedet og klikk Aktiver.
Prosjektet krever også aktivitetsrettigheter. Gå til Aktivitets Kontrollpanel og sørg for at følgende aktiviteter er slått på:
- Web og appaktivitet (inkludert Chrome History-avmerkingsboksen)
- Enhetsinformasjon
- Stemme- og lydaktivitet
Nå kan du gå videre for å registrere enheten.
Registrering av Raspberry Pi
Tilbake i Handlingskonsoll, velg Enhetsregistrering fra venstre panel. Under Produkt Lag et enkelt å huske navnet på enheten din. Produsentens navn er ikke viktig (men må være der), og velg Auto for enhetstypen.
Klikk Registrer modell, og på neste skjermbilde klikker du Last ned OAuth 2.0-legitimasjon. Dette laster ned en JSON-fil til datamaskinen. Hvis du ikke er kjent med JSON-filer, må du ikke bekymre deg, men lære å bruke JSON JSON Python Parsing: En enkel guide JSON Python Parsing: En enkel guide Det finnes biblioteker og verktøy-kits tilgjengelig for å analysere og generere JSON fra nesten ethvert språk og miljø. Denne artikkelen fokuserer på metoder og problemer som oppstår ved JSON python-parsing. Les mer er verdt å gjøre for fremtiden!
Den offisielle Google-guiden anbefaler at du flytter filen til / Home / pi, så åpne filbehandling og gjør dette nå.
Ekstra trinn for SSH-brukere:
Hvis du bruker SSH, har du lastet ned JSON-filen til din lokale maskin i stedet for Pi. For å overføre det, åpne et separat terminalvindu uten SSH-tilkobling. Fra dette vinduet, kopier over klientens hemmelige JSON-fil ved hjelp av denne kommandoen:
scp ~ / Nedlastinger / client_secret_client-id.json pi @ raspberry-pi-ip-adresse: / home / pi /
Erstatte “bringebær-pi-ip-adresse” med Pi's ip-adresse, og ikke glem kolon før banen. Hvis du lastet ned JSON-filen til et annet sted, endrer du den lokale banen for å gjenspeile dette. Skriv inn passordet ditt når du blir bedt om det, og filen vil kopiere til Pis hjemmekatalog.
Bytt tilbake til SSH-terminalen, og naviger til / Home / pi. Tast inn ls-l å liste filene i katalogen. Du bør se den overførte klientens hemmelige JSON-fil.
Installere SDK
Google anbefaler at du arbeider i et virtuelt Python-miljø. Opprett et nytt virtuelt miljø som heter env.
Hvis du aldri har gjort dette før, vil denne opplæringen hjelpe deg med å lære hvordan du bruker virtuelle virtuelle miljøer i Python.
Installer de nyeste versjonene av Pip, Setuptools og Wheel og aktiver ditt virtuelle miljø:
env / bin / python -m pip installasjon - oppgrader pip setuptools hjulkilde env / bin / aktiver
Google Assistant har noen avhengigheter som du bør installere i det virtuelle miljøet nå.
sudo apt-install install portaudio19-dev libffi-dev libssl-dev libmpg123-dev
Endelig installerer du Google Assistant SDK, Samples og OAuth-verktøyet.
python -m pip installasjon --upgrade google-assistent-bibliotek python -m pip installasjon --upgrade google-assistent-sdk [prøver] python -m pip installasjon --upgrade google-auth-oauthlib [verktøy]
Det er alt som trengs for å komme opp og løpe. Hvis noen av installasjonene feiler, må du sjekke stavemåten og avstanden grundig.
Godkjenning av Raspberry Pi
Bruke Google-auth-oauthlib [verktøy] med legitimasjons-JSON-filen lastet ned tidligere for å godkjenne Raspberry Pi.
google-oauthlib-verktøyet - scope https://www.googleapis.com/auth/assistant-sdk-prototype \ --scop https://www.googleapis.com/auth/gcm \ --save --headless - -client-secrets /home/pi/YOUR_CLIENT_SECRET_ID.json
Du må bytte ut YOUR_CLIENT_SECRET_ID med den nedlastede filen, så det er verdt å kopiere filnavnet først. Denne klient-IDen må være riktig. Ikke endre filnavnet!
Du bør få en melding med en lenke, og du blir bedt om å lime inn en autorisasjonskode.
Ved å klikke på koblingen åpnes nettleseren. Du blir bedt om å aktivere enheten på Google-kontoen din. Kopier autorisasjonskoden som følger, og lim den inn i terminalvinduet ditt.
Du bør motta en bekreftelseslesning Referanser lagret: / home / pi ... , som betyr at Pi har blitt godkjent med Google-kontoen din.
Teste det ut
Nå som alt er på plass, er det på tide å teste din Pi Google-assistent. Kjør assistenten med denne kommandoen:
googlesamples-assistant-hotword - prosjekt-id my-dev-prosjektet -device-model-id min-modell
Du må bytte ut my-dev-prosjektet med prosjekt-ID-en din (funnet under innstillingshjulet til handlekonsollen). Din enhet-modell-id er oppført under delen Enhetsregistrering i Handlingskonsollen.
Prøv det! Si “OK Google” og still et spørsmål. Du kan se programutgangen i terminalen mens du hører svaret:
Det er det! Google Assistant kjører nå på Raspberry Pi. Merk at hvis utgangsvolumet er litt lavt, kan du endre det ved å si “Hei Google, skru volumet opp til 80%.”
Bonus: Voice Activated GPIO
Det er mulig å kontrollere lys med en Arduino og Siri, men det er en enklere metode. Hvis du setter opp en LED, kan du bruke Google Assistant til å kontrollere den med stemmen din.
Det er relativt enkelt å sette opp Google Assistant for å jobbe med GPIO-pinnene, men krever noen ekstra trinn. Gå til Google Action Console, og finn enheten under Enhetsregistrering. Klikk på den, og åpne egenskapsmenyen:
Snu På av trekk på, og klikk Lagre.
Nå sørger du for at du er inne i env virtuelt miljø, klone en versjon av SDK til Pi ved hjelp av git:
git klon https://github.com/googlesamples/assistant-sdk-python
Siden dette er et virtuelt miljø, må du installere RPi.GPIO før du går videre.
pip installere rpi.gpio
Nå, naviger til mappen som inneholder hotword.py manus.
cd-assistent-sdk-python / google-assistent-sdk / googlesamples / assistent / library
Endre skriptet
Du må legge til noen linjer i skriptet hotword.py, så åpne det i nano-editoren:
nano hotword.py
Under import uttalelsene, legg til din egen for RPi.GPIO.
importer RPi.GPIO som GPIO
Se etter process_event metode. På linje 66 fjerner du eller kommenterer utskriftserklæringen, og legger til en if-setning for å styre lysdioden.
#print ('Do command', kommando 'med params', str (params)) hvis kommando == "action.devices.commands.OnOff": hvis params ['on']: print ('----- ---------- ') print (' Led slått på ') print (' --------------- ') GPIO.output (18, GPIO.HIGH) ellers: print ('---------------') print ('Led slått av') print ('---------------') GPIO.output (18, GPIO.LOW)
Denne logikken styrer lysdioden, men så langt er den ikke konfigurert til utgang. Sett det opp i hoved() funksjonen før prosessen_event-metoden blir kalt.
GPIO.setmode (GPIO.BCM) GPIO.setup (18, GPIO.OUT, initial = GPIO.LOW)
Nå er GPIO-stiften satt til utgang og initialiseres i lav tilstand. Lagre og avslutt. Du kan kjøre det endrede skriptet ditt som sender ditt modell-ID-nummer (funnet i handlekonsollen) som et argument.
python hotword.py --device-model-id DIN MODEL-ID-HER
Terminalutgangen er den samme som før, og assistenten vil fungere som standard. Nå, men når du sier “OK Google, slå på” du vil se en ny utgang:
Merk: Bildet ovenfor har blitt beskåret, og viser bare assistenten som hører forespørselen, og utskriftserklæringen lagt til i skriptet.
Du bør se din LED lyser også!
Din egen DIY Raspberry Pi Google hjemmear assistent
Dette prosjektet er en god introduksjon til bruk av Google API-tjenester. Endring av Googles eksempelkode bidrar også til å lære grunnleggende om Python.
Med denne opplæringen som grunnlag, kan du knytte PI-assistenten til andre DIY Raspberry Pi-prosjekter Hindbær Pi-prosjekter for nybegynnere Raspberry Pi-prosjekter for nybegynnere Disse 10 Raspberry Pi-prosjektene for nybegynnere er gode for å få en introduksjon til maskinvare- og programvarefunksjonene i Pi, og vil hjelpe deg med å komme opp og løpe på kort tid! Les mer og bygg deg et stemmeaktivert smart hjem!
Utforsk mer om: DIY Project Tutorials, Google Assistant, LED Lights, Raspberry Pi, Smart Hubs.