Come costruire un Google Home Assistant fai da te con Raspberry Pi

Come costruire un Google Home Assistant fai da te con Raspberry Pi / Fai da te

Gli assistenti a comando vocale sono diventati rapidamente comuni. Molte case hanno un Alexa o Google Home che controllano tutto, dall'illuminazione ai media, e persino il cronometraggio.

La tecnologia su cui girano 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 impostare l'Assistente Google sul tuo Raspberry Pi e attivare la voce di un LED tramite pin GPIO.

Hardware richiesto per un assistente domiciliare Raspberry Pi

Avrai bisogno:

  1. Raspberry Pi con una nuova installazione di Raspbian sulla scheda SD Come installare un sistema operativo sul tuo Raspberry Pi Come installare un sistema operativo sul tuo Raspberry Pi Ecco come ottenere un nuovo SO installato e funzionante sul tuo Pi - e come clonare il tuo installazione perfetta per un rapido ripristino di emergenza. Leggi di più .
  2. Webcam o microfono USB.
  3. Altoparlante esterno.
  4. Circuito dal tutorial sul LED Pi Come programmare il tuo Raspberry Pi per controllare le luci a LED Come programmare il tuo Raspberry Pi per controllare le luci a LED Alla ricerca di un progetto Raspberry Pi facile per iniziare con la codifica e l'elettronica? Prova a collegare alcuni LED e a codificarli per accendere e spegnere! Leggi di più (opzionale)
  5. Un browser firmato nel tuo account Google.

Nota: L'attrezzatura per questo tutorial può variare leggermente. Ho usato una webcam USB di ricambio esclusivamente per il suo microfono. Qualsiasi webcam o microfono compatibile dovrebbe funzionare correttamente e sono disponibili numerosi elenchi di dispositivi compatibili con Pi.

Inoltre, sto usando l'uscita da 3,5 mm per l'audio. Anche l'HDMI e altre sorgenti di uscita funzioneranno, anche se sarà necessario apportare delle modifiche alla configurazione del suono di seguito.

Collegare la webcam USB e l'altoparlante 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 controllare le impostazioni audio. Usa i comandi arecord -l e aplay -l per elencare i dispositivi disponibili.

L'immagine sopra mostra la webcam USB come carta 1 e dispositivo 0. Prendi nota dei numeri di scheda e dispositivo per l'uscita del microfono e dell'altoparlante.

Ora, assicurati di essere nel / Home / pi directory, crea un nuovo file e aprilo in nano:

sudo nano .asoundrc

Il contenuto di questa directory varia in base al numero di scheda e dispositivo che si sta utilizzando. È qui che puoi scegliere di favorire l'uscita HDMI anziché 3,5 mm se lo desideri.

Quando hai inserito la tua versione del codice sopra, premi Ctrl + X per salvare ed uscire.

Verifica 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 di Pi, in alternativa, se sei connesso tramite SSH, apri un browser localmente. Accedi a Google Action Console e fai clic su Nuovo progetto.

Questo potrebbe richiedere alcuni istanti. Al termine, lascia la finestra attiva e apri una nuova scheda: ci arriveremo tra poco.

Abilitazione dell'API Assistente Google

Ci sono alcuni aggiustamenti online che devi fare per continuare. Accedi al sito Web dell'API Assistente Google e fai clic su Abilitare.

Il progetto richiede anche permessi di attività. Vai al pannello Controllo attività e assicurati che le seguenti attività siano attivate:

  • Attività web e app (inclusa la casella di controllo Cronologia di Chrome)
  • Informazioni sul dispositivo
  • Attività vocale e audio

Ora puoi passare alla registrazione del dispositivo.

Registrazione del tuo Raspberry Pi

Di nuovo nella Console azioni, seleziona Registrazione del 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.

Clic Registra modello, e nella schermata successiva fai clic Scarica le credenziali OAuth 2.0. Questo scarica un file JSON sul tuo computer. Se non hai familiarità con i file JSON, non preoccuparti, ma impara a usare JSON JSON Python Parsing: una semplice guida JSON Python Parsing: una guida semplice Ci sono librerie e toolkit 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 di 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 si utilizza SSH, il file JSON verrà scaricato nella macchina locale anziché in Pi. Per trasferirlo, apri una finestra di terminale separata senza connessione SSH. Da questa finestra, copia il file JSON segreto del client usando questo comando:

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

Sostituire “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. Immettere la password quando richiesto e il file verrà copiato nella directory home di Pi.

Ritorna al terminale SSH e vai a / Home / pi. accedere ls -l per elencare i file nella directory. Dovresti vedere il file JSON segreto client trasferito.

Installazione dell'SDK

Google consiglia di lavorare in un ambiente virtuale Python. Crea un nuovo ambiente virtuale chiamato ENV.

Se non lo 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 ruota sorgente env / bin / activate

Google Assistant ha alcune dipendenze che dovresti installare nell'ambiente virtuale ora.

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

Infine, installa lo strumento Google Assistant SDK, Samples e 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 ciò che serve per iniziare. Se una qualsiasi installazione fallisce, controllare accuratamente l'ortografia e la spaziatura.

Autenticare il Raspberry Pi

Utilizzare il google-auth-oauthlib [strumento] con il file JSON credenziale scaricato in precedenza per autenticare il tuo 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 del file. Questo ID cliente deve essere corretto. Non cambiare il nome del file!

Dovresti ricevere un messaggio con un link, chiedendoti 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 terminale.

Dovresti ricevere una conferma di lettura Credenziali salvate: / home / pi ... , il che significa che Pi è stato autorizzato con successo con il tuo account Google.

Provalo

Ora che tutto è a posto, è tempo 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-progetto con il tuo ID progetto (che si trova sotto le Impostazioni a cremagliera della Console azioni). Il tuo Dispositivo-model-id è elencato nella sezione Registrazione dispositivo della Console azioni.

Provalo! Dire “OK Google” e fare una domanda Puoi vedere l'output del programma nel terminale mentre ascolti la risposta:

Questo è tutto! Google Assistant è ora in esecuzione sul tuo Raspberry Pi. Si noti che se il volume di output è un po 'basso, è possibile cambiarlo dicendo “Ciao Google, aumenta il tuo volume fino all'80%.”

Bonus: GPIO attivato dalla voce

È 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.

Configurare Google Assistant per lavorare con i pin GPIO è relativamente semplice, ma richiede alcuni passaggi aggiuntivi. Vai alla Google Action Console e trova il tuo dispositivo in Registrazione dispositivo. Fare clic su di esso e aprire il menu Tratti:

Gira il Acceso spento tratto su, e fare clic Salvare.

Ora assicurati di essere dentro ENV ambiente virtuale, clonare 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, è necessario installare RPi.GPIO prima di andare avanti.

pip installa rpi.gpio 

Ora vai alla cartella contenente il hotword.py copione.

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 istruzioni di importazione, aggiungi il tuo per RPi.GPIO.

importare RPi.GPIO come GPIO 

Cerca il process_event metodo. Alla riga 66, rimuovere o commentare la dichiarazione di stampa e aggiungere un'istruzione if per controllare il LED.

#print ('Do comando', comando, 'con params', str (params)) se comando == "action.devices.commands.OnOff": se params ['on']: print ('----- ---------- ') stampa (' Led acceso ') stampa (' --------------- ') GPIO.output (18, GPIO.HIGH) else: print ('---------------') print ('Led spento') print ('---------------') GPIO.output (18, GPIO.LOW) 

Questa logica controlla il LED, ma finora non è configurato per l'output. Configura nel principale() funzione prima che venga richiamato il metodo process_event.

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

Ora il pin GPIO è impostato per l'output e si inizializza in uno stato basso. Salva ed esci. È possibile eseguire lo script modificato passando il numero id del modello (trovato nella Action Console) come argomento.

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

L'uscita del terminale è la stessa di prima e l'assistente funzionerà come standard. Ora però, quando dici “OK Google, accendi” vedrai un nuovo risultato:

Nota: L'immagine sopra è stata ritagliata, mostrando solo l'assistente che ha ascoltato la richiesta e l'istruzione di stampa aggiunta allo script.

Dovresti vedere anche il LED acceso!

Il tuo fai da te Home Raspberry Pi Google Home Assistant

Questo progetto è una buona introduzione all'utilizzo dei servizi dell'API di Google. La modifica del codice di esempio di Google aiuta anche a imparare le basi di Python.

Con questo tutorial come base, puoi collegare l'Assistente PI ad altri progetti Raspberry Pi fai da te Progetti Raspberry Pi per principianti Progetti Raspberry Pi per principianti Questi 10 progetti Raspberry Pi per principianti sono ottimi per ottenere un'introduzione alle funzionalità hardware e software del Pi, e ti aiuterà ad alzarti e scappare in poco tempo! Leggi di più e costruisci una casa intelligente a comando vocale!

Scopri di più su: Esercitazioni sui progetti fai-da-te, Assistente Google, Luci a LED, Raspberry Pi, Smart Hub.