Hur man bygger en DIY Google Hemassistent med Raspberry Pi

Hur man bygger en DIY Google Hemassistent med Raspberry Pi / DIY

Röststyrda assistenter har snabbt blivit vanliga. Många hem har en Alexa eller Google Home som styr allt från belysning till media, och till och med tidtabell.

Tekniken som dessa enheter går på är tillgänglig - åtminstone delvis till alla. Med Googles Assistent SDK kan du använda tjänsten på dina egna enheter. Denna handledning täcker hur du ställer in Google Assistant på din Raspberry Pi, och röst aktiverar en LED via GPIO-stiften.

Hårdvara som krävs för en hemmabio Pi-hemassistent

Du kommer behöva:

  1. Raspberry Pi med en ny Raspbian-installation på SD-kortet Hur man installerar ett operativsystem till din Raspberry Pi Så här installerar du ett operativsystem till din Raspberry Pi Så här får du ett nytt OS installerat och kört på din Pi - och hur man klonar din perfekt inställning för snabb katastrofåterställning. Läs mer .
  2. USB-webbkamera eller mikrofon.
  3. Extern högtalare.
  4. Kretskort från Pi LED-handledningen Hur man programmerar din Raspberry Pi för att styra LED-lampor Hur man programmerar din Raspberry Pi för att kontrollera LED-lampor Letar du efter ett enkelt Raspberry Pi-projekt för att komma igång med kodning och elektronik? Prova att ansluta några LED-lampor och koda dem för att slå på och av! Läs mer (valfritt)
  5. En webbläsare loggade in på ditt Google-konto.

Notera: Utrustningen för denna handledning kan variera något. Jag använde en extra USB-webbkamera rent för sin mikrofon. Varje kompatibel webbkamera eller mikrofon ska fungera bra, och det finns omfattande listor med Pi-kompatibla enheter som hjälper.

Jag använder också 3,5 mm-utgången för ljud. HDMI och andra utmatningskällor fungerar också, men det kommer att kräva ändringar av ljudinställningen nedan.

Anslut USB-webbkameran och högtalaren och sätt in LED-kretsen om du använder den.

Ställa in ljudet

Denna handledning kan följas direkt på Pi eller via en SSH-anslutning till Pi.

Båda sätten börjar i terminalen, för att kontrollera ljudinställningarna. Använd kommandona arecord -l och aplay -l för att lista tillgängliga enheter.

Bilden ovan visar USB-webbkameran som kort 1 och anordning 0. Notera kort- och enhetsnummer för både mikrofon och högtalarutgång.

Nu, se till att du är i / Home / pi katalog, skapa en ny fil och öppna den i nano:

sudo nano .asoundrc

Innehållet i den här katalogen varierar beroende på vilket kort och enhetsnummer du använder. Här kan du välja att favorera HDMI-utgången i stället för 3,5 mm om du vill.

När du har angett din version av ovanstående kod trycker du på Ctrl + X att spara och avsluta.

Testa din inställning genom att spela in och spela upp ett kort klipp:

Valfritt steg: Om du vill ändra volymen på din mikrofon, öppna alsamixer och tryck på F6 att cykla mellan enheter.

Det är allt! Ljudet är inställt.

Skapa Google-projektet

Öppna PI: s webbläsare, alternativt, om du är ansluten via SSH, öppna en webbläsare lokalt. Navigera till Google Action Console och klicka på Nytt projekt.

Det kan ta några ögonblick. När du är klar, lämna fönstret aktivt och öppna en ny flik - vi kommer snart till det här.

Aktiverar API för Google Assistant

Det finns några justeringar på nätet som du behöver göra för att fortsätta. Navigera till webbplatsen för Google Assistant API och klicka på Gör det möjligt.

Projektet kräver också aktivitetsbehörigheter. Gå till din aktivitets kontrollpanel och se till att följande aktiviteter är aktiverade:

  • Webb- och appaktivitet (inklusive Chrome History-kryssrutan)
  • Enhetsinformation
  • Röst- och ljudaktivitet

Nu kan du gå vidare för att registrera enheten.

Registrera din Raspberry Pi

Tillbaka i Action Console, välj Enhetsregistrering från vänster panel. Under Produkt skapa ett enkelt att komma ihåg namnet på din enhet. Tillverkarens namn är inte viktigt (men måste vara där), och välj Bil för enhetstypen.

Klick Registrera modell, och klicka på nästa skärm Hämta OAuth 2.0-referenser. Detta hämtar en JSON-fil till din dator. Om du inte är bekant med JSON-filer, oroa dig inte, men lär dig hur du använder JSON JSON Python Parsing: En enkel guide JSON Python Parsing: En enkel guide Det finns bibliotek och verktygssatser som kan användas för att parsa och generera JSON från nästan vilket språk som helst. Denna artikel fokuserar på metoder och problem som uppstår vid JSON python-analysering. Läs mer är värt att göra för framtiden!

Den officiella Google-guiden rekommenderar att du flyttar filen till / Home / pi, så öppna filhanteraren och gör det nu.

Extra steg för SSH-användare:

Om du använder SSH kommer du ha laddat ner JSON-filen till din lokala maskin istället för Pi. För att överföra det, öppna ett separat terminalfönster utan SSH-anslutning. Från det här fönstret, kopiera över klientens hemliga JSON-fil med det här kommandot:

scp ~ / Nedladdningar / client_secret_client-id.json pi @ raspberry-pi-ip-adress: / home / pi /

Byta ut “hallon-pi-IP-adress” med din PIs IP-adress, och glöm inte kolon framför vägen. Om du hämtade JSON-filen till en annan plats ändrar du din lokala sökväg för att återspegla detta. Ange ditt lösenord när du blir ombedd, och filen kommer att kopiera till Pi: s hemkatalog.

Växla tillbaka till SSH-terminalen och navigera till / Home / pi. Stiga på ls-l för att lista filerna i katalogen. Du ska se den överförda klientens hemliga JSON-fil.

Installera SDK

Google rekommenderar att du arbetar i en virtuell Python-miljö. Skapa en ny virtuell miljö som heter env.

Om du aldrig har gjort det tidigare kommer den här handledningen att hjälpa dig att lära dig hur du använder virtuella Python-miljöer.

Installera de senaste versionerna av Pip, Setuptools och Wheel och aktivera din virtuella miljö:

env / bin / python -m pip installera - uppgradera pip setuptools hjulkälla env / bin / aktivera

Google Assistant har vissa beroenden som du bör installera i den virtuella miljön nu.

sudo apt-get install portaudio19-dev libffi-dev libssl-dev libmpg123-dev 

Slutligen installera verktyget Google Assistant SDK, Samples och OAuth.

python -m pip installera - uppgradera google-assistent-bibliotek python -m pip installera --upgrade google-assistent-sdk [prover] python -m pip installera - uppgradera google-auth-oauthlib [verktyg] 

Det är allt som behövs för att komma igång. Om någon av anläggningarna misslyckas, kontrollera stavningen och avståndet noggrant.

Godkännande av Raspberry Pi

Använd google-auth-oauthlib [verktyg] med legitimationen JSON-filen hämtad tidigare för att verifiera din Raspberry Pi.

google-oauthlib-verktyget - https://www.googleapis.com/auth/assistant-sdk-prototype \ --skopiera https://www.googleapis.com/auth/gcm \ --save --headless - -client-secrets /home/pi/YOUR_CLIENT_SECRET_ID.json 

Du måste byta ut JOUR_CLIENT_SECRET_ID med den nedladdade filen, så det är värt att kopiera filnamnet först. Detta klient-ID måste vara korrekt. Ändra inte filnamnet!

Du borde få ett meddelande med en länk som ber dig att klistra in i en behörighetskod.

Om du klickar på länken öppnas webbläsaren. Du blir uppmanad att aktivera enheten på ditt Google-konto. Kopiera behörighetskoden som följer och klistra in den i ditt terminalfönster.

Du bör få en bekräftelse av läsning Credentials Saved: / home / pi ... , vilket betyder att Pi har godkänts med ditt Google-konto.

Testa det

Nu när allt är på plats, är det dags att testa din Pi Google Assistant. Kör assistenten med det här kommandot:

googlesamples-assistant-hotword --projekt-id my-dev-project - devis-modell-id min-modell 

Du måste byta ut my-dev-projekt med ditt Projekt ID (finns under inställningskugghjulet i Action Console). Din anordning-modell-id är listad under avsnittet Enhetsregistrering i åtgärdskonsolen.

Testa! Säga “OK Google” och ställa en fråga. Du kan se programutmatningen i terminalen när du hör svaret:

Det är allt! Google Assistant kör nu på din Raspberry Pi. Observera att om utmatningsvolymen är lite låg, kan du ändra den genom att säga “Hej Google, vrid din volym upp till 80%.”

Bonus: Voice Activated GPIO

Det är möjligt att styra ljus med en Arduino och Siri, men det finns en enklare metod. Om du ställer in en LED, kan du använda Google Assistant för att styra den med din röst.

Att konfigurera Google Assistant för att arbeta med GPIO-stiften är relativt enkelt, men kräver några extra steg. Gå till Google Action Console och leta efter enheten under Enhetsregistrering. Klicka på den och öppna egenskapsmenyn:

Vrid På av drag på och klicka på Spara.

Nu ser du till att du är inne i env virtuell miljö, klon en version av SDK till din Pi med git:

git klon https://github.com/googlesamples/assistant-sdk-python 

Eftersom det här är en virtuell miljö måste du installera RPi.GPIO innan du går framåt.

pip installera rpi.gpio 

Navigera nu till mappen som innehåller hotword.py manus.

cd-assistent-sdk-python / google-assistent-sdk / googlesamples / assistent / library 

Ändra skriptet

Du måste lägga till några rader i hotword.py-skriptet, så öppna det i nano-redigeraren:

nano hotword.py 

Under importdeklarationerna, lägg till din egen för RPi.GPIO.

importera RPi.GPIO som GPIO 

Leta efter process_event metod. På rad 66, ta bort eller kommentera utskriftsdeklarationen och lägg till ett if-meddelande för att styra LED-lampan.

#print ('Kommandot', kommando 'med parametrar', str (parametrar)) om kommandot == "action.devices.commands.OnOff": om parametrar ['on']: print ('----- ---------- ') print (' Led påslagen ') print (' --------------- ') GPIO.output (18, GPIO.HIGH) annars: skriv ut ('---------------') print ('Led avstängd') print ('---------------') GPIO.output (18, GPIO.LOW) 

Denna logik styr LED, men hittills är den inte konfigurerad för utmatning. Ställ in det i main () funktionen innan process_event-metoden heter.

GPIO.setmode (GPIO.BCM) GPIO.setup (18, GPIO.OUT, initial = GPIO.LOW) 

Nu är GPIO-stiftet inställt på utgång och initialiseras i ett lågt tillstånd. Spara och avsluta. Du kan köra ditt modifierade skript som skickar ditt modell-id-nummer (finns i Action Console) som ett argument.

python hotword.py --device-model-id DIN MODEL-ID-HÄR 

Terminalutgången är densamma som tidigare, och assistenten fungerar som standard. Nu men när du säger “OK Google, sätt på” du kommer att se en ny produktion:

Notera: Ovanstående bild har beskärts och visar endast assistenten som hörde begäran och utskriftsförklaringen till skriptet.

Du bör se din LED tänds också!

Din egen DIY Raspberry Pi Google Hemassistent

Detta projekt är en bra introduktion till att använda Google API-tjänster. Att ändra Googles exempelkod hjälper också till att lära grunderna i Python.

Med denna handledning som utgångspunkt kan du länka PI-assistenten till andra DIY Raspberry Pi-projekt. Raspberry Pi-projekt för nybörjare Raspberry Pi-projekt för nybörjare Dessa 10 Raspberry Pi-projekt för nybörjare är bra för att få en introduktion till maskinvaru- och mjukvaruutvecklingarna hos Pi, och hjälper dig att komma igång på nolltid! Läs mer och bygga dig ett röstaktiverat smart hem!

Utforska mer om: DIY Project Tutorials, Google Assistant, LED-lampor, Raspberry Pi, Smart Hubs.