Een doe-het-zelf Google Home-assistent bouwen met Raspberry Pi

Een doe-het-zelf Google Home-assistent bouwen met Raspberry Pi

Spraakgestuurde assistenten zijn snel gemeengoed geworden. Veel huizen hebben een Alexa of Google Home die alles regelt, van verlichting tot media en zelfs tijdwaarneming.





De technologie waarop deze apparaten draaien, is --- althans gedeeltelijk --- voor iedereen beschikbaar. Met de Assistent SDK van Google kun je de service op je eigen apparaten gebruiken. In deze tutorial wordt uitgelegd hoe je de Google Assistent op je Raspberry Pi instelt en hoe je een LED met stem activeert via GPIO-pinnen.





Hardware vereist voor een Raspberry Pi Home Assistant

Je zal nodig hebben:





  1. Raspberry Pi met een verse Raspbian-installatie op de SD-kaart .
  2. USB-webcam of microfoon.
  3. Externe luidspreker.
  4. Circuit van de Pi LED-zelfstudie (optioneel)
  5. Een browser die is aangemeld bij uw Google-account.

Opmerking: De uitrusting voor deze tutorial kan enigszins variëren. Ik gebruikte een extra USB-webcam puur voor de microfoon. Elke compatibele webcam of microfoon zou het goed moeten doen, en er zijn uitgebreide lijsten met Pi-compatibele apparaten helpen.

Ook gebruik ik de 3,5 mm-uitgang voor audio. HDMI en andere uitgangsbronnen werken ook, hoewel er aanpassingen aan de onderstaande 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 gevolgd worden op de Pi of via een SSH-verbinding in de Pi.





Beide manieren beginnen in de terminal, om de geluidsinstellingen te controleren. Gebruik de opdrachten een record -l en toepassen -l om beschikbare apparaten weer te geven.

hoe een programma naar een ander station te verplaatsen

De afbeelding hierboven toont de USB-webcam als kaart 1 en apparaat 0 . Noteer de kaart- en apparaatnummers voor zowel microfoon- als luidsprekeruitgang.





Zorg er nu voor dat u in de /home/pi directory, maak een nieuw bestand aan en open het in nano:

sudo nano .asoundrc

De inhoud van deze directory is afhankelijk van de kaart- en apparaatnummers die u gebruikt. Hier kun je ervoor kiezen om de voorkeur te geven aan HDMI-uitgang in plaats van 3,5 mm als je dat wilt.

Wanneer u uw versie van de bovenstaande code heeft ingevoerd, drukt u op Ctrl + X om op te slaan en af ​​te sluiten.

Test uw opstelling door een korte clip op te nemen en af ​​te spelen:

Optionele stap: Als u het ingangsvolume van uw microfoon wilt wijzigen, opent u alsamixer en druk op F6 om tussen apparaten te schakelen.

Dat is het! Het geluid is ingesteld.

Het Google-project maken

Open de browser van de Pi, of als u via SSH bent verbonden, open dan lokaal een browser. Navigeer naar de Google Action-console en klik Nieuw project .

Dit kan enkele ogenblikken duren. Als u klaar bent, laat u het venster actief en opent u een nieuw tabblad --- we komen hier zo aan.

De Google Assistent-API inschakelen

Er zijn een paar online aanpassingen die je moet maken om door te gaan. Navigeer naar de Google Assistent API-website en klik Inschakelen .

Het project vereist ook activiteitsrechten. Ga naar je Activiteit Configuratiescherm en zorg ervoor dat de volgende activiteiten zijn ingeschakeld:

  • Web- en app-activiteit (inclusief selectievakje Chrome-geschiedenis)
  • Apparaat informatie
  • Spraak- en audioactiviteit

Nu kunt u doorgaan met het registreren van het apparaat.

Uw Raspberry Pi registreren

Terug in de Action Console, selecteer Apparaatregistratie vanaf het linkerpaneel. Onder Product 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 Model registreren en klik in het volgende scherm op OAuth 2.0-referenties downloaden . Hiermee wordt een JSON-bestand naar uw computer gedownload. Maak je geen zorgen als je niet bekend bent met JSON-bestanden, maar JSON leren gebruiken is de moeite waard voor de toekomst!

De officiële Google-gids raadt aan het bestand te verplaatsen naar: /home/pi , dus open de bestandsbeheerder en doe dit nu.

Extra stap voor SSH-gebruikers:

Als je SSH gebruikt, heb je het JSON-bestand gedownload naar je lokale computer in plaats van naar de Pi. Om het over te dragen, opent u een apart terminalvenster zonder SSH-verbinding. Kopieer vanuit dit venster het geheime JSON-bestand van de client met deze opdracht:

scp ~/Downloads/client_secret_client-id.json pi@raspberry-pi-ip-address:/home/pi/

Vervang 'raspberry-pi-ip-address' door het ip-adres van je Pi en vergeet de dubbele punt voor het pad niet. Als u het JSON-bestand naar een andere locatie hebt gedownload, wijzigt u uw lokale pad om dit weer te geven. Voer uw wachtwoord in wanneer daarom wordt gevraagd en het bestand wordt gekopieerd naar de thuismap van de Pi.

Schakel terug naar de SSH-terminal en navigeer naar /home/pi . Binnenkomen ls -l om de bestanden in de directory weer te geven. U zou het overgedragen client geheime JSON-bestand moeten zien.

De SDK installeren

Google raadt aan om in een virtuele Python-omgeving te werken. Maak een nieuwe virtuele omgeving met de naam env .

Als je dit nog nooit eerder hebt gedaan, helpt deze tutorial je om te leren hoe je virtuele Python-omgevingen gebruikt.

Installeer de laatste versies van Pip, Setuptools en Wheel en activeer je virtuele omgeving:

env/bin/python -m pip install --upgrade pip setuptools wheel
source env/bin/activate

Google Assistant heeft enkele 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 Assistant SDK, Samples en OAuth-tool.

python -m pip install --upgrade google-assistant-library
python -m pip install --upgrade google-assistant-sdk[samples]
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 mislukt, controleer dan de spelling en spatiëring grondig.

Authenticatie van de Raspberry Pi

Gebruik de google-auth-oauthlib[tool] met het referentie-JSON-bestand 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. Verander de bestandsnaam niet!

U zou een bericht met een link moeten krijgen, waarin u wordt gevraagd een autorisatiecode in te plakken.

Door op de link te klikken wordt de browser geopend. U wordt gevraagd om het apparaat in te schakelen op uw Google-account. Kopieer de volgende autorisatiecode en plak deze terug in uw terminalvenster.

U zou een bevestigingslezing moeten ontvangen Inloggegevens opgeslagen: /home/pi… , wat betekent dat de Pi met succes is geautoriseerd met uw Google-account.

Het uittesten

Nu alles op zijn plaats is, is het tijd om je Pi Google Assistant te testen. Voer de assistent uit met deze opdracht:

googlesamples-assistant-hotword --project-id my-dev-project --device-model-id my-model

U moet vervangen mijn-dev-project met uw Project-ID (te vinden onder het tandwiel Instellingen van de Action Console). Jouw apparaat-model-id wordt vermeld onder het gedeelte Apparaatregistratie van de Action Console.

Probeer het! Zeg 'OK Google' en stel een vraag. U kunt de programma-uitvoer in de terminal zien terwijl u het antwoord hoort:

Dat is het! Google Assistant draait nu op je Raspberry Pi. Merk op dat als het uitvoervolume een beetje laag is, je het kunt veranderen door te zeggen: 'Hey Google, zet je volume op 80%.'

Bonus: spraakgestuurde GPIO

Het is mogelijk om lampen aan te sturen met een Arduino en Siri, maar er is een eenvoudigere methode. Als je een led instelt, kun je de Google Assistent gebruiken om deze met je stem te bedienen.

Het instellen van Google Assistant om te werken met de GPIO-pinnen is relatief eenvoudig, maar vereist wat extra stappen. Ga naar de Google Action Console en zoek uw apparaat onder Apparaatregistratie. Klik erop en open het eigenschappenmenu:

Draai de Aan uit eigenschap aan en klik op Opslaan.

Zorg er nu voor dat je binnen bent in de benijden virtuele omgeving, kloon een versie van de SDK naar je Pi met git:

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

Aangezien dit een virtuele omgeving is, moet u RPi.GPIO installeren voordat u verder gaat.

pip install rpi.gpio

Navigeer nu naar de map met de hotword.py script.

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

Het script wijzigen

Je moet een paar regels toevoegen aan het hotword.py-script, dus open het in de nano-editor:

nano hotword.py

Voeg onder de importinstructies uw eigen toe voor RPi.GPIO.

import RPi.GPIO as GPIO

Zoek de process_event methode. Op regel 66, verwijder of becommentarieer de print-instructie en voeg een if-instructie toe om de LED te besturen.

#print('Do command', command, 'with params', str(params))
if command == 'action.devices.commands.OnOff':
if params['on']:
print('---------------')
print('Led turned on')
print('---------------')
GPIO.output(18, GPIO.HIGH)
else:
print('---------------')
print('Led turned off')
print('---------------')
GPIO.output(18, GPIO.LOW)

Deze logica bestuurt de LED, maar is tot nu toe niet geconfigureerd om uit te voeren. Stel het 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 uitvoer en initialiseert hij in een lage status. Opslaan en afsluiten. U kunt uw gewijzigde script uitvoeren en uw model-ID-nummer (te vinden in de Action Console) als argument doorgeven.

python hotword.py --device-model-id YOUR-MODEL-ID-HERE

De uitgang van de terminal is hetzelfde als voorheen en de assistent werkt standaard. Als u nu echter 'OK Google, zet aan' zegt, ziet u een nieuwe uitvoer:

Opmerking: De bovenstaande afbeelding is bijgesneden en toont alleen de assistent die het verzoek hoort, en de afdrukopdracht is toegevoegd aan het script.

Je zou je LED ook moeten zien oplichten!

hoe maak ik mijn eigen snapchat-filter

Je eigen DIY Raspberry Pi Google Home Assistant

Dit project is een goede introductie tot het gebruik van Google API-services. Nu je een Google Assistent-apparaat hebt, kun je enkele van de beste Google Home-opdrachten proberen --- we hebben er een paar bekeken geweldige Google Home-minigames .

Deel Deel Tweeten E-mail Uw Windows-pc opschonen met de opdrachtprompt

Als uw Windows-pc weinig opslagruimte heeft, ruim dan de rommel op met deze snelle opdrachtprompthulpprogramma's.

Lees volgende
Gerelateerde onderwerpen
  • doe-het-zelf
  • Raspberry Pi
  • Slimme hubs
  • LED lichten
  • Google Assistent
  • Zelfstudieprojecten voor doe-het-zelvers
Over de auteur Ian Buckley(216 artikelen gepubliceerd)

Ian Buckley is een freelance journalist, muzikant, performer en videoproducent die in Berlijn, Duitsland woont. Als hij niet aan het schrijven of op het podium staat, sleutelt hij aan doe-het-zelf-elektronica of code in de hoop een gekke wetenschapper te worden.

Meer van Ian Buckley

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren