Você está na página 1de 5

Arduino comando por voz

Abaixo link do exemplo:


http://vimeo.com/39892458
Umm!dulo de comando por voz ba"eado no #$ %&#'()*A. 'le + capaz de
armazenar at+ *5 comando" dividido" em 3 banco" de 5 comando". ,o pro-eto
de"crito a.ui /oram 0ravado" cinco comando" no banco 1*1 com a /inalidade de
controlar o acendimento2 apa0amento e /re.u3ncia de pi"cada de uma l4mpada
comum li0ada ao pino *3 do arduino atrav+" de um m!dulo de /or5a ba"eado em um
triac.
A comunica56o com o m!dulo + /eita via inter/ace "erial. A" men"a0en" de comando
devem "er /ormada" pela chave (xAA "e0uida do comando propriamente dito. &ara
0ravar o banco um2 por exemplo2 ba"ta envia via terminal o valor em (xAA "e0uido do
comando (x** 7+ "empre bom lembra .ue o 1(x1 in/orma .ue o n8mero .ue o "e0ue
e"ta em hexadecimal9 e2 "e0uindo a" men"a0en" de retorno no terminal ou
ob"ervando o" doi" led" na placa2 pronunciar e repetir cada um do" cinco comando"
de"e-ado" para o banco em .ue"t6o.

Ap!" a 0rava56o + po"":vel ace""ar o banco * atrav+" do comando (xAA ; (x2* .ue
"erve para importar o banco (*. $mportar2 ne"te ca"o2 + ativar um determinado 0rupo
de comando"2 poi" apena" um do" 0rupo" pode e"tar ativo por v3". $""o /az com .ue
o m!dulo compare o comando /alado com o" cinco 0ravado" na.uele banco.
< manual do modulo pode "er
encontrado a.ui. 'le + ba"tante completo inclu"ive indica um pro0rama 0ratuito
para comunica56o "erial2 o Acce""&ort .ue pode "er baixado a.ui.
=e"umidamente para /azer /uncionar o m!dulo com o arduino deve>"e:
*. %elecionar a velocidade de comunica56o "erial enviando2 por exemplo2 o comando
1AA341 para *92((bp" ou 1AA331 para 9)((bp". &or padr6o a velocidade + 9)((?
2. %elecionar o modo de comunica56o: modo comum ou compacto. < modo determina
"e o m!dulo ir@ re"ponder ao" comando" com re"po"ta" lon0a" 7men"a0en"9 ou
curta" 7hexadecimal9?
3. $niciar a 0rava56o de um do" tr3" banco" enviando o comando corre"pondente
1AA**1 para 0ravar o banco um 1AA*21 para o doi" ou 1AA*31 para o banco tr3".
Ao iniciar a 0rava56o do banco um2 por exemplo2 o m!dulo ir@ "olicitar o" cinco
comando" de voz .ue dever6o "er pronunciado" e repetido" con/orme men"a0en" de
"olicita56o. '"te" comando" de voz "6o a""ociado" a n8mero". ,o banco um o"
n8mero" (x**2 (x*22 (x*32 (x*4 e (x*5 "6o a""ociado" ao" comando" de voz um a
cinco re"pectivamente. %endo .ue o comando de voz um + o primeiro .ue /oi 0ravado
no banco e a""im "uce""ivamente. %e um banco + ativado e o m!dulo recebe um
comando de voz v@lido ele envia o valor corre"pondente via "erial.
Auando um comando de 0rava56o + enviado atrav+" do terminal2 por exemplo2 o
modulo enviar@ um da" "e0uinte" re"po"ta" em hexadecimal ou em texto:
"ERROR! \ n"
(0xe0)
Erro de instruo
1START \ n"
(0x40)
Pronto para gravar
1o voi!e \ n"
(0x4")
o dete!tada vo#
"Again \ n"
(0x4$)
Repita a instruo ( ap%s proxi&o "START")
1Too 'oud \ n"
(0x4()
)uito a'to para gravar
"*i++erent \ n"
(0x44)
Repetio da instruo di+erente da pri&era aguarde
o START para repetir o !o&ando de vo#
",inis- one \ n" .&a instruo gravada !o& su!esso/ O proxi&o
(0x40)
START 1 para o !o&ando de vo# seguinte/ 2sso se
repete at1 o 3uinto !o&ando
"4roup"
+inis-ed! \ n"
(0x45)
,i& da gravao do grupo "
B po"":vel tamb+m acompanhar a" men"a0en" atrav+" do" doi" led"
exi"tente" no m!dulo. < .ue torna po"":vel2 por exemplo2 0ravar um banco
comunicando>"e com o modulo atrav+" do arduino "em o auxilio de um
computador. <" detalhe" para i""o e"t6o no manual.
,o pro0rama2 mo"trado abaixo2 o arduino inicializa o banco * e /ica a0uardando o
comando enviado pelo modulo .ue por "ua vez a0uarda comando" de voz
compat:vei" com o" 0ravado".
/*
comandos de voz:

1 - liga
2 - desliga
3 - pisca
4 - mais
5 - menos

*/
#include <Servo.h
long dis! " #$
in! lampS!a!e " %&'$
long previous(illis " #$
long in!ervalo " 1###$
unsigned long curren!(illis$
in! lampada "13$
)*!e com " #$
void se!up+,
-

Serial.)egin+./##,$
pin(ode+lampada0 &12312,$
dela*+2###,$
// & modulo acei!a comandos0 em he4adecimal no seguin!e 5orma!o:
// 66 7 comando
Serial.8ri!e+#466,$
Serial.8ri!e+#439,$ //con5igura o modulo para responder em modo
compac!o
dela*+1###,$ // no modo compac!o as respos!as s:o numeros em
he4adecimal
Serial.8ri!e+#466,$
Serial.8ri!e+#421,$//impor!a o grupo 1
;
void loop+, // inicio do programa principal
-

8hile+Serial.availa)le+,,
-
com " Serial.read+,$ //rece)e o )*!e re5eren!e ao comando
i5+com "" #411, // ao rec4e)er o comando de voz <liga< o modulo envia
o valor em he4adecimal: 11
digi!al'ri!e+lampada0 =>?=,$ // se rece)er #411 acende a lampada
i5+com "" #412, // ao rec4e)er o comando de voz <desiga< o modulo
envia o valor em he4adecimal: 12
digi!al'ri!e+lampada0 %&',$// se rece)er #412 apaga a lampada
i5+com "" #413,// ao rec4e)er o comando de voz <pisca< o modulo envia
o valor em he4adecimal: 13
-
do // se rece)er #413 en!ra nes!e la@o Aue 5az a lamada piscar. 6Aui
e4is!em !res possi)ilidades:
// Bece)er #414 <mais< e aumen!ar o in!ervalo en!re as piscadas
// Bece)er #415 <menos< e diminuir o in!ervalo en!re as piscadas
// Bece)er #411 +liga, #u #412 +desliga, parar de piscar e 5azer
o Aue o comando pede
-
com " Serial.read+,$ //rece)e o )*!e re5eren!e ao comando

// piscar sem dela*
curren!(illis " millis+,$ //armazena o valor re5eren!e ao !empo
de e4ecu@:o do programa
i5+curren!(illis - previous(illis in!ervalo,
-
previous(illis " curren!(illis$
i5 +lampS!a!e "" %&',
lampS!a!e " =>?=$
else
lampS!a!e " %&'$
digi!al'ri!e+lampada0 lampS!a!e,$
;
//

// se rece)er #414 aumen!a o in!ervalo en!re as piscadas
i5+com "" #414 CC in!ervalo < 1###,
-
in!ervalo 7"1##$
;
// se rece)er #414 diminue o in!ervalo en!re as piscadas
i5+com "" #415 CC in!ervalo 1##,
-
in!ervalo -"1##$
;

// se rece)er #411 +liga, #u #412 +desliga, para de piscar
;8hile+com D" #411 CC com D" #412,$
;
;
;