        <style>
            #donation_buttons td{
                border:medium none;
                background: inherit !important;
            }
            #donation_buttons table{               
                border:medium none;
                margin: auto;
                width: auto;
            }
        </style>
        {"id":7053,"date":"2022-09-27T01:59:49","date_gmt":"2022-09-27T01:59:49","guid":{"rendered":"https:\/\/rogerbit.com\/wprb\/?p=7053"},"modified":"2022-09-27T01:59:49","modified_gmt":"2022-09-27T01:59:49","slug":"control-luces-x-comandos","status":"publish","type":"post","link":"https:\/\/rogerbit.com\/wprb\/2022\/09\/control-luces-x-comandos\/","title":{"rendered":"Control de luces por comandos de voz y teclas"},"content":{"rendered":"<p><iframe loading=\"lazy\" title=\"Control de luces por comandos de voz y teclas - PCBWay.es\" width=\"1160\" height=\"653\" src=\"https:\/\/www.youtube.com\/embed\/kGZNksSTgLM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<hr \/>\n<p>En este tutorial veremos como crear un dispositivo de control de luces por comandos de voz, con un m\u00f3dulo de geeetech, dise\u00f1ado para tal fin. Veremos como armar, este dispositivo en un pcb fabricado por PCBWay. Analizaremos los comandos hexadecimales, para su configuraci\u00f3n, y el c\u00f3digo fuente. Finalmente vamos a probar su funcionamiento.<\/p>\n<hr \/>\n<p style=\"text-align: left;\">Tal vez pueda interesarte proyectos en arduino, pic, rob\u00f3tica, telecomunicaciones, suscribete en\u00a0<a href=\"http:\/\/www.youtube.com\/user\/carlosvolt?sub_confirmation=1\">http:\/\/www.youtube.com\/user\/carlosvolt?sub_confirmation=1<\/a>\u00a0mucho videos con c\u00f3digo fuentes completos y diagramas<\/p>\n<p style=\"text-align: left;\"><div id=\"ubm-banners-rotation-n1\" data-interval=\"4000\" class=\"ubm_banners_rotation\" style=\"overflow: hidden; width: 200px; height: 150px;\"><div id=\"3_ubm_banner\" class=\"ubm_rotating_banner\"><a href=\"https:\/\/bit.ly\/3aXRDAu\" target=\"_blank\" rel=\"dofollow\"><img src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/useful_banner_manager_banners\/3-2-logo youtube.png\" width=\"100%\" height=\"100%\" alt=\"SUSCRIBETE A NUESTRO CANAL DE YOUTUBE, TUTORIALES GRATIS\" \/><\/a><\/div><\/div><\/p>\n<hr \/>\n<p><strong>Componentes electr\u00f3nicos<\/strong><\/p>\n<p><strong>Arduino Nano<\/strong><\/p>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/11\/Arduino_nano_V3.0_atmega328_compatible-2.jpg\"><img loading=\"lazy\" class=\"alignnone wp-image-6034\" src=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/11\/Arduino_nano_V3.0_atmega328_compatible-2.jpg\" sizes=\"(max-width: 321px) 100vw, 321px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/11\/Arduino_nano_V3.0_atmega328_compatible-2.jpg 650w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/11\/Arduino_nano_V3.0_atmega328_compatible-2-150x150.jpg 150w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/11\/Arduino_nano_V3.0_atmega328_compatible-2-300x300.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/11\/Arduino_nano_V3.0_atmega328_compatible-2-600x600.jpg 600w\" alt=\"\" width=\"321\" height=\"321\" \/><\/a><\/p>\n<p>El Arduino Nano es una placa peque\u00f1a, completa y compatible con la placa de pruebas basada en el ATmega328 (Arduino Nano 3.x).\u00a0Tiene m\u00e1s o menos la misma funcionalidad del Arduino Duemilanove, pero en un paquete diferente.\u00a0Solo carece de un conector de alimentaci\u00f3n de CC y funciona con un cable USB Mini-B en lugar de uno est\u00e1ndar.<\/p>\n<table>\n<tbody>\n<tr>\n<td>Microcontrolador<\/td>\n<td>ATmega328<\/td>\n<\/tr>\n<tr>\n<td>Arquitectura<\/td>\n<td>AVR<\/td>\n<\/tr>\n<tr>\n<td>Tensi\u00f3n de funcionamiento<\/td>\n<td>5 V<\/td>\n<\/tr>\n<tr>\n<td>Memoria flash<\/td>\n<td>32 KB de los cuales 2 KB utiliza el gestor de arranque<\/td>\n<\/tr>\n<tr>\n<td>SRAM<\/td>\n<td>2 KB<\/td>\n<\/tr>\n<tr>\n<td>Velocidad de reloj<\/td>\n<td>16 MHz<\/td>\n<\/tr>\n<tr>\n<td>Pines anal\u00f3gicos IN<\/td>\n<td>8<\/td>\n<\/tr>\n<tr>\n<td>EEPROM<\/td>\n<td>1 KB<\/td>\n<\/tr>\n<tr>\n<td>Corriente CC por pines de E \/ S<\/td>\n<td>40 mA (pines de E \/ S)<\/td>\n<\/tr>\n<tr>\n<td>Voltaje de entrada<\/td>\n<td>7-12 V<\/td>\n<\/tr>\n<tr>\n<td>Pines de E \/ S digitales<\/td>\n<td>22 (6 de los cuales son PWM)<\/td>\n<\/tr>\n<tr>\n<td>Salida PWM<\/td>\n<td>6<\/td>\n<\/tr>\n<tr>\n<td>El consumo de energ\u00eda<\/td>\n<td>19 mA<\/td>\n<\/tr>\n<tr>\n<td>Tama\u00f1o de PCB<\/td>\n<td>18 x 45 mm<\/td>\n<\/tr>\n<tr>\n<td>Peso<\/td>\n<td>7 g<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Diagrama de pines<\/h3>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/11\/Pinout-NANO.png\"><img loading=\"lazy\" class=\"alignnone size-large wp-image-6033\" src=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/11\/Pinout-NANO-1024x1024.png\" sizes=\"(max-width: 1024px) 100vw, 1024px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/11\/Pinout-NANO-1024x1024.png 1024w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/11\/Pinout-NANO-150x150.png 150w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/11\/Pinout-NANO-300x300.png 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/11\/Pinout-NANO-768x768.png 768w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/11\/Pinout-NANO-600x600.png 600w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/11\/Pinout-NANO-820x820.png 820w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2020\/11\/Pinout-NANO-1320x1321.png 1320w\" alt=\"\" width=\"1024\" height=\"1024\" \/><\/a><\/p>\n<hr \/>\n<p><strong>M\u00f3dulo de reconocimiento de voz<\/strong><\/p>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/02\/modulo_voice.jpg\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-1972\" src=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/02\/modulo_voice-300x300.jpg\" alt=\"modulo_voice\" width=\"300\" height=\"300\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/02\/modulo_voice-300x300.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/02\/modulo_voice-150x150.jpg 150w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/02\/modulo_voice.jpg 550w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><strong>Comando del m\u00f3dulo de reconocimiento de voz<\/strong><\/p>\n<ul>\n<li>0x00&#8211;&gt;Entra en modo de espera de alg\u00fan comando<\/li>\n<li>0x01 &#8211;&gt;Eliminar las instrucciones del grupo 1<\/li>\n<li>0x02 &#8211;&gt;Eliminar las instrucciones del grupo 2<\/li>\n<li>0x03 &#8211;&gt;Eliminar las instrucciones del grupo 3<\/li>\n<li>0x04&#8211;&gt;Eliminar las instrucciones de los 3 grupos<\/li>\n<li>0x11&#8211;&gt;Comienza a grabar instrucciones del grupo 1<\/li>\n<li>0x12&#8211;&gt;Comienza a grabar instrucciones del grupo 2<\/li>\n<li>0x13&#8211;&gt;Comienza a grabar instrucciones del grupo 3<\/li>\n<li>0x21&#8211;&gt;Importar grupo 1 para la utilizaci\u00f3n de los comandos de voz<\/li>\n<li>0x22&#8211;&gt;Importar grupo 2 para la utilizaci\u00f3n de los comandos de voz<\/li>\n<li>0x23&#8211;&gt;Importar grupo 3 para la utilizaci\u00f3n de los comandos de voz<\/li>\n<li>0x24&#8211;&gt;Consulta los grupos grabados<\/li>\n<li>0x31&#8211;&gt;Cambia la velocidad a\u00a02400 bps<\/li>\n<li>0x32&#8211;&gt;Cambia la velocidad a 4800 bps<\/li>\n<li>0x33&#8211;&gt;Cambia la velocidad a 9600 bps<\/li>\n<li>0x34&#8211;&gt;Cambia la velocidad a 19200 bps<\/li>\n<li>0x35&#8211;&gt;Cambia la velocidad a 38400bps<\/li>\n<li>0x36&#8211;&gt;Cambia a modo com\u00fan<\/li>\n<li>0x37&#8211;&gt;Cambia a modo compacto<\/li>\n<li>0xbb&#8211;&gt;Informaci\u00f3n de la versi\u00f3n del m\u00f3dulo<\/li>\n<\/ul>\n<p><strong><span style=\"color: #3366ff;\">Par\u00e1metros<\/span><\/strong><\/p>\n<ul>\n<li>Voltaje: 4.5-5.5V<\/li>\n<li>Corriente: &lt;40mA<\/li>\n<li>Interfaz digital: 5V TTL<\/li>\n<li>Interfaz an\u00e1loga: conector del micr\u00f3fono mono-canal de 3.5mm + interfaz pin del micr\u00f3fono<\/li>\n<li>Tama\u00f1o: 30m mx 47.5m m<\/li>\n<\/ul>\n<p><span style=\"color: #3366ff;\"><strong>KIT<\/strong><\/span><\/p>\n<p>Este kit est\u00e1 compuesto de un m\u00f3dulo de reconocimiento de voz, un m\u00f3dulo usb serial, cables y un micr\u00f3fono.<\/p>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/02\/voice.jpg\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-1974\" src=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/02\/voice-300x300.jpg\" alt=\"voice\" width=\"300\" height=\"300\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/02\/voice-300x300.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/02\/voice-150x150.jpg 150w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/02\/voice.jpg 550w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<hr \/>\n<p><strong>Pines macho<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-6616\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/09\/poines-macho.jpg\" sizes=\"(max-width: 297px) 100vw, 297px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/09\/poines-macho.jpg 458w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/09\/poines-macho-300x300.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/09\/poines-macho-150x150.jpg 150w\" alt=\"\" width=\"297\" height=\"297\" \/><\/p>\n<hr \/>\n<p><strong>Ocho Pulsadores<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-6617\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/09\/pulsador.jpg\" sizes=\"(max-width: 229px) 100vw, 229px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/09\/pulsador.jpg 355w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/09\/pulsador-297x300.jpg 297w\" alt=\"\" width=\"229\" height=\"232\" \/><\/p>\n<hr \/>\n<p><strong>Pines Hembra<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-7055\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/09\/pines-hembra.jpg\" alt=\"\" width=\"500\" height=\"331\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/09\/pines-hembra.jpg 500w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/09\/pines-hembra-300x199.jpg 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/p>\n<hr \/>\n<p><strong>Cables dupont hembra macho<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-7056\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/09\/hembra-macho-dupont.jpg\" alt=\"\" width=\"353\" height=\"353\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/09\/hembra-macho-dupont.jpg 800w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/09\/hembra-macho-dupont-300x300.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/09\/hembra-macho-dupont-150x150.jpg 150w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/09\/hembra-macho-dupont-768x768.jpg 768w\" sizes=\"(max-width: 353px) 100vw, 353px\" \/><\/p>\n<hr \/>\n<p><strong>Micr\u00f3fono Electret<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-7057 size-thumbnail\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/09\/Microfono-Electret-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/09\/Microfono-Electret-150x150.jpg 150w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/09\/Microfono-Electret-300x300.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/09\/Microfono-Electret-768x768.jpg 768w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/09\/Microfono-Electret-820x820.jpg 820w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/09\/Microfono-Electret.jpg 1000w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/p>\n<hr \/>\n<p><strong>M\u00f3dulo relay de 8 canales<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-6404\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/05\/8_canales_relay.jpg\" sizes=\"(max-width: 700px) 100vw, 700px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/05\/8_canales_relay.jpg 700w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/05\/8_canales_relay-300x178.jpg 300w\" alt=\"\" width=\"700\" height=\"416\" \/><\/p>\n<p><strong>Caracter\u00edsticas<\/strong><\/p>\n<p>Permite controlar el encendido\/apagado de equipos de alta potencia (electrodom\u00e9sticos). Funciona perfectamente con Arduino, Pic o cualquier otro sistema digital.<\/p>\n<p>Dentro de la gran variedad de proyectos que podemos realizar con Arduino, podemos llegar a desear controlar componentes de alto voltaje o alto amperaje, como bombillas o bombas de agua, los cuales no pueden ser manejados directamente con Arduino. En estos casos es necesario utilizar Relays o Reles, estos dispositivos permiten controlar cargas de alto voltaje con una se\u00f1al peque\u00f1a.<\/p>\n<p>El modulo posee 8 Relays de alta calidad, capaces de manejar cargas de hasta 250V\/10A. Cada canal posee aislamiento el\u00e9ctrico por medio de un optoacoplador y un led indicador de estado. Su dise\u00f1o facilita el trabajo con Arduino, al igual que con muchos otros sistemas como Raspberry Pi, ESP8266 (NodeMCU y Wemos), Teensy y Pic. Este modulo Relay activa la salida normalmente abierta (NO: Normally Open) al recibir un \u201c0\u201d l\u00f3gico (0 Voltios) y desactiva la salida con un \u201c1\u201d l\u00f3gico (5 voltios). Para la programaci\u00f3n de Arduino y Relays se recomienda el uso de timers con la funci\u00f3n \u201cmillis()\u201d y de esa forma no utilizar la funci\u00f3n \u201cdelay\u201d que impide que el sistema continue trabajando mientras se activa\/desactiva un relay.<\/p>\n<p>Entre las cargas que se pueden manejar tenemos: bombillas de luz, luminarias, motores AC (220V), motores DC, solenoides, electrov\u00e1lvulas, calentadores de agua y una gran variedad de actuadores m\u00e1s. Se recomienda realizar y verificar las conexiones antes de alimentar el circuito, tambi\u00e9n es una buena pr\u00e1ctica proteger el circuito dentro de un case.<\/p>\n<p><strong>Datos t\u00e9cnicos<\/strong><\/p>\n<p>8 canales independientes<\/p>\n<p>8 Relevadores (Relays) de 1 polo 2 tiros<\/p>\n<p>El voltaje de la bobina del rel\u00e9 es de 5 VDC<\/p>\n<p>Led indicador para cada canal (enciende cuando la bobina del rel\u00e9 esta activa)<\/p>\n<p>Activado mediante corriente: el circuito de control debe proveer una corriente de 15 a 20 mA<\/p>\n<p>Puede controlado directamente por circuito l\u00f3gicos<\/p>\n<p>Terminales de conexi\u00f3n de tornillo (clemas)<\/p>\n<p>Terminales de entrada de se\u00f1al l\u00f3gica con headers macho de 0.1\u2033.<\/p>\n<p>Puede controlado directamente por circuito l\u00f3gicos<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Alimentaci\u00f3n y consumo<\/strong><\/p>\n<p>La forma mas sencilla de alimentar este m\u00f3dulo es desde Vcc y GND de la placa Arduino, manteniendo el Jumper en su lugar, con lo que JD-Vcc = Vcc. Esta conexi\u00f3n tiene dos limitaciones importantes:<\/p>\n<p>Se pierde la aislaci\u00f3n el\u00e9ctrica que brindan los optoacopladores, lo que aumenta la posibilidad de da\u00f1o al Arduino si hay alg\u00fan problema con las cargas de los rel\u00e9s.<\/p>\n<p>La corriente consumida por las bobinas de los rel\u00e9s debe ser provista por la placa Arduino. Cada bobina consume unos 90 mA y las cuatro juntas suman 360 mA. Si a esto le sumamos los consumos que pueden tener otras salidas, estamos muy cerca de los 500 mA que puede suministrar un puerto USB. En este caso se deber\u00eda alimentar al Arduino con una fuente externa, lo que aumenta el limite de corriente a 1 A (en el caso de la Arduino UNO).<\/p>\n<p>La forma mas segura es remover el jumper y alimentar la placa de rel\u00e9s con dos fuentes: la de la placa Arduino conectada a Vcc y una segunda fuente, con el positivo a JD-Vcc y el negativo a GND, sin estar \u00e9ste unido a la placa Arduino. Esta conexi\u00f3n tiene como ventajas:<\/p>\n<p>Hay completa aislaci\u00f3n entre la carga y el Arduino.<\/p>\n<p>Todo el consumo de los rel\u00e9s es tomado de la segunda fuente y no del Arduino o el puerto USB.<\/p>\n<p><strong>Entradas<\/strong><\/p>\n<p>Las entradas a la placa pueden conectarse directamente a las salidas digitales de la placa Arduino. La \u00fanica precauci\u00f3n a tener en cuenta es que cuando Arduino arranca al ser alimentado, los pines se configuran como entradas autom\u00e1ticamente y puede ocurrir que, por un brev\u00edsimo lapso de tiempo entre el arranque y la correcta configuraci\u00f3n de estos pines como salidas, las entradas de control al m\u00f3dulo de rel\u00e9 queden en un estado indeterminado. Esto se puede evitar conectando en cada entrada un pull-up con una resistencia de 10K a Vcc, lo que asegura un estado ALTO durante el arranque.<\/p>\n<hr \/>\n<p><strong>PCB<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-6618\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/09\/pcb.png\" sizes=\"(max-width: 517px) 100vw, 517px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/09\/pcb.png 517w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/09\/pcb-300x277.png 300w\" alt=\"\" width=\"517\" height=\"478\" \/><\/p>\n<p>Descargar PCB \u2013&gt;\u00a0<a href=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/09\/control-de-luces-de-8-canales-por-bluetooth.zip\">control de luces de 8 canales por bluetooth<\/a><\/p>\n<hr \/>\n<p><strong>Circuito<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-6620\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/09\/circuito.png\" sizes=\"(max-width: 528px) 100vw, 528px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/09\/circuito.png 528w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/09\/circuito-300x279.png 300w\" alt=\"\" width=\"528\" height=\"491\" \/><\/p>\n<hr \/>\n<p><strong>C\u00f3digo fuente<\/strong><\/p>\n<p>La velocidad del puerto serial est\u00e1 seteada a 9600bps, es esta la velocidad a la cual viene configurado el m\u00f3dulo de reconocimiento de voz.<\/p>\n<p>Con<\/p>\n<p><span style=\"color: #ff0000;\">Serial.write(0xAA);<\/span><br \/>\n<span style=\"color: #ff0000;\">Serial.write(0x37);<\/span><\/p>\n<p>Enviamos el comando serial AA 37 y cambiamos el m\u00f3dulo al modo compacto.<\/p>\n<p>Con<\/p>\n<p><span style=\"color: #ff0000;\">Serial.write(0xAA);<\/span><br \/>\n<span style=\"color: #ff0000;\">Serial.write(0x21);<\/span><\/p>\n<p>Enviamos el comando AA 21 y elegimos el grupo para trabajar en el m\u00f3dulo, recuerden que hay 3 grupos de 5 comandos de voz pero s\u00f3lo se puede trabajar un grupo a la vez.<\/p>\n<p>color(255,102,0); llamamos a la funci\u00f3n color y le pasamos 3 par\u00e1metros que ser\u00e1n utilizados para dar la el voltaje a los 3 pines pwm conectados al les pwm.<\/p>\n<pre class=\"lang:arduino decode:true \" title=\"C\u00f3digo Fuente\">int led3 = 3; \r\nint led4 = 4;\r\nint led5 = 5;\r\nint led6 = 6;\r\nint led7 = 7;\r\nint led8 = 8;\r\nint led9 = 9;\r\nint led10 = 10;\r\nint led3estado = 0;\r\nint led4estado = 0;\r\nint led5estado = 0;\r\nint led6estado = 0;\r\nint led7estado = 0;\r\nint led8estado = 0;\r\nint led9estado = 0;\r\nint led10estado = 0;\r\nbyte com = 0; \r\nint estadoBoton11 = 0;\r\nint estadoBoton12 = 0;\r\nint estadoBotonA5 = 0;\r\nint estadoBotonA0 = 0;\r\nint estadoBotonA1 = 0;\r\nint estadoBotonA2 = 0;\r\nint estadoBotonA3 = 0;\r\nint estadoBotonA4 = 0;\r\n \r\nint estado11 = 0;\r\nint estado12 = 0;\r\nint estadoA5 = 0;\r\nint estadoA0 = 0;\r\nint estadoA1 = 0;\r\nint estadoA2 = 0;\r\nint estadoA3 = 0;\r\nint estadoA4 = 0;\r\n\/\/Pulsadores\r\nint botonPin11 =11; \r\nint botonPin12 =12;\r\nint botonPinA5 =A5;\r\nint botonPinA0 =A0;\r\nint botonPinA1 =A1;\r\nint botonPinA2 =A2;\r\nint botonPinA3 =A3;\r\nint botonPinA4 =A4;\r\nvoid setup()\r\n{\r\nSerial.begin(9600);\/\/Velocidad a la que trabaja el m\u00f3dulo de reconocmiento de voz\r\npinMode(led3, OUTPUT); \/\/ Establece el led3 como una salida\r\npinMode(led4, OUTPUT); \/\/ Establece el led4 como una salida\r\npinMode(led5, OUTPUT); \/\/ Establece el led5 como una salida\r\npinMode(led6, OUTPUT); \/\/ Establece el led6 como una salida\r\npinMode(led7, OUTPUT); \/\/ Establece el led6 como una salida\r\npinMode(led8, OUTPUT); \/\/ Establece el led6 como una salida\r\npinMode(led9, OUTPUT); \/\/ Establece el led6 como una salida\r\npinMode(led10, OUTPUT); \/\/ Establece el led2 como una salida\r\ndigitalWrite(3,HIGH);\r\ndigitalWrite(4,HIGH);\r\ndigitalWrite(5,HIGH);\r\ndigitalWrite(6,HIGH);\r\ndigitalWrite(7,HIGH);\r\ndigitalWrite(8,HIGH);\r\ndigitalWrite(9,HIGH);\r\ndigitalWrite(10,HIGH);\r\ndelay(2000);\r\n\/\/Pines como entradas para los pulsadores\r\npinMode(botonPin11, INPUT_PULLUP);\r\npinMode(botonPin12, INPUT_PULLUP);\r\npinMode(botonPinA5, INPUT_PULLUP);\r\npinMode(botonPinA0, INPUT_PULLUP);\r\npinMode(botonPinA1, INPUT_PULLUP);\r\npinMode(botonPinA2, INPUT_PULLUP);\r\npinMode(botonPinA3, INPUT_PULLUP);\r\npinMode(botonPinA4, INPUT_PULLUP);\r\n\/\/Comando para cambiar al modo compacto\r\nSerial.write(0xAA);\r\nSerial.write(0x37);\r\ndelay(1000);\r\n\/\/ Importa el grupo 1\r\nSerial.write(0xAA);\r\nSerial.write(0x21);\r\n}\r\nvoid loop() \/\/ Correr una y otra vez\r\n{\r\nestadoBoton11 = digitalRead(botonPin11);\/\/Leemos el pulsador para ver su estado\r\nestadoBoton12 = digitalRead(botonPin12);\/\/Leemos el pulsador para ver su estado\r\nestadoBotonA5 = digitalRead(botonPinA5);\/\/Leemos el pulsador para ver su estado\r\nestadoBotonA0 = digitalRead(botonPinA0);\/\/Leemos el pulsador para ver su estado\r\nestadoBotonA1 = digitalRead(botonPinA1);\/\/Leemos el pulsador para ver su estado\r\nestadoBotonA2 = digitalRead(botonPinA2);\/\/Leemos el pulsador para ver su estado\r\nestadoBotonA3 = digitalRead(botonPinA3);\/\/Leemos el pulsador para ver su estado\r\nestadoBotonA4 = digitalRead(botonPinA4);\/\/Leemos el pulsador para ver su estado\r\n\/\/\/Bot\u00f3n 11 precionado\/\/\/\r\nif (estadoBoton11 == LOW) {\r\n\/\/Leemos el estado del pin 3\r\nled3estado = digitalRead(led3);\r\n  \/\/ Si el led est\u00e1 apagado se cumple esta condici\u00f3n\r\n  if (led3estado == LOW) {\r\n    \/\/ Y enciende el led 3\r\n    digitalWrite(led3, HIGH);\r\n  } else {\r\n    \/\/ Por el contrario lo apaga\r\n    digitalWrite(led3, LOW);\r\n  }\r\ndelay(350);\/\/Delay antirrebote \r\n}\r\n\/\/\/Bot\u00f3n 12 precionado\/\/\/\r\nif (estadoBoton12 == LOW) {\r\n\/\/Leemos el estado del pin 4\r\nled4estado = digitalRead(led4);\r\n  \/\/ Si el led est\u00e1 apagado se cumple esta condici\u00f3n\r\n  if (led4estado == LOW) {\r\n    \/\/ Y enciende el led 4\r\n    digitalWrite(led4, HIGH);\r\n  } else {\r\n    \/\/ Por el contrario lo apaga\r\n    digitalWrite(led4, LOW);\r\n  }\r\ndelay(350);\/\/Delay antirrebote \r\n}\r\n\/\/\/Bot\u00f3n A5 precionado\/\/\/\r\nif (estadoBotonA5 == LOW) {\r\n\/\/Leemos el estado del pin 5\r\nled5estado = digitalRead(led5);\r\n  \/\/ Si el led est\u00e1 apagado se cumple esta condici\u00f3n\r\n  if (led5estado == LOW) {\r\n    \/\/ Y enciende el led 5\r\n    digitalWrite(led5, HIGH);\r\n  } else {\r\n    \/\/ Por el contrario lo apaga\r\n    digitalWrite(led5, LOW);\r\n  }\r\ndelay(350);\/\/Delay antirrebote \r\n}\r\n\/\/\/Bot\u00f3n A0 precionado\/\/\/\r\nif (estadoBotonA0 == LOW) {\r\n\/\/Leemos el estado del pin 6\r\nled6estado = digitalRead(led6);\r\n  \/\/ Si el led est\u00e1 apagado se cumple esta condici\u00f3n\r\n  if (led6estado == LOW) {\r\n    \/\/ Y enciende el led 6\r\n    digitalWrite(led6, HIGH);\r\n  } else {\r\n    \/\/ Por el contrario lo apaga\r\n    digitalWrite(led6, LOW);\r\n  }\r\ndelay(350);\/\/Delay antirrebote \r\n}\r\n\/\/\/Bot\u00f3n A1 precionado\/\/\/\r\nif (estadoBotonA1 == LOW) {\r\n\/\/Leemos el estado del pin 7\r\nled7estado = digitalRead(led7);\r\n  \/\/ Si el led est\u00e1 apagado se cumple esta condici\u00f3n\r\n  if (led7estado == LOW) {\r\n    \/\/ Y enciende el led 7\r\n    digitalWrite(led7, HIGH);\r\n  } else {\r\n    \/\/ Por el contrario lo apaga\r\n    digitalWrite(led7, LOW);\r\n  }\r\ndelay(350);\/\/Delay antirrebote \r\n}\r\n\/\/\/Bot\u00f3n A2 precionado\/\/\/\r\nif (estadoBotonA2 == LOW) {\r\n\/\/Leemos el estado del pin 8\r\nled8estado = digitalRead(led8);\r\n  \/\/ Si el led est\u00e1 apagado se cumple esta condici\u00f3n\r\n  if (led8estado == LOW) {\r\n    \/\/ Y enciende el led 8\r\n    digitalWrite(led8, HIGH);\r\n  } else {\r\n    \/\/ Por el contrario lo apaga\r\n    digitalWrite(led8, LOW);\r\n  }\r\ndelay(350);\/\/Delay antirrebote \r\n}\r\n\/\/\/Bot\u00f3n A3 precionado\/\/\/\r\nif (estadoBotonA3 == LOW) {\r\n\/\/Leemos el estado del pin 9\r\nled9estado = digitalRead(led9);\r\n  \/\/ Si el led est\u00e1 apagado se cumple esta condici\u00f3n\r\n  if (led9estado == LOW) {\r\n    \/\/ Y enciende el led 9\r\n    digitalWrite(led9, HIGH);\r\n  } else {\r\n    \/\/ Por el contrario lo apaga\r\n    digitalWrite(led9, LOW);\r\n  }\r\ndelay(350);\/\/Delay antirrebote \r\n}\r\n\/\/\/Bot\u00f3n A4 precionado\/\/\/\r\nif (estadoBotonA4 == LOW) {\r\n\/\/Leemos el estado del pin 10\r\nled10estado = digitalRead(led10);\r\n  \/\/ Si el led est\u00e1 apagado se cumple esta condici\u00f3n\r\n  if (led10estado == LOW) {\r\n    \/\/ Y enciende el led 10\r\n    digitalWrite(led10, HIGH);\r\n  } else {\r\n    \/\/ Por el contrario lo apaga\r\n    digitalWrite(led10, LOW);\r\n  }\r\ndelay(350);\/\/Delay antirrebote \r\n}\r\n\/\/\/\/Lectura de datos desde m\u00f3dulo de reconocimiento de voz\r\nwhile(Serial.available())\r\n{\r\n\/\/Captura los caracteres del puerto serial y se los asigna a la variable \"com\"\r\ncom = Serial.read();\r\n\/\/Se compara la variable \"com\"\r\nswitch(com)\/\/Estructura de control switch, case \r\n{\r\ncase 0x11:\/\/Si el valor es 0x11\r\nled3estado = digitalRead(led3);\/\/Leemos el estado del pin 3\r\n  \/\/ Si el estado es igual a LOW\r\n  if (led3estado == LOW) {\r\n    \/\/ Enciende el led\r\n    digitalWrite(led3, HIGH);\r\n  } else {\r\n    \/\/ Por el contrario lo apaga\r\n    digitalWrite(led3, LOW);\r\n  }\r\nbreak;\r\ncase 0x12:\/\/Si el valor es 0x12\r\nled4estado = digitalRead(led4);\/\/Leemos el estado del pin 4\r\n  \/\/ Si el estado es igual a LOW\r\n  if (led4estado == LOW) {\r\n    \/\/ Enciende el led\r\n    digitalWrite(led4, HIGH);\r\n  } else {\r\n    \/\/ Por el contrario lo apaga\r\n    digitalWrite(led4, LOW);\r\n  }\r\nbreak;\r\ncase 0x13:\/\/Si el valor es 0x13\r\nled5estado = digitalRead(led5);\/\/Leemos el estado del pin 5\r\n  \/\/ Si el estado es igual a LOW\r\n  if (led5estado == LOW) {\r\n    \/\/ Enciende el led\r\n    digitalWrite(led5, HIGH);\r\n  } else {\r\n    \/\/ Por el contrario lo apaga\r\n    digitalWrite(led5, LOW);\r\n  }\r\nbreak;\r\ncase 0x14:\/\/Si el valor es 0x14\r\nled6estado = digitalRead(led6);\/\/Leemos el estado del pin 6\r\n  \/\/ Si el estado es igual a LOW\r\n  if (led6estado == LOW) {\r\n    \/\/ Enciende el led\r\n    digitalWrite(led6, HIGH);\r\n  } else {\r\n    \/\/ Por el contrario lo apaga\r\n    digitalWrite(led6, LOW);\r\n  }\r\nbreak;\r\ncase 0x15:\/\/Si el valor es 0x15\r\nled7estado = digitalRead(led7);\/\/Leemos el estado del pin 7\r\n  \/\/ Si el estado es igual a LOW\r\n  if (led7estado == LOW) {\r\n    \/\/ Enciende el led\r\n    digitalWrite(led7, HIGH);\r\n  } else {\r\n    \/\/ Por el contrario lo apaga\r\n    digitalWrite(led7, LOW);\r\n  }\r\nbreak;\r\n}\r\n}\r\n}<\/pre>\n<hr \/>\n<div class=\"page-sidebar widget\" id=\"donation_buttons\"><form action=\"https:\/\/www.paypal.com\/cgi-bin\/webscr\" method=\"post\" target=\"_blank\" ><input type=\"hidden\" name=\"business\" value=\"donacion@rogerbit.com\"><input type=\"hidden\" name=\"bn\" value=\"mbjtechnolabs_SP\"><input type=\"hidden\" name=\"cmd\" value=\"_donations\"><input type=\"hidden\" name=\"item_name\" value=\"Ayuda a RogerBit.com\"><input type=\"hidden\" name=\"item_number\" value=\"www.rogerbit.com\"><input type=\"hidden\" class=\"set_donation_button_amount\" name=\"amount\" value=\"1\"><table ><tbody><tr><td><label for=\"rogerBit necesita de tu ayuda para seguir existiendo :-)\">rogerBit necesita de tu ayuda para seguir existiendo :-)<\/label><\/td><\/tr><\/tbody><\/table><table ><tbody><tr><td><input style=\"margin-top:10px;\" type=\"image\" name=\"submit\" border=\"0\" src=\"https:\/\/www.paypal.com\/en_US\/i\/btn\/btn_donateCC_LG.gif\" alt=\"PayPal - The safer, easier way to pay online\"><\/td><\/tr><\/tbody><\/table><input type=\"hidden\" name=\"currency_code\" value=\"USD\"><input type=\"hidden\" name=\"notify_url\" value=\"https:\/\/rogerbit.com\/wprb\/?Donation_Button&#038;action=ipn_handler\"><\/form><\/div>\n<hr \/>\n<p><strong>PROYECTO RECOMENDADO<\/strong><\/p>\n<p><iframe loading=\"lazy\" title=\"\ud83c\udf99 Configuraci\u00f3n M\u00f3dulo de reconocimiento de voz para arduino\" width=\"1160\" height=\"653\" src=\"https:\/\/www.youtube.com\/embed\/gXTI3PQeOGs?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>En este tutorial veremos como crear un dispositivo de control de luces por comandos de voz, con un m\u00f3dulo de geeetech, dise\u00f1ado para tal fin. Veremos como armar, este dispositivo en un pcb fabricado por PCBWay. Analizaremos los comandos hexadecimales, para su configuraci\u00f3n, y el c\u00f3digo fuente. Finalmente vamos a probar su funcionamiento. Tal vez [&hellip;]<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":7054,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[11],"tags":[],"_links":{"self":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/7053"}],"collection":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/comments?post=7053"}],"version-history":[{"count":3,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/7053\/revisions"}],"predecessor-version":[{"id":7060,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/7053\/revisions\/7060"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/media\/7054"}],"wp:attachment":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/media?parent=7053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/categories?post=7053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/tags?post=7053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}