Riprendiamo il progetto in cui pilotavamo un led, digitando un carattere sul nostro smartphone collegato ad Arduino tramite un collegamento bluetooth. Ed implementiamo il circuito con una resistenza da 10kΩ tra il PIN 1 di Arduino ed il modulo HC06 ed altre due, sempre da 10kΩ ma poste in serie, tra il modulo HC06 e GND di Arduino, come rappresentato nel seguente circuito.
Questa volta occorre non verificare se il testo digitato è uguale al carattere 'a', ma se è uguale ad una frase tipo "accendi il led". La cosa non è semplice in quanto quando ad Arduino arriva la frase "accendi il led", da Monitor seriale o dallo smartphone, questo non la interpreta nella sua interezza, ma carattere per carattere, uno scollegato all'altro. Occorre dunque prendere ogni carattere, memorizzarlo in una variabile di tipo 'char'(di tipo carattere), questa variabile la chiamiamo ad esmepio 'stato', ed aggiungerla, una dietro l'altra, ad un'altra variabile di tipo 'String' (può contenere sequenza di lettere-numeri-simboli), che chiamiamo ad esempio 'testo'. Questo fino a quando arrivano dati dalla seriale. Quando i dati dalle seriale cessano vuol dire che la frase è completa e quindi possiamo interpretarne il contenuto verificando se coincide con la frase alla quale associamo l'accensione/spegnimento del Led. Questa operazione di gestione di frasi tramite la comunicazione seriale avviene nelle parti evidenziate della seguente foto, i cui blocchi si devono riprodurre in mBlock.
Entriamo nella 'Modalità Arduino' e da questa in 'Modifica con l'IDE di Arduino' perché dobbiamo apportare al codice scritto in liguaggio C alcune modifiche.
Anzitutto eliminiamo il 'Serial.begin(115200);' opzione inserita automaticamente da mBot nella modalità Arduino, perché il successivo comando imposta la comunicazione seriale alla giusta velocità per il nostro utilizzo, ovvero '9600' baud.
Poi dobbiamo cambiare il tipo delle due variabili che mBloch dichiara come di tipo 'double' (numero reale anche molto grande) in variabile di tipo carattere (char) per 'stato' e di tipo stringa (String) per la variabile 'testo', in questo modo:
Il codice completo, dopo le modifiche, è questo :
Carichiamo questo codice su Arduino come abbiamo già fatto nei precedenti progetti, ed apriamo il 'Monitor seriale'. Scriviamo quindi la frase'accendi il led' o 'spegni il led'. Se tutto è stato fatto correttamente, Arduino risponde correttamente al rispettivo comando accendendo o spegnendo il Led.
A questo punto possiamo ricollegare il bluetooth e riaprendo l'app 'Arduino bluetooth controller', nella modalità 'Terminale' possiamo andare a scrive la frase 'accendi il led' o 'spegni il led' ottenendo lo stesso risultato ottenuto in precedenza con il Monitor seriale.
Cerchiamo ora di ottenere lo stesso risultato non più digitando le frasi sullo smartphone, ma dettandole ad un riconoscitore vocale.
Sullo smartphone ora occorre installare l'App. di riconoscimento vocale e di comunicazione con Arduino, via bluetooth, dal nome "Arduino Voice Control" di Cem PEHLIVAN.
Attiviamo il bluetooth sullo smartphone e avviamo l'applicazione 'Arduino Voice Control'.
Occorre selezionare la lingua italiana in (language) ed il dispositivo Bluetooth HC-06 in (connect).
Quando il dispositivo sarà connesso si può toccare il microfono e pronunciare 'accendi il led' o 'spegni il led".
ATTENZIONE: occorre pronunciare varie volte la frase per verificare se il riconoscitore vocale la interpreta con le lettere iniziali maiuscole o minuscole. Sarà poi necessario rimettere mano al codice trascrivendo le frasi nello stesso modo (con le eventuali maiuscole) in cui il riconoscitore vocale le interpreta.
Dopo alcuni tentativi, si comprende che il riconoscimento vocale interpreta la prima frasse tutta con minuscole, mentre la seconda con la 'S' maiuscola, come anche la scritta 'LED'. Quindi occorre modificare le corrispondenti righe del codice in questo modo: