Piccoli passi per una casa domotica con Arduino - Controllo vocale (Parte 2)

thumb Arduino-easyVR-rele-010Salve a tutti ragazzi, sono sempre io, EletroLaix e rieccoci qui per il nostro appuntamento settimanale dedicato al mondo maker. In questa puntata finiremo di realizzare il nostro progetto per il controllo vocale della nostra casa a livello hardware e inizieremo a vedere la parte software per la gestione dell'EasyVR.

 

Vi ricordo che tutto quello che leggerete in questo articolo potrete vederlo anche in formato video sul mio canale YouTube:

 

Ma adesso non perdiamoci in chiacchiere e iniziamo subito!

 

Se vi siete persi la precedente puntata di questo tutorial, la potete trovare a questo indirizzo:

Piccoli passi per una casa domotica con Arduino - Controllo vocale (Parte 1)

 


Colleghiamo il modulo relè

 

Arduino-easyVR-rele-010

In seguito passiamo a connettere la massa (GND) a uno dei tre pin disponibili sulla nostra shield/Arduino

Arduino-easyVR-rele-011

Infine, procediamo con i due pin che regolano lo stato dei due relè (IN1, IN2): io li connetterò al pin 8 e al pin 9 ma ovviamente potrete scegliere voi quale pin utilizzare, anche se vi sconsiglio di connetterli al pin 0, 1, 11 e 12 perché questi pin verranno utilizzati per la comunicazione seriale asincrona durante due delle modalità presenti sul nostro shield (UP, SW) quindi per evitare che durante il caricamento dei dati la vostra casa diventi una discoteca o peggio si fulmini qualche lampadina, non toccateli.

Arduino-easyVR-rele-012

Una volta seguiti questi tre semplici passaggi potremo tranquillamente controllare i nostri due relè impostando l'uscita dei due pin appositi (nel mio caso 8 e 9) in modalità LOW (basso, cioè spento) o HIGH (alto, cioè acceso) .Attenzione però: le due modalità appena descritte riguardano i pin e non i nostri due relè, infatti essi reagiranno con l’effetto contrario cioè se il pin sarà in modalità LOW il relè si ecciterà quindi chiuderà il circuito formato dal comune (COM) e il normalmente aperto (NA) mentre se il pin sarà in modalità HIGH il relè si “rilasserà” e andrà a chiudere sempre il comune, ma questa volta con il pin normalmente chiuso (NC).

 

Arduino-easyVR-rele-013

 

Bene ragazzi una volta capito come connettere i nostri relè all’Arduino e aver appreso come funziona la logica di questi moduli possiamo passare al prossimo step.


Colleghiamo il tutto al nostro impianto di casa

Bene adesso non ci resta che connettere i nostri relè all'impianto di casa. Per fare ciò avremo a disposizione due possibilità. La prima consiste nel creare un circuito in modo tale da sostituire completamente l’interruttore di casa e quindi poter utilizzare solo il nostro sistema di riconoscimento vocale per gestire i nostri elettrodomestici. La seconda invece consiste nel realizzare un circuito dove possiamo comandare la luce (ad esempio) sia dall'interruttore presente già nella nostra stanza, sia dal nostro EasyVR, in modo tale da poter accendere la luce anche quando il nostro vicino di casa sta sentendo la musica a tutto volume. In questa circostanza, infatti, il nostro sistema di riconoscimento vocale probabilmente non funzionerà a dovere.

 

ATTENZIONE: Prima di passare a vedere come realizzare i due tipi di impianti voglio ricordare che durante tutte queste operazioni è necessario staccare completamente la corrente di casa per evitare corto circuiti e, ancora più importante, evitare gravi scosse elettriche.

 

Vediamo come procedere nel primo caso: apriamo la nostra casetta elettrica dove è presente l'interruttore che vogliamo controllare con la nostra voce, ci troveremo difronte ad un normale interruttore bistabile collegato sia in entrata che in uscita allo stesso filo il quale di solito è la fase (cavo marrone) ma può trovarsi anche il neutro (cavo blu).

 Arduino-easyVR-rele-018

Basterà scollegare i due fili e connetterli al nostro relè dove il primo verrà connesso al comune e il secondo sarà connesso al normalmente aperto.

 Arduino-easyVR-rele-019

Una volta fatto tutto ciò avremo praticamente sostituito il tipico interruttore di casa con un sistema di riconoscimento vocale.

 

Adesso passiamo ad analizzare la seconda possibilità: per prima cosa rechiamoci, anche questa volta, alla nostra cassetta elettrica dove è presente l’interruttore da controllare. Ci troveremo difronte alla stessa situazione di prima ma questa volta dobbiamo cambiare un po’ di cose in più: prima di tutto dovremo sostituire il nostro interruttore con un deviatore. A differenza del precedente, il quale apriva o chiudeva un circuito, il deviatore fa la stessa cosa che fanno i relè presenti sul nostro modulo cioè deviano la corrente (dal comune) o sul cavo A o sul cavo B, ma a differenza dei relè può rimanere stabile in tutte e due le posizioni.

 

Arduino-easyVR-rele-001

 

Una volta procuratoci un deviatore ci basterà andare a realizzare il seguente circuito:

 Arduino-easyVR-rele-002

dove il primo deviatore (D1) sarà il nostro tasto fisico mentre il secondo (D2) sarà il nostro relè (ovviamente potremo anche invertirli).

 

 Arduino-easyVR-rele-020

In questa maniera abbiamo realizzato un circuito che ci permette di controllare una lampadina da due punti diversi il che è sicuramente un vantaggio ma va a creare l’inconveniente che il nostro Arduino non potrà mai sapere se la lampadina è accesa oppure no (ecco perché nel mio primo video pronunciavo la parola luce sia per accendere che per spegnere il lampadario).

 

Infine, prima di chiudere questa parte dedicata all’aspetto hardware del nostro impianto, voglio illustrarvi due altre possibilità che potrete trovare in casa. Molto spesso, soprattutto quando si parla di luci per stanze molto grandi (corridoio o camera da pranzo), abbiamo già la presenza di più di un “interruttore” per governare le nostre luci e per far questo di solito vengono utilizzati due metodi.

 

Il primo è inserire un relè all’interno della parete che cambi il suo stato solo con un impulso e per questo si vanno a collegare tanti bottoni monostabili in parallelo. Se vogliamo aggiungere il nostro relè a questo circuito dovremo fare la stessa cosa cioè aggiungerlo in parallelo ai bottoni già presenti e poi modificarne il comportamento a livello software rispetto al precedente caso, aprendo e chiudendo velocemente il relè in modo da generare l’impulso. (Vedremo meglio successivamente come realizzare ciò nel codice di Arduino).

Il secondo metodo per controllare la luce da più punti consiste nel realizzare un circuito del genere:

Arduino-easyVR-rele-018

 

Come vedete, a differenza dei primi circuiti analizzati si è andato ad aggiungere un altro tipo di pulsante cioè l’invertitore (I1) esso inverte le piste, in pratica collega o i pin sulla stessa fascia orizzontale oppure in diagonale (come in figura) e a differenza dei deviatori che per far funzionare il circuito devono essere per forza due il numero degli invertitori lo possiamo scegliere noi senza alcuna limitazione quindi potremo aggiungere in casa un qualsiasi numero di “interruttori” per governare la stessa luce. Qui sorge però un problema: i relè da me utilizzati hanno la stessa logica di un deviatore quindi bisogna cambiare tipo di relè oppure sostituire un deviatore già presente in casa con il mio relè.

 

Come avete visto, in questa parte sono sceso molto nel dettaglio per farvi capire al meglio il circuito elettrico da costruire per una casa domotica, nella prossima pagina andremo a dare il primo sguardo al lato software quindi accendete i vostri computer e preparatevi…

 


Istruiamo il nostro EasyVR 2.0

 

Bene ragazzi, una volta riusciti a realizzare il nostro circuito a livello hardware, possiamo passare ad analizzare l'aspetto software. In questa parte andremo a conoscere i tre/quattro programmi fondamentali che ci serviranno per impostare il nostro shield e infine passeremo nello specifico a capire come far imparare al nostro shield nuove parole da riconoscere, ad esempio “luce”, “apri” o qualsiasi altra parola che noi vogliamo.

Il primo programma che ci sarà utile si chiama Commander e serve per far apprendere al nostro EasyVR nuovi comandi da riconoscere, come password o trigger, ma ci sono anche altre funzioni che vedremo in seguito.

Arduino-easyVR-rele-014

 

Il secondo è facoltativo, stiamo parlando di DSpeech. Esso serve per creare file audio partendo dal testo, io per esempio l’ho utilizzato per realizzare quella voce robotica che avete sentito all’inizio del video dedicato a questo articolo.

Arduino-easyVR-rele-015

 

Ovviamente potremo anche registrare la nostra voce con qualsiasi altro programma a patto che possa esportare i file audio da noi realizzati in formato wav. Io vi consiglio Audacity, bellissimo programma gratuito e soprattutto molte semplice da usare.

Arduino-easyVR-rele-016

 

Infine abbiamo Quick Synthesis 5, servirà per comprimere i nostri file audio e trasformarli in testo scritto ovvero in formato mca il quale sarà effettivamente caricato sul nostro shield.

Arduino-easyVR-rele-017

 

Benissimo, adesso che conosciamo questi quattro programmi, possiamo iniziare a vedere come si imposta il nostro EasyVR 2.0.

 

ATTENZIONE: durante i seguenti passaggi consiglio di disconnettere momentaneamente il modulo relè dall’Arduino per evitare di danneggiare il vostro impianto elettrico.

 

Per prima cosa inseriamo il jumper presente sullo shield in modalità PC e poi connettiamo il tutto al nostro computer.

 Arduino-easyVR-rele-021

 

Questo ci permetterà di far comunicare l’EasyVR direttamente con il nostro PC bypassando l’ATmega (che sarà mandato in reset) e sfruttando il convertitore seriale presente sull’Arduino, insomma un po’ come avveniva con la modalità UP vista nella scorsa puntata.

Adesso passiamo ad aprire Commander. Voglio precisare che sia questo programma che Quick Synthesis 5 dovranno sempre essere aperti con le priorità di amministratore, quindi io consiglio o di fare tasto destro e selezionare “Esegui come amministratore” oppure per non farlo ogni volta cliccare sempre sul tasto destro => Proprietà => selezioniamo la tab “Compatibilità” e spuntiamo la casella: “Esegui questo programma come amministratore”

Arduino-easyVR-rele-003

In questo modo Commander verrà sempre avviato con le priorità da amministratore, fate lo stesso per Quick Synthesis 5.

 

Ora ritorniamo al nostro Commander. Una volta avviato ci troveremo difronte ad un'interfaccia davvero semplice e intuitiva. Infatti, per avviare la comunicazione basterà selezionare la porta seriale dove è presente il nostro Arduino (nel mio caso COM4) e poi cliccare sul pulsante "connetti".

Arduino-easyVR-rele-004

Una volta finito il caricamento, potremo vedere tutto quello che contiene il nostro EasyVR.

 

Ma prima di iniziare a vedere come funziona questo programma e come utilizzarlo per caricare nuovi comandi da riconoscere, analizziamo tutti i tipi di gruppo/comandi che possiamo trovare sul nostro shield:

-       Trigger: sono utilizzati per avviare il processo di riconoscimento

-       Group: si possono aggiungere normali comandi definiti dall'utente

-       Password: sarebbero semplici comandi se non fosse che il nostro EasyVR sfrutta un riconoscimento biometrico per identificare la persona

-       SoundTable: contiene tutti i suoni che il nostro EasyVR può riprodurre (nella prossima puntata andremo a vedere come caricarne di nuovi)

-       Wordset: contengono dei comandi preimpostati molto utili (es. tutti i numeri da 0 a 10, direzioni come avanti, dietro, destra ecc.)

Bene, adesso entriamo nel vivo del tutorial, e iniziamo a vedere come funziona questo programma e come utilizzarlo per caricare nuovi comandi da riconoscere.

Iniziamo con impostare la lingua: clicchiamo sull’ultima icona a destra e scegliamo italiano:

 Arduino-easyVR-rele-005

Questo passaggio non servirà solo a migliorare il riconoscimento vocale, ma anche a modificare la lingua ai wordset che troviamo in basso all’elenco (i tre gruppi con il fumetto rosa).

Adesso vediamo come inserire una parola da riconoscere: spostiamoci su uno de 15 gruppi disponibili, per esempio il tre, ed inseriamo la parola cliccando sull’icona con il fumetto celeste e il più verde.

 Arduino-easyVR-rele-006

Ci apparirà subito un campo di testo dove andremo ad inserire il nome del comando, ovviamente io consiglio di inserire il comando stesso, per esempio adesso andiamo a registrare il comando “apri” quindi lo chiamiamo proprio così, questo servirà per semplificare il lavoro di compilazione delle script di Arduino in seguito. Se vorremo cambiargli nome basterà cliccare sull’icona con la matita e il tipico fumetto celeste sul retro.

 Arduino-easyVR-rele-007

Adesso dobbiamo far comprendere al nostro EasyVR come si pronuncia quel comando per poi far sì che lo riconoscerà in futuro. Clicchiamo quindi sull’icona con l’ingranaggio e ci comparirà una piccola finestra dove ci avvisa di pronunciare il comando apri, dopo aver premuto il bottone Phase 1, entro un tempo massimo di 5 secondi.

 Arduino-easyVR-rele-008

Quindi procediamo e pronunciamo la parola APRI scandendo bene le lettere (senza esagerare). Una volta terminato ci apparirà una seconda finestra che chiederà praticamente la stessa cosa, ripetiamo l’operazione per la seconda volta, ma questa volta io vi consiglio di spostarvi nella stanza o magari non utilizzare lo stesso e identico tono di voce, questo per far aumentare le possibilità di riconoscimento vocale anche se vi trovate in punti diversi della stanza.

Una volta eseguiti questi semplici passaggi, sapremo ormai far imparare qualsiasi comando al nostro EasyVR e, senza neanche uscire dal programma, potremo testare i comandi appena registrati tramite il bottoncino con l’icona dove è presente una spunta verde (opzione attivabile solo se ci sono almeno due comandi nel gruppo).

 

 Arduino-easyVR-rele-009


Conclusioni

Insomma ragazzi, in questo tutorial abbiamo visto e imparato molte cose, ma non vi agitate, siamo ancora all’inizio! Mancano ancora diverse puntate prima di poter rendere la nostra casa veramente domotica, quindi rimanete sincronizzati con XtremeHardware o iscrivetevi al mio canale YouTube per essere sempre aggiornati sul mondo Maker e sui miei prossimi tutorial!  Il Kit EasyVR più Shield è disponibile attualmente su Amazon al seguente link http://amzn.to/1W6w4xZ ad un prezzo di 57€.

 

EletroLaix