Come costruire un Google Home Assistant fai-da-te con Raspberry Pi
Annuncio pubblicitario
Gli assistenti a comando vocale sono diventati rapidamente all'ordine del giorno. Molte case hanno una casa Alexa o Google che controlla tutto, dall'illuminazione ai media e persino il cronometraggio.
La tecnologia su cui funzionano questi dispositivi è disponibile, almeno in parte, a tutti. L'Assistente SDK di Google ti consente di utilizzare il servizio sui tuoi dispositivi. Questo tutorial spiega come configurare l'Assistente Google sul tuo Raspberry Pi e attivare la voce di un LED tramite pin GPIO.
Hardware richiesto per un assistente domestico Raspberry Pi
Avrai bisogno:
- Raspberry Pi con una nuova installazione di Raspbian sulla scheda SD Come installare un sistema operativo su un Raspberry Pi Come installare un sistema operativo su un Raspberry Pi Ecco come installare un sistema operativo su Raspberry Pi e come clonare la configurazione perfetta per una rapida ripristino di emergenza. Leggi di più .
- Webcam o microfono USB.
- Altoparlante esterno
- Circuito dal tutorial Pi LED Come programmare il tuo Raspberry Pi per controllare le luci a LED Come programmare il tuo Raspberry Pi per controllare le luci a LED Stai cercando un progetto Raspberry Pi facile per iniziare con la codifica e l'elettronica? Prova a collegare alcuni LED e codificali per accenderli e spegnerli! Maggiori informazioni (facoltativo)
- Un browser collegato al tuo account Google.
Nota: l'attrezzatura per questo tutorial può variare leggermente. Ho usato una webcam USB di riserva esclusivamente per il suo microfono. Qualsiasi webcam o microfono compatibile dovrebbe andare bene, e ci sono lunghi elenchi di dispositivi compatibili Pi per aiutare.
Inoltre, sto usando l'uscita da 3, 5 mm per l'audio. Funzioneranno anche HDMI e altre fonti di uscita, anche se richiederà modifiche alla configurazione del suono di seguito.
Collegare la webcam e l'altoparlante USB e configurare il circuito LED se lo si utilizza.
Impostazione del suono
Questo tutorial può essere seguito direttamente sul Pi o tramite una connessione SSH nel Pi.
Entrambe le modalità iniziano nel terminale, per verificare le impostazioni audio. Utilizzare i comandi arecord -l e aplay -l per elencare i dispositivi disponibili.
L'immagine sopra mostra la webcam USB come scheda 1 e dispositivo 0 . Prendi nota della scheda e dei numeri di dispositivo per l'uscita del microfono e degli altoparlanti.
Ora, assicurandoti di essere nella directory / home / pi, crea un nuovo file e aprilo in nano:
sudo nano .asoundrc
Il contenuto di questa directory differirà a seconda della carta e dei numeri di dispositivo che stai utilizzando. Qui è possibile scegliere di preferire l'uscita HDMI anziché 3, 5 mm, se lo si desidera.
Dopo aver inserito la versione del codice precedente, premi Ctrl + X per salvare ed uscire.
Prova la tua configurazione registrando e riproducendo una breve clip:
Passaggio facoltativo: se si desidera modificare il volume di ingresso del microfono, aprire alsamixer e premere F6 per passare da un dispositivo all'altro.
Questo è tutto! Il suono è impostato.
Creazione del progetto Google
Apri il browser Pi, in alternativa, se sei connesso tramite SSH, apri un browser localmente. Vai a Google Action Console e fai clic su Nuovo progetto .
Questo potrebbe richiedere alcuni minuti. Al termine, lascia la finestra attiva e apri una nuova scheda — ci arriveremo tra un momento.
Abilitazione dell'API di Google Assistant
Ci sono alcune modifiche online che dovrai fare per continuare. Vai al sito Web dell'API di Google Assistant e fai clic su Abilita .
Il progetto richiede anche autorizzazioni di attività. Vai al pannello di controllo delle attività e assicurati che le seguenti attività siano attivate:
- Attività Web e app (inclusa la casella di controllo Cronologia Chrome)
- Informazioni sul dispositivo
- Attività vocale e audio
Ora puoi passare alla registrazione del dispositivo.
Registrazione di Raspberry Pi
Di nuovo in Action Console, seleziona Registrazione dispositivo dal pannello di sinistra. Sotto Prodotto crea un nome facile da ricordare per il tuo dispositivo. Il nome del produttore non è importante (ma deve essere presente) e selezionare Auto per il tipo di dispositivo.
Fai clic su Registra modello e nella schermata successiva fai clic su Scarica credenziali OAuth 2.0 . Questo scarica un file JSON sul tuo computer. Se non hai familiarità con i file JSON, non ti preoccupare, ma impara come utilizzare JSON JSON Python Parsing: una guida semplice JSON Python Parsing: una guida semplice Ci sono librerie e kit di strumenti disponibili per l'analisi e la generazione di JSON da quasi qualsiasi lingua e ambiente. Questo articolo si concentra su metodi e problemi derivanti dall'analisi di Python JSON. Leggi di più vale la pena fare per il futuro!
La guida ufficiale di Google consiglia di spostare il file in / home / pi, quindi apri il file manager e fallo ora.
Passaggio aggiuntivo per gli utenti SSH:
Se stai usando SSH avrai scaricato il file JSON sul tuo computer locale invece che sul Pi. Per trasferirlo, aprire una finestra terminale separata senza connessione SSH. Da questa finestra, copia sul file JSON segreto del client usando questo comando:
scp ~/Downloads/client_secret_client-id.json :/home/pi/
Sostituisci "raspberry-pi-ip-address" con l'indirizzo IP del tuo Pi e non dimenticare i due punti prima del percorso. Se hai scaricato il file JSON in un'altra posizione, modifica il percorso locale per riflettere questo. Inserisci la tua password quando richiesto e il file verrà copiato nella home directory del Pi.
Torna al terminale SSH e vai a / home / pi . Immettere ls -l per elencare i file nella directory. Dovresti vedere il file JSON segreto del client trasferito.
Installazione dell'SDK
Google consiglia di lavorare in un ambiente virtuale Python. Crea un nuovo ambiente virtuale chiamato env .
Se non l'hai mai fatto prima, questo tutorial ti aiuterà a imparare come usare gli ambienti virtuali Python.
Installa le ultime versioni di Pip, Setuptools e Wheel e attiva il tuo ambiente virtuale:
env/bin/python -m pip install --upgrade pip setuptools wheel source env/bin/activate
Google Assistant ha alcune dipendenze che dovresti installare ora nell'ambiente virtuale.
sudo apt-get install portaudio19-dev libffi-dev libssl-dev libmpg123-dev
Infine, installa Google Assistant SDK, Samples e lo strumento OAuth.
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]
Questo è tutto il necessario per iniziare a correre. Se una delle installazioni non riesce, controllare l'ortografia e la spaziatura accuratamente.
Autenticazione di Raspberry Pi
Utilizzare google-auth-oauthlib [strumento] con il file JSON delle credenziali scaricato in precedenza per autenticare Raspberry Pi.
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
Dovrai sostituire YOUR_CLIENT_SECRET_ID con il file scaricato, quindi vale la pena copiare prima il nome file. Questo ID client deve essere corretto. Non modificare il nome file!
Dovresti ricevere un messaggio con un link che ti chiede di incollare un codice di autorizzazione.
Facendo clic sul collegamento si apre il browser. Ti verrà richiesto di abilitare il dispositivo sul tuo account Google. Copia il codice di autorizzazione che segue e incollalo nuovamente nella finestra del tuo terminale.
Dovresti ricevere una conferma leggendo Credenziali salvate: / home / pi ..., il che significa che Pi è stato autorizzato con successo con il tuo account Google.
Provandolo
Ora che tutto è a posto, è il momento di testare il tuo Pi Google Assistant. Esegui l'assistente con questo comando:
googlesamples-assistant-hotword --project-id my-dev-project --device-model-id my-model
Dovrai sostituire my-dev-project con il tuo ID progetto (che si trova nella ruota dentata Impostazioni di Action Console). L' ID modello del dispositivo è elencato nella sezione Registrazione dispositivo di Action Console.
Provalo! Dì "OK Google" e fai una domanda. Puoi vedere l'output del programma nel terminale mentre senti la risposta:
Questo è tutto! Google Assistant è ora in esecuzione sul tuo Raspberry Pi. Nota che se il volume di uscita è un po 'basso, puoi cambiarlo dicendo "Ehi Google, alza il volume all'80%".
Bonus: Voice Activated GPIO
È possibile controllare le luci con un Arduino e Siri, ma esiste un metodo più semplice. Se imposti un LED, puoi utilizzare l'Assistente Google per controllarlo con la tua voce.
La configurazione di Google Assistant per funzionare con i pin GPIO è relativamente semplice, ma richiede alcuni passaggi aggiuntivi. Vai a Google Action Console e trova il tuo dispositivo in Registrazione dispositivo. Cliccaci sopra e apri il menu dei tratti:
Attiva il tratto OnOff e fai clic su Salva.
Ora assicurandoti di essere all'interno dell'ambiente virtuale env, clona una versione dell'SDK sul tuo Pi usando git:
git clone https://github.com/googlesamples/assistant-sdk-python
Poiché si tratta di un ambiente virtuale, dovrai installare RPi.GPIO prima di andare avanti.
pip install rpi.gpio
Ora, vai alla cartella contenente lo script hotword.py .
cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/library
Modifica dello script
Dovrai aggiungere alcune righe allo script hotword.py, quindi aprilo nell'editor nano:
nano hotword.py
Sotto le dichiarazioni di importazione, aggiungi il tuo per RPi.GPIO.
import RPi.GPIO as GPIO
Cerca il metodo process_event . Alla riga 66, rimuovere o commentare l'istruzione print e aggiungere un'istruzione if per controllare il LED.
#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)
Questa logica controlla il LED, ma finora non è configurato per l'output. Impostalo nella funzione main () prima di chiamare il metodo process_event.
GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT, initial=GPIO.LOW)
Ora il pin GPIO è impostato su output e inizializza in uno stato basso. Salva ed esci. È possibile eseguire lo script modificato passando il numero ID modello (disponibile in Action Console) come argomento.
python hotword.py --device-model-id YOUR-MODEL-ID-HERE
L'uscita del terminale è la stessa di prima e l'assistente funzionerà come standard. Ora però, quando dici "OK Google, attiva" vedrai un nuovo output:
Nota: l'immagine sopra è stata ritagliata, mostrando solo l'assistente che ascolta la richiesta e l'istruzione print aggiunta allo script.
Dovresti vedere anche il tuo LED acceso!
Il tuo assistente Google Home Raspberry Pi fai-da-te
Questo progetto è una buona introduzione all'uso dei servizi API di Google. Ora che hai un dispositivo Google Assistant, prova alcuni dei migliori comandi di Google Home I cheat sheet dei comandi di Google Home I cheat sheet dei comandi di Google Home Il nostro cheat sheet dei comandi di Google Home contiene tonnellate di azioni utili, tra cui intrattenimento, informazioni e automazione. Ulteriori informazioni — abbiamo esaminato alcuni fantastici mini giochi di Google Home 15 Comandi di Google Home per i mini giochi e Altro 15 Comandi di Google Home per i mini giochi e altro Puoi fare tante cose con i comandi di Google Home. Ecco alcuni comandi divertenti di Google Home che vale la pena provare. Leggi di più .
Ulteriori informazioni su: Tutorial per progetti fai-da-te, Assistente Google, Luci a LED, Raspberry Pi, Smart Hub.