Sommario:

"MicroDot" per LattePanda (o Raspberry Pi): 7 passaggi (con immagini)
"MicroDot" per LattePanda (o Raspberry Pi): 7 passaggi (con immagini)

Video: "MicroDot" per LattePanda (o Raspberry Pi): 7 passaggi (con immagini)

Video:
Video: MicroDot/MicroPython - Handling dynamic content 2024, Dicembre
Anonim
Immagine
Immagine

Il MicroDot è un "pulsante" Alexa fatto in casa progettato per essere collegato a un LattePanda o a un Raspberry Pi, con l'app Alexa Sample installata. È un piccolo altoparlante con LED e attivazione touch/speech ed è ideale per l'uso su una scrivania o in auto.

*Il LattePanda per questo progetto è stato gentilmente fornito da DFRobot

Passaggio 1: panoramica del sistema

panoramica del sistema
panoramica del sistema

LATTE PANDA

Il LattePanda è un piccolo computer Windows 10 (circa delle dimensioni di un Raspberry Pi) con un Arduino integrato per l'interfaccia con il mondo reale. È davvero abbastanza elegante - ed è un buon sostituto del Raspberry Pi - specialmente se tu (come me) hai problemi a fare i conti con Linux.

Ho installato l'app di esempio Alexa su Panda e ho implementato il mio motore di wakeword basato sull'SDK di riconoscimento vocale integrato di Windows.

MICROPUNTI

Il MicroDot è costituito da un piccolo amplificatore e altoparlante con una griglia sensibile al tocco e un array di LED blu/bianco. Il MicroDot è stato originariamente progettato per essere posizionato sul cruscotto della mia auto per fornire la mia soluzione Alexa per auto (da abbinare al mio progetto precedente: l'autoradio compatibile con Alexa). Oltre ad avere un'opzione di sveglia, volevo l'attivazione tramite tocco perché Alexa avrà difficoltà a sentire la mia sveglia quando la musica è ad alto volume! (Una volta attivato, Panda invierà un segnale allo stereo per abbassare il volume mentre Alexa sta ascoltando/parlando).

PI DI LAMPONE

Per coloro che sono più fluenti in "Raspberry Pi", ho descritto alla fine di questo Instructable come interfacciare il MicroDot con un Rapsberry Pi 3.

Passaggio 2: circuito MicroDot

Circuito MicroDot
Circuito MicroDot
Circuito MicroDot
Circuito MicroDot
Circuito MicroDot
Circuito MicroDot

PARTI

6 x resistori SMD 220R2 x resistori SMD 470R1 x condensatore SMD 10uF1 x modulo sensore tattile TTP223 (https://www.ebay.com/itm/192097635565)1 x modulo amplificatore PAM8403 3W (https://www.ebay.com/ itm/221895096190)1 x potenziometro lineare singolo da 10K (https://www.ebay.com/itm/401105807680)1 x condensatore ceramico da 50pF3 x LED blu da 3 mm3 x LED bianchi da 3 mm1 x altoparlante da 1,7 pollici 4ohm 3W1 x cavo nero sottile da vecchi auricolari1 x cavo di prolunga USB sottile nero da 1 m*

COSTRUZIONE

Il PCB MicroDot è stato realizzato con il metodo del ferro su toner su un pannello a un lato di 0,8 mm di spessore - a questo spessore può essere tagliato grossolanamente per modellarlo con forbici affilate e quindi facilmente limato per modellarlo. Montare prima tutti i componenti a montaggio superficiale.

Un filo deve essere collegato alla superficie tattile del sensore, quindi una piccola area deve essere raschiata via per saldare. Ho scoperto che nella sua modalità raw, il sensore era troppo sensibile: funzionava bene, ma una volta montato nell'involucro spesso veniva attivato in modo errato a causa della sua vicinanza all'altoparlante in metallo. Ho messo a terra l'altoparlante in metallo, il che ha aiutato in qualche modo, ma alla fine ho dovuto fare riferimento alla scheda tecnica.

La scheda tecnica TTP223 afferma che è possibile regolare la sensibilità posizionando un condensatore (da 0 a 50 pf) tra il sensore tattile e la massa. Il sensore ha funzionato bene con un condensatore da 50 pf. Puoi vedere il posizionamento di questo nella foto della sezione successiva.

Due cavi sono usati per collegare il MicroDot al Panda:- un sottile cavo nero da un vecchio paio di auricolari per collegare l'audio- un sottile cavo USB è stato usato per connettersi al GPIO (sensore touch/LED). Avrai bisogno di un cavo con 6 connettori separati (5 interni + schermo). *Attenzione che alcuni cavi USB economici non hanno un pin di terra/schermo separato, o questi due possono essere collegati internamente (verificalo prima di tagliare il cavo assicurandoti che ci sia continuità tra le parti metalliche esterne del maschio e della femmina spine, e che non vi sia continuità tra il pin di massa e le parti metalliche esterne).

Usa le connessioni del cavo USB: rosso = + 5 V, scudo = GND, nero = sensore tattile, LED bianco = bianco, LED verde = blu. Invece di tagliare i pug e cablarli, potresti voler fare quello che ho fatto e tieni le spine accese e taglia una sezione lunga e una corta (diciamo 200 mm) e collega le due estremità del cavo insieme. In questo modo l'unità è staccabile. Assicurati solo di non collegare alcun dispositivo USB effettivo o di collegarlo a una normale porta USB!

Passaggio 3: costruzione MicroDot

Costruzione MicroDot
Costruzione MicroDot
Costruzione MicroDot
Costruzione MicroDot
Costruzione MicroDot
Costruzione MicroDot
Costruzione MicroDot
Costruzione MicroDot

PARTI STAMPATE IN 3D

Ci sono quattro parti stampate in 3D nel file zip allegato:1. Guscio principale MicroDot - stampato in PLA2 nero. Base MicroDot - stampata in PLA3 nero. Anello LED - stampato in PLA bianco (trasparente o traslucido potrebbe essere meglio per aiutare a diffondere la luce in modo più uniforme)4. Distanziatore PCB - qualsiasi colore - inserito tra altoparlante e PCB.

Bulloni e dadi M2 vengono utilizzati per avvitare la base al guscio. Tre bulloni M2 devono essere fusi nelle fessure all'interno del guscio. Questi sono piuttosto piccoli e potrebbe essere necessario "saldarli" in posizione con del filamento aggiuntivo.

ARRAY LED

I LED bianco e blu sono montati nell'array alternativamente come mostrato nelle immagini. I cavi sono piegati a 90 gradi contro la parte inferiore del LED e i cavi sono fusi nell'anello con un saldatore caldo (notare la polarità qui). La parte inferiore dei LED è limata in modo che sia piatta rispetto alla superficie dell'anello.

I catodi dei LED sono tutti collegati insieme con un anello di filo e questi si collegano al pin più in basso dell'intestazione. Gli altri pin dell'intestazione devono essere alternati blu/bianco per ogni singolo LED

METTENDOLO INSIEME

La griglia è stata tagliata da un porta carta da scrivania (nella foto) con un filo saldato su un bordo. Questo viene inserito prima nel guscio, quindi nell'array di LED (questo deve essere inserito in un angolo come mostrato, con la fessura allineata con uno dei perni delle viti). L'altoparlante è il prossimo (posiziona del nastro sottile intorno alla parte superiore per isolarlo dal bordo del PCB). Quindi il distanziatore e il PCB si trovano sopra. Avvitare la base per tenere tutto insieme.

Quando ho collegato il cavo audio a LattePanda, ho scoperto che avevo bisogno di utilizzare un filtro loop di massa audio (https://www.ebay.com/itm/371801191297) per ottenere un buon suono. Nota che nelle foto utilizzo l'uscita audio del mio adattatore video HDMI-VGA, ma va bene utilizzare il jack di uscita audio integrato.

Avrai anche bisogno di un microfono USB (https://www.ebay.com/itm/332148968227).

Passaggio 4: il LattePanda

Il LattePanda
Il LattePanda
Il LattePanda
Il LattePanda

IMPOSTARE

Panda è disponibile nei modelli 2G/32G e 4G/64G, con o senza licenza Windows 10. Il modello che ho usato era la versione 2G/32G con licenza Windows 10:

Consulta la documentazione ufficiale per configurare il tuo LattePanda (https://docs.lattepanda.com) Non c'è niente di troppo complicato qui, ma prendi nota delle istruzioni per accendere il tuo Panda (https://docs.lattepanda.com/ content/getStarted/power…).

Tutto sembrava funzionare la prima volta per me (che è un bel cambiamento rispetto alle mie esperienze con Raspberry Pi).

Una cosa importante è che hai davvero bisogno di un qualche tipo di raffreddamento per la Panda. Ho usato alcuni dissipatori adesivi nella parte superiore e inferiore (la parte inferiore diventa particolarmente calda).

Questo diagramma descrive in dettaglio gli ingressi e le uscite di Arduino: https://docs.lattepanda.com/content/hardware/inputs… Useremo l'array di connettori a 3 pin sul lato sinistro per connetterci al MicroDot (D9, D10 e D11), così come il jack di uscita audio.

Passaggio 5: LattePanda - Installa l'app di esempio Alexa

LattePanda - Installa l'app di esempio Alexa
LattePanda - Installa l'app di esempio Alexa

SCARICA

L'app di esempio Alexa è disponibile qui:

github.com/alexa/alexa-avs-sample-app/

Premi il pulsante Clona o Scarica e scarica come.zip

Crea una directory sull'unità c C:\ALEXA ed estrai il contenuto dello zip in modo che la directory zippata chiamata campioni si trovi direttamente nella directory ALEXA (es. C:\ALEXA\samples\…)

INSTALLAZIONE

Le istruzioni complete ufficiali su come installare su Windows sono qui:

github.com/alexa/alexa-avs-sample-app/wiki…

Ci sono alcuni passaggi e ci vuole un po' di tempo, ma ho scoperto che con Windows tutto è andato liscio la prima volta.

Avrai bisogno di un buon editor di testo per modificare alcuni dei file di configurazione (il blocco note non va bene in quanto i file hanno terminazioni di linea in stile Linux). Ho usato Notepad++ che è disponibile qui:

Alcune note riguardanti le istruzioni ufficiali:

Parte 3 - Dipendenze

My Panda è a 64 bit, quindi ho scaricato tutte le versioni a 64 bit, ma se stai installando su un sistema a 32 bit dovrai utilizzare le versioni a 32 bit. Nota: non mischiare versioni a 32 e 64 bit delle dipendenze.

Il link mostrato per VLC media player, ti porterà alla versione a 32 bit. Per ottenere la versione a 64 bit, vai a questo link: https://www.videolan.org/vlc/download-windows.html e sul pulsante di download, seleziona la freccia, quindi Installer per la versione a 64 bit.

Per l'installazione di JDK ho usato la versione:jdk-8u144-windows-x64Per nodejs ho usato: Windows Installer (.msi) 64 bitPer Maven:apache-maven-3.5.0-bin.zipPer OpenSSL ho usato:Win64 OpenSSL v1.1.0f

Parte 5 - Metodo di autenticazione

Scegli 5a - Server Nodejs. Se ricevi un errore durante l'esecuzione del comando npm, devi aggiungere la directory nodejs alla variabile di ambiente del percorso (è spiegato nelle istruzioni come farlo).

Parte 6 - Esecuzione dell'app di esempio

Quando si modifica il file config.json, impostare wakeWordAgentEnabled su true, poiché verrà installato un motore di parole di riattivazione personalizzato nella sezione successiva (il motore di parole di riattivazione incluso nell'app di esempio funziona solo con Linux).

Se si verifica un errore durante l'esecuzione del comando mvn, è necessario aggiungere la directory maven\bin alla variabile di ambiente del percorso.

Quando esegui l'app, dovresti ottenere la GUI mostrata nello screenshot. Quando fai clic sull'icona sarai in grado di parlare con Alexa. Questa è l'app Alexa di base, ma avremo bisogno di più di questa!

I prossimi passi saranno installare un motore di parole di attivazione personalizzato in modo che tu possa semplicemente dire "Alexa" per attivare e avere anche la possibilità di utilizzare un sensore tattile tramite l'ingresso Arduino. Dobbiamo anche eseguire l'esecuzione automatica dell'app all'avvio e accendere alcuni LED quando Alexa ascolta e parla.

Passaggio 6: LattePanda - Installa il motore WakeWord personalizzato

LattePanda - Installa motore WakeWord personalizzato
LattePanda - Installa motore WakeWord personalizzato

MOTORE WAKEWORD

Un motore WakeWord consente ad Alexa di essere svegliato da una parola pronunciata (di solito "Alexa"), invece di dover fare clic su un pulsante. L'app di esempio ha due opzioni per il motore WakeWord: Sensory o motori di parole di attivazione KITT. AI. l'implementazione per questi nell'app di esempio, tuttavia, funziona solo per Linux. Entrambi questi motori sono inoltre soggetti a determinati requisiti di licenza.

Qui implementerò un motore di parole di riattivazione personalizzato basato sull'SDK di riconoscimento vocale di Windows 10. Quindi anche questo è privo di requisiti di licenza aggiuntivi.

DIPENDENZE DI INSTALLAZIONE

Microsoft Speech Platform - Runtime (versione 11)https://www.microsoft.com/en-gb/download/details.a…x86_SpeechPlatformRuntime\SpeechPlatformRuntime.msi (32 bit) o x64_SpeechPlatformRuntime\SpeechPlatformRuntime.msi (64 bit)

Microsoft Speech Platform - Lingue di runtime (versione 11)

Il mio motore WakeWord personalizzato è stato scritto in C# in Visual Studio 2017. Ho fornito qui l'eseguibile finale e anche il codice sorgente. Se vuoi compilarlo da solo, avrai bisogno anche di questo:

Microsoft Speech Platform - Software Development Kit (SDK) (versione 11) https://www.microsoft.com/en-gb/download/details….|x86_MicrosoftSpeechPlatformSDK\MicrosoftSpeechPlatformSDK.msi (32 bit) o x64_MicrosoftSpeechPlatformSDK\MicrosoftSpeechPlatformSDK.msi 64bit)

Metti WakeWordPanda.exe (e alexa_run.bat) nella directory ALEXA. Questo programma svolge le seguenti attività: - Ascolta la parola sveglia "Alexa" - Monitora il sensore di input tattile - Controlla i LED BLU e BIANCO

Nota che l'ho sviluppato su un altro computer Windows 10 in modo da non dover installare Visual Studio su LattePanda, poiché non volevo utilizzare i Gigabyte. Ho collegato un Arduino Uno installato con StandardFirmata (https://www.lattepanda.com/docs/#SetuptheArduino) al computer di sviluppo in modo da poter sviluppare anche con gli input/output di Arduino. Il codice sorgente di Visual Studio è anche allegato se vuoi modificarlo e/o compilarlo tu stesso.

MODIFICA IL CLIENT JAVA

Il client Java necessita di alcune righe aggiuntive aggiunte al codice. Questo per consentire ai LED di funzionare correttamente:

Quando Alexa è in ascolto, al motore WakeWord viene inviato un segnale PAUSE_WAKE_WORD_ENGINE. Ho usato questo segnale per sapere quando accendere il BLU (LED di ascolto di Alexa). Quando viene ricevuto il segnale RESUME_WAKE_WORD_ENGINE, il LED blu si spegne e il LED BIANCO (LED che parla Alexa) si accende. Il codice aggiuntivo invia un altro segnale RESUME_WAKE_WORD_ENGINE quando Alexa smette di parlare, in modo che il motore WakeWord sappia quando spegnere il LED bianco.

Vai a: C:\ALEXA\samples\javaclient\src\main\java\com\amazon\alexa\avs e apri AVSController.java nel tuo editor di testo. Copia il codice dal file Extra_Code.txt allegato. Deve essere inserito in due punti:

1. Nella funzione public void onAlexaSpeechFinished() subito dopo l'istruzione: dependiveDirectiveThread.unblock();

2. Nella funzione private void handleAudioPlayerDirective (direttiva direttiva) direttamente prima dell'istruzione: player.handleStop();

Ho anche riproposto il segnale CONFIRM in modo che il motore WakeWord sappia se Alexa ha risposto. Questo serve per annullare un timeout di 5 secondi che si verificherà in caso di mancata risposta. Copia il codice da Extra_Code2.txt e inseriscilo in un unico posto:

1. Nella funzione public void onAlexaSpeechStarted() direttamente dopo l'istruzione dipendenteDirectiveThread.block();

Ora devi ricompilare il client Java. Apri un prompt dei comandi e vai a C:\ALEXA\samples\javaclient Invio: mvn install per ricompilare.

Se avvii il servizio Companion e l'app Java Alexa come prima, quindi fai doppio clic su WakeWordPanda.exe, attendi che si connetta, quindi dovresti essere in grado di attivare Alexa dicendo "Alexa".

MICROPUNTI

Se colleghi il cavo "USB" di MicroDot a LattePanda come mostrato nello schema e inserisci il cavo audio, ora dovrebbe essere completamente funzionante. Pronunciare la parola sveglia o toccare la griglia dovrebbe attivare Alexa e i LED blu dovrebbero accendersi. I LED bianchi dovrebbero accendersi quando Alexa risponde.

IMPOSTAZIONE AUTO RUN

Invece di digitare manualmente tutti i comandi per avviare tutto, puoi utilizzare lo script alexa_run.bat. Questo attenderà una connessione Internet, quindi invocherà i moduli separati (servizio compagno, client java, motore wake-word).

L'ultimo passaggio consiste nel far eseguire tutto automaticamente all'avvio:

1. Fare clic con il pulsante destro del mouse su auto-run.bat e selezionare crea collegamento.2. Premi ctrl+R e digita shell:startup. Questo aprirà la cartella di avvio.3. Trascina il collegamento che hai creato nella cartella di avvio.

Alexa ora si eseguirà automaticamente all'avvio (ci vogliono circa 30 secondi per l'inizializzazione dopo l'avvio).

Passaggio 7: MicroDot per Raspberry Pi

MicroDot per Raspberry Pi
MicroDot per Raspberry Pi
MicroDot per Raspberry Pi
MicroDot per Raspberry Pi

(Se vuoi usare un Raspberry Pi 3 invece di un LattePanda).

SCARICA

Scarica l'app di esempio Alexa da qui:

Premi il pulsante Clona o Scarica e scarica come.zip. Decomprimi in modo che la cartella alexa-ava-sample-app sia sul desktop.

INSTALLAZIONE

Segui le istruzioni complete ufficiali qui (nota: imposta in modo che la cartella alexa-ava-sample-app sul desktop):

github.com/alexa/alexa-avs-sample-app/wiki…

Ci sono molte guide per farlo con un Raspberry Pi su Internet. L'ho installato un paio di volte sul Raspberry Pi, e nessuna delle due volte è andato liscio come l'installazione su Windows 10 (nessuna sorpresa: Linux mi prende ogni volta). I problemi principali che ho riscontrato sono stati:

1. Far funzionare correttamente l'audio e il microfono. Vedi qui https://github.com/alexa-pi/AlexaPi/wiki/Audio-set… se anche tu hai questi problemi.

2. Problemi con la versione JDK. Vedi 4.3 nelle istruzioni ufficiali e la nota nel file pom.xml che parla di sovrascrivere la versione durante l'esecuzione del comando mvn exec:exec (cioè ho dovuto aggiungere questo switch -Dalpn-boot.version=8.1.6.v20151105). Nota che questo comando è incluso nel mio script di avvio (alexa_startup.sh).

3. Far funzionare il motore di parole di attivazione sensoriale (https://github.com/Sensory/alexa-rpi)

Una volta che puoi far funzionare tutto con i comandi manuali come descritto nelle istruzioni, procedi con l'installazione di MicroDot.

CONNESSIONE MICROPUNTI

Non è possibile collegare direttamente il MicroDot al GPIO perché assorbirà troppa corrente. Avrai bisogno di: 2x 2N3904 transistor per pilotare i LED, 1x2K2 e 1x3K3 resistori per abbassare la tensione dal sensore tattile a 3,3V (il MicroDot sarà alimentato dall'alimentazione a 5V). Fare riferimento allo schema allegato. Potresti voler creare un PCB per questo, ma ho appena montato questi componenti sul retro di una spina femmina a 8 pin.

MOTORE SVEGLIA PERSONALIZZATO (TOCCO)

Decomprimi il contenuto della cartella zip allegata nella cartella alexa-avs-sample-app. Ci sono due file:wake.py - uno script python che è il motore di riattivazione personalizzato (touch) per MicroDot alexa_autostart.sh - uno script per eseguire tutto. Fare clic con il pulsante destro del mouse su proprietà su questo e selezionare Esegui: chiunque nella scheda dei permessi.

Avrai bisogno di python installato per eseguire il motore di riattivazione. Avrai anche bisogno della libreria GPIO (https://makezine.com/projects/tutorial-raspberry-p…) Queste dovrebbero essere già installate nell'ultima versione di Raspbian.

Per eseguire tutto, digita nel terminale:cd /home/pi/Desktop/alexa-avs-sample-appsudo./alexa_startup.sh

CONFIGURAZIONE AUTORUN

Per configurare Alexa per l'esecuzione automatica all'avvio, apri un terminale e digita:

cd /home/pi/.config/lxsession/LXDE-pisudo nano autostart

e aggiungi la riga e salva:

@/home/pi/Desktop/alexa-avs-sample-app/alexa_autostart.sh

Riavvia e l'app Alexa dovrebbe avviarsi automaticamente.

Consigliato: