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,$ ; ; ;