{"id":5979,"date":"2022-12-21T22:44:22","date_gmt":"2022-12-21T21:44:22","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=5979"},"modified":"2023-03-13T09:34:52","modified_gmt":"2023-03-13T08:34:52","slug":"hans-robot-controlado-por-voz","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/","title":{"rendered":"Hans (Robot controlado por voz)"},"content":{"rendered":"\n<p class=\"has-large-font-size\"><strong>Proyecto<\/strong><\/p>\n\n\n\n<p>El proyecto Hans consiste en un robot capaz de realizar determinadas acciones las cuales son ordenadas mediante la voz.<\/p>\n\n\n\n<p> El Objetivo de este proyecto es poder a\u00f1adirle m\u00e1s funciones al robot en el futuro con el fin de imitar a un asistente personal.<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>Acciones que realiza Hans<\/strong><\/p>\n\n\n\n<p>A la hora de pedir a Hans que realice una acci\u00f3n, primero habr\u00e1 que decir su nombre y a continuaci\u00f3n lo que queremos que haga a trav\u00e9s de una palabra clave. Hasta ahora, Hans es capaz de distinguir 8 comandos los cuales son:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Hans: Activa el resto de los comandos.<\/li>\n\n\n\n<li>Hola: Emita un sonido como respuesta al saludo.<\/li>\n\n\n\n<li>Adios: Emito un sonido a modo despedida.<\/li>\n\n\n\n<li>Adelante: Se desplaza hacia delante.<\/li>\n\n\n\n<li>Atras: Se desplaza hacia atr\u00e1s.<\/li>\n\n\n\n<li>Derecha: Gira a la derecha.<\/li>\n\n\n\n<li>Izquierda: Gira a la Izquierda.<\/li>\n\n\n\n<li>Tiempo: Establece un temporizador de 30 segundos.<\/li>\n<\/ul>\n\n\n\n<p>Cada vez que Hans reconozca cada uno de los comandos, se encender\u00e1n dos diodos LEDs para confirmarlo.<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>Componentes Utilizados<\/strong><\/p>\n\n\n\n<p>Hans est\u00e1 formado por los siguientes componentes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Placa ELEGOO UNO R3 <\/li>\n\n\n\n<li>M\u00f3dulo de Reconocimiento de Voz (VR3) <\/li>\n\n\n\n<li>M\u00f3dulo Controlador de Motores (L298N) <\/li>\n\n\n\n<li>Diodos LEDs x2<\/li>\n\n\n\n<li>Bater\u00eda Port\u00e1til<\/li>\n\n\n\n<li>Zumbador<\/li>\n\n\n\n<li>Motor DC x2<\/li>\n\n\n\n<li>Ruedas x4<\/li>\n\n\n\n<li>Piezas de LEGO<\/li>\n\n\n\n<li>Cables<\/li>\n<\/ul>\n\n\n\n<p>Algunos de los componentes fueron comprados como:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>COMPONENTES<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>PRECIO<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Placa ELEGOO<\/td><td class=\"has-text-align-center\" data-align=\"center\">19,99\u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">M\u00f3dulo de Reconocimiento de Voz (VR3)<\/td><td class=\"has-text-align-center\" data-align=\"center\">18,43\u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Pack (Rueda x4, Motor DC x4, M\u00f3dulo controlador de motor x2 y cables)<\/td><td class=\"has-text-align-center\" data-align=\"center\">20,12\u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">Cart\u00f3n-Pluma x2<\/td><td class=\"has-text-align-center\" data-align=\"center\">1,50\u20ac<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>TOTAL<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">60,04\u20ac<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-large-font-size\"><strong>M\u00f3dulo de Reconocimiento de Voz (VR3)<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"277\" height=\"208\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-21.png\" alt=\"\" class=\"wp-image-6093\"\/><\/figure>\n<\/div>\n\n\n<p>El m\u00f3dulo de reconocimiento de voz es el componente encargado de almacenar los comandos, captarlos a trav\u00e9s de la voz y de transmitirlos a la placa. A la hora de trabajar con este tipo de m\u00f3dulo deb\u00edamos tener en cuenta varios factores:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Capacidad de memoria del m\u00f3dulo: El m\u00e1ximo n\u00famero de comandos que se pueden almacenar en el m\u00f3dulo son 80. <\/li>\n\n\n\n<li>Tono de la voz: El m\u00f3dulo tiene en cuenta el tono de la voz de la persona que entrene los comandos, por lo tanto, era muy probable que, si los comandos hab\u00edan sido entrenados por una voz aguda, al m\u00f3dulo le resultar\u00eda dif\u00edcil, pero no imposible, reconocerlos a trav\u00e9s de una voz grave.<\/li>\n\n\n\n<li>Conexiones TX y RX: dependiendo de la marca de la placa electr\u00f3nica que se emplease, TX y RX deben estar conectados a unos pines digitales de dicha placa o en otros. En nuestro caso deb\u00edan conectarse a los pines 2 y 3 respectivamente.<\/li>\n\n\n\n<li>El comando puede estar formado por una o dos palabras.<\/li>\n\n\n\n<li>La velocidad de los baudios debe estar configurada a 115200<\/li>\n<\/ul>\n\n\n\n<p>Una vez conectada el m\u00f3dulo a la placa ELEGOO nos disponemos a entrenar los comandos, pero antes ha sido necesario descargar e instalar la librer\u00eda voicerecognitionv3.h. Dichas librer\u00edas traen consigo varios c\u00f3digos de ejemplo del cual solamente nos interesaba <em>vr_sample_train<\/em>. Con dicho c\u00f3digo se han entrenado los comandos de la siguiente manera:<\/p>\n\n\n\n<p>Compilamos el c\u00f3digo,lo subimos a la placa y seguidamente abrimos el monitor serie.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"805\" height=\"412\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-10.png\" alt=\"\" class=\"wp-image-6007\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-10.png 805w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-10-300x154.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-10-768x393.png 768w\" sizes=\"auto, (max-width: 805px) 100vw, 805px\" \/><\/figure>\n<\/div>\n\n\n<p>En el monitor serie se visualizan una serie de comandos que el m\u00f3dulo de reconocimiento de voz trae consigo y para qu\u00e9 sirve cada uno de ellos. Para poder registrar y entrenar los comandos que quer\u00edamos que el m\u00f3dulo reconociese ha sido necesario seguir los siguientes pasos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>1\u00ba Sigtrain<\/strong>: Para indicar que queremos entrenar un comando, debemos escribir <em>sigtrain 1 Adelante<\/em> donde 1 es la posici\u00f3n que ocupar\u00e1 en el vector de comandos (como hemos dicho anteriormente, es un vector de 80 posiciones) y Adelante el nombre que le hemos puesto. Es importante saber que, si al comando le ponemos un nombre, no quiere decir que al pronunciar esa palabra el m\u00f3dulo vaya a reconocerla. Por ejemplo, puede haber un comando llamado rojo que se active cuando se diga la palabra azul.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"825\" height=\"201\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-12.png\" alt=\"\" class=\"wp-image-6013\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-12.png 825w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-12-300x73.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-12-768x187.png 768w\" sizes=\"auto, (max-width: 825px) 100vw, 825px\" \/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>2\u00ba Load: Una vez entrenado el comando debemos cargarlo para que pueda ser utilizado. Para ello utilizaremos la sentencia load seguido de los comandos que queremos cargar. Por ejemplo, si queremos cargar el primer y segundo comando que hemos entrenado ser\u00eda load 0 1.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"829\" height=\"160\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-15.png\" alt=\"\" class=\"wp-image-6016\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-15.png 829w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-15-300x58.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-15-768x148.png 768w\" sizes=\"auto, (max-width: 829px) 100vw, 829px\" \/><\/figure>\n<\/div>\n\n\n<p>Anteriormente hemos dicho que el m\u00e1ximo n\u00famero de comando que puede soportar el m\u00f3dulo es de 80, pero durante la ejecuci\u00f3n del c\u00f3digo solamente pueden estar cargados a la vez 7 de ellos. Esto es debido a que el m\u00f3dulo de reconocimiento de voz est\u00e1 escuchando todo el tiempo mientras el c\u00f3digo est\u00e1 siendo ejecutado. Cada vez que escuche una palabra el m\u00f3dulo deber\u00e1 buscar en el array de comandos cu\u00e1l de todos es el que ha sido nombrado. Si se entrenasen 80 comandos el m\u00f3dulo tardar\u00eda demasiado cada vez que digamos algo. Para evitar este problema el m\u00f3dulo incluye un buffer donde se pueden cargar hasta 7 comandos (esto se puede modificar), de manera que si decimaos cualquier palabra el m\u00f3dulo s\u00f3lo tendr\u00e1 que buscar entre 7 elementos. Para este proyecto hemos entrenado 8 comandos, pero m\u00e1s adelante (C\u00f3digo) se explicar\u00e1 c\u00f3mo hemos podido utilizar todos a la vez.<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>M\u00f3dulo Controlador de Motores (L298N)<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"197\" height=\"195\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-22.png\" alt=\"\" class=\"wp-image-6094\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-22.png 197w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-22-80x80.png 80w\" sizes=\"auto, (max-width: 197px) 100vw, 197px\" \/><\/figure>\n<\/div>\n\n\n<p>Gran parte de las acciones que Hans puede realizar est\u00e1n relacionadas con el movimiento, para ello ha sido necesario emplear dos motores DC junto a cuatro ruedas. Dado que el robot puede andar y retroceder, era necesario que los motores fueran capaces de poder cambiar de sentido. Para ello ha sido necesario emplear para cada uno de los motores un Puente H el cual permitir\u00eda cambiar el sentido del motor y controlar la potencia que queremos suministrarle gracias a los transistores. Para construir dicho circuito se requer\u00eda cuatro transistores y resistencias, pero los componentes no fueron el problema. A la hora de conectar un motor para comprobar que el circuito cumpl\u00eda con su funci\u00f3n todo estaba correcto, pero cuando lo unimos con las ruedas y pusimos a prueba la fuerza del motor notamos que no era capaz de moverlo debido a que los dos circuitos se llevaban parte de la potencia que el motor necesitaba para que Hans pudiera moverse. Por lo tanto, se opt\u00f3 por emplear un m\u00f3dulo controlador de motores que aparte de incluir dos Puentes H en un chip minimizando el tama\u00f1o del circuito, permit\u00eda suministrar entre 3V-35V y 2A sin riesgo de quemar la placa. El voltaje que se aportaba a dicho m\u00f3dulo no superaba los 12V siendo as\u00ed lo suficiente como para que los motores pudieran mover el robot.<\/p>\n\n\n\n<p>Antes de utilizar el m\u00f3dulo controlador de motores era necesario conocer algunas de sus caracter\u00edsticas para su buen uso y, muy importante, no romperlo. Entre sus caracter\u00edsticas est\u00e1n:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>En caso de que el voltaje suministrado al m\u00f3dulo no superase los 12V no era necesario desactivar el jumper y, por lo tanto, el regulador de voltaje estar\u00eda activo aportando parte de ese voltaje a la parte l\u00f3gica del m\u00f3dulo. En el caso contrario har\u00eda falta desactivar los jumpers y, por lo tanto, har\u00eda falta aportar 5V para la parte l\u00f3gica dado que el modulador de voltaje queda inactivo.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1002\" height=\"261\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-17.png\" alt=\"\" class=\"wp-image-6021\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-17.png 1002w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-17-300x78.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-17-768x200.png 768w\" sizes=\"auto, (max-width: 1002px) 100vw, 1002px\" \/><\/figure>\n<\/div>\n\n\n<p>Hay que tener en cuenta que si tratamos de meter voltaje por el borne de +5V sin haber quitado el jumper podemos quemar la placa. Si no superamos lo 12V podemos utilizar el borne de +5V como salida para que funcione como fuente de energ\u00eda para otro componente aportando esos voltios y 0,5A.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Los pines controladores (In1, In2, In3 e In4) deber\u00e1n ir conectados a nuestra placa electr\u00f3nica (Arduino, ELEGOO, etc) dado que el comportamiento de los motores depende de la combinaci\u00f3n binaria de los pines. Los dos primeros empezando por la izquierda (In1 e I2) controlan el motor A y los de la derecha (I3 e I4) el motor B.<\/li>\n<\/ul>\n\n\n\n<p class=\"has-large-font-size\"><strong>Dise\u00f1o de Hardware<\/strong><\/p>\n\n\n\n<p>Una vez entrenados los comandos y entendido c\u00f3mo funcionaba el m\u00f3dulo controlador de motores, hemos conectado todos los componentes para que a la hora de hacer el c\u00f3digo sepamos a qu\u00e9 corresponde cada pin digital y c\u00f3mo debemos trabajar con ellos.<\/p>\n\n\n\n<p>No ha sido necesario utilizar una protoboard debido a que no ha habido ning\u00fan tipo de inconveniente para conectar directamente cada uno de los elementos a la placa ELEGOO. Para poder conectar el m\u00f3dulo de reconocimiento de voz a la placa ha sido necesario soldar 4 pines al m\u00f3dulo (GND, VCC, TXD y RXD) para poder conectarlo de forma sencilla mediante cables macho-hembra. Tambi\u00e9n hemos tenido que hacer uso del soldador para el zumbador y para poder conectar entre s\u00ed los dos diodos LEDs.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"945\" height=\"587\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-19.png\" alt=\"\" class=\"wp-image-6024\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-19.png 945w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-19-300x186.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-19-768x477.png 768w\" sizes=\"auto, (max-width: 945px) 100vw, 945px\" \/><\/figure>\n<\/div>\n\n\n<p>Como se puede observar en el diagrama, hemos utilizado una bater\u00eda port\u00e1til como fuente de energ\u00eda para evitar as\u00ed cualquier tipo de inconveniente respecto a la duraci\u00f3n de las pilas. Es cierto que la bater\u00eda tambi\u00e9n se puede quedar sin energ\u00eda, pero a la hora de recargarla no nos hemos topado con ning\u00fan tipo de problema dado que s\u00f3lo hab\u00eda que conectarle un cable sin necesidad de tener que sacarla de la carcasa del robot.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"595\" data-id=\"6030\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.36-2-1024x595.jpeg\" alt=\"\" class=\"wp-image-6030\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.36-2-1024x595.jpeg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.36-2-300x174.jpeg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.36-2-768x446.jpeg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.36-2.jpeg 1109w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<p class=\"has-large-font-size\"><strong>Dise\u00f1o de carcasa<\/strong><\/p>\n\n\n\n<p>El recubrimiento del robot est\u00e1 hecho a base de cart\u00f3n-pluma y de una placa de madera de la cual ya dispon\u00edamos, por lo tanto, no hizo falta comprarla. Antes de construir lo que ser\u00eda el resto de la carcasa con el cart\u00f3n-pluma, fue conveniente colocar los componentes para evitar cualquier tipo de problema a la hora de maniobrar. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"384\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.28.21-1024x384.jpeg\" alt=\"\" class=\"wp-image-6033\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.28.21-1024x384.jpeg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.28.21-300x112.jpeg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.28.21-768x288.jpeg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.28.21-1536x576.jpeg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.28.21-2048x768.jpeg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Para la parte de los ojos se emplearon unas piezas de LEGO de las que ya dispon\u00edamos. Esta idea fue muy acertada por la facilidad a la hora de implementarle los diodos LEDs, s\u00f3lo hizo falta usar un poco de pegamento para fijarlos.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"381\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08-1-1-1024x381.jpeg\" alt=\"\" class=\"wp-image-6037\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08-1-1-1024x381.jpeg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08-1-1-300x111.jpeg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08-1-1-768x285.jpeg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08-1-1-1536x571.jpeg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08-1-1-2048x761.jpeg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Una de las razones por las que se opt\u00f3 a utilizar el cart\u00f3n-pluma fue por su buena consistencia, facilidad para manipularla a la hora de tener que realizar cortes y a que la pintura acr\u00edlica se adher\u00eda bastante bien al material y se secaba r\u00e1pidamente. Para cortar de forma precisa se utiliz\u00f3 un bistur\u00ed dando un buen resultado.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"761\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08-1-1024x761.jpeg\" alt=\"\" class=\"wp-image-6035\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08-1-1024x761.jpeg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08-1-300x223.jpeg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08-1-768x571.jpeg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08-1-1536x1141.jpeg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08-1.jpeg 2040w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Una vez construida toda la carcasa se decidi\u00f3 pintar a Hans con una combinaci\u00f3n de colores atractiva e inspir\u00e1ndonos en otros dise\u00f1os de robots conocidos. El resultado fue el siguiente:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"566\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.34-1-1024x566.jpeg\" alt=\"\" class=\"wp-image-6039\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.34-1-1024x566.jpeg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.34-1-300x166.jpeg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.34-1-768x425.jpeg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.34-1-1536x850.jpeg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.34-1-2048x1133.jpeg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>En cuanto a la disposici\u00f3n del cableado interior, se procur\u00f3 que pareciese lo menos ca\u00f3tica pasible:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"655\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.35-1024x655.jpeg\" alt=\"\" class=\"wp-image-6040\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.35-1024x655.jpeg 1024w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.35-300x192.jpeg 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.35-768x491.jpeg 768w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.35-1536x982.jpeg 1536w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.19.35-2048x1309.jpeg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Se puede observar que la base de la madera tiene un recubrimiento de cart\u00f3n-pluma para que los m\u00f3dulos o placas pudieran estar fijas con la ayuda de chinchetas. Se comprob\u00f3 su consistencia agitando el robot y poni\u00e9ndolo de costado. Todo fue favorable.<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>Problemas Encontrados<\/strong><\/p>\n\n\n\n<p>El \u00fanico problema encontrado a la hora de realizar el proyecto ha sido la falta de potencia que recib\u00edan los motores para poder mover el robot, el cual ha sido solucionado implementado un m\u00f3dulo de control de motores que hemos mencionado anteriormente.<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>C\u00f3digo<\/strong><\/p>\n\n\n\n<p>Para poder utilizar 8 comandos teniendo un tama\u00f1o de 7 para el buffer de comandos se ha empleado la siguiente t\u00e9cnica. En la funci\u00f3n void loop() s\u00f3lo se ha cargado el comando \u00abHans\u00bb a trav\u00e9s del m\u00e9todo myVR.load(), des esta forma en el buffer s\u00f3lo hay cargado un comando. Una vez que el m\u00f3dulo detecta la palabra \u00abHans\u00bb, entrar\u00e1 a su case correspondiente descargando el buffer a trav\u00e9s del m\u00e9todo myVR.clear() y a continuaci\u00f3n cargar\u00e1 los 7 comandos que corresponden con las acciones que el robot puede realizar. Una vez que Hans haya realizado dicha acci\u00f3n tras hab\u00e9rsela pedido, el buffer volver\u00e1 a descargarse y solamente se cargar\u00e1 el comando \u00abHans\u00bb. Se ha resaltado en la parte del c\u00f3digo d\u00f3nde se cargan y descargan los comandos para poder verlo de forma m\u00e1s visual.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n#include &lt;SoftwareSerial.h&gt;\n#include \"VoiceRecognitionV3.h\"\n\nVR myVR(2, 3);   \/\/Pines a los que est\u00e1n conectados RXD y TXD\n\nuint8_t records&#91;7]; \/\/ se cargan a la vez 7 comandos\nuint8_t buf&#91;64];\n\n\/\/Para los diodos LEDs\nint led = 13;\n\/\/Para el zumbador\nint buzzer = 12;\n\/\/P\u00eenes del In del m\u00f3dulo controlador de motores\nint PinIN1 = 7;\nint PinIN2 = 6;\nint PinIN3 = 5;\nint PinIN4 = 4;\nboolean activado = false;\n\n\/\/Nombre que le ponemos a cada comando en el c\u00f3digo junto a la posici\u00f3n que ocupan\n#define Hans    (0)\n#define adelante   (1)\n#define atras (2)\n#define derecha (3)\n#define izquierda (4)\n#define hola (5)\n#define adios (6)\n#define tiempo (7)\n\n\nvoid printSignature(uint8_t *buf, int len)\n{\n  int i;\n  for (i = 0; i &lt; len; i++) {\n    if (buf&#91;i] &gt; 0x19 &amp;&amp; buf&#91;i] &lt; 0x7F) {\n      Serial.write(buf&#91;i]);\n    }\n    else {\n      Serial.print(\"&#91;\");\n      Serial.print(buf&#91;i], HEX);\n      Serial.print(\"]\");\n    }\n  }\n}\n\n\nvoid printVR(uint8_t *buf)\n{\n  Serial.println(\"VR Index\\tGroup\\tRecordNum\\tSignature\");\n\n  Serial.print(buf&#91;2], DEC);\n  Serial.print(\"\\t\\t\");\n\n  if (buf&#91;0] == 0xFF) {\n    Serial.print(\"NONE\");\n  }\n  else if (buf&#91;0] &amp; 0x80) {\n    Serial.print(\"UG \");\n    Serial.print(buf&#91;0] &amp; (~0x80), DEC);\n  }\n  else {\n    Serial.print(\"SG \");\n    Serial.print(buf&#91;0], DEC);\n  }\n  Serial.print(\"\\t\");\n\n  Serial.print(buf&#91;1], DEC);\n  Serial.print(\"\\t\\t\");\n  if (buf&#91;3] &gt; 0) {\n    printSignature(buf + 4, buf&#91;3]);\n  }\n  else {\n    Serial.print(\"NONE\");\n  }\n  Serial.println(\"\\r\\n\");\n}\n\nvoid setup()\n{\n\n  myVR.begin(9600);\n  Serial.begin(115200);\n  Serial.println(\"Elechouse Voice Recognition V3 Module\\r\\nControl LED sample\");\n  pinMode(led, OUTPUT);\n  if (myVR.clear() == 0) {\n    Serial.println(\"Recognizer cleared.\");\n  } else {\n    Serial.println(\"Not find VoiceRecognitionModule.\");\n    Serial.println(\"Please check connection and restart Arduino.\");\n    while (1);\n  }\n\n  <mark class=\"has-inline-color has-vivid-cyan-blue-color\">\/\/Cargamos s\u00f3lo el comando Hans y comprobamos que lo ha hecho correctamente\n  if (myVR.load((uint8_t)Hans) &gt;= 0) {\n    Serial.println(\"Hans loaded\");\n  }<\/mark>\n\n}\n\nvoid loop()\n{\n  int ret;\n  ret = myVR.recognize(buf, 50);\n\n  if (ret &gt; 0) {\n    switch (buf&#91;1]) {\n      case Hans:\n        \/\/variable booleana a true para indicar que el nombre del robot se ha dicho\n        activado = true;\n        \/\/encendemos los leds para indicar que el comando ha sido reconocido\n        digitalWrite(led, HIGH);\n        delay(1000);\n        digitalWrite(led, LOW);\n        <mark class=\"has-inline-color has-vivid-cyan-blue-color\">\/\/descargamos el buffer de comandos\n        myVR.clear();\n        \/\/cargamos en el buffer los comandos de las acciones que Hans puede realizar\n        myVR.load(uint8_t (1));\n        myVR.load(uint8_t (2));\n        myVR.load(uint8_t (3));\n        myVR.load(uint8_t (4));\n        myVR.load(uint8_t(5));\n        myVR.load(uint8_t(6));\n        myVR.load(uint8_t(7));\n        break;<\/mark>\n        \n      case adelante:\n      \/\/Comprobamos si primero se ha dicho \"Hans\"\n        if (activado) {\n          digitalWrite(led, HIGH);\n          delay(1000);\n          digitalWrite(led, LOW);\n          \/\/activamos motores pasando una combinaci\u00f3n binaria\n          \/\/En este caso es 01 para el motor B, haciendo que la rueda gire hacia delante\n          digitalWrite (PinIN1, LOW);\n          digitalWrite (PinIN2, HIGH);\n          \/\/Combinaci\u00f3n 01 para que la rueda gire hacia delante\n          digitalWrite(PinIN3, LOW);\n          digitalWrite(PinIN4, HIGH);\n          \/\/Andar\u00e1 durante 2 segundos\n          delay(2000);\n          \/\/Apagamos motores\n          digitalWrite (PinIN1, LOW);\n          digitalWrite (PinIN2, LOW);\n          digitalWrite(PinIN3, LOW);\n          digitalWrite(PinIN4, LOW);\n          <mark class=\"has-inline-color has-vivid-cyan-blue-color\">\/\/Descargamos el buffer\n          myVR.clear();\n          \/\/Cargamos \u00fanicamente \"Hans\"\n          myVR.load((uint8_t)Hans);\n          \/\/Cambiamos el valor del booleano\n          activado = false;<\/mark>\n        }\n        break;\n        \n      case atras:\n        if (activado == true) {\n          Serial.println(\"Atras\");\n          digitalWrite(led, HIGH);\n          delay(1000);\n          digitalWrite(led, LOW);\n          digitalWrite (PinIN1, HIGH);\n          digitalWrite (PinIN2, LOW);\n          digitalWrite(PinIN3, HIGH);\n          digitalWrite(PinIN4, LOW);\n          delay(2000);\n          digitalWrite (PinIN1, LOW);\n          digitalWrite (PinIN2, LOW);\n          digitalWrite(PinIN3, LOW);\n          digitalWrite(PinIN4, LOW);\n          myVR.clear();\n          myVR.load((uint8_t)Hans);\n\n          activado = false;\n        }\n        break;\n        \n      case izquierda:\n        if (activado) {\n          Serial.println(\"Derecha\");\n          digitalWrite(led, HIGH);\n          delay(1000);\n          \/\/Para girar un motor deber\u00e1 ir hacia delante y el otro hacia atr\u00e1s\n          digitalWrite(led, LOW);\n          digitalWrite (PinIN1, LOW);\n          digitalWrite (PinIN2, HIGH);\n          digitalWrite(PinIN3, HIGH);\n          digitalWrite(PinIN4, LOW);\n          delay(2000);\n          digitalWrite (PinIN1, LOW);\n          digitalWrite (PinIN2, LOW);\n          digitalWrite(PinIN3, LOW);\n          digitalWrite(PinIN4, LOW);\n          myVR.clear();\n          myVR.load((uint8_t)Hans);\n          activado = false;\n        }\n        break;\n        \n      case derecha:\n        if (activado) {\n          Serial.println(\"Izquierda\");\n          digitalWrite(led, HIGH);\n          delay(1000);\n          digitalWrite(led, LOW);\n          digitalWrite (PinIN1, HIGH);\n          digitalWrite (PinIN2, LOW);\n          digitalWrite(PinIN3, LOW);\n          digitalWrite(PinIN4, HIGH);\n          delay(2000);\n          digitalWrite (PinIN1, LOW);\n          digitalWrite (PinIN2, LOW);\n          digitalWrite(PinIN3, LOW);\n          digitalWrite(PinIN4, LOW);\n          myVR.clear();\n          myVR.load((uint8_t)Hans);\n          activado = false;\n        }\n        break;\n        \n      case hola:\n        if (activado) {\n          Serial.println(\"Hola\");\n          digitalWrite(led, HIGH);\n          delay(1000);\n          digitalWrite(led, LOW);\n          \/\/Emitimos sonido como saludo\n          tone(buzzer, 123.33, 300);\n          delay(200);\n          tone(buzzer, 333.33, 300);\n          delay(200);\n          tone(buzzer, 523.33, 300);\n          delay(200);\n          tone(buzzer, 733.33, 300);\n          delay(500);\n          myVR.clear();\n          myVR.load((uint8_t)Hans);\n          activado = false;\n        }\n        break;\n        \n        case adios:\n         if (activado) {\n          Serial.println(\"Adios\");\n          digitalWrite(led, HIGH);\n          delay(1000);\n          digitalWrite(led, LOW);\n          \/\/Emitimos saludo como despedida\n          tone(buzzer, 723.33, 300);\n          delay(200);\n          tone(buzzer, 533.33, 300);\n          delay(200);\n          tone(buzzer, 323.33, 300);\n          delay(200);\n          tone(buzzer, 133.33, 300);\n          delay(500);\n          myVR.clear();\n          myVR.load((uint8_t)Hans);\n          activado = false;\n        }\n        break;\n        \n        case tiempo:\n        if(activado){\n          Serial.println(\"Temporizador de 30 segundos activado\");\n          digitalWrite(led, HIGH);\n          delay(1000);\n          digitalWrite(led, LOW);\n          delay(30000);\n          tone(buzzer, 1, 500);\n          delay(1000);\n          tone(buzzer, 1, 500);\n          delay(1000);\n          tone(buzzer, 1, 500);\n          delay(1000);\n          tone(buzzer, 1, 500);\n          delay(1000);\n          tone(buzzer, 1, 500);\n          delay(1000);\n          myVR.clear();\n          myVR.load((uint8_t)Hans);\n          activado = false;\n          }\n          break;\n          \n      default:\n        Serial.println(\"Record function undefined\");\n        break;\n    }\n\n    printVR(buf);\n  }\n}<\/code><\/pre>\n\n\n\n<p>Es cierto que el tama\u00f1o del buffer puede ser modificado, pero para este proyecto se ha preferido establecerlo en 7 en lugar de 8 para habituarnos a la hora de a\u00f1adir m\u00e1s comandos en un futuro. Por ejemplo, si decidimos a\u00f1adir 16 nuevos comandos, no ser\u00eda conveniente ampliar el buffer a 16 posiciones dado que el m\u00f3dulo tardar\u00eda en verificar qu\u00e9 comando ha sido pronunciado como hemos dicho ya anteriormente.<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>V\u00eddeo<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Proyecto Hans - Grupo 04\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/N3-t_MmymVs?feature=oembed&#038;wmode=opaque\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Proyecto El proyecto Hans consiste en un robot capaz de realizar determinadas acciones las cuales son ordenadas mediante la voz. El Objetivo de este proyecto es poder a\u00f1adirle m\u00e1s funciones al robot en el&#46;&#46;&#46;<\/p>\n","protected":false},"author":57,"featured_media":6034,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5979","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-proyectos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Hans (Robot controlado por voz) - Proyectos con Arduino.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hans (Robot controlado por voz) - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"Proyecto El proyecto Hans consiste en un robot capaz de realizar determinadas acciones las cuales son ordenadas mediante la voz. El Objetivo de este proyecto es poder a\u00f1adirle m\u00e1s funciones al robot en el&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-21T21:44:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-13T08:34:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1500\" \/>\n\t<meta property=\"og:image:height\" content=\"2000\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/hans-robot-controlado-por-voz\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/hans-robot-controlado-por-voz\\\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Hans (Robot controlado por voz)\",\"datePublished\":\"2022-12-21T21:44:22+00:00\",\"dateModified\":\"2023-03-13T08:34:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/hans-robot-controlado-por-voz\\\/\"},\"wordCount\":2088,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/hans-robot-controlado-por-voz\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/12\\\/WhatsApp-Image-2022-12-18-at-16.27.08.jpeg\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/hans-robot-controlado-por-voz\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/hans-robot-controlado-por-voz\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/hans-robot-controlado-por-voz\\\/\",\"name\":\"Hans (Robot controlado por voz) - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/hans-robot-controlado-por-voz\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/hans-robot-controlado-por-voz\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/12\\\/WhatsApp-Image-2022-12-18-at-16.27.08.jpeg\",\"datePublished\":\"2022-12-21T21:44:22+00:00\",\"dateModified\":\"2023-03-13T08:34:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/hans-robot-controlado-por-voz\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/hans-robot-controlado-por-voz\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/hans-robot-controlado-por-voz\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/12\\\/WhatsApp-Image-2022-12-18-at-16.27.08.jpeg\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/12\\\/WhatsApp-Image-2022-12-18-at-16.27.08.jpeg\",\"width\":1500,\"height\":2000},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/hans-robot-controlado-por-voz\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hans (Robot controlado por voz)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"name\":\"Proyectos con Arduino.\",\"description\":\"Blog de proyectos de Arduino de alumnos de la URJC\",\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\",\"name\":\"Universidad Rey Juan Carlos\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"width\":745,\"height\":288,\"caption\":\"Universidad Rey Juan Carlos\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hans (Robot controlado por voz) - Proyectos con Arduino.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/","og_locale":"es_ES","og_type":"article","og_title":"Hans (Robot controlado por voz) - Proyectos con Arduino.","og_description":"Proyecto El proyecto Hans consiste en un robot capaz de realizar determinadas acciones las cuales son ordenadas mediante la voz. El Objetivo de este proyecto es poder a\u00f1adirle m\u00e1s funciones al robot en el&#46;&#46;&#46;","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2022-12-21T21:44:22+00:00","article_modified_time":"2023-03-13T08:34:52+00:00","og_image":[{"width":1500,"height":2000,"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08.jpeg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"","Tiempo de lectura":"14 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/"},"author":{"name":"","@id":""},"headline":"Hans (Robot controlado por voz)","datePublished":"2022-12-21T21:44:22+00:00","dateModified":"2023-03-13T08:34:52+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/"},"wordCount":2088,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08.jpeg","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/","name":"Hans (Robot controlado por voz) - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08.jpeg","datePublished":"2022-12-21T21:44:22+00:00","dateModified":"2023-03-13T08:34:52+00:00","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08.jpeg","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/WhatsApp-Image-2022-12-18-at-16.27.08.jpeg","width":1500,"height":2000},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/hans-robot-controlado-por-voz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"Hans (Robot controlado por voz)"}]},{"@type":"WebSite","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","name":"Proyectos con Arduino.","description":"Blog de proyectos de Arduino de alumnos de la URJC","publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization","name":"Universidad Rey Juan Carlos","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","width":745,"height":288,"caption":"Universidad Rey Juan Carlos"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/5979","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/users\/57"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=5979"}],"version-history":[{"count":34,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/5979\/revisions"}],"predecessor-version":[{"id":6317,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/5979\/revisions\/6317"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media\/6034"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=5979"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=5979"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=5979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}