Echidna En este curso pretende mostrarte el potencial educativo de esta placaCómo utilizarlo, veremos que está adaptado a la programación en primaria o primeros cursos de secundaria con programación Programa arduino con Echidna En este curso pretende mostrarte el potencial educativo de este sencillo escudo. 1.Cómo utilizarlo , veremos que está adaptado a la programación en primaria o primeros cursos de secundaria con programación gráfica 2. Salidas De forma fácil y sin electrónica ya podemos jugar 3. Entradas El joystick, acelerómetro y el LDR son elementos motivadores para la programación y la imaginación. 4. Makey Makey tienes dos placas en una. Se abre otra puerta a las capacidades de nuestros pequeños genios. 5. Extensiones no nos quedamos cortos, podemos construir sencillos robots y proyectos con poco cableado. Además utilizaremos DOS TIPOS DE ECHIDNAS  Fuente Echidna.es Todos los programas de este curso se encuentran en este repositorio: https://github.com/JavierQuintana/Echidna Fuente https://echidna.es/ Hoja de Ruta ¿Dónde se encaja este robot? ¿Se puede comparar este robot con otros robots de otros cursos que hacemos desde CATEDU? Esta es la hoja de ruta, no se tiene que tomar al pie de la letra, pero intenta ayudar al profesorado para que tenga una visión global de tanta oferta: Guía orientativa Tenemos un grupo Telegram Robótica Educativa en Aragón , https://t.me/roboticaeducativaaragon Lenguajes de programación Echidna = Arduino se puede programar  Por bloques (mBlock, Echidna , Scratch, SteamMakerblocks, Blocky....) Por código principalmente Arduino IDE  En este curso vamos a tratar los lenguajes de programación : Echidna mBlock ArduinoIDE  no tienes que saber todos, al menos uno Guía de los lenguajes de programación para robots Tenemos un grupo Telegram Robótica Educativa en Aragón , https://t.me/roboticaeducativaaragon Robótica y accesibilidad 1.- Introducción Durante mucho tiempo la robótica fue patrimonio de personas y/o instituciones con alta capacidad económica (podían adquirir las placas con microcontroladores comerciales) y capacidad intelectual (podían entender y programar el funcionamiento de las mismas) siempre dentro de los límites establecidos por las marcas comerciales y lo que pudieran “desvelar” de su funcionamiento, vigilando siempre que la competencia no “robara” sus secretos y “copiara” sus soluciones. Todo esto saltó por los aires en torno a 2005 con la irrupción de un grupo de profesores y estudiantes jóvenes, que decidieron romper con esta dinámica, tratando de poner a disposición de su alumnado microcontroladores económicamente accesibles y que les permitieran conocer su funcionamiento, sus componentes, e incluso replicarlos y mejorarlos. Nacía  Arduino y el concepto de Hardware Open Source . Detrás de este concepto se encuentra la accesibilidad universal. En un proyecto Open Source todo el mundo puede venir, ayudar y contribuir, minimizando barreras económicas e intelectuales. Arduino traslada al hardware un concepto ya muy conocido en el ámbito del software, como es el software open source o software libre. Software libre Cuando los desarrolladores de software terminan su creación, tienen múltiples posibilidades de ponerlo a disposición de las personas, y lo hacen con condiciones específicas especificadas en una licencia. Esta licencia es un contrato entre el creador o propietario de un software y la persona que finalmente acabará utilizando este software. Como usuarios, es nuestro deber conocer las condiciones y permisos con las que el autor ha licenciado su producto, para conocer bajo qué condiciones podemos instalar y utilizar cada programa. Existen muchas posibilidades de licencias: software privativo, comercial, freeware, shareware, etc.. Nos centraremos aquí en la de software libre. GNU ( https://www.gnu.org ) es una organización sin ánimo de lucro que puso una primera definición disponible de lo que es software libre: Software libre significa que los usuarios del software tienen libertad (la cuestión no es el precio). Desarrollaron el sistema operativo GNU para que los usuarios pudiesen tener libertad en sus tareas informáticas. Para GNU, el software libre implica que los usuarios tienen las cuatro libertades esenciales: 1. ejecutar el programa. 2. estudiar y modificar el código fuente del programa. 3. redistribuir copias exactas. 4. distribuir versiones modificadas. En otras palabras, el software libre es un tipo de software que se distribuye bajo una licencia que permite a los usuarios utilizarlo, modificarlo y distribuirlo libremente . Esto significa que los usuarios tienen libertad de ejecutar el software para cualquier propósito, de estudiar cómo funciona el software y de adaptarlo a sus necesidades, de distribuir copias del software a otros usuarios y de mejorar el software y liberar las mejoras al público. El software libre se basa en el principio de la libertad de uso, y no en el principio de la propiedad. Esto significa que los usuarios tienen la libertad de utilizar el software de la manera que deseen, siempre y cuando no violen las condiciones de la licencia. El software libre es diferente del software propietario, que es el software que se distribuye con restricciones en su uso y modificación. El software propietario suele estar protegido por derechos de autor y solo se puede utilizar bajo los términos y condiciones especificados por el propietario del software. Recomendamos la visualización de este video para entender mejor el concepto. Más adelante, entorno a 2015, en Reino Unido, surgiría también la placa BBC Micro:bit , con la misma filosofía de popularizar y hacer accesible en este caso al alumnado de ese país la programación y la robótica. También hablaremos de ella. 2.- ARDUINO o LA ROBÓTICA ACCESIBLE Arduino es una plataforma de hardware y software libre . Hardware libre Esto significa que tanto la placa Arduino como el entorno de desarrollo integrado (IDE) son de código abierto. Arduino permite a los usuarios utilizar, modificar y distribuir tanto el software como el hardware de manera libre y gratuita, siempre y cuando se respeten las condiciones de las licencias correspondientes. El hardware libre es un tipo de hardware cuya documentación y diseño están disponibles de manera gratuita y libre para su modificación y distribución. Esto permite a los usuarios entender cómo funciona el hardware y adaptarlo a sus necesidades, así como también crear sus propias versiones modificadas del hardware. Arduino surge como solución al  elevado precio de los microcontroladores allá por el año 2005. En el ámbito de la educación, los microcontroladores solo se utilizaban en la etapa universitaria, y su coste era tan elevado que muchos proyectos de fin de carrera se quedaban únicamente en prototipos virtuales ya que las universidades no podían proveer a cada estudiante con un microprocesador, contando además que en el propio proceso de experimentación lo más habitual era que una mala conexión hiciera que se rompieran. Otro gran inconveniente era la dificultad de la programación . Cada fabricante entregaba su manual de programación, lo que hacía que de unos a otros no hubiera un lenguaje estándar, y la consecuente dificultad de interpretación. Además, su programación era a bajo nivel en lenguaje máquina. Generar una simple PWM requería una ardua y minuciosa secuenciación que podía llevar varias horas hasta conseguir el resultado deseado. Por este motivo, el enfoque de Arduino desde el principio fue ser Open Source tanto en hardware como en software. El desarrollo del hardware fue la parte más sencilla. Orientado a educación, sufre algunas modificaciones frente a los microprocesadores existentes para hacer más fácil su manejo y accesibilidad a cualquier sensor o actuador. El mayor esfuerzo se entregó en todas las líneas de código que hacían posible que ya no hubiera que programar a bajo nivel gracias al IDE de Arduino que incluía bibliotecas y librerías que estandarizaban los procesos y hacían tremendamente sencillo su manejo. Ahora el alumnado para mover un motor, ya no tenía que modificar las tramas de bits del procesador una a una, sino que bastaba con decir que quería moverlo en tal dirección, a tal velocidad, o a equis grados. Acabábamos de pasar de unos costes muy elevados y una programación muy compleja a tener una  placa accesible, open source y de bajo coste que además hacía muy accesible su programación y entendimiento , características fundamentales para su implantación en educación, hasta tal punto que su uso ya no era exclusivo de universidades, sino que se extiende a la educación secundaria. Este hecho es fundamental para el desarrollo del Pensamiento Computacional en el aula observándose que su accesibilidad y beneficios son tales, que alcanzan a centros con alumnado de toda tipología como la aplicación del pensamiento computacional y robótica en aulas con alumnos de necesidades especiales. Una vez más, aparece el concepto de accesibilidad asociado a esta filosofía Open Source. A este respecto, recomendamos la lectura de este interesante blog , que tiene por título: ROBOTIQUEAMOS...” Experiencia de aproximación a la robótica en Educación Especial (CPEE ÁNGEL RIVIÈRE). También recomendamos los trabajos robótica en Educación Especial (CPEE ÁNGEL RIVIÈRE):  http://zaragozacpeeangelriviere.blogspot.com/search/label/ROB%C3%93TICA Igualmente, la aparición de Arduino supone una gran facilidad para la aplicación de la robótica y la programación en la atención temprana, donde son numerosas sus aplicaciones desde ayudar a mitigar el déficit de atención en jóvenes autistas, hasta ayudar a socializar a los alumnos con dificultades para ello, o ayudar a alumnos de altas capacidades a desarrollar sus ideas. Por otro lado su accesibilidad económica lo ha llevado a popularizarse en países de todo el mundo , especialmente en aquellos cuyos sistemas educativos no disponen en muchas ocasiones de recursos suficientes, lo que supone en la práctica una democratización del conocimiento y superación de brecha digital. Filosofía del Arduino ver vídeo Arduino y su IDE son la primera solución que aparece en educación con todas las ventajas que hemos enumerado, y esto hace que todos los nuevos prototipados y semejantes tengan algo en común, siempre son compatibles con Arduino Para entender bien la filosofía de Arduino y  el hardware libre, os recomendamos este documental de 30 minutos. Arduino the Documentary Scratch: software libre para el desarrollo del pensamiento computacional Scratch es un lenguaje de programación visual desarrollado por el grupo Lifelong Kindergarten del MIT Media Lab. Scratch es un software libre. Esto significa que está disponible gratuitamente para todos y que se distribuye bajo una licencia de software libre, la Licencia Pública General de Massachusetts (MIT License). Esta licencia permite a los usuarios utilizar, modificar y distribuir el software de manera libre, siempre y cuando se respeten ciertas condiciones. Entre otras cosas, la licencia de Scratch permite a los usuarios utilizar el software para cualquier propósito, incluyendo fines comerciales. También permite modificar el software y distribuir las modificaciones, siempre y cuando se incluya una copia de la licencia y se indique que el software ha sido modificado. En resumen, Scratch es un software libre que permite a los usuarios utilizar, modificar y distribuir el software de manera libre y gratuita, siempre y cuando se respeten las condiciones de la licencia. De hecho, gracias a que está licenciado de esta forma, han surgido decenas de variaciones de Scratch para todo tipos de propósitos, eso sí, siempre educativos y relacionados con las enseñanzas de programación y robótica 3. BBC micro:bit y la Teoría del Cambio BBC micro:bit, a veces escrito como Microbit o Micro Bit, es un pequeño ordenador del tamaño de media tarjeta de crédito, creado en 2015 por la BBC con el fin de promover el desarrollo de la robótica y el pensamiento computacional entre la población escolar del Reino Unido. Actualmente su uso está extendido entre 25 millones de escolares de 7 a 16 años de más de 60 países. Tarjeta BBC micro:bit V1. Fuente: https://microbit.org . CC BY-SA 4.0. Aunque el proyecto fue iniciado por la BBC, su desarrollo fue llevado a cabo por 29 socios tecnológicos de primera línea. Por ejemplo, la implementación del Bluetooth integrado en la tarjeta corrió a cargo de la fundación propietaria de la marca, Bluetooth SIG, una asociación privada sin ánimo de lucro. El hardware y el software resultantes son 100% abiertos , y están gestionados por una fundación sin ánimo de lucro que comenzó a funcionar en el año 2016, la Micro:bit Educational Foundation . La fundación basa sus actuaciones en su Teoría del Cambio, Teoría del cambio y más sobre microbit Teoría del cambio puede resumirse en tres principios: El convencimiento de que la capacidad de comprender, participar y trabajar en el mundo digital es de vital importancia para las oportunidades de vida de una persona joven. La necesidad de emocionar y atraer a las personas jóvenes por medio de BBC micro:bit, especialmente a  las que podrían pensar que la tecnología no es para ellas. Diversificar a los estudiantes que eligen las materias STEM a medida que avanzan en la escuela y en sus carreras, para hacer crecer una fuente diversa de talento, impulsando la equidad social y contribuyendo a crear una tecnología mejor. Para desarrollar sus principios, la fundación trabaja en tres líneas de acción: El desarrollo de hardware y software que contribuyan a despertar el entusiasmo en las personas jóvenes hacia la tecnología y hacia las oportunidades que presenta. La creación de recursos educativos gratuitos y fáciles de usar que permitan al profesorado enseñar de forma atractiva y creativa. La colaboración con entidades asociadas que compartan una misma visión para ofrecer programas educativos de alto impacto en todo el mundo. Uno de los objetivos de la Micro:bit Educational Foundation es llegar a 100 millones de escolares en todo el mundo. En correspondencia con las líneas de acción y con los principios expuestos, el sistema resultante es muy económico: tanto las placas como los accesorios producidos por terceras empresas tienen un precio muy contenido. Además, dado el carácter abierto del proyecto, están disponibles algunos clones totalmente compatibles, como Elecrow Mbits o bpi:bit. Estos clones son incluso más potentes y económicos que la placa original. El universo micro:bit destaca por su alta integración de software y hardware : basta un clic de ratón para cargar las librerías necesarias para que funcione cualquier complemento robótico, como sensores, pantallas, tarjetas de Internet de las Cosas, robots, casas domóticas, etc. La programación de la placa se realiza desde un ordenador a través de un navegador cualquiera, estando disponibles 12 lenguajes de programación . De nuevo, por ser un sistema abierto, existen múltiples soluciones de programación, aunque las más común es MakeCode . Captura de pantalla del editor MakeCode, https://makecode.microbit.org/# . El sitio web MakeCode permite programar con bloques y también en Python y en Java, traduciendo de un lenguaje a otro instantáneamente. No se necesita ningún registro en la plataforma para poder programar. Los programas también pueden guardarse descargados en el ordenador compilados en código de máquina. Al subir de nuevo el programa al editor, se realiza una decompilación automática al lenguaje de bloques, Python o Java. Los programas guardados en código de máquina se pueden cargar directamente en micro:bit, que en el escritorio de un ordenador se maneja como una simple unidad de memoria USB. MakeCode contiene además múltiples recursos como tutoriales, vídeos, fichas de programación, cursos para el profesorado, ejemplos y propuestas de proyectos y experimentos, todo ello en varios idiomas y clasificado por edades desde los 7 años. Otra solución muy usada para programar micro:bit es MicroPython , creada por Python Software Foundation, otra organización sin ánimo de lucro. MicroCode permite que los más pequeños, a partir de los 6 años de edad, programen micro:bit mediante un sistema de fichas dispuestas en líneas de acción. Están disponibles un tutorial introductorio en 20 idiomas, una guía del usuario y muchos ejemplos. El proyecto es de código abierto. Micro:bit también es programable en Scratch con sólo añadir una extensión al editor. Todos los entornos de desarrollo descritos disponen de un simulador de micro:bit, por lo que ni siquiera resulta necesario disponer de una tarjeta física para aprender a programar. Una vez realizada la programación, la placa y sus complementos pueden funcionar desconectados del ordenador por medio de un cargador de móvil, una batería externa o un simple par de pilas alcalinas. Versiones y características de micro:bit A pesar de su pequeño tamaño, micro:bit es un sistema potente. Existen dos versiones de la placa. La más moderna, llamada micro:bit V2, tiene las siguientes características: Procesador de 64 MHz. 512 KB de RAM Flash y 128 KB de RAM. Matriz de 5 x 5 LED rojos. Dos pulsadores mecánicos y un tercer pulsador de apagado y reset. Un pulsador táctil. Micrófono y altavoz. Acelerómetro y brújula. Sensores de luz y de temperatura. Comunicación con otras placas por Bluetooth de bajo consumo. Alimentación a 3 V o por USB. 25 pines de entradas y salidas para conectar motorcitos, sensores, placas de Intenet de las Cosas, robots y, en general, cualquier otro tipo de accesorio. 200 mA de intensidad de corriente disponibles en las salidas para alimentar accesorios. 4.- LA IMPORTANCIA DEL OPEN SOURCE / CÓDIGO ABIERTO EN EDUCACIÓN La creación, distribución, modificación y redistribución del hardware y software libre así como su utilización, están asociados a una serie de valores que deberían ser explicados en la escuela a nuestros alumnos para dar una alternativa a la versión mercantilista de que cualquier creación es creada para obtener beneficios económicos. En GNU, pusieron especial énfasis en la difusión del software libre en colegios y universidades, promoviendo una serie de valores fundacionales: Valores GNU   Compartir El código fuente y los métodos del hardware y software libre son parte del conocimiento humano. Al contrario, el hardware software privativo es conocimiento secreto y restringido. El código abierto no es simplemente un asunto técnico, es un asunto ético, social y político. Es una cuestión de derechos humanos que la personas usuarias deben tener. La libertad y la cooperación son valores esenciales del código abierto. El sistema GNU pone en práctica estos valores y el principio del compartir, pues compartir es bueno y útil para el progreso de la humanidad. Las escuelas deben enseñar el valor de compartir dando ejemplo. El hardware y software libre favorece la educación pues permite compartir conocimientos y herramientas. Responsabilidad social       La informática, electrónica, robótica... han pasado a ser una parte esencial de la vida diaria. La tecnología digital está transformando la sociedad muy rápidamente y las escuelas ejercen una influencia decisiva en el futuro de la sociedad. Su misión es preparar al alumnado para que participen en una sociedad digital libre, mediante la enseñanza de habilidades que les permitan tomar el control de sus propias vidas con facilidad. El hardware y el software no debería estar bajo el poder de un desarrollador   que toma decisiones unilaterales que nadie más puede cambiar. Independencia       Las escuelas tienen la responsabilidad ética de enseñar la fortaleza, no la dependencia de un único producto o de una poderosa empresa en particular. Además, al elegir hardware y software libre, la misma escuela gana independencia de cualquier interés comercial y evita permanecer cautiva de un único proveedor. Las licencias de hardware y software libre no expiran Aprendizaje       Con el open source los estudiantes tienen la libertad de examinar cómo funcionan los dispositivos y programas y aprender cómo adaptarlos si fuera necesario. Con el software libre se aprende también la ética del desarrollo de software y la práctica profesional. Ahorro       Esta es una ventaja obvia que percibirán inmediatamente muchos administradores de instituciones educativas, pero se trata de un beneficio marginal. El punto principal de este aspecto es que, por estar autorizadas a distribuir copias de los programas a bajo costo o gratuitamente, las escuelas pueden realmente ayudar a las familias que se encuentran en dificultad económica, con lo cual promueven la equidad y la igualdad de oportunidades de aprendizaje entre los estudiantes, y contribuyen de forma decisiva a ser una escuela inclusiva. Calidad       Estable, seguro y fácilmente instalable, el software libre ofrece una amplia gama de soluciones para la educación. Para saber más En los años 90, era realmente complicado utilizar un sistema operativo Linux y la mayoría de la cuota del mercado de los ordenadores personales estaba dominada por Windows. Encontrar drivers de Linux para el hardware que tenía tu equipo era casi una quimera dado que las principales compañías de hardware y de software no se molestaban en crear software para este sistema operativo, puesto que alimentaba la independencia de los usuarios con respecto a ellas mismas. Afortunadamente, y gracias a la creciente presión de su comunidad de usuarios, estas situaciones pertenecen al pasado, y las compañías fabricantes de hardware han tenido que variar el rumbo. Hoy en día tenemos una gran cantidad de argumentos en los que nos podemos basar para dar el salto hacia cualquier sistema operativo basado en Linux. Tal y como podemos leer en educacionit.com, podemos encontrar las siguientes ventajas: Es seguro y respeta la privacidad de los usuarios: Aunque hay compañías linuxeras, como Oracle, Novell, Canonical, Red Hat o SUSE, el grueso de distribuciones y software Linux está mantenido por usuarios y colectivos sin ánimo de lucro. De esta forma, podemos confiar en que una comunidad que tiene detrás millones de usuarios, pueda validar el código fuente de cualquier de estas distribuciones, asegurándonos la calidad de las mismas, compartir posibles problemas de seguridad, y sobre todo, estar bien tranquilos con la privacidad y seguridad de nuestros datos e información personal, aspecto que debería ser crítico y determinante a la hora de trabajar con los datos de menores de edad en las escuelas y colegios. Es ético y socialmente responsable: La naturaleza de Linux y su filosofía de código abierto y libre hace posible que cualquier usuario con conocimientos pueda crear su propia distribución basada en otras o probar las decenas de versiones que nos podemos encontrar de una distribución Linux. Este es el caso de Ubuntu por ejemplo. Gracias a esta democratización de los sistemas operativos, incluso han podido aparecer en nuestras vidas nuevos dispositivos basados en software y hardware libre como Arduino y Raspberry Pi. Es personalizable: el código abierto permite su estudio, modificación y adaptación a las necesidades de los diferentes usuarios, teniendo así no un único producto sino una multiplicidad de distribuciones que satisfacen las necesidades de los diferentes colectivos a los que se dirijan. Especialmente útiles son las distribuciones educativas libres, que pueden ser adaptadas a las necesidades de las escuelas. Está basado en las necesidades de los usuarios y no en las de los creadores de hardware y software Es gratis. La mayoría de las distribuciones Linux son gratuitas y de libre descarga Es fácil de usar. Una de las barreras que durante años ha evitado a muchos usar Linux es su complejidad. Las distribuciones orientadas al consumo doméstico cumplen los estándares de simplicidad y necesidades que cualquier usuario sin conocimientos de tecnología pueda necesitar. El entorno gráfico es sencillo, intuitivo, e incluso se puede customizar para que se pueda parecer a los más conocidos como Windows y MacOS. Además, vienen con la mayoría de aplicaciones que cualquier usuario puede necesitar: ofimáticas, edición de audio y vídeo y navegación por Internet. Es suficiente. Tiene su propio market de aplicaciones. Como el resto de sistemas operativos ya sea para ordenadores o dispositivos móviles, también podemos encontrar un lugar único donde poder descargar cientos de aplicaciones para todos los gustos y necesidades. Por estas razones, el software libre se ha expandido por toda la comunidad educativa en los últimos años de manera exponencial. Un buen ejemplo de lo que estamos hablando es Bookstack , este sistema de edición de contenidos para cursos que utiliza Aularagón así como el uso de Moodle como plataforma de enseñanza y aprendizaje. En cuanto a sistema operativo para ordenadores, en Aragón disponemos de nuestra propia distribución Linux: Vitalinux EDU. Tal y como podemos leer desde su página web: Vitalinux EDU (DGA) es la distribución Linux elegida por el Gobierno de Aragón para los centros educativos. Está basada en Vitalinux, que se define como un proyecto para llevar el Software Libre a personas y organizaciones facilitando al máximo su instalación, uso y mantenimiento. En concreto Vitalinux EDU (DGA) es una distribución Ubuntu (Lubuntu) personalizada para Educación, "tuneada" por los requisitos y necesidades de los propios usuarios de los centros y adaptada de forma personalizada a cada centro y a la que se ha añadido una aplicación cliente Migasfree. De ésta forma, obtenemos: Un Sistema Ligero. Permite "revivir" equipos obsoletos y "volar" en equipos modernos. Esto garantiza la sostenibilidad de un sistema que no consume recursos de hardware innecesariamente ni obliga a la sustitución del hardware cada poco tiempo en esa espiral de obsolescencia programada en la que se ha convertido el mercado tecnológico. Facilidad en la instalación y el uso del sistema mediante programas personalizados. Un Sistema que se adapta al centro y/o a cada aula o espacio, y no un centro que se adapta a un Sistema Operativo. Gestión de equipo y del software de manera remota y desatendida mediante un servidor Migasfree. Inventario de todo el hardware y software del equipo de una forma muy cómoda. Soporte y apoyo de una comunidad que crea, comparte e innova constantemente. 1. Cómo utilizar Echidna ¿Cómo utilizar Echidna? En este tema veremos: SI UTILIZAS LA ECHIDNA SHIELD antes hay que conocer el ARDUINO si utilizas la EchidnaBlack no hace falta, el Arduino esta integrado dentro de ella. Qué programa vamos a utilizar para programarlo Comparativa  de otros robots y propuestas para enseñar el pensamiento computacional en nuestras clases. Antes de nada comprueba que tu Echidna... 1-Tenga el interruptor hacia el lado de SENSOR (excepto cuando trabajes en modo Makey Makey que hay que ponerlo en MkyMky) 2-El volumen ponlo alto , la flecha mirando a los leds 3-El jumper conectado a 5V dejando libre el de Vin No veas el Echidna como una placa diferente al Arduino, es simplemente un Arduino con los sensores y actuadores integrados. De echo puedes hacer los programas de este curso y los de IA perfectamente CON ARDUINO y SIN ECHIDNA pero tienes que tener los sensores y actuadores correspondientes.  No puedes hacer los programas de Makey Makey pues eso lo tiene Echidna pero no Arduino Ver https://libros.catedu.es/books/echidna/page/tengo-arduino-puedo-hacer-los-programas-sin-echidna Todos los programas de este curso se encuentran en este repositorio:  https://github.com/JavierQuintana/Echidna Source: https://echidna.es/ ¿Sabías que...? Las placas Echidna son  Open Hardware es decir, su diseño es abierto a mejoras, utilización... aquí tienes los planos https://echidna.es/hardware/echidnablack/documentacion-echidnablack/ Conocer el Arduino primero Si tienes Echidna Shield es necesario utilizar el Arduino conectado al Echidna. Si tienes Echidna black, ya lo tienes integrado. En los dos casos recomendamos conocer el Arduino pues es el cerebro de la placa. Conocer el Arduino básico Para manejar el Echidna no tienes que conocer en profundidad el Arduino sólo tienes que saber : El corazón del Echidna Black es un Arduino nano integrado en la placa, y en Echidna Red no hay, se lo tienes que poner, es un escudo que se acopla a un Arduino Uno ¿Para qué me sirve saber eso?  Pues para saber que cualquier programa, actividad con Arduino lo puedes hacer con el Echidna El Echidna no es más que un Arduino con unos sensores y actuadores para trabajar diréctamente sin necesidad de cableado Conocer el Arduino avanzado Si quieres saber más de esta placa, estos son los conocimientos avanzados, no necesarios para manejar Echidna de forma normal : ¿Qué es Arduino? Arduino es una tarjeta electrónica que integra básicamente a un microcontrolador y un conjunto de pines de conexión de entradas y salidas que permiten, mediante un determinado programa, interaccionar con el medio físico mediante sensores y actuadores electrónicos. De esta forma podrás crear tus propios proyectos tecnológicos, dotarlos de sensores que detecten magnitudes físicas como luz, calor, fuerza, etc… y en base a esa información, escribiendo un programa, activar otros dispositivos (actuadores) como pequeñas bombillas, ledes, servomotores, pequeños motores DC, relés, etc… Los sensores se conectan a los pines de entrada y los actuadores a los de salida. ¿Sabías que.... ?  Uno de los co-creadores de Arduino es Español, de Zaragoza: David Cuartielles +info ¿Qué es un microcontrolador? Es un circuito integrado que se puede programar, o sea que puede ejecutar las órdenes que tenga almacenadas en su memoria. Tiene las tres funciones principales de un computador: la unidad central de proceso, memoria y entradas y salidas. Arduino utiliza la marca ATMEL, y el modelo de microcontrolador depende del tipo de tarjeta, por ejemplo la tarjeta Arduino Uno utiliza el micro ATMEL MEGA 328P. Si quieres saber las entrañas de esta placa aquí ¿Qué se puede hacer con Arduino? ¿Algún ejemplo? Realmente el límite lo marca tu imaginación pero por dar alguna pista, podrías diseñar un sistema para la apertura y cierre de la puerta de un garaje, hacer un robot móvil que detecte objetos o que siga una línea negra, crear un detector de luz y oscuridad, implementar un termómetro, controlar un cilindro neumático, etc… En este manual tienes múltiples ejemplos de pequeños proyectos para el aula, aunque Arduino es una herramienta que también se utiliza en el ámbito profesional para monitorización de sensores y automatización a pequeña escala por su flexibilidad, fiabilidad y precio. ¿Qué son las entradas y salidas? Mediante los conectores de Arduino correspondientes a las entradas y salidas podemos comunicar nuestros programas con el “mundo exterior”. Si queremos leer el valor de la magnitud física medida por un sensor, por ejemplo una LDR que detecta el nivel de luminosidad, lo tendremos que hacer conectando el sensor a uno de los pines de entrada (en este caso analógicas) de la tarjeta. De esta forma con una simple instrucción de lectura en el programa, podremos obtener el valor de la magnitud física. Si nuestra intención es actuar o “hacer algo” una vez leído el valor del sensor, por ejemplo encender un led si el sensor de luminosidad detecta oscuridad, tendremos que conectar el actuador (en este caso el led) a un pin de salida que proporcionará la corriente necesaria para activarlo. En Arduino las entradas pueden ser analógicas o digitales y las salidas sólo digitales. Cada pin digital tiene doble función entrada o salida. En la zona de configuración del programa hay que indicar explícitamente mediante una instrucción cuál es función desempeña un determinado pin. ¿Dónde se conectan los sensores? ¿A las entradas analógicas o digitales? La mayoría de sensores miden señales analógicas y proporcionan una variación de voltaje dentro de un rango (normalmente de 0 a +5V) dependiendo de lo que varíe la magnitud física medida. Muchos sensores son resistivos a algo (luz, temperatura, humedad,…), es decir que varían su resistencia eléctrica con la magnitud física, pero mediante un sencillo montaje de divisor de tensión conseguimos una variación de voltaje apta para Arduino. Estos montajes los veremos en las prácticas. Veamos este ejemplo: El sensor LDR es una resistencia que cambia según la intensidad de la luz. La estrategia es colocar el LDR en un divisor de tensión con otra resistencia de valor parecido al promedio del que da el LDR (por ej 10k), y el valor del punto de unión proporciona una tensión entre 0 y 5V. Como es una señal analógica, la conectamos a una entrada analógica (en la figura al A6) Una vez realizadas las conexiones, si midieramos la salida del sensor con un voltímetro nos daría un valor decimal, por ejemplo un nivel de luz “intermedio” (rango de 0 a 5V) de un sensor de luz podría dar 3,3 voltios. Este tipo de información el microcontrolador no la entiende tal cual , sólo es capaz de interpretar números binarios (“0” ó “1”) por lo que para traducir los valores analógicos dispone internamente de un conversor analógico – digital que hará la conversión entre los dos sistemas, de forma que podremos tener valores discretos de la medida de los sensores analógicos. En el Arduino las entradas analógicas leen valores analógicos entre 0V y la alimentación (normalmente 5V) y los convierten en números entre 0 y 1023 (porque lo codifica en 10 dígitos binarios proporcionan  2 10 = 1024 combinaciones). Por ejemplo, si la entrada analógica lee un valor de 3,3V y la fuente de alimentación es 5V, la señal analógica que lee Arduino, haciendo una regla de 3, tiene un valor de 3,3 * 1023 / 5 = 675,18 = 675 Mapeo Para convertir estos valores 0 -1023 a valores más legibles, por ejemplo 0 - 100 para representarlo en % o 0-5 para que represente la medida en voltios ... veremos en programación la función mapear La mayoría de los sensores nos lo venden ya preparados montados en una pequeña placa electrónica y con circuitos integrados auxiliares para no tener que estar haciendo divisores de tensión. Pueden tener salida analógica o salida digital , que en este caso lo tenemos que conectar a cualquier entrada digital D0 hasta D13. Veamos el mismo ejemplo del LDR: Podemos comprar este módulo: Estos módulos proporcionan 3 pines: dos que son la alimentación, (0V, GND o - )  y (+5V V+o Vcc) y el pin que proporciona la lectura (Vout o D0 o I/O). En el caso de que sea un sensor que mida una magnitud analógica como en este caso la luz, suelen proporcionar un potenciómetro para determinar qué luminosidad se considera un 0 o un 1. ¿Hay sensores digitales que no estén en una placa electrónica? Las entradas digitales sin una placa electrónica son cuando las señales a leer son valores discretos. Por ejemplo queremos poner un pulsador o un interruptor que encienda un led. Hacemos un montaje que cuando se pulse, entren 5 voltios en el pin digital de entrada y cuando no se pulse que “entren” 0 voltios. De esta manera la lectura del pin digital de entrada será “HIGH” con 5 voltios o “LOW” con 0 voltios. Veremos más adelante que un interruptor no es un simple cable que conectamos a +5V o a 0V pues ¿Qué valor lee Arduino mientras levantamos el cable de un sitio a otro?, para ello veremos configuraciones Pull-up o Pull-down que se repiten en muchos sensores. ¿Qué son las salidas digitales etiquetadas con PWM (~)? Son salidas digitales que simulan una salida analógica . Las siglas significan Modulación por Ancho de Pulso (Pulse Width Modulation) es decir, proporcionan una onda cuadrada con un nivel alto (+5V) de “cierta” duración. Los valores PWM que podemos proporcionar pueden ir desde 0 a 255. Un valor bajo es una señal cuadrada donde el pulso es pequeño comparado con el periodo (ver figura primera señal) por lo tanto el Valor medio es bajo. Un valor mitad, es decir 255/2 = 127 o 128, corresponde a una señal cuadrada perfecta (ver figura segunda señal) por lo que el Valor medio es la mitad, si 5V es la tensión de alimentación, sería 2,5V. Un valor alto es una señal cuadrada donde el pulso es grande comparado con el periodo (ver figura la tercera señal) por lo tanto el Valor medio es alto Un valor 0 corresponde a un 0V analógico y sería una señal sin pulso Un valor 255 corresponde a la máxima tensión (la de alimentación (normalmente 5V).  La frecuencia es de 490Hz para los pines 3, 9, 10, 11 y de 980Hz para los pines 5 y 6 en un Arduino UNO o Nano De esta manera podemos simular señales analógicas, esto es muy útil para activar servomotores y llevarlos a una posición determinada o variar la luminosidad de un led o en los motores de los robots que vayan más deprisa o más despacio ¿Puedo accionar motores DC con Arduino? Si son motores muy, muy pequeños sí sería posible aunque no es recomendable, pueden dañar la placa. Los motores necesitan un consumo alto de corriente, sobre todo si tienen que mover cierta carga, por lo que se recomienda o bien utilizar una tarjeta Shield o extensión de Arduino que dispone de circuitería apta para proporcionar dicha corriente (transistores). En el curso Arduino con código u tiliza una Shield llamada Edubásica que dispone de un transistor y un circuito integrado LM293 para realizar esta función, además de otras ventajas para el aprendizaje de Arduino. En el curso Rover con Arduino utiliza Shield motor para NodeMCU Hardware del Arduino Si tienes Echidna Shield es necesario utilizar el Arduino conectado al Echidna. Si tienes Echidna black, ya lo tienes integrado. En los dos casos recomendamos conocer el Arduino pues es el cerebro de la placa. Hardware del Arduino básico Para programar Echidna tienes que saber que Arduino tiene 14 Entradas y salidas digitales que se llaman D0 a D13 El D0 y el D1 es mejor no utilizarlas, pues lo utiliza el puerto USB para comunicarse con el ordenador, es decir, no se pueden utilizar a la vez teniendo el Arduino conectado al ordenador. Las entradas y salidas digitales tiene sólo dos valores, (0v o 5V) que es lo mismo que (0 y 1 digitales), que es lo mismo que (LOW HIGH en inglés) o (BAJO y ALTO en castellano que sale en la programación en bloques) 5 Entradas analógicas que se llaman A0 a A5 Que leen valores desde 0 hasta 1024  esto es importante En EchidnaBlack  al tener un Arduino Nano tiene también 2 más A6 y A7 Hardware del Arduino avanzado Para manejar el Echidna de forma normal no es necesario saber con profundidad el Hardware del Arduino , pero aquí van unos conocimientos avanzados por si te interesa: Placa Arduino Arduino puede tomar información del entorno a través de sus pines de entrada de toda una gama de sensores y puede afectar aquello que le rodea controlando luces, motores y otros actuadores.  Arduino UNO R3 by GmedranoTIC on Sketchfab Entradas y salidas La placa Arduino UNO consta de: DIGITALES : 14 entradas/salidas digitales D0-D13 previamente hay que configurarlas o entradas o salidas. Que operan a 5 ó 0 voltios. Cada pin puede proporcionar o recibir como máximo 40 mA. Los pines D0 y D1 son compartidos por el puerto USB por lo tanto no se pueden utilizar si se está comunicando con el ordenador, están marcados como TX/RX (transmisión y recepción puerto serie). ANALOGICAS 6 entradas analógicas A0 al A5 con una resolución de 10 bits que proporcionan un número entero de 0 a 1023. Por defecto miden de 0 voltios (masa) hasta 5 voltios.  6 salidas pseudo-analógicas, en los pines digitales 3, 5, 6, 8, 10 y 11 son PWM (Pulse Width Modulation) y como hemos visto, pueden proporcionar una salida cuadrada que su valor medio puede estar entre 0 y 5V La intensidad de corriente que pueden proporcionar como salida son 20mA. Pines de la placa Elementos con los que podemos interactuar: (tomando como ejemplo la placa USB). Empezando en el sentido de las agujas del reloj desde el centro de la parte superior: Pin de referencia analógica (naranja). Señal de tierra digital (verde claro). Pines digitales 2-13 (verde). Pines digitales 0-1 / entrada y salida del puerto serie: TX/RX (azul) (estándar de comunicación serie IC2). Botón de reset (negro). Entrada del circuito del programador serie (marrón). Pines de entrada analógica 0-5 (azul oscuro). Pines de alimentación y tierra (naranja y naranja claro). Entrada de la fuente de alimentación externa (9-12V DC) X1 (gris). - Entrada fuente de alimentación externa  SV1: En las placas antiguas existen estos pines para conmutar si la alimentación es por el puerto USB, ahora lo realiza automáticamente un transistor MOSFET Puerto USB (rojo). Las placas: Arduino Diecimila, Arduino Duemilanove o UNO y Arduino Mega están basados en los microcontroladores Atmega168, Atmega 328 y Atmega1280 respectivamente. Trabajan a 16MHz, una velocidad suficiente para proyectos de robótica. Su capacidad de memoria Flash van desde 16k el Atmega168 hasta 128k Atmega1280, suficientes para que quepan nuestros programas de robótica. SHIELDS para Arduino Las llamadas Shields (escudos) para Arduino son tarjetas que se acoplan a la placa Arduino y añaden funciones y potencialidad a la placa Arduino.  Según mi criterio hay dos tipos de Shields: Las educativas y las no educativas Shields educativas Hay muchas Shields Educativas, vamos a ver unos pocos ejemplos La shield de l curso Arduino con código EDUBASICA, que integra algunos sensores y actuadores, pero lo que destaca es que además tiene la opción de conexión de motores o actuadores que requieran potencia, pues la placa Arduino por sí sola no puede proporcionar la suficiente intensidad para alimentar motores, relés o electroválvulas. El límite de intensidad que proporciona cada una de las salidas digitales es de 40 mA. Para poder activar estos dispositivos tendremos que montar un circuito externo adicional con transistores o circuitos integrados específicos para motores, como es el caso del LM293, que entregan la intensidad suficiente. Para facilitarnos la tarea esta placa integra un LM293 y un transistor de potencia, en total 5 salidas de potencia. La shield del curso ECHIDNA   que tiene integrados sensores y actuadores como el acelerómetro, sensor de luz, pulsadores, potenciómetro, altavoz...  y destaca el Joystick con la posibilidades de gamificación que se puede hacer con este elemento. También destaca el modo MAKEY que permite convertir los pines analógicos y los digitales D2 D3 en pines sensibles al tacto, con las mismas posibilidades que la placa MAKEY MAKEY ( ver curso Makey Makey ). Actualmente Echidna ya no fabrica esta Shield sino comercializa la ECHIDNA BLACK que no es una shield sino es autónoma (es decir, NO necesita la placa Arduino, la tiene integrada) . La shield del curso ARDUINO EN EL AULA, la TDR-STEAM   que tiene muchas posibilidades didácticas por su sensores (temperatura, humedad, luz, potenciometro, pulsador, receptor IR). La Shield k5864195 muy sencilla y barata, si lo que se busca son sensores sencillos (pulsadores, potenciómetro) y actuadores sencillos (altavoz, leds y display 7 segmentos). Shield Protoboard que simplemente tiene una placa para hacer los prototipos. Por ejemplo Curso de Domótica con Arduino Shields no educativas Es difícil elegir unos ejemplos de toda la variedad comercial que existe y tanta vitalidad de versiones ( ver lista ), preferimos que en caso de que necesites alguna función extra a tu Arduino, busques en ese momento cual es la mejor Shield que se adapta a tu proyecto. Es importante que sepas que existen Shields para todo, por ejemplo para... Agregar conectividad al Arduino, ya sea por red móvil (3G, 4G), por Wifi, Bluetooth o por cable Ethernet o incluso localización GPS. Agregar potencia a las salidas para conectar por ejemplo motores, como el de Edubásica pero más especializado en esta función y con más salidas pero por ejemplo la L293D ⨤7€ permite 4 motores, motor paso a paso, servo... . Shields con relés para conectar sensores y actuadores con tensión y así no tienes problemas de quemar el Arduino. Shields con batería que en el caso de corte de alimentación, permiten que el Arduino no se apague. Entrada y salida de  imagen con pantalla líquida y cámara Y encima se pueden apilar !! consiguiendo aumentar la capacidad de tu Arduino tanto como necesites (sin pasarte, pues pues alimentación del Arduino es limitada al menos que la Shield tenga su propia alimentación. via GIPHY Alimentación eléctrica de Arduino Uno de los aspectos claves para el buen funcionamiento de proyectos con Arduino, es que no incluyan elementos que consuman una intensidad superior a 200 mA como motores, relés, electroválvulas, etc.. Si los incluyen, entonces todo falla, debido a que no se ha alimentado correctamente la placa. Tenemos dos posibilidades para alimentar Arduino: A .- Mediante el cable USB conectado al ordenador: Cada pin proporciona 40 mA. El límite proporcionado por el USB es de 500 mA en total. Si conectamos demasiada carga, la placa Arduino suele tener un comportamiento anómalo pudiéndose resetear el micro. B .- Utilizando una fuente de alimentación externa conectada al Jack de Arduino (fuente de voltaje, adaptador de corriente, batería o portapilas) : El voltaje recomendado de la fuente externa está entre 7 y 12V. Tiene un diodo de protección para proteger la placa de cambio de polaridad accidental. La intensidad máxima que puede entregar Arduino a los actuadores que queramos controlar (servos, motores, relés,...) es de 1A, aunque una exposición prolongada a esta corriente puede estropear la placa. Lo recomendable son 500 mA. El pin serigrafiado con Vin proporciona directamente el voltaje de la fuente conectada al Jack de Arduino (menos la caída de tensión del diodo de protección) Desde ese pin podemos sacar un cable y alimentar a los actuadores que necesitemos. Por ejemplo, si alimentamos con una pila externa de 9V conectada al jack, en el pin Vin tendremos aproximadamente 9V (hay que restar la caída de tensión del diodo de protección que será de medio voltio). Además en los pines 5V y 3.3V dispondremos también de dichos voltajes aunque la fuente externa sea de 9V. C.- No recomendable: Conectando el positivo (+Vcc) de la fuente externa a Vin y el negativo a GND: Podemos alimentar Arduino externamente si necesidad de conector Jack a través de Vin y GND el problema es que nos saltamos un diodo de protección que evita  que se queme el circuito por un exceso de corriente. CONCLUSIÓN: Si necesitamos hacer funcionar actuadores de bajo consumo (luces, zumbadores, etc...) podremos trabajar directamente con el USB conectado al ordenador o conectado a un PowerBank. Si necesitamos mover cargas, excitar bobinas u otros elementos de mayor consumo lo recomendable es alimentar externamente Arduino desde el Jack con un rango de 9 a 12V. Si vas a utilizar elementos que requieran más de 800mA tienes que usar la alimentación externa del Jack  y alimentar esos elementos por el pin Vin del Arduino. Si esos elementos van a ser alimentados de forma independiente. ES IMPORTANTE UNIR LAS MASAS , En caso contrario, romperás la placa Arduino. En este ejemplo se ha conectado el motor a una tensión externa (la pila) y la placa Arduino al USB fíjate como se han unido las masas Opcionalmente se ha optado por unir el + de la pila con Vin. Eso equivale a conectar la pila al Jack. Esto hace que si quitamos la alimentación USB, la placa Arduino sigue alimentada. Es recomendable unir la fuente externa (pila) al jack y no como se muestra, pues así tienes un diodo de protección que te protege la placa Arduino en el caso de que cambies la polaridad de la pila de forma accidental. ¿Porqué en este circuito no se ha hecho así? Porque en Tinkercad no he encontrado un Jack. Software del Arduino Independientemente que tengas ECHIDNA SHIELD o ECHIDNA BLACK los dos se basan en Arduino, luego tienes que conocer qué programas hay para programar tu Echidna. Para programar Echidna de forma normal, tienes que saber: Arduino se puede programar de dos maneras CON CÓDIGO CON BLOQUES o GRÁFICO En vivo Carga Los dos Que en este curso utilizaremos BLOQUES o GRÁFICO y mostraremos dos opciones Recomendado  Con EchidnaScratch que trabaja en vivo (te recomendamos leer EN VIVO está más abajo qué es eso. Con mBlock que permite trabajar en vivo o carga Importante entender que para trabajar EN VIVO se necesita un FIRMWARE que veremos en el Echidna cual es, pero tranquilo que ya viene cargado de fábrica y seguramente no tienes que hacer nada. Tipos de lenguajes Si quieres saber más detalles y posibilidades, aquí tienes unos conocimientos más avanzados Las placas electrónicas educativas (Echidna, Micro:bit, Arduino, ESP32 ...)  se programan mediante varias opciones : OPCIÓN LENGUAJE GRÁFICO POR BLOQUES Recomendado para primaria. Tenemos muchas posibilidades de lenguajes gráficos. Destacamos dos: ECHIDNASCRATCH Específico para Echidna e integra la IA CURSO DE ECHIDNA MBLOCK  Basado en Scratch. Aunque es un programa especializado en el robot comercial mBot, (basado en Arduino), el mismo programa está adaptado para programar Arduino. CURSO ARDUINO CON MBLOCK   se utiliza Arduino y placa Protoboard CURSO DE ECHIDNA   se utiliza la Shield Echidnam y EchidnaBlack CURSO DE MBOT  se utiliza el robot mBot STEAMAKERBLOCKS (antes ARDUINOBLOCKS)  se trabaja online, muy visual y muy amigable. Está adaptado tanto para trabajar tanto Arduino como muchas placas controladoras y en el aula. Podemos verlo en los siguientes cursos: CURSO ROVER CON ARDUINO aunque no se utiliza un Arduino, sino un NodeMCU pero la programación es exactamente igual CURSO DE ARDUINO CON ARDUINOBLOCKS donde se utiliza el Arduino con una placa protoboard CURSO ARDUINOBLOCKS EN EL AULA  donde se utiliza la Shield TDR-STEAM CURSO ESP32 EN EL AULA donde también utiliza la Shiedl TDR Steam pero la placa no es un Arduino, sino ESP32, la programación es exactamente igual. Microbloks https://microblocks.fun/   placas: Arduino, Microbit, ESP32, RaspberryPico, .... ver minitutorial Otros softwares para programar con bloques Snap4Arduino  https://snap4arduino.rocks/run/ Online, libre... ver compartiva vs mBlock S4A https://s4a.cat/ EN VIVO ¿Qué es eso?                                                                                                                                                        Existe una posibilidad de utilizar la placa "en vivo" frente a "cargar" el programa en la placa. Es decir, interactuando con el ordenador. El programa está en el PC. En la placa hay un firmware que le dice que este a las órdenes del PC.  De esta manera podemos por ejemplo:      - Enviar órdenes desde el ordenador a la placa.                       Por ejemplo que al pulsar la tecla espacio que se encienda el led D13      - Enviar información desde la placa al ordenador                   Por ejemplo que muestre por pantalla nos muestre la cantidad de luz, que registra el sensor LDR, etc... Que nosotros sepamos, estos programas permiten la programación en vivo :                - mBlock placas: Arduino, Microbit, Raspberry Pi, ... robots de Makeblock: mBot, Cyberpi...                 - EchidnaScratch CURSO DE ECHIDNA                 - Microblocks  VENTAJAS LA PROGRAMACIÓN EN VIVO PERMITE MUCHO JUEGO Y POSIBILIDADES A LA HORA DE ELABORAR PROYECTOS INCONVENIENTES : Necesitas el ordenador encendido y conectado al robot. TAMBIÉN ES EN VIVO PERO .... Hay otros softwares que técnicamente trabajan en vivo, es decir, que el programa se ejecuta desde el ordenador, no se ejecuta en la placa, son : - Snap4Arduino para placas Arduino - Picobriks blocks para Picobrick board Pero no permiten trabajar utilizando los elementos del ordenador (teclado, webcam, pantalla, sprite o objetos,,,) Es importante que entiendas que para trabajar en vivo, la placa tiene que tener cargado un " firmware " para que interactúe con el ordenador. P: ¿Qué es eso de "firmware"? R: No es más que un software que se graba en los chips de la placa. P ¿Y por qué se llama así, y no se llama software o programa y en paz? R: Digamos que como se graba en los chips, es un medio camino entre software y hardware, para diferenciarlo del software habitual. EN CARGA ¿Qué es eso?                                                                                                                                                        Simplemente el programa que estas haciendo  se carga en la placa VENTAJAS: Eres independiente del ordenador, tu robot funciona independiente DESVENTAJAS Pierdes todas las posibilidades de utilizar los recursos de un ordenador, teclado, pantalla, webcam, altavoces... Es  importante que si  cargas tu programa en la placa,  pierdes lo que había antes Es decir, si quieres volver a trabajar EN VIVO tienes que cargar el firmware correspondiente. OPCIÓN LENGUAJE POR CÓDIGO Recomendable a partir de secundaria. LENGUAJE POR CÓDIGO ARDUINO IDE Es un lenguaje basado en Wiring y permite la programación del Arduino en un entorno de desarrollo (basado en Processing). El programa se llama  ARDUINO IDE y se puede descargar desde la página oficial de Arduino: https://www.arduino.cc/en/software . Hay otra posibilidad que es utilizarlo online, con la ventaja de tener tus proyectos "en la nube" y no depender del equipo. OJO, TIENES QUE TENER INSTALADO EL SOFTWARE CREATE AGENT https://create.arduino.cc/getting-started/plugin/welcome En los cursos de CATEDU se ha utilizado el lenguaje por código empezando desde cero en: CURSO ARDUINO CON CÓDIGO   donde se trabaja con el Arduino y con diferentes sensores y actuadores, con o sin placa Shield Edubásica. CURSO DE DOMOTICA CON ARDUINO donde se realiza una maqueta de una casa controlada con domótica. También el curso ofrece la versión de hacer la misma maqueta utilizando lenguaje gráfico por bloques. Recomendamos estas hojas resumen si vas a trabajar con código: En Español: enlaceDrive , enlaceGithub En Inglés: enlaceDrive , enlaceGithub,  enlaceSpakrfun LENGUAJE POR CÓDIGO PYTHON Es un lenguaje más amigable que ArduinoIDE y tiene muchos campos de aplicación aparte de la robótica Arduino tiene su propia versión para trabajar con sus placas compatibles: Arduino Lab for Micropython Ver curso Arduino ALVIK Un compilador universal Thonny Ver curso Pico-briks VENTAJAS E INCONVENIENTES  LENGUAJE GRÁFICO POR BLOQUES vs CÓDIGO El lenguaje gráfico por bloques es un lenguaje  sencillo de utilizar , nos evita tener en cuenta muchas librerías y cálculos. Otra ventaja, es que el lenguaje por bloques es el único que permite programación "en vivo" Por ejemplo, la instrucción leer valor distancia el sensor ultrasonidos, mediante programación por bloques es  mientras que en código es double distancia; double fnc_ultrasonic_distance(int _t, int _e){ unsigned long dur=0; digitalWrite(_t, LOW); delayMicroseconds(5); digitalWrite(_t, HIGH); delayMicroseconds(10); digitalWrite(_t, LOW); dur = pulseIn(_e, HIGH, 18000); // devuelve cuanto tarda el pulso alto en microseg; 18000 es el tiempo a esperar limite if(dur==0)return 999.0; return (dur/57); // la velocidad del sonido es 344m/s = 34400 cm/seg = 0,0344 cm/microseg // como v=e/t luego e = v*t y como cuenta la ida y la vuelta distancia = v*t/2 // luego distancia = 0,0344/2 * dur = dur/57 } void setup() { pinMode(6, OUTPUT); pinMode(5, INPUT); } void loop() { distancia = fnc_ultrasonic_distance(6,5); } Como se puede ver en código , tiene que calcular la distancia haciendo cálculos del tiempo de rebote del eco, mientras que el  gráfico es sumamente sencillo y se centra en el objetivo del algoritmo a crear, no en lo accesorio. Esto hace que un lenguaje gráfico por bloques se puede aplicar desde los 8 años . Por otra parte, el lenguaje código tiene todo el potencial, es decir, no todo está en los lenguajes gráficos. Si se quiere cosas más avanzadas, hay que recurrir al código. Un lenguaje gráfico se convierte en lenguaje código , pero al revés no se puede,  debido a que el código es más depurado y no tiene la información necesaria para volver a su origen en bloques, ya lo has visto con el anterior ejemplo, el código tiene más información. ¿No te lo crees?  Haz la prueba, métete en https://www.tinkercad.com/ crea un programa con bloques, dale a la pestaña de código y te aparecerá una advertencia que perderás el programa con bloques ! no puedes volver atrás ! Curiosamente, tiene una opción bloques+código que traduce cada bloque con un código, es decir, traduce cada bloque sin perder información, sólo de esa manera se puede pasar de bloques a código y viceversa. Hay herramientas para pasar de bloques a código pero no al revés Imagen Federico Coca Notas sobre ESP32 STEAMakers  CC-BY-SA El lenguaje código se traduce en lenguaje máquina (ceros y unos) entendible para el microprocesador, pero al revés no se puede . En este vídeo , en mi opinión se olvida de mBlock, Snap4Arduino, S4A pero puedes ver un vistazo de los diferentes editores OPCIÓN SIMULACIÓN                                  Incluimos dentro del apartado de Software los diferentes programas que hay para simular placas electrónicas como Arduino, ESP32, Micro:bit etc... Tinkercad Esta herramienta https://www.tinkercad.com aparece en el Curso Arduino con código   en la práctica Comunicación entre dos Arduinos , pero también es una plataforma que sirve para hacer los diseños de elementos 3D, ver curso Impresión 3D con Tinkercad Tiene la ventaja que es aplicación online , muy visual y buscan un reflejo de la práctica real, además de estar la herramienta adaptada al aula (gestión de alumnos y proyectos). Como  desventajas podemos decir que no tiene mucha variedad de componentes electrónicos y la simulación es algo lenta. Además permite embeber, pruébalo !!! 😍😍😍 Pulsa Iniciar simulación y luego pulsa el botón A de cualquiera de los dos micro:bits Wokwi Si Tinkercad se queda corto, puedes probar esta plataforma https://wokwi.com/ con muchas posibilidades. Es online y puede trabajar con multitud de placas : ArduinoUno, ESP32, Raspberry,,,, Como única desventaja que encontramos, es que echamos de menos la realidad de Tinkercad, por ejemplo no puedes poner una placa protoboard para realizar las conexiones, pero a cambio se gana simplicidad de cableado. UnoArduSim Es una aplicación local.   UnoArduSim   además es una aplicación portable fácil de instalar y con los elementos de leds, motores servos ya preparados, ideal para ejemplos sencillos y para examinar señales y no depender de Internet, pero no es tan versátil. SIMULIDE En https://simulide.com/ podemos encontrar un programa local de software libre genérico para electrónica, incluido Arduino. En esta captura se puede ver uno de los ejemplos que incorpora el programa: OPCIÓN SÓLO DIBUJAR TinkerCad es un buen programa para dibujar los planos ➕permite también la simulación ➕ permite embeber y compartir ➖  no tiene muchos componentes SimulIDE es software libre. Es un programa portable. ➕ Tiene muchos componentes ➕permite también la simulación ➖  le faltan algunos sensores, pero van incorporando Fritzing  es un clásico. Es un programa portable. ➕ Tiene muchos componentes ➖ no es gratis, hay que pagar 8€ Circuit canvas ➕ puede compartir  por ejemplo ➕ tiene buenos tutoriales sobre electrónica ➖ todo en inglés Sensores Sensores básico para Echidna Para trabajar con Echidna sólo tienes que saber: Los sensores son  las entradas  de información a tus programas Echidna trabaja de dos modos En modo  sensor entonces tienes a tu disposición : SENSORES ANALÓGICOS valores de 0 a 1024 Sensor de luz  Joystick Temperatura Acelerómetro Volumen Micrófono (sólo EdhidnaBlack pues tiene A7 del Arduino Nano) SENSORES DIGITALES Pulsadores D2 y D3 Pulsador del Joystick D2 En modo MAKEY MAKEY 8 entradas 6 analógicas A0 al A5 2 digitales D2 y D3 Además hay 3 conectores I/O que puedes poner sensores externos de otros tipos. Recuerda que al programar EN VIVO tienes también las entradas del ordenador, por ejemplo el ratón, teclado... Sensores avanzados Si quieres saber más sobre los sensores, que otros tipos hay (para conectar en I/O sensores externos), te recomendamos leer este apartado : Esta sección es una visión rápida de las posibles entradas de los robots.  NO LEAS TODOS SINO LOS QUE TIENE TU ROBOT Un poco de teoría... Cualquier sistema de control podríamos decir que funciona de una manera similar a un ser humano, salvando las distancias. Nosotros recibimos la información del mundo exterior gracias a nuestros sentidos (oído, olfato, gusto, vista y tacto), nuestro cerebro procesa esa información y a través de nuestros músculos o de nuestra voz realizamos diferentes acciones. Pues lo mismo sucede con los sistemas de control, reciben información del exterior gracias a los diferentes  SENSORES , procesan esa información en sus PLACAS CONTROLADORAS (sus cerebros) tales como Arduino y dan una respuesta utilizando sus diferentes ACTUADORES . Un sensor es un objeto capaz de detectar magnitudes físicas o químicas y transformarlas en variables eléctricas. Los sensores o periféricos de entrada nos permiten obtener información del mundo real para utilizarla desde el programa de Arduino. En la actualidad la cantidad de sensores disponibles es tan extensa como las variables que queramos medir, desde sensores de temperatura, humedad, luminosidad,... hasta acelerómetros, giroscopios, GPS,... pasando por detectores de gases, de pulsos cardiacos, sensores de efecto HALL,... Tipos de sensores DIGITAL : un sensor digital sólo tiene dos estados: activado/desactivado, ON/OFF, 1/0, Alto/Bajo, ... En este caso  conectaremos el sensor a una de las entradas digitales de Arduino para leer el estado. Ejemplo: un pulsador es un tipo de sensor sencillo que sólo nos da dos estados, “pulsado o no pulsado”. Conectado a la placa Arduino debe generar 0v en reposo y 5v al pulsarlo. De esta forma desde el programa de Arduino podremos leer el estado del botón. ANALÓGICO : el sensor nos puede dar un rango de valores, normalmente se traduce en un valor de tensión o de  corriente variable en función de la señal captada al sensor. En este caso conectaremos el sensor a una de las entradas analógicas de Arduino (A0,..., A5). El rango de entrada será una tensión entre 0v (GND) y 5v. Ejemplo: Una fotorresistencia es un componente electrónico cuya resistencia disminuye con el aumento de intensidad de luz incidente. Su valor varía entre 0 y 5 v. la cantidad de valores que pueden leer las entradas analógicas de Ardunio son de 10 bits es decir 1024 valores. De tal modo que 0 = 0 v. y 1023 = 5V. DATOS : el sensor ofrece su información a través de una interfaz de comunicación. La forma de comunicación puede ser por sistemas estándar como I2C o SPI o algunos sensores usan su propio protocolo para codificar la información y debemos realizar desde el software la decodificación correcta para interpretar los datos del sensor (normalmente los desarrolladores de este tipo de sensores ofrecen una librería software para Arduino que hace todo el trabajo). Ejemplo: el sensor DHT11. Por un solo pin envía los datos de temperatura y humedad. Sensores modulares. En  la  actualidad  existen  infinidad  de  sensores  que  los  fabricantes  presentan  en  forma modular.  Esto  hace  que  su  conexión  y  utilización  sea  mucho  más  sencilla  que  la  tradicional, olvidándonos de resistencias, polaridades, cableados,… para su correcto funcionamiento. Sensor pulsador Es un sensor digital, que presenta dos estados; cuando se presiona el botón,  emite  una  señal  de  bajo (0V), cuando suelta el botón, emite una señal de bajo alto (5V).  Datasheet Un ejemplo de uso en el robot mClon   Otra manera más "barata" de sustituir este módulo pulsador es poner un pulsador normal y una resistencia (±10k), al pulsar se produce una entrada en el Arduino, hay dos configuraciones, que al pulsar se emita un 0 lógico (configuración  Pull up ) o que al pulsar emita un 1 lógico (configuración  Pull down )  ¿Por qué hay que poner una resistencia? Lo "normal" es que al pulsar se emita un '1' configuración Pull down , pero hay pulsadores que funcionan Pull up y los llaman lógica invertida , por eso en la programación por bloques podemos encontrar esto: Sensor Táctil Capacitivo.  Este  pequeño  sensor  puede  "sentir"  a  las  personas  y  el  tacto  y  la retroalimentación de metales a un nivel de voltaje alto / bajo. Incluso aislado por alguna tela y papel, todavía puede sentir el tacto. Su sensibilidad disminuye a medida que la  capa de aislamiento se hace más gruesa. En nuestra opinión lo preferimos frente al  Sensor pulsador  pues es muy económico, duradero y fiable. Un ejemplo de uso en Disparo láser en Arduino con ArduinoBlocks Apertura de puerta en Domotica con Arduino Potenciómetro y joystick Un potenciómetro es una resistencia variable, es decir, cambia de valor mecánicamente, lo tenemos en multitud de dispositivos. El joystick es internamente dos potenciómetros con un pulsador integrado en un solo mando. Este sensor es analógico , su salida puede ser cualquier valor entre Vcc y GND (si está en divisor de tensión como en la placa Edubásica no llega a esos valores extremos), por lo tanto hay que conectarlo a una entrada analógica de Arduino y como cualquier entrada analógica, proporcionará valores entre 0 y 1023. Ejemplos de uso: Arduino con código: Mapeo del potenciómetro Arduino con código: Regular la luz con potenciómetro Arduinoblocks en el aula En Arduino con Echidna , con joystick Domótica con Arduino con joystick  Sensor Fotocélula LDR.  El  uso  de  fotocélulas  es  muy  común  en  nuestras  vidas,  las  encontramos  en  el  encendido automático de  farolas, apertura de  puertas,…  La  fotocélula  es un  semiconductor. Es  ampliamente utilizado  en  campos  de  interruptores  de  control  automático  como cámaras,  luces  solares  de  jardín,  lámparas  de césped,  detectores  de  dinero,  relojes  de cuarzo, tazas de música, cajas de regalo, mini luces  nocturnas,  interruptores  de  control  de luz y sonido, etc.   Es un sensor analógico dando valores entre 0 y 5V y como entrada analógica de un Arduino se traduce en un rango de 0 a 1023 valores.  Un ejemplos de uso : el interruptor crepuscular del curso Arduino con ArduinoBlocks Medir la luz en Rover con Arduino Medir la oscuridad en Arduino con mBlock Hinchar un balón en Arduino con mBlock Una manera más económica de montar este sensor es utilizar una resistencia y un LDR: El LDR cuando más oscuridad, más resistencia En una configuración PULL DOWN, cuanto más luz, la resistencia del LDR baja, por lo tanto más tensión en A6 Los módulos LDR que se venden suelen esta configuración Pull down, es decir, cuanto más luz,  más tensión: La instrucción con Arduinoblocks ya cuenta con esta configuración Pull downUp de que cuando más luz, más valor tiene la entrada analógica. Hay módulos LDR ya montados,  que tienen componentes activos  es decir, llevan circuitos electrónicos, transistores que amplifican etc... y dan la salida  digital  con un potenciómetro para definir el rango de luz que cambia de estado lógico. Puedes ver en la figura que tiene una salida digital D0 . O hay algunos que tienen 4 pines como en la figura que ofrecen las dos cosas: salida analógica A0 y digital D0 . Nosotros aconsejamos el divisor de tensión por tres razones: más barato, no implica gran circuitería y es visible su funcionamiento frente a estos encapsulados. Sensor de Ultrasonidos. Es un sensor digital de distancias por ultrasonidos capaz de detectar objetos y calcular la distancia a la que se encuentra en un rango de 2 a 350 cm. Su uso es tan sencillo como enviar el pulso de arranque y medir la anchura del pulso de retorno. No es un sensor preciso , con una ligera inclinación de la superficie ya da lecturas erróneas pero es muy barato El más común es el HC-SR04 que tiene 4 pines de conexión:  VCC     Trig (Disparo del ultrasonido)    Echo (Recepción del ultrasonido) y  GND  aunque en algunos modelos como el de Elecfreaks tiene 3 pines. Integra Trig y Echo en uno sólo. La distancia se calcula con esta fórmula: Distancia en cm = {(Tiempo en segundos entre Trig y el Echo) * (V.Sonido 34000 en cm/s)} / 2 Si programas en código, tienes que utilizar la fórmula anterior, previamente tienes que programar el cálculo del tiempo entre una emisión de un pulso en Trg y la respuesta en Echo. Si utilizas la programación en bloques, no es necesario, seguro que hay un bloque que lo hace todo por ti 😍 Ejemplos de uso: Alarma en Domótica con Arduino Piano invisible en Arduino con ArduinoBlocks ,  Sensor parking en Arduino con ArduinoBlocks Piano invisible en Arduino con mBlock Sensor parking en Arduino con mBlock Sensor de distancia de ultrasonidos con Picobricks Sensor DHT11 (Temperatura y Humedad). Este sensor de temperatura y humedad DHT11  nos permite determinar las zonas de confort para un rango de temperaturas entre 0ºC y 50ºC con un error de ± 2ºC y un rango de humedad entre 20 y 90 % ± 5% . Una salida digital para dos variables cómo lo hace? Tiene dentro un pequeño microprocesador que lanza por el bit de datos 40 bits en serie, los 16 primeros son la humedad (en BCD) y los 16 restantes es la temperatura (en BCD) los 8 restantes son de comprobación Checksum (en binario) como la letra del DNI. Por ejemplo 0100 0111 0000 0011 0001 1001 0000 0000 0001 1000   es 0100 0111 0000 0011 = 47.03% de humedad y 0001 1001 0000 0000 = 19.00ºC y la comprobación es la suma de 4+7+0+3+1+9+0+0=24= 11000 Ejemplos de uso: Medir H y T con Blink en Rover con Arduino Estación meteorológica Arduino con Arduinoblocks Arduinoblocks en el aula SMART HOME con Micro:bit No es un sensor con gran sensibilidad, pero para propósitos educativos cumple sus funciones. Por dentro tiene una resistencia NTC que decrementa su resistencia si aumenta la temperatura. Hay otros que van al revés, los PTC. Tanto los NTC como los PTC se llaman  thermistores.  Para la humedad, mide la capacidad de un condensador que es sensible a la humedad, o sea, un  sensor capacitivo. Tenemos dos opciones comerciales: Encapsulado que lo tienes preparado para conectar la alimentación y leer por el pin de datos, o sin encapsular , que hay que colocar una resistencia de aproximadamente 10k entre Vcc y Data Ejemplo de uso de un DHT11 sin encapsular: Fuente Luis LLamas CC-BY-NC-SA https://www.luisllamas.es/arduino-dht11-dht22/ Si queremos mejorar la sensibilidad, podemos utilizar el DHT22 que es igual pero de color blanco y más caro. Si lo que queremos es sólo la temperatura es mejor utilizar el LM35D que tiene un rango de temperaturas desde 0ºC a 100ºC con una sensibilidad de 2mV/ºC Es un sensor bastante mediocre, si necesitas una precisión el doble, te recomendamos el DHT22 que funciona exáctamente igual pero es de color blanco y más caro ⁓3€. Ver https://www.luisllamas.es/arduino-dht11-dht22/ Sensor IR Es un sensor para distancias cortas hasta 2cm y no da la distancia, simplemente si hay o no hay obstáculo, pero son muy baratos, unos 0.30€. Aquí tienes un ejemplo de evita obstáculos en un rover marciano con Raspberry Para saber más te recomendamos esta página de Luis Llamas IR Sensor Module for Arduino Projects | 3D Model by Veer AI on Sketchfab Sensor llama Este sensor de llama se puede utilizar para detectar fuego u otras luces cuya longitud de onda se encuentra entre 760 nm ~ 1100nm. Un ejemplo de su uso: Alarma por fuego en Domótica con Arduino Sensor de Gas (MQ2). Detecta gases inflamables : GLP, I-butano, propano, metano, alcohol, hidrógeno, humo... con más sensibilidad en algunos que en otros. Siempre detecta el conjunto. Son usados en electrónica de consumo y mercados industriales. Sensibilidad Tiene alta sensibilidad y se puede ajustar girando el potenciómetro. Tiempo de respuesta : Internamente posee un calentador para aumentar su temperatura y que estos gases reaccionen con la resistencia interna que tiene, por lo tanto tardan algo en responder la primera vez que se conectan, incluso horas en algunos modelos. Una vez calentados son rápidos en la respuesta. Tipo de salida : Analógico pero si tiene 4 pines como el de la figura, incorpora un pin digital. Ejemplos de uso: Smart Home Microbit Smart Home ESP32 Sensor de humedad de suelo. Un higrómetro de suelo FC-28 es un sensor que mide la humedad del suelo. Son ampliamente empleados en sistemas automáticos de riego para detectar cuando es necesario activar el sistema de bombeo. El FC-28 es un sensor sencillo que mide la humedad del suelo por la variación de su conductividad. No tiene la precisión suficiente para realizar una medición absoluta de la humedad del suelo, pero tampoco es necesario para controlar un sistema de riego.  Los valores obtenidos van desde 0 sumergido en agua, a 1023 en el aire (o en un suelo muy seco). Un suelo ligeramente húmero daría valores típicos de 600-700. Un suelo seco tendrá valores de 800-1023. Luis Llamas CC-NC-BY-SA https://www.luisllamas.es/arduino-humedad-suelo-fc-28/ Se puede utilizar este sensor para hacer un dispositivo de riego automático, puede detectar si las plantas “tienen sed” y evitar que se marchiten .   La corriente de trabajo del sensor es menor de 20mA. El voltaje de salida es de 0V (en el aire) a 2,3V (totalmente sumergido en agua). Smart Agriculture Kit micro:bit Sensor de humedad. Este sensor analógico está diseñado para identificar y detectar la presencia de agua y su cantidad. Puede servir para detectar el nivel de agua, para disparar una alarma en caso de una fuga de agua, también para hacer un limpiapalabrisas automático.... puedes ver un ejemplo de uso en : Curso de Domótica con Arduino Smart Agriculture Kit micro:bit Mide el volumen de agua caída a través de una serie de rastros de cables paralelos expuestos. Sensor de efecto Hall. Este es un sensor de inducción magnética. Detecta los materiales magnéticos dentro de un rango de detección de hasta 3 cm. El  rango de detección y la fuerza del campo magnético son proporcionales. La salida es digital. Sensor Hall.                              Edwin Helber Hall De Desconocido - Popular Science Monthly Volume 64, Dominio público Edwin Helbert Hall  descubrió en 1879 que en presencia de un campo magnético, un conductor que conduzca una corriente se le producía un campo eléctrico porque las cargas eléctricas se desviaban de su trayectoria principal, nuestro sensor simplemente mide ese campo eléctrico: De  Luis Llamas  CC-BY-NC El sensor tiene un led de color rojo que indica que hay una lectura de campo magnético. Un ejemplo de uso lo puedes ver aquí:  medir rocas magnéticas con el Rover con Arduino Sensor inclinación Este sensor funciona al hacerle vibrar, emitiendo una señal digital de todo o nada. El módulo del sensor viene provisto de un potenciómetro para poder regularlo. Sensor de golpe Es un sensor digital que al ser golpeado este sensor envía una señal momentánea. Sensor de pulso cardíaco. Este módulo utiliza un LED infrarrojo (IR) ultrabrillante y un fototransistor para detectar el pulso en el dedo. Principio de funcionamiento: Se debe colocar el dedo entre el LED infrarrojo ultrabrillante (parte superior) mientras que el fototransistor, que queda en el otro lado, recoge la cantidad de luz transmitida. La resistencia del fototransistor variará levemente a medida que la sangre pase a través de su dedo. Sensor de Alcohol. Este sensor de gas analógico MQ-3 es adecuado para detectar alcohol. Se puede usar en un analizador de aliento. También tiene una alta sensibilidad al alcohol y baja sensibilidad a la bencina (éter de petróleo). La sensibilidad se puede ajustar con el potenciómetro. Sensor de CO2 Hay sensores que utilizan el protocolo I2C, este protocolo permite conexiones serie y pueden compartir el mismo cable pues cada elemento tiene una dirección diferente. Esto lo veremos en el Display LCD. Se identifican por los pinen SDA y SCL Resistencia Flex Es una resistencia que cuanto más se dobla más resistencia ofrece, desde 25k hasta 125k Para utilizar esta resistencia haremos un  DIVISOR DE TENSIÓN  que consistirá en poner dos resistencias en serie y repartirá la tensión total entre 0V y 5V en las dos resistencias,  el punto medio  será un punto que tendrá una tensión variable en función de las dos resistencias, como la es variable, esa tensión es variable y ya tenemos la entrada  analógica : Es decir: La resistencia entre masa GND del ARDUINO (cable negro) y un punto en la placa protoboard ese punto medio conectarlo a una entrada analógica, por ejemplo A0 (cable amarillo) Una resistencia de valor parecida a la Flex de decenas de K entre ese punto y +5V (cable rojo en la foto) Este sensor tiene posibilidades para usarlo en "ropa inteligente". Sensor de movimiento  Los sensores infrarrojos pasivos (PIR) son dispositivos para la detección de movimiento. Son baratos, pequeños, de baja potencia, y fáciles de usar. Por esta razón son frecuentemente usados en juguetes, aplicaciones domóticas o sistemas de seguridad.  Los sensores PIR  se basan en la medición de la radiación infrarroja . Todos los cuerpos (vivos o no) emiten una cierta cantidad de energía infrarroja, mayor cuanto mayor es su temperatura. Los dispositivos PIR disponen de un sensor piro eléctrico capaz de captar esta radiación y convertirla en una señal eléctrica. En realidad  cada sensor está dividido en dos campos y se dispone de un circuito eléctrico que compensa ambas mediciones. Si ambos campos reciben la misma cantidad de infrarrojos la señal eléctrica resultante es nula. Por el contrario, si los dos campos realizan una medición diferente, se genera una señal eléctrica. De esta forma, si un objeto atraviesa uno de los campos se genera una señal eléctrica diferencial, que es captada por el sensor, y se emite una señal digital. El otro elemento restante para que todo funcione es  la óptica del sensor . Básicamente es una cúpula de plástico formada por lentes de fresnel, que divide el espacio en zonas, y enfoca la radiación infrarroja a cada uno de los campos del PIR. De esta manera, cada uno de los sensores capta un promedio de la radiación infrarroja del entorno. Cuando un objeto entra en el rango del sensor, alguna de las zonas marcadas por la óptica recibirá una cantidad distinta de radiación, que será captado por uno de los campos del sensor PIR, disparando la alarma. Luis Llamas CC-BY-NC-SA https://www.luisllamas.es/detector-de-movimiento-con-arduino-y-sensor-pir/ Puedes ver ejemplos de uso en robótica en :  Smart Home para Microbit Smart Agriculture Kit para Microbit Más sensibles son los  sensores de microondas . Son un radar que por efecto Doppler pueden captar cualquier objeto en movimiento dentro de un alcance de 5-7 metros en cualquier dirección e independiente de su temperatura. Es un buen sensor para alarmas, activación de luz por presencia..... Para saber más  ver la página de Luis Llamas Su conexión es muy sencilla, es un detector digital que hay que alimentarlo como el resto de sensores.  Curiosamente, la gran ventaja técnica de los de microondas es un gran inconveniente para usarlo en el aula , con cualquier movimiento se dispara, luego para clase es mejor el sensor PIR   Esta página esta adaptada de  este enlace.   José Andrés Echevarría @cantabRobots CC-BY-NC-SA. Actuadores y otras salidas Actuadores básico Para manejar el Echidna tienes que saber: Los actuadores son  las salidas de tus programas En Echidna tienes en modo SENSOR Salidas Digitales Audio o por el Zumbador o por el Jack Leds rojo, amarillo y verde Led RGB No hay salidas analógicas y no hay salidas en modo Makey Makey Recuerda que al programar EN VIVO tienes también las salidas del ordenador: La pantalla (los objetos o sprites de tus programas), los altavoces... Actuadores avanzado Para manejar Echidna no hace falta saber más, pero si quieres saber qué otros actuadores hay (para conectar en los I/O actuadores externos). Esta página es un repaso rápido de las posibles salidas de los robots NO LEAS TODOS SÓLO LOS QUE TIENE TU ROBOT ¿Qué es un actuador? Un actuador es el nombre genérico que empleamos para cualquier  dispositivo capaz de realizar acciones en el mundo físico y que podremos controlar desde un autómata o procesador como Arduino. En particular, usamos el nombre actuador para los dispositivos que son capaces de generar movimiento.    Luis LLamas CC-BY-NC-SA ACTUADORES                                                                                                    Motores baja potencia Con el Arduino podemos usar motores de corriente continua de juguete como en la figura, aptos para poner un ventilador. Ejemplo de uso Smart Home para microbit Motores con algo de potencia Si quieres usar un motor para mover unas ruedas, ya pide más corriente, no se puede conectar directamente al la placa (Arduino, esp32 etc..). El de la figura es típico en robótica y lleva reductores dentro para bajar la velocidad : Necesita una alimentación extra, como el LM298N y las pilas., o el B6612FNG o una shield específica. CC-BY-NC  Luis Llamas Ejemplos de uso lo puedes ver en  Curso mClon con nanoArduino con el  B6612FNG  Curso Rover con Arduino con la shield L293D ESP-12E para el NODE MCU que internamente tiene el LM298N Curso Arduino con código con LM298N y también con un transistor Los motores pueden (y deben) de estar conectados a  salidas PWM  de tal manera que se pueda regular la potencia y por lo tanto la velocidad. Servos Un  servo convencional  es un motor donde fijamos el ángulo desde 0º a 180º, pero si queremos una rotación, existen  servos rotatorios  que simplemente tienen su velocidad de rotación controlada Ejemplos de uso de servos: Curso Arduino con código Curso brazo robótico del mClon con nanoArduino Apertura de barrera por ultrasonidos en curso Arduino con ArduinoBlocks Tractor entrando en el corral Arduino con EchidnaShield Apertura de puerta Domótica con Arduino Servo con PicoBrick Apertura ventana y puerta en Smarth Home para microbit Smart Agriculture Kit para micro:bit Relés Un relé es un interruptor activado por un electroimán, lo que permite independizar los circuitos. En el dibujo se ve que el circuito rojo de 220V esta separado del verde, de sólo 1.5V. Pero es el circuito verde que al funcionar, hace que el electroimán mueva el interruptor del relé y encienda la bombilla. El objetivo es que he podido encender una bombilla de 220V sin tocar los 220V peligrosos. En el circuito verde, el interruptor puede ser un Arduino. Experiméntalo en este simulador . Un ejemplo con Arduino en  Luis LLamas Un ejemplo de uso en Picobricks Electroimán El electroimán no se puede conectar directamente, utilizaremos una etapa de potencia, por ejemplo el transistor el  IRF520N que amplifique la señal del Arduino, pues las salidas de Arduino no tienen potencia para mover el electroimán. Para dar esa potencia utilizaremos otra fuente externa, unas pilas: Las conexiones son : SIG del IRF520N a una salida digital por ejemplo D13 VCC del IRF5020N al 5V del ARDUINO Los dos GND del IRF520N a GND del ARDUINO V+ y V- del IRF5020N al solenoide, da igual qué cable pues no tiene polaridad. VIN del IRF520N al VIN del ARDUINO (son los voltios de la pilas) Motor paso a paso Igual que el  electroimán , necesitamos un controlador que nos de la potencia necesaria para mover el motor, el ULN2003 Imagen BY-NC-SA de  Luis Llamas También igual que el electroimán, necesitamos una potencia extra con las pilas: Conexión : Cuatro pines digitales del ARDUINO al IN1,IN2,IN3,IN4 del ULN2003 por ejemplo D10,D11,D12,D13 El conector blanco del ULN2003 al motor paso a paso El (+) del ULN2003 al Vin del ARDUINO El (-) del ULN2003 al GND del ARDUINO La configuración más sencilla es la rotación simple en sentido horario (llamada fase1) : Imagen BY-NC-SA de  Luis Llamas Es decir: Paso IN1=D10 IN2=D11 IN3=D12 IN4=D13 Paso 1 ON OFF OFF OFF Paso 2 OFF ON OFF OFF Paso 3 OFF OFF ON OFF Paso 4 OFF OFF OFF ON Si has entendido este ejemplo serás capaz de realizar las configuraciones que desees. OTRAS SALIDAS                                                                                            No son actuadores pues no representan movimiento pero son también  salidas  del Arduino como los actuadores, luego lo vemos en esta página Buzzer activo Reproduce un tono de una frecuencia determinada por el fabricante cuando recibe un '1' digital. Su conexión es muy simple: GND  a GND y  VCC  a 5V (ojo que están a los dos extremos, marcados en rojo y en negro) OUT  o también señalado como I/O a un pin digital, por ejemplo D13 Ejemplos de uso: Domótica con Arduino:  Apertura puerta con mBlock Domótica con Arduino  Apertura puerta con código Buzzer pasivo La diferencia de un buzzer activo con el pasivo es que el pasivo hay que mandar la onda que se tiene que reproducir, como Arduino no puede reproducir onda puras (senoidales analógicas), se le envía ondas cuadradas con la frecuencia que se pretende reproducir. Como se puede ver en la figura, no tiene elementos auxiliares para reproducir un tono, es simplemente un altavoz. Ejemplos de uso Timbre Arduino con Echidna Arduino blocks en el aula LEDS Y OTROS ELEMENTOS VISUALIZADORES                                              Led normal Un diodo es la unión de dos semiconductores P-N que sólo permite la corriente en un sentido. Un diodo LED es un diodo, que al pasar esta corriente emite una luz. Hay de 3mm y de 5mm de grosor, transparentes, traslúcidos y de colores (realmente son traslúcidos tintados) Tenemos pues que respetar su polaridad para que funcione: Fuente Luis LLamas CC-BY-NC  Encender LED con Arduino Si alimentamos el LED con una tensión inferior a su tensión de polarización directa Vd ±1,4V-3,8V el led no luce. si alimentamos con una tensión superior, la corriente que circula se dispara por lo que se rompe. Conclusión: Hay que poner una resistencia limitante. Para calcularla te recomiendo la página de Luis Llamas    Encender LED con Arduino Aquí puedes ver un ejemplo de semáforo  en el curso Arduino con código Se puede conectar directamente pues las salidas de Arduino tienen una limitación interna de 20mA como en este ejemplo  https://www.youtube.com/watch?v=EFFSLvIF9rY Los LEDS igual que los motores pueden se encendidos o todo o nada con salidas digitales 0 y 1 o salidas PWM de esta manera conseguimos luminosidades medias,  en esta práctica con el potenciómetro  se regula la intensidad de la luz de un LED Led RGB Se trata de un encapsulado que integra 3 leds de los tres colores básicos. Cada color básico se puede regular desde 0 a 255 de intensidad, luego tenemos 16 millones de tonalidades diferentes. Un ejemplo de su uso lo puedes ver en Domótica con Arduino, interruptor crepuscular Intermitente RGB en Arduino con ArduinoBlocks Existen LEDS RGB que se comunican unos a otros, ( ver este ejemplo en el curso mClon ) como las tiras de leds RGB que cambian de color todos simultáneamente. Neopixel La cinta LED RGB se basa en el chip controlador WS2812B de Neopixel con el cual podemos tener el control de cada pixel y de cada color, ya sea rojo, verde y azul a través de un solo cable de datos. Los WS2811, WS2812 y WS2812B son LED que disponen de lógica integrada, por lo que es posible variar el color de cada LED de forma individual (a diferencia de las tiras RGB convencionales en las que todos los LED cambian de color de forma simultánea). Están basados en el LED 5050, llamado así porque tiene un tamaño de 5.0 x 5.0 mm. Es un LED de bajo consumo y alto brillo, que incorpora en un único encapsulado los 3 colores RGB. La genial novedad del WS2812B (y resto de familia) es añadir un integrado dentro de cada LED, que permite acceder a cada pixel de forma individual. Por este motivo este tipo de LED se denominan “individual addressable”. Esto abre la puerta a un sinfín de aplicaciones y combinaciones, que van desde dotar de iluminaciones distintas zonas con una única tira, animaciones complejas, o incluso generar pantallas enteras de alta luminosidad....  A los LED WS2812B también se les denomina NeoPixel Luis Llamas CC-BY-NS-SA https://www.luisllamas.es/arduino-led-rgb-ws2812b/  Smart Home para Microbit con 4 leds RGB Neopixel Smart Home para ESP32 Smart Agriculture Kit micro:bit Láser El diodo láser es un elemento motivador, barato y fácil de usar con el Arduino pues se activa digitalmente, si enviamos un 1 emite un rayo láser. Un ejemplo de uso lo puedes ver en la  Alarma por láser en Domótica con Arduino Si quieres saber más de este componente, te recomendamos  esta página de Luis Llamas . Si tienes que comprar uno, es importante que no sea superior a 5mW, pues puede dañar permanentemente la retina del ojo [ +info ]. El modelo que proponemos es de  1mW , no obstante,  EVITA SIEMPRE QUE EL LÁSER APUNTE A LOS OJOS  especialmente con niños. Display LCD Si queremos visualizar datos de forma independiente del ordenador, existen matrices de led que puedes ver en los cursos de mBot o mClon pero lo mejor es una pantalla Liquid Crystal Display y la mejor forma de conectar esta interfaz es en serie utilizando el  protocolo I2C.  Ejemplo de uso : en  Arduino con código Arduinoblocks en el aula Smart Home para Microbit CC-BY-SA  Luis Llamas No confundas Display LCD con  matriz de LEDs , o una OLED Aclarando conceptos: Protocolo I2C                                                                                    Es un protocolo de emitir los datos con sólo dos cables SDA (los datos) y SCL (reloj) y además pueden compartir varios dispositivos SLAVE) para ello la placa Arduino ESP32, microbit... (MASTER) tiene que saber qué dirección tiene cada dispositivo IMPORTANTE : Fuente Luis Llamas ArduinoI2C CC-BY-SA Aclarando conceptos: Lógica invertida                                                                                    Igual que vimos en sensores, con las configuraciones Pull up y Pull down, las salidas de cualquier actuador  PUEDEN SER LÓGICA INVERTIDA,  mira en este NodeMCU (básicamente es un Arduino con wifi, aquí está conectado con el servidor Blynk) como funciona al revés, cuando apretamos, por lo tanto enviamos un uno a la salida,  se apaga la salida  !! ¿Qué es Echidna? Ahora sí: ¿Qué es Echidna? Es una Shield de Arduino diseñada para facilitar la programación del Arduino en los últimos cursos de primaria y primeros de secundaria, pensado en minimizar el cableado de la electrónica (ya lo sabemos pues es una Shield) y enfocado a nivel educativo y al lenguaje por símbolos ¿Por qué hemos elegido esta Shield?  Porque tiene un buen equilibrio calidad/precio sencillez/potencial orientado a últimos cursos de primaria, primeros de secundaria. Es  OpenHardware , por lo tanto es un proyecto con garantías de estabilidad, libre, colaborativo y vivo, con la misma filosofía que la placa Arduino. Source: Web oficial Echidna- documentación Salidas o actuadores : Diodos LED Red D13, Orange D12 y Green D11. Diodo de 3 colores RGB gobernados por D9, D5 y D6 respectivamente. Audio en D10. Entradas o sensores : Joystick (estupendo para hacer proyectos atractivos) xy con A0 y A1 Acelerómetro (idem) xy Echidna red y black v1 en A2 y A3 Echidna black v2 va por I2C Luz LDR Echidna red y black v1 en A5 Echidna black v2 en A3 Botones digitales D2 y D3 Temperatura en A6 (Echidna black v1 y v2 ) Micrófono en A7 (Echidna black v1 y v2 ) 8 entradas MakeyMakey : ¡Dos placas en una!: por lo tanto da más potencial a nuestros proyectos.  A0, A1, A2, A3, A6, A7, D2, D3 Conexión a periféricos : elementos externos que se pueden conectar: Bluetooth que da más potencial a nuestros proyectos. I/O pines para conexión de otros elementos A2 (solo en Echidna black v2) D4, D7 y D8 Cerca de estos pines hay un selector de alimentación para decidir de dónde reciben energía posición 5V si utilizas componentes que no superan los 300mA, como un servo pequeño. posición Vin si quieres utilizar componentes que superan esa corriente, tienes que utilizar la alimentación externa del jack y poner el jumper en esa posición Fuente Echidna.es captura de Echidna black v2 Te recomendamos visitar - https://echidna.es/ Twitter : -  https://x.com/EchidnaSTEAM?s=20 ¿Estás preparado? adelante !!! ¿Qué es Echidna Black? Es una Shield de Arduino diseñada para facilitar la programación del Arduino en los últimos cursos de primaria y primeros de secundaria, pensado en minimizar el cableado de la electrónica (ya lo sabemos pues es una Shield) y enfocado a nivel educativo y al lenguaje por símbolos ¿Por qué hemos elegido esta Shield?  Porque tiene un buen equilibrio calidad/precio sencillez/potencial orientado a últimos cursos de primaria, primeros de secundaria. Es  OpenHardware , por lo tanto es un proyecto con garantías de estabilidad, libre, colaborativo y vivo, con la misma filosofía que la placa Arduino. Como puedes ver NO HAY CASI DIFERENCIAS DE ENTRADAS Y SALIDAS ENTRE UNA ECHIDNA SHIELD Y UNA ECHIDNA BLACK La diferencia es el cerebro, la placa microcontroladora: - En la  Echidna Shield no lo tiene, le tienes que acoplar una placa Arduino UNO - En el caso de  ECHIDNA BLACK lo tiene integrado (exáctamente un Arduino Nano por lo tanto tiene A6 temperatura y A7 micrófono que la anterior no tiene ) DIFERENCIA : La EchidnaBlack tiene dos entradas analógicas más que la Echidna Shield para tus programas: - A6 temperatura  - A7 micrófono  EN EL CASO DE LA ECHIDNA BLACK NO ES PROPIAMENTE UNA SHIELD pues NO NECESITA LA PLACA ARDUINO ya la integra ella misma Echidna black versión 1 Fuente Echidna.es Echidna black versión 2 Fuente Echidna.es Salidas o actuadores : Diodos LED Red D13, Orange D12 y Green D11. Diodo de 3 colores RGB gobernados por D9, D5 y D6 respectivamente. Audio en D10. Entradas o sensores : Joystick (estupendo para hacer proyectos atractivos) xy con A0 y A1 Acelerómetro (idem) xy Echidna red y black v1 en A2 y A3 Echidna black v2 va por I2C Luz LDR Echidna red y black v1 en A5 Echidna black v2 en A3 Botones digitales D2 y D3 Temperatura en A6 (Echidna black v1 y v2 ) Micrófono en A7 (Echidna black v1 y v2 ) 8 entradas MakeyMakey : ¡Dos placas en una!: por lo tanto da más potencial a nuestros proyectos.  A0, A1, A2, A3, A6, A7, D2, D3 Conexión a periféricos : elementos externos que se pueden conectar: Bluetooth que da más potencial a nuestros proyectos. I/O pines para conexión de otros elementos A2 (solo en Echidna black v2) D4, D7 y D8 Cerca de estos pines hay un selector de alimentación para decidir de dónde reciben energía posición 5V si utilizas componentes que no superan los 300mA, como un servo pequeño. posición Vin si quieres utilizar componentes que superan esa corriente, tienes que utilizar la alimentación externa del jack y poner el jumper en esa posición Te recomendamos visitar - https://echidna.es/ Twitter : -  https://x.com/EchidnaSTEAM?s=20 Echidna Black (modelo 3D GmedranoTIC) by GmedranoTIC on Sketchfab Cómo se programan las Echidnas Da igual si tienes una Echida Shield que una Echidna Black las dos se programan igual Tenemos dos opciones: Programación mediante lenguajes gráficos, por bloques : símbolos, gráficos… tipo Scratch Ventajas : Mucho más sencillo e intuitivo, ideal para principiantes en programación como es nuestro caso entre primaria y secundaria. Inconvenientes : No se llega a aprovechar todas las posibilidades del Arduino. Programas : EchidnaScratch , Snap4Arduino , mBlock , ArduinoBlocks, Bitbloq , S4A ... Dentro de los lenguajes gráficos hay tres tipos: Los que permiten cargar el programa y el método en vivo : mBlock , Los que sólo permiten método en vivo  : EchidnaScratch , Snap4Arduino Los que sólo permiten cargar el programa  ArduinoBlocks, Bitbloq , S4A ... Programación mediante código : Ventaja : Se aprovecha todo el potencial de programación, puesto que se controla todas las variables Inconvenientes : Como toda programación en código, tiene su dificultad y abstracción. Programas : ArduinoIDE . Si no sabes lo que significa en vivo o cargar es que no has leído Software del Arduino Vamos a enseñarte  CUATRO formas de hacer un mismo programa: Un semáforo OJO : Acuérdate en toda esta sección de poner la Echidna en modo Sensor NO en modo MkyMky ATENCION NO CAMBIES DE PROGRAMA Queremos que veas cuatro formas de programar el Echidna Gráfico con bloques EchidnaScratch (recomendado) mBlock ( avanzado) Snap4Ardiuno (avanzado) Código ArduinoIDE (avanzado) Vas a ver las cuatro formas con un mismo programa UN SEMAFORO No queremos que hagas los avanzados al menos que lo necesites en tus proyectos P: ¿Por qué?  R: Por ejemplo: Si te pasas a mBlock te cargas el Firmata que necesita EchidnaScratch , y al revés si estas con mBlock y te pasas a EchidnaScratch te cargas el Firmware de mBlock, P: ¿Qué es eso?  R: tranquilo luego lo verás Lo que queremos decirte es que si decides un método de programación LUEGO ES DIFICIL PASAR A OTRO P: ¿Qué hago? R:  Simplemente haz el que te recomendamos ECHIDNASCRATCH y tienes las otras tres formas por si necesitas cargar el programa (mBlock) o ya trabajas con Snap4arduino o estas en secundaria y quieres trabajar con Arduino IDE MONTAJE 1 SEMAFORO con EchidnaScratch (recomendado) Da igual si tienes una Echida Shield que una Echidna Black las dos se programan igual Instalación del programa Entramos en echidna.es y en A programar nos encontramos el enlace al programa ECHIDNASCRATCH que se descarga y se instala sin problemas en varios SO (Windows, Linux, IO..) Al ejecutarlo elegimos ECHIDNASCRATCH (dejamos de momento la IA que lo trataremos en un capítulo aparte) Objeto semáforo Creamos un objeto semáforo, (exactamente igual que con mBlock) con tres disfraces. Nos vamos a  SPRITE (quitamos el gato en EchidnaScratch o el oso panda en mBlock) y creamos el nuestro que será un simple semáforo Como no existen semáforos, no pasa nada, creamos uno en Paint Pintamos un semáforo, es muuuuy sencillo, le ponemos el nombre del SPRITE como SEMAFORO y los disfraces COSTUME el primero con el nombre ROJO Vamos duplicando el disfraz y hacemos los correspondientes AMARILLO y VERDE Es muy fácil : Código  el siguiente código (que es igual al del mBlock menos que EchinaScratch tiene unas instrucciones especiales que lo hacen más fácil ) Si se hace el programa el en mismo objeto semáforo, se puede hacer el programa sin la instrucción ENVIAR MENSAJE ESTA ES LA GRAN DIFERENCIA CON mBlock  PUES EN MBLOCK NO HAY INSTRUCCIONES ESPECIALES PARA ECHIDNA, POR LO QUE HAY QUE CREAR UN OBJETO ARDUINO O UN OBJETO ECHIDNA COMO VEREMOS MÁS ADELANTE Con Echidna Scratch NO HACE FALTA todo se hace en la misma ventana y objeto Resultado MONTAJE 1 SEMÁFORO con mBlock (avanzado y optativo) DOS FORMAS DE PROGRAMAR EN MBLOCK  Como vemos, mBlock permite dos formas de programar : OPCIÓN  Programación en vivo El programa reside en el ordenador, y en la placa hay instalado un Firmware para ir escuchando y ejecutando lo que manda el ordenador.  VENTAJAS Te permite interactuar el robot y el ordenador, por ejemplo podemos hacer que cuando el detector de humedad detecte agua, que salga por pantalla un fondo acuático, o que pulsando una tecla del teclado se encienda un LED en la placa... DESVENTAJAS hay que cargar dentro del robot el Firmware exclusivo de mBlock para que Arduino haga caso a mBlock Hay que tener nuestro ordenador como intermediario , se come los recursos y puede que nuestro programa vaya lento Por supuesto necesita tener ordenador conectado al robot, o sea, trabaja como un esclavo del ordenador. OPCIÓN Programación cargar a la placa Todos los programas editores de Arduino (tanto los que programan con código como el Arduino IDE) como los editores de programas gráficos en bloque (mBlock, Snap4Arduino, Arduinoblocks, ...) permiten cargar el programa en la placa.  Las ventajas y desventajas son las opuestas de trabajar en vivo. EN VIVO ¿Qué es eso?                                                                                                                                                        Existe una posibilidad de utilizar la placa "en vivo" frente a "cargar" el programa en la placa. Es decir, interactuando con el ordenador. El programa está en el PC. En la placa hay un firmware que le dice que este a las órdenes del PC.  De esta manera podemos por ejemplo:      - Enviar órdenes desde el ordenador a la placa.                       Por ejemplo que al pulsar la tecla espacio que se encienda el led D13      - Enviar información desde la placa al ordenador                   Por ejemplo que muestre por pantalla nos muestre la cantidad de luz, que registra el sensor LDR, etc... Que nosotros sepamos, estos programas permiten la programación en vivo :                - mBlock placas: Arduino, Microbit, Raspberry Pi, ... robots de Makeblock: mBot, Cyberpi...                 - EchidnaScratch CURSO DE ECHIDNA                 - Microblocks  VENTAJAS LA PROGRAMACIÓN EN VIVO PERMITE MUCHO JUEGO Y POSIBILIDADES A LA HORA DE ELABORAR PROYECTOS INCONVENIENTES : Necesitas el ordenador encendido y conectado al robot. LA CONFIGURACIÓN DE MBLOCK Es importante seguir el orden de los pasos: MONTAJE 1 SEMÁFORO Y ECHIDNA USANDO DEVICE ARDUINO En este caso ponemos de Device un objeto ARDUINO- UNO Ponemos este programa con la Echidna y en mBlock hemos cambiado el disfraz del oso panda por tres círculos con tres disfraces, y el programa del objeto semáforo es El programa en el objeto Arduino es el siguente   Todo el proyecto esta en https://planet.mblock.cc/project/3228189 Y este es el resultado:  Video   Nota, esta realizado con mBlock3.0 que no era necesario enviar mensajes entre objetos y el arduino P: TENGO EL ECHIDNA BLACK y e en Devices veo que existe  ¿Puedo añadirlo y así utilizar instrucciones propias de Echidna? R: Buena idea, pero nosotros lo hemos probado y  no nos funciona en modo vivo por lo que NO lo recomendamos. MONTAJE 1 SEMÁFORO con Snap4Arduino (avanzado y optativo) PRIMERO QUÉ ES SNAP4ARDUINO Es también un programa gráfico basado en Scratch, multiplataforma, libre y abierto y permite muchas versiones de placa, bibliotecas, etc… Es la evolución del  S4A Usa el firmware standard Firmata . ¿Y qué es un firmware ? Es un programa que se graba y se ejecuta en una placa hardware. En el caso del firmware Firmata, hay que instalarlo en el Arduino para que se comunique con Snap4Arduino. (en mBlock también hay un firmware pero está contenido en el propio mBlock y se instala cuando le damos a Conectar-Actualizar Firmware) Si todo esto del firmware no lo entiendes del todo, no pasa nada, son los pasos que se explican en apartado de la configuración. No es necesario para programar, pero si lo entiendes, mejor. El programa se puede descargar de su web http://snap4arduino.rocks/ En principio es la aplicación más acorde con la filosofía de la Shield Echidna. SEGUNDO LA CONFIGURACIÓN DE SNAP4ARDUINO En esta presentación se enseña COMO CONFIGURAR SNAP4ARDUINO para que se comunique con nuestro Arduino y la Echidna TERCERO EL EJEMPLO SEMÁFORO CON ECHIDNA El programa es el mismo que el anterior, con los mismos disfraces y se puede abrir desde Snap4Arduino desde esta URL El resultado es este vídeo MONTAJE 1 SEMÁFORO mediante código (avanzado y optativo) MONTAJE 1 SEMÁFORO MEDIANTE CÓDIGO PRIMERO QUÉ ES "MEDIANTE CODIGO" Es la forma de trabajar de forma profesional el Arduino: con su lenguaje código, en realidad, los otros lenguajes traducen el programa gráfico en lenguaje código Arduino, es decir son meros intermediarios. El programa se puede descargar de su web oficial, aunque también hay una versión online https://www.arduino.cc/ SEGUNDO LA CONFIGURACIÓN Aquí no hay que instalar ningún Firmware, pues el código, o sea tú programa, es el mismo “firmware”. Digamos que no necesitas intermediarios si tratas con el agricultor ;) TERCERO EL EJEMPLO SEMÁFORO CON CÓDIGO Aquí es donde vemos que la programación no es apropiada para Primaria, y la explicación de cada línea necesitaría un curso entero, como éste , pero si eres un poco pito seguro que eres capaz de leerlo intuitivamente sin problemas. /* Semáforo Arduino Leds conectados a pines 11,12,13 = EchidnaShield */ int verde = 11; int amarillo = 12; int rojo = 13; void setup() { pinMode(verde, OUTPUT); pinMode(amarillo, OUTPUT); pinMode(rojo, OUTPUT); Serial.begin(9600); //inicializa la comunicación Serial } void loop() { Serial.println("Semaforo - Inicio"); //Escribe el texto digitalWrite(verde, HIGH); Serial.println("Semaforo - Verde"); //Escribe el texto delay(2000); digitalWrite(verde, LOW); digitalWrite(amarillo, HIGH); Serial.println("Semaforo - Amarillo"); //Escribe texto delay(1000); digitalWrite(amarillo, LOW); digitalWrite(rojo, HIGH); Serial.println("Semaforo - Rojo"); //Escribe el texto delay(2000); digitalWrite(rojo, LOW); } Este programa se escribe (o copia y pega ¡es un texto !!) en el software del Arduino y se carga en la placa, en el vídeo se ve muy bien: Desventaja En este programa queremos que te fijes en una desventaja : La interacción con el ordenador se pierde frente a mBlock y Snap4Arduino: En los lenguajes gráficos, tenemos a interacción con el ordenador igual que en Scratch: si te fijas en la pantalla el dibujo del semáforo va cambiando de disfraz para representar los colores de la luz que se enciende a la vez que en el Arduino. En un programa grabado en el Arduino perdemos esa interacción , lo máximo que podemos visualizar es una ventana donde se representa en formato texto qué es lo que le está pasando al Arduino (en el ejemplo del semáforo sale "Semáforo - Verde, Semáforo- Rojo …."). Esto lo vemos como una desventaja desde el punto de vista de la enseñanza de la programación pues perdemos el potencial de interactuar con los elementos del ordenador crear personajes, disfraces, sonidos, teclado…, es decir el sprite (el oso panda que aparece por defecto en mBlock, la flecha que aparece por defecto en Snap4Arduino o el que nosotros creamos, como este ejemplo el dibujo del semáforo). Ventaja Pero… (siempre hay un “pero” para estropear la fiesta) la programación en código tiene una ventaja : Se graba en el Arduino, no hay ningún intermediario entre nuestro programa y el Arduino (en mBlock y Snap está el ordenador), quien manda en el Arduino es nuestro programa, no nuestro ordenador, esto se traduce en: rapidez ! , en mBlock veremos que podemos grabar nuestro programa en Arduino, pero perdemos la interacción con el sprite, como lo veremos más adelante. Conclusión Profesionalmente es mejor utilizar lenguaje con código pero en la enseñanza es mejor el lenguaje gráfico. Lo hemos visto en el apartado ¿Cómo se programa Echidna? . Es una Shield Educativa, y lo lógico es utilizar un lenguaje adaptado al nivel educativo: Gráfico. Pero … ¿cual? ¿Qué lenguaje gráfico es mejor para Echidna? EchidnaScratch ➕ Es un programa específico para Echidna, tiene ya  instrucciones especiales Esto es UNA ENORME VENTAJA pues permite que el sprite interactúa con Echidna sin necesidad de usar mensajes y variables globale s como en mBlock ➕ EchidnaScratch  es un programa que permite usar la placa EN VIVO esto nos permite interactuar con el ordenador ➖ No permite  CARGA es decir, dependemos del ordenador, no podemos cargar el programa en el Echidna y que trabaje independientemente de PC. ➕ EchidnaScratch esta integrado con la INTELIGENCIA ARTIFICIAL LearningML  ➕ La detección Makey Makey de los pines lo detecta igual que mBlock mBlock ➕ Es un programa muy extendido multiplaca- ➕ Permite programar  EN VIVO igual que EchidnaScratch ➕ Pero también permite  CARGAR EL PROGRAMA EN LA PLACA  lo que permite crear proyectos independientes del ordenador ➖ EchidnaBlack o Echidna Shield lo lee como si fuera un  Arduino UNO ➖ Para la comunicación entre el Device Arduino = Echidna y los diferentes Sprites del programa hay que usar  MENSAJES o VARIABLES GLOBALES lo que hace  engorroso cualquier programa ➖ También permite la IA pero con extensiones, ver  https://libros.catedu.es/books/robotica-educativa-con-mbot/page/cognitive-services-servicios-cognitivos pero no está tan integrado como EchidnaScratch ➕ Detecta bien los pines Makey Makey Snap4Arduino ➕ También es un programa que permite usar EchidnaScratch  en vivo ➕ Tiene  instrucciones especiales para la placa ➖ No es tan amigable como los anteriores. ¿ POR CUAL NOS DECANTAMOS ? Si vas a trabajar en modo gráfico programas con o sin Makey Makey  ECHIDNASCRATCH Si vas a trabajar con IA ECHIDNASCRATCH Si vas a trabajar con proyectos que no quieres que se ejecuten con el PC mBlock EN RESUMEN , al menos que te interese trabajar con proyectos donde quieres CARGAR el programa en la placa, RECOMENDAMOS ECHIDNA SCRATCH OJO si pasas de MBLOCK a ECHIDNASCRATCH hay que cargar Firmata  ver https://libros.catedu.es/books/echidna/page/echidnascratch-no-detecta-echidna OJO si pasas de ECHIDNASCRATCH a MBLOCK hay que cargar el Firmware de mBlock ver https://libros.catedu.es/books/echidna/page/mblock-no-detecta-echidna Por lo tanto es mejor no ir cambiando de programa P: Por defecto cuando lo compro ¿Qué tiene cargado? ¿Firmata para usarlo con EchinaScratch o Firmware para usarlo con mBlock? R: Firmata para usarlo con EchinaScratch Otros programas gráficos Existen otros programas gráficos, el ArduinoBlocks, Bitblock… pero no tienen la posibilidad de interaccionar con Sprites del ordenador, ni tienen el mismo entorno del referente Scratch, por lo que no se utilizarán en este curso, pero son posibilidades interesantes, os mostramos dos capturas de pantalla del mismo programa semáforo visto anteriormente, fíjate que aquí no hay Sprite : Con Bitbloq: Con ArduinoBlocks: Y un favorito nuestro el VISUALINO pues a la vez que haces programación gráfica, va enseñando el código a la derecha: Por si te pasa, PROBLEMA: EchidnaScratch no detecta Echidna: Instalar Firmata Esto es debido a que si por ejemplo has utilizado mBlock, ArduinoIDE, etc... se ha cargado dentro del Arduino del Echidna (Echidna Shield o Echidna Black da igual) el software de estos programas y por lo tanto se han cargado el FIRMATA que es el software necesario para que se comunique nuestro ECHIDNA (Echidna Shield o Echidna Black da igual) con nuestro programa ECHIDNASHIELD. Ver al final ¿Qué es eso de Firmata ) ¿Cómo puedo restaurar el FIRMATA en el Arduino? Necesitamos el programa ARDUINO IDE para instalarlo, vamos a arduino.cc  https://www.arduino.cc/en/software descargamos e instalamos el programa: Descargamos , instalamos (dando aceptar a todos los controladores que pide permiso, marcando que es de confianza, etc.. ) y ejecutamos , Y elegimos la placa y el puerto ¿QUÉ PLACA - BOARD TENGO QUE ELEGIR?   Si tenemos ECHIDNA SHIELD vamos a herramientas y seleccionamos placa_  ARDUINO UNO  Si tenemos ECHIDNA BLACK vamos a herramientas y seleccionamos placa ARDUINO NANO ¿Y EL PUERTO? Tienes que elegir el puerto COMX  (donde X es un número) que está conectado nuestra placa. Si tienes dudas, desconecta la placa, ejecuta ArduinoIDE y mira los puertos, repite la operación, pero con la placa conectada y el nuevo COM ese es. LIBRERIA FIRMATA Nos vamos a herramientas - administrar librerías Y buscamos librería FIRMATA aquí vemos que ya está instalada, si no la tienes instalada, dale a Install : PROGRAMA EJEMPLO STANDARDFIRMATA Nos vamos a Archivo - Ejemplos - Firmata y cargar el ejemplo STANDARDFIRMATA Lo cargamos en la placa dándole a la flecha (tarda algo pues primero lo compila) Lo carga, saldrá un mensaje de ok, y ya está NUESTRA ECHINASCRATCH YA PUEDE LEER LA PLACA ECDHINA Si aun así, NO LO DETECTA... cambiar de USB 😁 funciona !! Un resumen lo tienes aquí https://echidna.es/a-programar/instalar-standardfirmata/ ¿Qué es eso de Firmata? Firmata  es un  protocolo  para  comunicar   microcontroladores  con la  computadora de una manera sencilla. Permite que se ejecute un programa en EchidnaLM o Snap4Arduino y que este se comunique con la placa microcontroladora mediante el puerto serie. Fuente https://echidna.es/a-programar/instalar-standardfirmata/ Fuente https://echidna.es/a-programar/instalar-standardfirmata/ Por si te pasa, PROBLEMA: mBlock no detecta Echidna: Instalar Firmware mBlock Esto ocurre siempre que pasemos de EchidnaScratch a mBlock Hay que actualizar el firmware, mira : Por si te pasa, PROBLEMA: El Sistema operativo no detecta Echidna  Tal y como dice en https://echidna.es/hardware/echidnablack/puesta-en-marcha-echidna-black/ Para que Echidna Black se pueda comunicar con nuestro PC es necesario que nuestro sistema operativo (SO) le dé permiso de acceso al puerto serie (USB) y que tenga el driver del controlador de comunicación (CH430) instalado. Fuente CC-BY-SA https://echidna.es/hardware/echidnablack/puesta-en-marcha-echidna-black/ Por si acaso, descarta lo evidente OJO con el cable, pues hay cables de USB que sólo son de carga (+baratos) y otros que son de carga+datos (los que hay que utilizar) Recomendamos en el caso de problemas: INSTALAR ARDUINO IDE Para instalar Arduino nos debemos  descargar el IDE  de la página oficial: En la guía  Getting Started tenemos indicaciones sobre como instalar Arduino según nuestro sistema operativo. Fuente https://echidna.es/hardware/echidnablack/puesta-en-marcha-echidna-black/ Si los problemas insisten, instalar el Driver – Driver de comunicación: Echidna Black utiliza el chip CH430E, por lo que dependiendo del SO necesitarás instalar el controlador “ Driver CH341 ” GNU Linux: En caso de que seas usuario Linux, no debería ser necesario instalar el driver. Si necesitas el  driver para GNU Linux . MAC: Aquí tienes acceso al  driver para MAC . Windows: Aquí tienes acceso al driver para Windows. https://www.arduined.eu/ch340-windows-10-driver-download/ Android: Aquí tienes acceso al  driver para Android . –  Permiso de acceso al puerto serie: Dependiendo del SO es necesario dar o no permisos de acceso al puerto serie. Si ya has instalado el IDE de Arduino, estos permisos deberían estar ya dados. GNU Linux: Si no no tuvieras acceso al puerto serie puede que tengas que darle permiso desde una terminal usando el comando:  sudo usermod -a -G dialout «usuario». MAC: por defecto ya tenemos acceso al puerto serie. Windows: por defecto ya tenemos acceso al puerto serie Alimentación del Echidna CC-BY-SA Fuente: https://echidna.es/ Alimentación USB recomendado: El EchidnaShield se alimenta a través de la alimentación USB del Arduino, ya sea cuando está conectado con el ordenador, o cuando se utiliza un PowerBank Aquí vemos un ejemplo de un echidna que está alimentado con un PowerBank y esta ejecutando un programa ¿Cómo puede ser eso? Porque se ha cargado el programa en en Arduino del Echidna. Esto lo puede hacer programas como mBlock ver software En el EchidnaBlack tiene integrado el puerto usb para alimentarlo Echidna Black v1 es USB-microB Echidna Black v2 es USB-C  OJO El jumper que tiene arriba a la izquierda tenerlo conectado a 5V: No utilizar la alimentación 5V cuando los servos o dispositivos a controlar consuman más de 300mA , para no sobrepasar el regulador del Arduino, en este caso utilizar la alimentación externa: Alimentación externa: P: ¿Cuándo usar alimentación externa obligatoriamente? R: Cuando se utilicen servos o dispositivos conectados al I/O  que consumas +300mA . Ver https://echidna.es/hardware/echidnablack/alimentacion-echidnablack/ Arduino conectado a la  EchidnaShield o la misma EchidnaBlack se puede alimentar con un portapilas o fuente de alimentación, sin ningún problema, con un rango desde 9V hasta 12V. Pero hay que decirle al Echidna que la alimentación no es por 5V sino por Vin , pues el Arduino también se alimenta por Vin, esto se hace cambiando el jumper: CC-BY-SA fuente https://echidna.es/hardware/echidnablack/alimentacion-echidnablack/ Nota : Es posible que en ocasiones nos interese utilizar las dos alimentaciones a la vez , por ejemplo queremos usar el Arduino dependiendo del ordenador, porque queremos por ejemplo que interactue con el Sprite por ejemplo el gato de Edhidna Scratch (por lo tanto está conectado al cable USB) pero las extensiones que queremos conectar necesitan potencia (más de 300mA) por lo tanto conectamos también un portapilas o fuente de alimentación, así pues estamos obligados de decirle al Echidna que alimente las extensiones por Vin cambiando el jumper a Vin. Tengo Arduino ¿Puedo hacer los programas SIN ECHIDNA ? No veas el Echidna como una placa diferente al Arduino, es simplemente un Arduino con los sensores y actuadores integrados. De echo puedes hacer los programas de este curso y los de IA perfectamente CON ARDUINO y SIN ECHIDNA pero tienes que tener los sensores y actuadores correspondientes.  No puedes hacer los programas de Makey Makey pues eso lo tiene Echidna pero no Arduino La respuesta es : SI (si tienes también los sensores y actuadores correspondiente) PERO NO LOS DE MAKEY MAKEY ¿Cómo? Muy fácil, tienes que poner los sensores y actuadores en los mismos pines que indica la Echidna para poder usar sus mismo software y programas ¿No tengo que instalar ningún firmware al Arduino? Si, por supuesto, igual que en Echidna Si vas a utilizar Echidna Scratch ( recomendable y además tiene IA) tienes que instalar el Firmata ver como Si vas a utilizar mBlock tienes que instalar su firmware ver como Si tienes problemas de conexión, tu sistema operativo no detecta el Arduino, pues se soluciona igual que el Echidna pues el Echidna es un Arduino con sensores y actuadores integrados. Ver cómo solucionarlo Vale... hazme un ejemplo de programa normal Ok, pues el mismo ejemplo que hemos visto en el semáforo pero SIN ECHIDNA Harware Un Arduino UNO que le hemos instalado el Firmata de esta manera  Cables Dupond M-M Placa protoboard para las conexiones Tres leds Rojo, Amarillo y verde conectados igual que en la placa echidna, es decir, si te fijas en la figura de arriba: Rojo al D13 Amarillo al D12 Verde al D11 Software Pues igual que en https://libros.catedu.es/books/echidna/page/montaje-1-semaforo-con-echidnascratch-recomendado No me lo creo, a ver... Mira Vaaaale.... ¿Y con Inteligencia Artificial? Entrenamos un modelo de IA como el visto aquí https://libros.catedu.es/books/echidna/page/montaje-14-reconocimiento-de-imagenes y con ese modelo creamos un programa que : Si detecta móvil que se encienda rojo Si detecta gafas que se encienda naranja Si detecta taza que se encienda verde Ninguno en caso de que no detecte nada Hardware Igual, igual igual que antes tres leds, verde al D11 amarillo al D12 y el rojo al D13 Software Igual que antes pero con el modelo IA creado El resultado  2. Salidas de Echidna Acuérdate de poner en modo Sensor Nota: Acuérdate en toda esta sección de poner la Echidna en modo Sensor, es decir Echidna no trabaja en modo MkyMky Todos los programas de este curso se encuentran en este repositorio: https://github.com/JavierQuintana/Echidna MONTAJE 2 Luces psicodélicas LED RGB Ya hemos visto las luces LED con el semáforo , ahora vamos a ver el LED RGB Está conectado a las salidas digitales D5, D6 y D9 y si te fijas, en el Arduino tienen el símbolo ~ ¿Qué significa esto? Que son señales PWM. Si has leído ¿Qué es un Arduino? habrás leído que es una señal digital pero los pulsos pueden variar su ancho de tal manera que la media puede ser una tensión entre 0 y 5V, que se gobiernan con esta instrucción: Donde 0 sería 0V y el valor 255 sería el valor máximo de tensión que en nuestro caso es 5V aunque puede ser otra tensión si se alimenta Arduino con una alimentación externa Vin. PROPUESTA MONTAJE 2 LUCES PSICODÉLICAS Vamos a realizar un programa con Scratch que se iluminen todas las luces de colores de forma aleatoria, además vamos a poner un fondo, un personaje y música para que parezca una discoteca. Solución con EchinaScratch Borramos el Sprite del gato y el fondo blanco, y añadimos un Sprite y fondo más acorde al enunciado, en la captura hemos elegido el Sprite predefinido Cassy Dance y fondo Spotlight Vamos a crear un bloque que encienda las luces RGB al azar, además de las otras El bloque tendría este aspecto El bloque rojo es la cabecera del bloque AZAR-LUCES La instrucción encender RGB con intensidades para cada color, un número aleatorio entre 0 y 255 Encender la luz roja al azar Si la variable aleatoria 0-1 es un 1 enciende, sino apaga Idem para la naranja Idem para la verde  falta pues el programa principal que llama al bloque anterior, espera 500ms y pasa al siguiente disfraz del sprite y fondo También en paralelo que suene la música dancearround El resultado Lo tienes en MONTAJE2-LUCESPSICODELICAS.sb3 dentro del repositorio https://github.com/JavierQuintana/Echidna Solución con mBlock Programa para el objeto y para el fondo Y para el Arduino El programa entero está en el siguiente enlace : https://planet.mblock.cc/project/3228239 El resultado es el siguiente vídeo, está realizado con mBlock3 pero es el mismo efecto: MONTAJE 3 Timbre Enunciado Queremos que hagas un programa en el Echidna que si se pulsa SL que suene el buzzer y si pulso SL que suene un tono Ojo, sube el volumen , girando el potenciómetro hacia la derecha Lo puedes oir o por el buzzer o por el jack de audio Solución con EchidnaScratch El programa lo tienes en el repositorio https://github.com/JavierQuintana/Echidna Esta es la equivalencia entre notas y la nomenclatura Midi : NOTA MIDI A LA B SI C DO D RE E MI F FA G SOL Solución con mBlock Con mBlock no tiene instrucciones específicas para Echidna luego inventaremos un poco los tonos Cuando se pulsa D2 suene una onda cuadrada de 282Hz o sea una duración 0.035 segundos (0.0175seg el bajo y 0.0175seg el alto). Si se pulsa el botón D3 que suene el tono C4 que es aproximadamente esa frecuencia. El programa lo tienes aquí https://planet.mblock.cc/project/3228713 OJO no se puede hacer "en vivo" hay que cargarlo en el ordenador. La instrucción toca nota no permite utilizar Arduino en vivo OJO sube el volumen del potenciómetro El resultado es este vídeo: Si pulsamos D2 el sonido es más agudo que pulsando D3 que corresponde a la nota C4 ¿Por qué? Porque la señal es cuadrada. BrainFad = pedo mental Bueno una explicación más rigurosa de por qué la señal es más aguda con señales cuadras es lo siguiente: Los cálculos del tiempo de subida y bajada tiempo=0.00175s calculados anteriormente están bien hechos ¿por qué no reproduce bien el tono de la nota C4? por esto: No es lo mismo una onda analógica sinusoidal de 282 Hz que una onda digital cuadrada que es lo que se reproduce en la salida digital D10 ¿Y por qué se oye más agudo? Vamos a fijarnos en una transición por ejemplo la de bajada de 5V a 0V ¿A qué se parece más esa transición? Evidentemente a la segunda, y esa pendiente tan vertical corresponde más a ondas agudas: Por lo tanto se oye más agudo, por eso es. Ya sé que el anterior razonamiento, si lo lee algún físico, le producirá un rechinar de dientes, así que para ellos la explicación formal es que una onda cuadrada, según la transformada de Fourier, reproduce armónicos de orden superior, incluso infinitos si fuese perfecta. via GIPHY 3. Entradas de Echidna Otra vez acuérdate Aquí es donde vamos a sacar todo el jugo a esta Shield. Nota : Si has hecho el anterior programa Grabar a Arduino, recuerda dejarlo preparado para que haga caso a mBlock: Conectar-Actualizar Firmware. Nota: Acuérdate en toda esta sección de poner la Echidna en modo Sensor Todos los programas de este curso se encuentran en este repositorio: https://github.com/JavierQuintana/Echidna MONTAJE 4 ENCENDIDOAPAGADO El anterior programa ya es un ejemplo de uso de estos botones digitales que están conectados a los pines digitales 2 y 3 de Arduino. Ten en cuenta que  sólo pueden leer niveles lógicos. MONTAJE4-ENCENDIDOAPAGADO Al pulsar el botón D2 se enciende los 3 leds del Echidna y al soltarlo se apagan. El programa también tiene que tener un efecto en un sprite Solución con EchidnaScratch Cambiamos el sprite del gato por otro más acorde y cambiamos el disfraz, no lo desarrollamos aquí pues vimos cómo se hace con el MONTAJE1 El código : El fichero lo tienes en el Github :  https://github.com/JavierQuintana/Echidna Solución con mBlock Elegimos un objeto que cambie el disfraz, y le ponemos el código Y al arduino: El programa lo tienes aquí https://planet.mblock.cc/project/3228733 MONTAJE 4-ENCENDIDOAPAGADO-AVANZADO MONTAJE4-ENCENDIDOAPAGADO-AVANZADO Al pulsar D2 tiene que encenderse los leds, y sólo se apagaran si se vuelve a pulsar D2. O sea, utilizar sólo un pulsador para encender y apagar los leds. Solución EchidnaShield En este caso creamos una variable  ENCENDIDO que registra si están los leds y el sprite encendidos o no El código es Para evitar que el programa sea engorroso, se ha creado los bloques ENCENDER y APAGAR, pero perfectamente se puede meter estas instrucciones dentro del algoritmo principal y pasar de bloques. FIJATE 👁️👁️ que la variable ENCENDIDO se cambia a 1 o a 0 para que refleje el estado en el que ha quedado el sistema FIJATE 😎 que hay una espera de 0.5segundos para que en ese tiempo  no lea si no lo pones, esta todo el rato cambiando los pocos milisegundos que pulsas el botón Una manera de quitar ese efecto es poner un "Esperar que NO este pulsado" mira: Manual EchidnaBlack 2 y EchidnaML www.echidna.es CC-BY-SA El programa lo tienes en :  https://github.com/JavierQuintana/Echidna Solución con mBlock El objeto que cambia el disfraz es igual que en RETO1 El programa lo tienes aquí https://planet.mblock.cc/project/3228741 UNA CURIOSIDAD Fíjate como hay un retraso de 0.5 segundos para que "te de tiempo de apartar el dedo del pulsador" en caso contrario, volvería al otro estado. Si no sabes lo que quiero decir, quita la instrucciones "Espera 0.5 segundos" y verás qué pasa. UN POCO DE PARÉNTESIS TEÓRICO Fíjate en el enunciado del RETO1: “al pulsar el botón D2 se enciende y al soltarlo se apaga” ES UNA MÁQUINA LÓGICA pues el estado de la máquina sólo depende de las entradas (en este caso de un botón): Pulsar la entrada (botón D2) produce una salida concreta (encender leds). CONTINUAMOS ... Pero tal y como está redactado, el RETO2 tiene que memorizar el estado anterior, no es trivial el enunciado “Al pulsar D2 tiene que encenderse los leds, y sólo se apagaran si se vuelve a pulsar D2.” ES UNA MÁQUINA SECUENCIAL pues el estado de la máquina depende de las entradas y de lo que ha pasado antes. Pulsar la entrada (botón D2) NO produce una salida concreta (depende si estaba apagado o encendido anteriormente). No pasa nada si no lo entiendes del todo, es teoría. La programación se complica necesitamos añadir una variable que recuerde lo que ha pasado antes la vamos a llamar _encendido _que recordará si está encendido los leds o no: Muchos de nuestros aparatos electrónicos se encienden y se apagan con el mismo botón, así que a partir de ahora aprecia que su funcionamiento no es trivial. MONTAJE 5 LDR ¿Qué es un LDR? Vamos a la Wikipedia: Fotorresistor Una fotorresistencia es un componente electrónico cuya resistencia disminuye con el aumento de intensidad de luz incidente. Puede también ser llamado fotorresistor, fotoconductor, célula fotoeléctrica o resistor dependiente de la luz, cuyas siglas, LDR, se originan de su nombre en inglés light-dependent resistor. Su cuerpo está formado por una célula fotorreceptora y dos patillas. More at Wikipedia (ES) Lo verás en el Echidna arriba un poco a la derecha, y está conectado a la entrada analógica del Arduino A5 y según https://echidna.es/ los valores van desde 20 en ausencia de luz, hasta 1.000 con mucha luz. Comprobar los límites No os creáis al pie de la letra los límites oficiales del LDR! Los componentes electrónicos no son ideales, cada uno es particular, probar esos límites en vuestro Echidna ¿Qué vamos a hacer? Jugar un poco con vuestras condiciones de luz, y definir unos valores de oscuridad, poca luz, media luz y mucha luz, en mi caso mis valores son  Oscuridad menor 200 Poca luz entre 200 y 500 Media luz entre 500 y 800 Mucha luz mayor 800 Con estos valores vamos a realizar un programa que Oscuridad: Ningún led encendido Poca luz Luz roja Media luz Luz naranja Mucha luz Luz verde MONTAJE 5 Semáforo luminoso RETO Vamos a reutilizar esfuerzos: reutilizar el semáforo visto pero vamos a hacer que se iluminen los colores según la luz: Semáforo Luz Todo apagado Mucha oscuridad Rojo Oscuridad Amarillo Luz normal Verde Mucha luz Según nuestros valores experimentales, (puedes poner otros según las condiciones de luz de tu aula) Semáforo Luz Límite inferior Límite superior Todo apagado Mucha oscuridad --- 199 Rojo Oscuridad 200 499 Amarillo Luz normal 500 799 Verde Mucha luz 800 --- Solución con EchidnaScratch Lo puedes encontrar en en este repositorio: https://github.com/JavierQuintana/Echidna Reto Haz un sprite tipo semáforo que también se enciendan las luces igual que el Echidna real, tal y como hicimos en MONTAJE1 SEMAFORO y encima que diga los valores El resultado lo puedes ver en este vídeo : Solución con mBlock Con mBlock al no tener instrucciones específicas para Echidna, para leer en directo los valores del LDR, hay que utilizar nuestro mBlock y que nuestro simpático oso panda nos diga esos valores, con este sencillo programa en el decice dispositivo Arduino : DONDE  LUZ ES UNA VARIABLE GLOBAL QUE LO LEEN TODOS LOS OBJETOS luego ahora el panda con este programa puede decirnos cuánta luz hay El valor que leemos con máxima luz (utilizando una linterna) y el valor de máxima oscuridad (a tapar con el dedo, no te compliques) no llegan a los límites que se marcan oficiales en Echidna EN TU CASO PUEDEN SER OTROS !! pero parecidos. El programa lo tienes aquí https://planet.mblock.cc/project/3228782 Programa mBlock El programa lo tienes aquí https://planet.mblock.cc/project/3228793 MONTAJE 5 SEMAFORO SONIDO No vamos a dejar sin poder experimentar este sensor que mide la intensidad del sonido y como está conectado a la salida analógica A7 sus valores van desde el 0 al 1024 Vamos a hacer un semáforo que mida la intensidad del sonido, verde si es poco, y sube hasta rojo cuando es elevado Todos los programas de este curso se encuentran en este repositorio:  https://github.com/JavierQuintana/Echidna El programa en EchidnaScratch es : Hemos simulado el sonido soplando en el micro : ¿Te gustaría este semáforo pero que se ejecute de manera independiente (sin necesidad de ordenador), para usarlo en el aula, comedor...? Pues claro, cargando el programa, pero no con Echidna Scratch sino con código, ver en el punto 8 semaforo sonido ¿Te atreves a ...? Realizar un programa que haga lo mismo pero con la temperatura (los valores límites de encendido y apagado de las luces dependen de la temperatura de trabajo) MONTAJE 6 Piano luminoso Enunciado Realizar un programa que suene una nota diferente según la luz Solución en EchidnaScratch En echidna no podemos dar las notas numéricas (en mBlock sí)  tenemos que utilizar la notación midi a b c d e f g luego simplemente según un nivel de luz que toque una de esas notas Todos los programas de este curso se encuentran en este repositorio:  https://github.com/JavierQuintana/Echidna Solución con mBlock5 En el Arduino el programa es En el objeto, el panda es Nota: se ha incorporado una música con un tono, el C Elec Piano El programa lo tienes aquí https://planet.mblock.cc/project/projectshare/3228812 Con mBlock versión 3  ATENCIÓN ESTA VERSIÓN ES OBSOLETA NO RECOMENDADO sólo para PCs muy viejos En esta versión no es tan sencillo ¿por qué? Porque hay cambios de escala: el LDR nuestro trabaja con valores distintos al de las notas, por lo tanto hay que hacer UN CAMBIO DE ESCALA, y esto necesita un apartado diferente, te recomendamos ver 3.2.3.1 Cambios de escala Solución El programa es pues el siguiente ¿por qué lo hacemos con la opción de subir a Arduino? Porque la simulación va lenta (se oye tut-tut-tut) si lo subes al Arduino reproduce el tono correctamente. VER COMO SUBIR AL ARDUINO . El resultado lo puedes ver en este vídeo : 3.2.3.1 Cambios de escala Nos encontramos que: Los valores de entrada, es decir, el LDR trabaja con unos límites, que según hemos visto en el apartado comprobar los límites , el nuestro va de 108 a 982, llamaremos a esta variable de entrada X Los valores de salida son los tonos,que mBlock trabaja con la norma americana (la europea es el típico Do-Re-Mi-Fa-Sol) y los americanos, son valores numéricos que van desde 48 hasta 72 (lo puedes comprobar con la instrucción “tocar nota” que está en Programas-Sonido). Llamaremos a la variable salida de notas Y : Problema: ¿cómo convertimos X en Y? Matemáticamente es una recta con una pendiente m y una ordenada n : Y = m*X + n Para calcular m y n tenemos que utilizar un sistema de ecuaciones dadas las condiciones límites de X e Y: Cuando X = 108 quiero que Y valga 48: 48=m*108 + n Cuando X = 982 quiero que Y valga 72: 72=m*982 + n Ala! dos ecuaciones y dos incógnitas: calcula m y n Buen ejercicio para los alumnos para que vean matemáticas aplicadas No obstante, como esto lo repetiremos muchas veces los cambios de escala, hemos confeccionado ESTA HOJA DE CÁLCULO que te lo puedes descargar y facilita las cosas: Ponemos en las celdas amarillas los valores límites : X1= 108 X2=982 Y1=48 Y2=72 Y nos da los valores m y n automáticamente: Luego la fórmula para el cálculo de la Y (las notas) en función de la luminosidad X es: Y = 0.027 * X + 45 MONTAJE 7 Telesketch ¿Qué es el Joystick? Son dos potenciómetros, uno en el eje X y otro en el eje Y además de un pulsador digital cuando se pulsa hacia dentro.  El potenciómetro X está conectado en los pines A0 del Arduino y el del eje Y al A1 por lo tanto si has leído los capítulos de ARDUINO sus valores varía desde 100 hasta 1024.  El pulsador está conectado al D10. LAS COSAS CLARAS: IGUAL DA ESTA INSTRUCCIÓN QUE ESTA: ( poniendo A0)  Preferimos la primera pues EchidnaML se adapta a la versión de la placa   es decir, que si en el futuro el joystick x en una versión furura es por ejemplo A5 la instrucción primera se adapta y lo envía a la A5 siendo transparente al alumnado, mientras que en la segunda tienes que saber que ha cambiado a A5 Reto Telesketch Si no sabes lo que es esto, no has tenido infancia 😊😁 Vamos a realizar el mismo ejemplo que este vídeo de Jorge Lobo pero en vez de realizado en Snap4Arduino lo vamos a hacer en EchidnaScratch y en mBlock. Solución con EchidnaScratch Todos los programas de este curso se encuentran en este repositorio:  https://github.com/JavierQuintana/Echidna Simplemente vamos a considerar estas condiciones: Si el joystick en el eje X es menor que 300 es que estás inclinando el Joystick hacia la izquierda, luego el Sprite tiene que modificar su variable decrementando su valor, un valor fijo que lo definiremos como PASO Si el joystick en el eje X es mayor que 700 es seguro que estás inclinando el Joystick hacia la derecha luego hay que incrementar el valor de la ordenada X el valor predefinido PASO Idem para el eje Y PASO es una variable que de momento lo vamos a poner como 3, si es menor, va más preciso pero más lento, si es mayor es más rápido pero el dibujo es menos preciso. Los botones SR y SL nos servirán para subir y bajar el lápiz y borrar ¿Lápiz ? ¿Qué lápiz? Lápiz es una extensión para poder dibujar. Para instalar una extensión pulsa aquí E instalamos esta extensión Y se instalan nuevas instrucciones para dibujar Código con EchidnaScratch Recomendamos cambiar el sprite del gato por otro más apropiado, por ejemplo el lápiz y bajarlo a un tamaño 15 El programa : Inicia las variables que hemos explicado En el bucle, las condicionales hacen que se incremente o decremente las variables X e Y la cantidad definida PASO El botón SR  si se pulsa, pinta si se suelta no pinta El botón SL borra todo Mover el sprite según las coordenadas X e Y Todos los programas de este curso se encuentran en este repositorio:  https://github.com/JavierQuintana/Echidna Solución con mBlock En mBlock no hay instrucciones especiales para Echidna, hay que hablar pues de A0 para el eje X y A1 para el eje Y por lo tanto las nuevas condiciones son: Si A0 es menor que 300 es que estás inclinando el Joystick hacia la izquierda, luego el Sprite tiene que modificar su variable x hacia la derecha, es decir decrementando su valor Si A0 es mayor que 700 es seguro que estás inclinando el Joystick hacia la derecha luego hay que incrementar el valor de la ordenada X Para los valores del eje Y es igual, cambiando A0 por A1 Programa en mBlock Primero pondremo un objeto lápiz y añadiremos la extensión LAPIZ esto se entiende mejor con un vídeo Pero no hagas la programación de hacer el cuadrado. Sino este Donde BAJAR, SUBIR Y BORRAR SON MENSAJES y X e Y son variables globales a todos los objetos. En el arduino el programa será El programa te lo puedes descargar aqui https://planet.mblock.cc/project/3228849 VA MUY LENTO El resultado lo puedes ver en este vídeo : Por curiosidad puedes ver el mismo programa en Snap4Arduino en este vídeo: Puedes ver que es mucho más rápido que mBlock. MONTAJE 7 BIS MATA ALIENS con JOYSTICK Esta vez no vamos a ser originales, vamos a ser un poco vagos y nos vamos a copiar el programa de otra persona. La  web de Scratch tiene un repositorio de millones de proyectos, podemos seleccionar uno, y adaptarlo a nuestra simpática Echidna. Vamos a copiar un proyecto ALIENS INVASION nave espacial con nuestro JOYSTICK de la Echidna. 1.- IMPORTANDO PROYECTO EXTERNO SCRATCH A EchidnaScratch o mBlock Entramos en SCRATCH https://scratch.mit.edu/   y buscamos ALIEN INVASION, concretamente este : https://scratch.mit.edu/projects/29744/ Entramos en SEE INSIDE Lo grabamos en nuestro ordenador Nos vamos al programa ECHIDNA ML y cargamos el programa descargado 2.- Hackear el código para que funcione la nave con el joystick Vamos a fijarnos en el código de la nave, si nos fijamos se mueve según la posición X del ratón, vamos a cambiar ese código Creamos dos variables : Una que se llame X que tendrá la posición X de la nave, la inicializamos a 0 al principio y así se coloca la nave enmedio al empezar la partida Otra que se llame PASO que fija el paso o incremento cuando se mueva, cuanto más alto, más rápido se mueve, pero menos preciso, a golpes, cuanto más bajo, más lento pero más preciso, lo pondremos a 2 Y cambiamos el código de mover la nave : Si el joystick en el sentido X baja de 200 (puede ser un número entre 0-512 pues 512 en teoría es enmedio) pues que X se decremente un PASO Si el joystick en el sentido X sube de 600 (puede ser un número entre 512-1021 pues 1024 es el máximo) pues que X se incremente un PASO 3.- QUE DISPARE APRETANDO EL BOTÓN SL Si nos fijamos, dispara si pulsamos la tecla espacio , lo quitamos y ponemos todo ese código dentro del código nuevo que se ejecuta si apretamos el botón SL Queda pues El resultado Todos los programas de este curso se encuentran en este repositorio: https://github.com/JavierQuintana/Echidna MONTAJE 7 BIS MATA-ALIENS con acelerómetro ¿Se puede hacer el anterior ejercicio con el acelerómetro? Por supuesto que sí, la única diferencia es que el Joystick va de 0 a 1024 pero el acelerómetro tiene otros valores como puedes ve en esta página  https://echidna.es/hardware/componentes/acelerometro-black/ VALOR MÍNIMO VALOR REPOSO VALOR MÁXIMO JOYSTICK 0 512 1.024 ACELERÓMETRO 285 359 428 más o menos, pues cada placa es diferente Puedes probar tus valores con este sencillo programa Luego definimos los valores 300 y 400 arbitrarios pero menores y mayores que 359 pero sin llegar a los extremos 285 y 428 para que nuestro sprite nave se mueva : 4. Modo Makey Makey Modo Makey makey En esa sección acuérdate de cambiar el Echidna en modo MakeyMakey ATENCIÓN : EN MODO MAKEY MAKEY PIERDES TODA CONEXIÓN CON LOS SENSORES DE LA PLACA menos claro, los de Mky Mky Fuente CC-BY-SA https://echidna.es/   ¿Qué es Makey Makey ? Es una placa que se inventó en 2010 que permite conectar cualquier cosa que conduzca mínimamente la electricidad en entrada por el puerto USB. Para que lo entiendas bien, mira este vídeo: Nuestra placa tiene esta función , pero en vez de ser una entrada por el puerto USB es una entrada por Arduino que podemos leer, luego en esta sección cambia nuestra placa Echidna el modo sensor a modo makey makey Tiene las siguientes entradas: ANALOGICAS Desde A0 hasta A5 que tenemos que detectarlas si superan un cierto “umbral” que dependerá de lo que conectemos. DIGITALES D2 y D3 aquí es fácil, 0 o 1 GND o sea el conector que tiene que conectarse a una parte de tu cuerpo para crear el puente eléctrico. El logotipo Echidna también hace de masa IMPORTANTE : La persona que toca los pines A0, A1... D2, D3  también tiene que tocar GND masa Entonces... ¿Qué ventajas tiene esta placa con respecto a la original?: Más barata (importante) 2x1 sí, sí, piénsalo: Tienes en la misma placa una Shield educativa con sensores y a la vez una Makey makey, Autonomía : Makey necesita un ordenador y nuestra Echidna necesita Arduino ¿Quién gana en simplicidad? si hacemos que nuestro programa se graba al Arduino: ¡¡La portabilidad es total!! Nota : Aquí tienes un curso de manejo de la Makey Makey original con el curso Scractch avanzado y Makey Makey. Qué es la variable que hay que definir como UMBRAL Experimento con Echidna Scratch Crea este sencillo programa, creando una variable llamada umbral ejecútalo y visualiza esa variable  sin tocar A0 y en modo MakeyMakey por supuesto SALE 8-9 Repite el experimento pero conectando un cable entre masa y A0 SALE 1023 EL MÁXIMO Y ahora conectando entre masa y A0 tus dos manos: SALE 300-600 Resultado Como podemos ver, si tocamos el A0 directamente con un cable, su valor pasa de 8-9 a subir al máximo que es 1024 Pero si es a través de nuestro cuerpo, sólo sube hasta 500 pero alguna vez sólo llega a 400 Moraleja : Los valores de entrada en modo Makey Makey  depende del objeto que va a tocar por lo tanto hay que definir un  umbral que determine cuando no está tocando y cuando está tocando UMBRAL Como vemos que cuando no toca es un valor muy bajo 8-9 podemos definir  UMBRAL como un valor 100, 200 o incluso 300 pero ya 400 puede dar falsos negativos. Recomendamos 100 CON MBLOCK (no pases a mblock si ya trabajas con Echidna Scratch) Conectar en vivo con mBlock Primero tiene que aprender cómo conectar nuestro Echidna (que es un Arduino UNO) en mBlock en modo VIVO Experimento, vamos a poner este código Una vez conectado nuestro Echidna en Vivo vamos a crear una variable global LEER y que sea siempre la lectura A0 luego al objeto panda, le vamos a poner este otro código Experimento Vamos a ejecutar el código y vamos a ver la diferencia Conectando un cable de masa al A0 Tocando una mano la masa y la otra a A0 Programas usando UMBRAL Los programas tendrán la siguiente estructura básica CON ECHIDNA SCRATCH PINES ANALOGICOS A0, A1, A2, A3, A4, A5 Los programas tendrán simplemente que ejecutar un simple condicional que si la lectura del pin correspondiente A0, A1,... es mayor que UMBRAL pues que haga una cosa u otra PINES DIGITALES D2, D3 La estructura es la siguiente COMO PUEDES VER NO HACE FALTA LA VARIABLE UMBRAL   Esta instrucción no la utilizamos, no nos funciona bien, esperamos que las siguientes versiones de Echidna Scratch lo mejoren. CON MBLOCK Aquí es más complicado pues al no tener instrucciones específicas, la comunicación entre ARDUINO UNO y los objetos ec.. hay que hacerlo con variables globales o mensajes, vamos a ver con mensajes: En el dispositivo ARDUINO UNO Definiremos UMBRAL y enviaremos un mensaje si se ha llegado a su valor o no En los objetos En este caso el objeto panda, reacciona según el mensaje que le llega Resultado MONTAJE 11 Piano Con Echidna Scratch Instalaremos una extensión de música, como vemos se crean nuevas instrucciones. También hemos quitado el sprite del gato y hemos puedo un piano más acorde al ejercicio Creamos un código de manera que toque una nota diferente si se toca A0, A1, ... D2, D3 El resultado  El programa lo tienes en este repositorio:  https://github.com/JavierQuintana/Echidna RETO: HAZLO CON BANANAS Cada banana va con un cable cocodrilo-cocodrilo pero la persona que toca el piano tiene que también tocar la masa, tal y como vimos en Qué es Makey Makey RETO: HAZLO CON PERSONAS !!! En este caso la persona que toca, si te fijas, tiene una pulsera con un cable a masa del Echidna El resto de participantes, toca con una mano un pin A0, A1, ... D2, D3 y con la otra la extienden para que pueda hacer teclado Con mBlock Vamos a hacerlo !! Ten en cuenta que mBlock utiliza la notación americana de notas, y a cada nota la vamos a corresponder a una entrada Makey Makey (utilizando por ejemplo el acorde 4): Nota americana C4 D4 E4 F4 G4 A4 B4 C5 Nota Europea Do Re Mi Fa Sol La Si Do Makey A0 A1 A2 A3 A4 A5 D2 D3 Como las entradas analógicas pueden variar desde 0 a 1024 vamos a fijar como umbral en 500 (si es muy sensible lo subimos, si no nos hace caso lo bajamos, a nosotros nos ha funcionado bien 500). El código lo subiremos al Arduino pues mBlock responde muy lentamente, si no te acuerdas cómo se hacía mira esta presentación . Solución El programa es muy sencillo pero repetitivo: Conectamos cada salida de Makey Makey a unos plátanos y la salida del auricular a unos altavoces de ordenador, en la foto puedes ver que se han utilizado unos cables con cocodrilos, y al subirlo al Arduino no hace falta tener el ordenador, alimentamos el Arduino con un PowerBank o incluso con pilas. ATENCIÓN VER 1.3 ALIMENTACION DEL ECHIDNA En el kit que te prestamos para hacer este curso no están incluidos los plátanos, así que cálzate y baja a comprar unos. ¿no tienes perras? pues utiliza recursos humanos:   Esta noche prepara un karaoke con tus amigos. MONTAJE 12 Joystick plastilina Con plastilina conductora podemos hacer interesantes proyectos. En un buscador puedes poner plastilina conductora de electricidad  y tienes varias recetas, con harina, agua, aceite, limón... Una pega: No dura nada, a los pocos días se endurece o se pudre. Propuesta Que un sprite se mueva según unos botones hechos de plastilina: Botón con forma de ⇒ Botón en forma de ⇑ Botón en forma de ⇓ Botón en forma de ⇐ Para este reto, definimos dónde colocamos los botones, de forma arbitraria : A3 conectado a la plastilina con forma de ⇒ A1 conectado con la plastilina en forma de ⇑ A5 conectado con la plastilina en forma de ⇓  A2 conectado con la plastilina en forma de ⇐ Solución con EchidnaScratch El programa no es complejo, simplemente que cuando se pulsa, la coordenada correspondiente se incremente o se decrementa. Se han añadido unos comentarios para tener claro los sentidos : El archivo lo tienes en este repositorio:  https://github.com/JavierQuintana/Echidna Aunque en el vídeo está hecho con mBlock3, el programa y el resultado es el mismo que en EchidnaScratch Solución con mBlock Atención : Las capturas de imagen están con mBlock3 Para mBlock5 a estas alturas ya sabes lo que hay que hacer: 1.- Crear unas variables globales A1, A2, A3, A4, A5 2.- En el arduino un bucle para siempre que asigne estas variables a las entradas analógicas A1, A2 .... 3.- Programar en el helicóptero el movimiento con esas variables globales creadas en el paso 1 El umbral se ha cambiado según la sensibilidad del botón. OTROS RETOS Con la plastilina podemos hacer manualidades tipo conecta y que por la pantalla salga el resultado En este ejemplo fue necesario subir el valor umbral a 200 para que funcionase correctamente Agradecimientos Adolfo Fernandez Las posibilidades son muchas, cuelga tus experiencias en este muro 5. Inteligencia Artificial Qué es la IA Con EchidnaScratch podemos integrar fácilmente la inteligencia artificial definiendo previamente los modelos en Learning ML CC-BY-SA Fuente  https://echidna.es/a-programar/echidnaml/ La inteligencia artificial se refiere al conjunto de algoritmos realizan tareas complejas, que son capaces de realizar procedimientos que imitan el funcionamiento de la mente, como son aprender y tomar decisiones. En el fondo la IA son tomas de decisiones: Un sumatorio de muchos función signoide asociadas a variable de entrada que cuanto más datos, más empinada y por lo tanto más certera es su decisión (salida). Por ejemplo, le pedimos a un robot con IA  que tomando de muestra la temperatura corporal, nos diga si estamos enfermos o no. Salida eje Y  0=no estamos enfermos 1= estamos enfermos. Entrada: eje X La temperatura Los puntos son las muestras que le pasamos para que aprenda Los puntos son dada una temperatura, % de gente que esta enferma a esa temperatura Estadísticamente cuanto más temperatura hay más probabilidad de que estés enfermo Cuanto más datos, más empinada es la función y con más acierto puede predecir. Nosotros sabemos ya la respuesta que el valor crítico es 37ºC pero... ¿y si tiene 36.9ºC?¿Cuánta probabilidad tiene? las máquinas nos ayudan a cuantificar. Tipos IA Viendo esta clasificación ¿Cuál es el tipo de IA que se usa en EchidnaScratch ? Muy fácil: ML Aprendizaje automático supervisado ML : APRENDIZAJE AUTOMATICO O MACHINE LEARNING Aquí los algoritmos aprenden a partir de datos, y ellos buscan patrones para identificar.  Cuanto más datos, mejores resultados. El principio es básico. Queremos diferenciar silla mesa: Analiza datos, localiza patrones (cuatro patas, algo común, el tamaño y forma, patrones que diferencian como el respaldo....) con esas características, puede realizar un entrenamiento, y por lo tanto esta preparado para realizar predicciones. Hay varios tipos de ML: ML Aprendizaje automático supervisado Donde los datos se les da ya etiquetados ML Aprendizaje automático no supervisado: Aquí es el propio algoritmo que tiene que encontrar relaciones en el proceso de identificación de patrones y por lo tanto etiquetar categorías. ML Aprendizaje semisupervisado .  El modelo se entrena con datos etiquetados y no etiquetados. Lo normal es primero los etiquetados (pues son los que implican mayor coste y dinero) y si el modelo ya empieza a funcionar bien, ya procesa no etiquetados para su optimización. RL : APRENDIZAJE REFORZADO O REINFORCEMENT LEARNING Es un modelo que busca la optimización. Utiliza resultados anteriores e intenta mejorarlos. Para buscar esto, se definen estados con unos parámetros que implican premio o penalización. La máquina busca soluciones y acciones para buscar los premios y huir de las penalizaciones. DL : APRENDIZAJE PROFUNDO O DEEP LEARNING Es un subconjunto del ML no supervisado, Se crea una red neuronal organizadas en capas, cada capa especializada, por ejemplo la primera de entrada recoge los datos, las intermedias, ya ocultas, identifican patrones y la última, la salida que recoge la información procesada  anteriores, la que toma las decisiones. PLN : PROCESAMIENTO DE LENGUAJE NATURAL Utiliza conceptos de DL y ML para comprender el lenguaje humano. Una aplicación son los chatbots . Que pueden ser: dirigidos, es decir va tomando decisiones por etapas tipo árbol y da respuestas automáticas no dirigido: produce respuestas en función del contexto y las decisiones del usuario. hibridas que intenta producir una conversación fluida. EJEMPLOS  LEARNING ML  https://web.learningml.org/en/home/   ML: MACHINE LEARNING FOR KIDS  https://machinelearningforkids.co.uk/#!/welcome Ver nuestro tutorial en https://libros.catedu.es/books/robotica-educativa-con-mbot/page/maquina-educable-con-machine-learning-for-kids-y-scratch DL REDES NEURONALES : QUICKDRAW https://quickdraw.withgoogle.com/ Es un videojuego donde se ve claramente como se va perfilando las decisiones en forma de árbol y como la etapa final va reconociendo tu dibujo. En esta red, la primera etapa de la red neuronal son trazos que dibujas, y las neuronas intermedias son fruto de una extensa base de datos de dibujos. La última etapa es la decisión basada en las anteriores neuronas. PRUEBALO ES SUPERDIVERTIDO, INCLUSO EN UN MÓVIL  PLN: CHATGPT COMO FUNCIONA DL CREA TU PEQUEÑA RED NEURONAL CON PYTHON DL: GOOGLE DEEPMIND  Google deepmind desarrolló una red neuronal para aprender a jugar videojuegos, y ganó a varios campeones humanos en videojuegos complejos (de los que inicialmente la máquina desconocía las reglas). Puedes ver en https://deepmind.google/ los diferentes proyectos actuales. Robotica e IA Como puedes ver ECHIDNA ES DE NUESTROS PREFERIDOS PARA USAR LA IA CON LA ROBOTICA Nomenclatura ML = Machine Learning, ver Tipos de IA y hay dos tipos PT ML =pre-trained ML que ya esta entrenadas para el reconocimiento. NoPT ML = No pre-trained ML que no están entrenadas, por lo tanto tenemos que dar muestras etiquetadas para enseñar y crear la máquina ML. Reconocimiento de 🎞️= imágenes🔊=voz🔡=texto🔄️=movimiento 🤖 La IA está implementada en el hardware (firmware) se programa utilizando los resultados de su reconocimiento. 🛜 precisan de Internet para su funcionamiento. Recomendamos utilizar NoPT ML pues son mucho más educativos. Además recomendamos no 🛜 , así no se envían datos a ningún servidor.                 Esto es importante en los casos 🎞️🔊por protección de datos. Marcamos con ❤️ nuestros favoritos. Hardware Echidna LearningML   NoPT ML ❤️🔡🎞️ Microbit CreateAI NoPT ML ❤️ 🔄️(aunque se precisa de 🛜para su entrenamiento) LearningM L NoPT ML ❤️🔡🎞️ Cutebot + AI Lens PT ML 🤖 🎞️ Teachable Machine Google NoPT ML 🛜 🔡 Makeblock: mBlock mBot1, CiberPi, mBot2 Traductor PT ML 🛜🔊 Cognitive Services PT ML 🛜🔡🎞️ Reconocimiento de voz PT ML 🛜🔊 Teachable Machine NoPT ML 🛜🎞️ Smart Cámera  NoPT ML 🤖🎞️ CrowPi   Crowpi AI- Face Recognition NoPT ML (Python) 🎞️ Software Scratch ML for kids NoPT ML ❤️🔡🎞️ Code.org Máquina educable NoPT ML 🛜🔡 Learning ML Es un software IA que pertenece al primer grupo ML y subgrupo supervisado. Aunque esta de moda, lleva desde el 2015 en funcionamiento e integrado en Scratch https://web.learningml.org/ Tiene la gran ventaja  que esta integrado con Echidna Scratch POR LO QUE EL MODELO IA SE PUEDE UTILIZAR EN EL REPERTORIO DE INSTRUCCIONES CC-BY-NC-SA https://web.learningml.org/ RECONOCIMIENTO DE TEXTOS Permite aprender textos y tomar decisiones a partir de conjunto de textos etiquetados RECONOCIMIENTO DE IMAGENES Permite aprender textos y tomar decisiones a partir de conjunto de imágenes etiquetadas RECONOCIMIENTO DE NÚMEROS Este caso no lo abordaremos pues es para casos más académicos. Si quieres conocer este modelo, consultar su manual, en la página 22 Apéndice A: Ejemplo de conjunto numérico tabular , https://web.learningml.org/en/learningml-manual/ MODO AVANZADO Permite elegir qué algoritmo usar (redes neuronales, vecino próximo...) y sus parámetros junto con gráficos para la visualización gráfica de la zona de indecisión. .. si quieres consultar más puedes consultar su manual, en la página 29 Modo avanzado en  https://web.learningml.org/en/learningml-manual/ MONTAJE 13 Reconocimiento de texto Vamos a encender y apagar un objeto de luz usando texto predictivo con IA Al arrancar EchidnaScratch nos vamos a LEARNING ML, nos vamos a entrenar y que entrene con la clase APAGA las palabras que se nos ocurra: Y con la clase ENCIENDE otras tantas palabras Pulsamos que entrene (tarda un poco) y cuando nos diga que esta listo para usar el modelo, vamos a comprobarlo, como vemos, la palabra  MUCHA LUZ no aparece en las entrenadas , pero detecta que tiene más posibilidades que lo que queremos es apagar la luz Acuerdate de grabarlo lo voy a grabar como enciende-apaga.json, se graba LOS DATOS DE ENTRENAMIENTO luego al volverlo a abrir, tienes que volver a crear el modelo Ahora si !! vamos a EchidnaScratch y creamos este programa usando las instrucciones de Learning ML que se basan en el modelo aprendido anteriormente Aquí lo tienes todos los procesos en vídeo : CC-BY SA Fuente  https://echidna.es/a-programar/echidnaml/como-empezar-con-machine-learning-y-echidna/ El programa en este repositorio:  https://github.com/JavierQuintana/Echidna El sprite lámpara lo he obtenido de https://scratch.mit.edu/projects/198689957/editor/ Mejoramos nuestro modelo pero con ayuda de ChatGPT Agradecimientos a Fran Perez CP Ana Abarca de Bolea Hacemos los mismos pasos, pero con pocos sinónimos, solo dos en cada clase, y lo guardamos. Si nos fijamos en el fichero .json (lo abres con un editor de texto, el bloc de notas por ejemplo) el fichero .json no es más que un fichero que almacena los datos de forma clasificada : {"type":"text","data":{"Enciende":["Poca luz","On"],"Apaga":["Mucha luz","On"]}} Le decimos a  chatgpt que nos lo enriquezca con este prompt (u otro similar) con 20 sinónimos (y si quieres más, pues más): quiero que insertes dentro del corchete [ ] de Enciende 20 sinónimos de órdenes para encender la luz y dentro del corchete de Apaga [ ] quiero que pongas 20 sinónimos de órdenes para apagar la luz no pongas saltos de línea, mantén el formato {"type":"text","data":{"Enciende":["Poca luz","On"],"Apaga":["Mucha luz","On"]}} El chatgpt responde con este código: {"type":"text","data":{"Enciende":["Enciende la luz","Prende la luz","Activa la luz","Ilumina","Dale luz","Pon la luz","Conecta la luz","Inicia la luz","Enciende iluminación","Prende iluminación","Activa iluminación","Enciende lámpara","Prende lámpara","Enciende bombilla","Prende bombilla","Dale corriente a la luz","Sube la luz","Ilumina la habitación","Activa el foco","Pon luz"],"Apaga":["Apaga la luz","Apaga todo","Desconecta la luz","Quita la luz","Apaga lámpara","Apaga bombilla","Corta la luz","Desactiva la luz","Oscurece","Quita iluminación","Apaga iluminación","Cierra la luz","Desconecta iluminación","Apaga el foco","Apaga la lámpara","Corta iluminación","Desactiva iluminación","Quita corriente a la luz","Apaga por completo","Baja la luz"]}} lo metes en el bloc de notas y lo guardamos como loquequieras.json y lo importamos en LearningML ¡¡ tenemos ahora 20 textos en cada clase !!! nuestra máquina de IA ha mejorado !!! Otro ejemplo pero con una cerveza ;)   https://libros.catedu.es/books/robotica-educativa-con-mbot/page/maquina-educable-con-machine-learning-for-kids-y-scratch MONTAJE 14 Reconocimiento de imágenes El proceso es similar, en este caso he utilizado el móvil y he mostrado a la cámara web las búsquedas de caras para que aprenda la diferencia entre niños, hombres y mujeres 😁 como veis, para probar el modelo he utilizado mi cara y me reconoce un 99% de hombre😁😁😁 Grabar y abrir una máquina de IA OJO hay que grabar el la máquina de inteligencia artificial que has creado !!! si cierras el programa se pierden todos los datos. No advierte que no lo has grabado Voy a crear otra máqina IA con los objetos Gafas - Taza- móvil y lo grabo Al grabar lo hace con un nombre de archivo .JSON lo voy a hacer con el nombre taza-gafas-movil.json que lo tienes en https://github.com/JavierQuintana/Echidna Este archivo tiene los datos de entrada NO LA MÁQUINA luego si cerramos el programa y queremos abrirlo tenemos que volver a entrenarla: Programa en EchidnaScratch Resultado Sin Echidna se puede hacer simplemente con un Arduino y tres leds, verde al D11 amarillo al D12 y el rojo al D13 ver https://libros.catedu.es/books/echidna/page/tengo-arduino-puedo-hacer-los-programas-sin-echidna Recomendamos... Ver todo el proceso en este vídeo Fuente https://echidna.es/a-programar/echidnaml/como-empezar-con-machine-learning-y-echidna/ También recomendamos... Usar  variables para tener el control de lo que sucede de esta manera podemos controlar qué márgenes de confianza y cual es el resultado de la clasificación. Si el resultado no es el esperado: ajustar los valores de confianza en la imagen he puesto 0.9 darle más fotos a la máquina de IA para que lo haga mejor. Reto : Igual que los porteros automáticos, que se encienda la cámara si se aprieta el botón (por ejemplo SL) Solución : En este caso es recomendable usar un pequeño retardo de 1segundo para que le de tiempo a capturar la imagen Se puede mejorar el programa añadiendo un retardo antes de que se cierre la puerta, etc...   MONTAJE 14BIS RECONOCIMIENTO DE MATRÍCULAS Vamos a desarrollar este proyecto de Jorge Lobo @Lobo_tic  https://x.com/lobo_tic/status/1923996982516814064 —Antes, para salir del parking del supermercado, había que escanear el ticket de compra, pero ahora la barrera se abre sola como si supiera que ese coche puede salir. —¿Queréis saber cómo lo sabe? Así surge la idea de esta actividad con @EchidnaSTEAM y @_learningml_ 😃 pic.twitter.com/3Ew22WcURj — Jorge Lobo (@lobo_tic) May 18, 2025 PRIMER PASO : MONTAJE Ponemos un servo en D4  FÍJATE QUE EL MARRÓN A MASA GND SIMBOLO G TAL COMO LA FOTO Y EL AMARILLO EN DATO Dx SEGUNDO PASO : CREAR MÁQUINA IA DE RECONOCIMIENTO DE MATRICULAS Entramos en crear máquina de reconocer imágenes Creamos una clase que se llame NO Añadimos imágenes desde nuestra webcam Vamos enseñando matrículas que  no queremos que se abra el parking  de cada matrícula pulsamos una docena en diferentes posiciones (ligeros cambios) También añadimos varias imágenes que existe cuando no hay ninguna matrícula , pues queremos que cuando no hay coche que no se abra el parking. Añadimos la clase SI Repetimos el paso 3.1 con las matrículas que  queremos que se abra el parking Le damos a aprender Probamos Nos fijamos que funciona perfectamente Detalle del paso 3.2 TERCER PASO : PROGRAMAR Ahora entramos en la ventana de programación usando el modelo: En learningml arrastramos la instrucción de  encender cámara curiosamente lo voltea, por lo tanto le decimos ON FLIPPED de lo contrario lee al revés las matrículas (curiosamente lo hace bien aunque a veces falla) Ponemos un bucle infinito para que siempre lea los sensores y funcionen los actuadores (típico en programas de robótica) Un condicional dentro del bucle si --- sino y en la condición que sea si LA MATRICULA ES DE LA CLASE SI  pues que abra sino que la cierre Tiene dos instrucciones dentro de learningml uno que es que clasifique la imagen y otro que sea la imagen de la captura del vídeo Si es SI pues que abra con el servo  También que encienda la luz verde y apaque el rojo Esta espera es para que el coche pase tranquilamente además que nos permite que no haga contínuos aperturas y cierres de la barrera SINO pues que cierre la barrera Encienda rojo y apague verde CUARTO PASO : JUGAR MONTAJE 14 TRIS RECONOCIMIENTO GESTOS Podemos realizar un programa que siga los movimientos del brazo y que el servo lo reproduzca Haremos tres clases: 0 para el brazo a 0º 90 posición brazo 90º 180 posición brazo a 180º Enseñamos a la máquina El resultado   6: Extensiones Extensiones de Echidna En la esquina superior izquierda verás tres extensiones digitales Para conexión de otros elementos como servos, sensores pero no pueden pasar de 300mA de lo contrario dañas al Arduino. Salidas/Entradas digitales D4, D7 y D8 La alimentación de estas I/O se puede elegir entre la salida de 5V por el Arduino y Vin con la tensión que estemos alimentando al Arduino utilizando el jumper que ya vimos en su momento . Nota: Acuerdate en toda esta sección de poner la Echidna en modo Sensor ¿Qué extensiones son las aconsejadas? Lo tienes en https://echidna.es/hardware/echidnablack/complementos-echidnablack/     Pero no es necesario que sean las aconsejadas, aquí por ejemplo en este vídeo el Echidna se ha colocado en un chasis con unos motores y controlado por el Bluetooth del móvil. Este ejemplo del robot-coche no lo trataremos aquí pues es de un nivel superior, que se trata mejor en  Arduino con código Pero sólo está el límite de tu imaginación para convertir al Echidna el algo más poderoso ... Servo Servo El servo es un motor que podemos controlar el ángulo de giro, hay diferentes clases, pero nos vamos a centrar en este que tiene un  precio muy barato: SG90 que varía desde 0º a 180º Fuente Luis Llamas CC-B-SA https://www.luisllamas.es/controlar-un-servo-con-arduino/ Cómo se conecta el servo con la Echidna El servo tiene tres cables,, marrón, rojo, y amarilo machos, conéctalos a uno de los pines de las extensiones, por ejemplo al D4 marcado como 1 . Fíjate bien, el marrón indica la masa hacia el borde y el amarillo hacia la cara interior: Experimenta con el servo con EchidnaScratch ! Entra en EchidnaScratch, saca su instrucción a la palestra y haz dos cliks, experimenta con varios ángulos, verás que menores que lo mínimo es 0º y lo máximo 180º SUPERFÁCIL !!! Aprende más sobre servos en esta página de  Luis Llamas . Experimenta con el servo c on mBlock Para experimentar tienes que usar esta instrucción Si intentamos trabajar con el servo con ángulos mayores de 180ª no hace caso, va al valor 180ª. Si ejecutas este programa lo verás: Mira la diferencia con un servo de rotación continúa , fíjate como: Los extremos 0º y 180º es a máxima velocidad, pero un sentido u otro. 90º es parado. - Un valor intermedio es menos velocidad (se ve el ejemplo 80º y 100º) Si tiene deriva, (cosa frecuente) hay un potenciómetro para ajustar. Montaje 15 Servo Montaje 15 Servo Vamos a hacer un programa que el servo se mueva JUSTO EL MISMO ÁNGULO QUE LA PLACA ECHIDNA para conseguir que el servo se mantenga en su misma posicón. Para ello hay que tener en cuenta que: La Echidna cuando no esta inclinada muestra un valor de 350º, vamos a llamarlo ángulo de  inclinación El servo cuando está en su punto medio, el brazo está a 90º, vamos a llamarlo  ángulo al valor que quiero que se mueva el brazo del servo Por lo tanto entre los dos variables será 350-90=260º Sí Ángulo es igual a inclinación menos esa diferencia 260 entonces tenemos que el servo se mantendrá constante en su posición El programa es : Se le añade un pequeño retardo de 0.5segundos pues se vuelve algo loco El resultado es  Todos los programas de este curso se encuentran en este repositorio:  https://github.com/JavierQuintana/Echidna ¿Te atreves..? A realizar un programa que mueva el servo según el valor del Joystick ejeY ? Montaje 16 Servo con IA Enunciado Necesitamos que se reconozca un objeto entre varios de una cinta transportadora para desviarla a su destino correcto Vamos a distinguir entre paquetes (cajas) y bolsas Learning ML Entrenamos la máquina de inteligencia Artificial para que distinga entre un paquete y una bolsa Ecihdna Scratch Ponemos este sencillo programa utilizando intrucciones de la máquina de IA creada: Resultado Todos los programas de este curso se encuentran en este repositorio:  https://github.com/JavierQuintana/Echidna No te quedes aquí, avanza !!! Puedes hacer muchos, por ejemplo este que con inteligencia artificial, detecta si es un pájarlo y el espantapájaros se mueve ¿Te atreves a hacerlo? https://x.com/lobo_tic/status/1858999814916370902 Espantapájaros 🐦🧹controlado por IA con 🦔 @EchidnaSTEAM en el stand de la gente maja de @MICROLOG_TECNO en @SIMOEDU_ 😍 pic.twitter.com/7O1fIH2xXB — Jorge Lobo (@lobo_tic) November 19, 2024 Hemos explicado 16 montajes, ya con esto tienes roto el hielo para desarrollar proyectos con Edhidna Proyecto maqueta domótica con servo de motor contínua y led Este proyecto está obtenido de https://echidna.es/2021/05/asistente-virtual-robotica-e-ia/ licencia CC-BY-SA por Jorge Lobo 29 mayo, 2021 A continuación se propone una actividad que consiste en hacer una pequeña maqueta de una estancia y añadir una luz (un LED externo) y un ventilador (un servomotor de rotación continua) controlados desde el ordenador mediante un proceso de Inteligencia artificial. CONSTRUYENDO LA MAQUETA EL PROYECTO VÍDEOS ARCHIVOS Entrenamiento Proyecto sb3 El anterior proyecto está obtenido de  https://echidna.es/2021/05/asistente-virtual-robotica-e-ia/ licencia CC-BY-SA por Jorge Lobo 29 mayo, 2021 Más proyectos en https://echidna.es/recursos/proyectos/ 7 Entradas de Echidna con mapeo (avanzado) Mapeo (avanzado) ¿Qué es eso de "mapeo"? En la jerga robótica, dicho pronto y mal pero para que se entienda, mapear significa hacer un cambio de escala ¿Cuándo se dan esas situaciones? SITUACION A : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 y queremos que se copie en una salida digital PWM de Arduino que va de 0-255 SITUACION B : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 e interpretarlo en sus valores de voltios. Si suponemos que la placa se alimenta a 5V la variable de salida irá desde 0 a 5V SITUACION C : Queremos leer el valor de un LDR, que tapándolo nos da 917 e iluminándolo al máximo es 1023, lo queremos copiar en una salida digital PWM, o sea que la salida va desde 0 a 255 Nota: El mínimo de 917 (puede ser otro número, es un valor experimental) es debido a que los LDR van montados en un divisor de tensión como el de la figura, y la resistencia de abajo, siempre se queda algo de tensión SITUACION D : Queremos según el valor de un joystick conectado a las entradas analógicas de un Arduino (esto pasa en Echidna) se representen en la pantalla de Scratch 2*220 por 2*180, es decir   - Eje X : el potenciómetro (vamos a llamarlo potx ) va de 0 a 1023 y la salida ( ejex ) va de -220 a 220   - Eje Y : el potenciómetro (vamos a llamarlo poty ) va de 0 a 1023 y la salida ( ejey ) va de -180 a 180 SITUACION E: Ídem pero no con el potenciómetro, sino con el acelerómetro (vamos a llamarlo acel ) que va 250 a 500 SITUACION F : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 y queremos que se copie en una salida de un servo, por lo tanto lo que necesita es un ángulo que va de 0-180 SITUACION G : Idem que F pero una raspberry por lo tanto GPI va de 0-65.535 ¿Cómo se consigue mapear? Si programas con código ArduinoIDE, tienes la instrucción map Si no tienes map, por ejemplo, programas con bloques gráficos tipo Scratch, lo tienes que hacer a mano ¿Cómo? Con la ecuación de una recta Para entendernos : X  será el valor de entrada que tiene unos valores límites X 1 e X 2 Y es la variable de salida que queremos y que tiene otros valores límites Y 1  e Y 2 Luego y tiene esta ecuación : donde m es  Gráficamente  ¿Una hoja de cálculo para poder hacer esos cálculos? Sí, claro, en este enlace https://docs.google.com/spreadsheets/d/1qNbaZ2c_H1UCNhtvp2LimfWSbaGvZLVl5gJr9Wu0ifU/edit?usp=sharing dale a descargar Rellena las casillas amarillas, y en las naranjas tienes el resultado de m y n ¿Me lo puedes hacer para cada situación anterior? Si claro: SITUACION A : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 y queremos que se copie en una salida digital PWM de Arduino que va de 0-255 Límites de las variables : X de 0-1023 Y de 0-255 Con la instrucción map : Y = map( X, 0, 1023, 0, 255); Sin la instrucción map Y = 025 * X  pues 255/1023 = 0.25 también podemos escribir Y = X/4 SITUACION B : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 e interpretarlo en sus valores de voltios. Si suponemos que la placa se alimenta a 5V la variable de salida irá desde 0 a 5V Límites de las variables : X de 0-1023 Y de 0-5 Con la instrucción map : Y = map( X, 0, 1023, 0, 5); Sin la instrucción map Y = 0.0048 * X  pues 5/1023 = 0.0048 o también podemos escribir Y = X/204 que queda mejor pues 1023/5=204 aprox. SITUACION C : Queremos leer el valor de un LDR, que tapándolo nos da 917 e iluminándolo al máximo es 1023, lo queremos copiar en una salida digital PWM, o sea que la salida va desde 0 a 255 Límites de las variables : X de 917-1023 Y de 0-255 Con la instrucción map : Y = map( X, 917, 1023, 0, 255); Sin la instrucción map Y = 2.4 * X  pues 255/(1023-917) = 2.4 SITUACION D : Queremos según el valor de un joystick conectado a las entradas analógicas de un Arduino (esto pasa en Echidna) se representen en la pantalla de Scratch 2*220 por 2*180, es decir   - Eje X : el potenciómetro (vamos a llamarlo potx ) va de 0 a 1023 y la salida ( ejex ) va de -220 a 220   - Eje Y : el potenciómetro (vamos a llamarlo poty ) va de 0 a 1023 y la salida ( ejey ) va de -180 a 180 EJEX Límites de las variables : potx de 0-1023 ejex de -220 a +220 Con la instrucción map : ejex = map( potx, 0, 1023, -220, 220); Sin la instrucción map ejex =-220 + 0.43*potx pues (220-(-220))/1023=0.43 EJEY Límites de las variables : poty de 0-1023 ejey de -180 a +180 Con la instrucción map : ejey = map( poty, 0, 1023, -180, 180); Sin la instrucción map ejey =-180 + 0.35*poty pues (180-(-180))/1023=0.35 SITUACION E: Ídem pero no con el potenciómetro, sino con el acelerómetro (vamos a llamarlo acel ) que va 250 a 500 EJEX Límites de las variables : acelerómetro acel de 250-500 ejex de -220 a +220 Con la instrucción map : ejex = map( acel, 250, 500, -220, 220); Sin la instrucción map ejex =-220 + 1.76*(acel-250) pues (220-(-220))/(500-250)=1.76 EJEY Límites de las variables : acelerómetro acel de 250-500 ejey de -180 a +180 Con la instrucción map : ejey = map( acel, 250 500, -180, 180); Sin la instrucción map ejey =-180 + 1.44*(acel-250) pues (180-(-180))/(500-250)=1.44 SITUACION F : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 y queremos que se copie en una salida de un servo, por lo tanto lo que necesita es un ángulo que va de 0-180 Límites de las variables : X de 0-1023 Y de 0-180 Con la instrucción map : Y = map( X, 0, 1023, 0, 180); Sin la instrucción map Y = 0.17* X  pues 180/1023 = 0.17 también podemos escribir Y = X/5.7 pues 1023/180=5.7 SITUACION G : Idem que F pero una raspberry por lo tanto GPI va de 0-65.535 Límites de las variables : X de 0-65535 Y de 0-180 Con la instrucción map : Y = map( X, 0, 65535, 0, 180); Sin la instrucción map Y = 0.00274* X  pues 180/65535 = 0.00274 pero es más cómodo al revés Y = X/364 pues 65535/180=364 MONTAJE 8 Comebichos No podemos dejar el Joystick sin hacer un videojuego !! El siguiente RETO es: Mover un Sprite “Bat” con el Joystick para atrapar un Beetle Bat se tiene que mover con el joystick por toda la pantalla. Beetle se mueve horizontalmente desde el borde derecho hasta el borde izquierdo, y cuando llega al izquierdo, vuelve a aparecer en el derecho (y aleatoriamente desde cualquier altura) Solución con EchidnaScratch Añadimos los Sprite Beetle y Bat y borramos el gato Al sprite BEETLE vamos a moverlo aleatoriamente con este script El sprite BAT se moverá según la posición del JOYSTICK pero  mapeadas es la SITUACION D de la página que has visto mapeo  algo retocadas. y le añadimos el siguiente código al BAT para que cuente los bichos comidos. Previamente crear una variable COMIDOS Todos los programas de este curso se encuentran en este repositorio:  https://github.com/JavierQuintana/Echidna Solución con mBlock El bicho Bettle lo haremos mover bastante rápido y al azar en el eje Y para que lo tenga difícil Bat: Y bat tiene que moverse con el joystick, que le pasaremos las variables A0 y A1. Por lo tanto el Arduino tiene este programa: Además hemos añadido la puntuación y el cambio de disfraz para que parezca que aletea: Por lo tanto el programa del objeto murciélago es El programa completo lo puedes descargar aquí https://planet.mblock.cc/project/projectshare/3230393 El resultado es: Lo sé …. soy bastante malo !! MONTAJE 9 SPRITEVOLADOR ¿Qué es un acelerómetro? El acelerómetro tiene el mismo efecto que el Joystick, nos da valores en el eje X o eje Y, en el caso del Joystick lo daba la inclinación de la palanca, en este caso lo da la inclinación del mismo Echidna. Está conectado a los pines analógicos: A2 nos da la inclinación en el eje X A3 nos da la inclinación en el eje Y Los valores van desde 250 hasta 500 MONTAJE 9 SPRITEVOLADOR Vamos a realizar un sencillo videojuego: Mover un sprite volador , el movimiento de un sprite con el acelerómetro y esquivando edificios que se mueven de derecha a izquierda dando la sensación de que el sprite vuela. El reto te lo complicamos con dos premisas: Modificar disfraces del sprite Reutilizar sprites externos desde  Scratch Este programa tienes tres pasos Sprite volador moviéndose según acelerómetro Le añadimos un disfraz de explosión reutilizando de otro Sprite "sun" Movimiento según acelerómetro Sprite edificios Exportación de sprites externos de otro autor Importación a nuestro proyecto Muerte del sprite volador si toca edificio. Aquí es el código propio del juego A SOLUCIÓN CON ECHIDNASCRATCH A1 Sprite PARROT moviéndose según acelerómetro A1.1 Añadir un disfraz al PARROT de explosión.  Quitamos el sprite del gato y añadimos el sprite SUN Entramos en edición del sprite Lo tuneamos un poco para que parezca una explosión (simplemente pintar de rojo el centro) Lo exportamos Guardamos con explosion.svg Ahora añadimos el Sprite PARROT y al sprite PARROT le ponemos el disfraz de explosión: Añadimos el sprite PARROT Borramos el anterior SUN ya no lo necesitamos Entramos en Edición del sprite Menú del disfraz (costume) Upload costume elegimos el fichero creado anteriormente "explosion.svg" Abrimos Ya tenemos un disfraz añadido al Parrot. Clica en el primer disfraz pues cuando vuelvas a la ventana de código verás el de explosión si no lo haces. Otra manera más fácil sería simplemente añadir un disfraz de los sprite por defecto y en paz A1.2 Movimiento del sprite PARROT  Vamos a hacer que el pájaro se mueva según el acelerómetro: MAPEO : Queremos según el valor del acelerómetro, se representen en la pantalla de Scratch 2*220 por 2*180, es decir   - Eje X : el potenciómetro (vamos a llamarlo  potx ) va de 0 a 1023 y la salida ( ejex ) va de -220 a 220   - Eje Y : el potenciómetro (vamos a llamarlo  poty ) va de 0 a 1023 y la salida ( ejey ) va de -180 a 180 Si vamos a la hoja de cálculo , podemos sacar los valores de mapeo anteriores A2 Sprite EDIFICIO moviéndose de derecha a izquierda Dará sensación al sprite pájaro que está volando. A21 Exportación de Sprites externos Vamos a ser vagos: Nos vamos a copiar de alguien externo:  Entramos en este proyecto FLY de scratch  https://scratch.mit.edu/projects/113582791/ entramos en su código y exportamos los edificios, nubes, etc... Una vez dentro del editor EXPORTAMOS ESTOS SPRITES Simplemente botón derecho y EXPORTAR Y guardamos esos ficheros generados Buildings2.sprite3 Clouds.sprite3 Cloud.sprite3 Buildings.sprite3 A22 Importación de los Sprites externos Entramos en Añadir Sprite Upload Elegimos los ficheros exportados anteriormente en A21 INCREIBLE nos importa el Sprite  CON SU CÓDIGO INCLUIDO  si le das a la Bandera verás que el efecto sin apenas realizar trabajo A3 Muerte del PARROT Ya lo tenemos casi, añadimos al bucle de PARROT un condicional: Si PARROT toca BUILDINGS o BUILDINGS2 entonces Cambia de disfraz EXPLOSION Envía mensaje komunikat1 que es el que utiliza el autor de los edificios para parar su movimiento, (debe de ser ruso su autor) MEJORAS Ya sé que colocando el helicóptero siempre arriba, siempre ganas!! HAZ QUE SOLO SI TOCA BUILTING1 MUERE, PERO SI TOCA A BULDING2 QUE GANE UN PUNTO de esta manera ya no se gana poniendo el helicóptero arriba del todo Todos los programas de este curso se encuentran en este repositorio:  https://github.com/JavierQuintana/Echidna B SOLUCIÓN CON mBlock B1 Sprite helicóptero moviéndose según acelerómetro B11 Añadir un disfraz al helicóptero de explosión.  Vamos a añadir un objetos: helicóptero de la biblioteca- Le vamos a añadir un disfraz explosión 1.- Añade un objeto sun, y borra el dibujo interior, y así parece una explosión 2.- Exporta el fichero imagen svg 3.- Añade al helicóptero el disfraz  4.- Eligiendo el fichero svg exportado en el paso 3 B12 Movimiento helicóptero Vamos a hacer que helicóptero que se mueva según el acelerómetro: (Ver al final DETALLES MAPEO) En el arduino le asignamos las coordinadas a las variables globales A2 y A3 B2 Solución edificio, cómo se reutiliza un sprite B21 Exportación de un Sprites externos Esta parte es igual que A21 luego no lo repetimos B22 Importación de Sprites externos Vamos a mblock e IMPORTAMOS el fichero que hemos exportado Nos importa con sus disfraces Y SU CÓDIGO Nos queda pues esta colección de objetos B3 Solución a la muerte del helicóptero Vamos a poner que si toca un edificio, “explota” (o sea, cambia el disfraz a explosión), además envía el mensaje “komunikat1” que vemos que el script del edificio lo necesita para esconderse una vez terminado el juego (debe de ser ruso el mensaje es del autor del objeto edificio) : El programa lo tienes aquí https://planet.mblock.cc/project/3230430 MEJORAS Ya sé que colocando el helicóptero siempre arriba, siempre ganas!! HAZ QUE SOLO SI TOCA BUILTING1 MUERE, PERO SI TOCA A BULDING2 QUE GANE UN PUNTO de esta manera ya no se gana poniendo el helicóptero arriba del todo Detalles MAPEO verlo en la situación E de mapeo: https://libros.catedu.es/books/echidna/page/mapeo PUEDES CAMBIAR ESTOS VALORES TESTEANDO LOS MOVIMIENTOS DEL SPRITE MONTAJE 10 MATA-ALIENS con Joystick. Hackeando código y mapeando 1.- IMPORTANDO PROYECTO EXTERNO SCRATCH A EchidnaScratch o mBlock Entramos en SCRATCH https://scratch.mit.edu/   y buscamos ALIENS INVASION, concretamente este : https://scratch.mit.edu/projects/593781518/ Entramos en SEE INSIDE Lo grabamos en nuestro ordenador Nos vamos al programa ECHIDNA ML y cargamos el programa descargado 2.- Hackear el código para que funcione la nave con el joystick Vamos a fijarnos en el código de la nave, si nos fijamos se mueve si se pulsan las teclas ⬅️➡️ Vamos a cambiar el código para que se mueva según el Joystick Como el joystick está conectado a las entradas analógicas del Arduino, su valor va desde 0 a 1024 siendo aproximadamente 512 cuando esta en reposo o en posición del medio. Vamos a poner unas condicionales para que se mueva hacia la izquierda o hacia la derecha según estos valores, siendo 400 y 600 unos valores arbitrarios pero menores y mayores que 512 : 3.-Un poco más, disparar con D2 SR También vamos a cambiar el disparador “espacio” : En el sprite de la nave vamos a cambiar "Al presionar la tecla espacio" Lo vamos a cambiar por  Igualmente en el sprite Button2 que es el "láser" hay que cambiar Por MEJORALO !!! - es un poco solo ¿le añades un sonido cada vez que se dispara? - se pueden hacer trampas, dejando apretado el botón hace una ráfaga continua. ¿Puedes limitar a un disparo láser cada vez que se aprieta?  8 Extensiones (avanzado) ¿Y este capítulo? Con los anteriores 15 montajes es suficiente para ya desarrollar proyectos con Echidna. Este curso pertenece a otro antiguo que el paquete incluían más elementos En este apartado lo mostramos aquí para que te sirvan de inspiración en tus futuros proyectos.  Aunque están hechos con mBlock, son perfectamente realizables en EchidnaScratch El antiguo paquete de préstamo contenía los siguientes elementos. : En el caso de que tengas la ECHIDNA BLACK es lo mismo pero SIN LA PLACA ARDUINO pues la Echidna Black ya lo incorpora. Aquí puedes ver un precio orientativo de los elementos: Encendido sensible Sensor infrarojos Encendido Sensible  Vamos a provechar las conexiones digitales que tiene Echidna preparado para conectar módulos exteriores, si te fijas está preparado para conectar fácilmente estos módulos pues facilita la alimentación, GND y el pin digital Hay muchos módulos para conectar, y todos tienen la misma configuración en sus pines : GND, + , I/O, donde I/O es el pin digital o analógico de entrada o salida, dependiendo del sensor, y como puedes ver en la figura, hay mucha variedad (busca en Internet sensores para Arduino) hay para a empezar con uno sencillo de entrada digital que es muy útil: el sensor Infrarrojos Para ver más información de este sensor te recomendamos esta página. En el Echidna arriba a la izquierda tienes 3 conectores digitales a elegir, nosotros elegimos el primero D4 luego el pin OUT del sensor se conecta al D4, el resto en el mismo orden Nota: El potenciometro es para ajustar la sensibilidad OJO Hay sensores que tiene los pines en otro orden FIJATE de lo contrario el sensor se pondrá a arder Nota: Hay sensores con 4 pines, que permiten alimentar el diodo IR de forma independiente, pero tienen un jumper que inutiliza el 4 para sólo utilizar los 3 pines. Realizamos un pequeño programa muy fácil que detecta si hay un obstáculo o no: En el Arduino En el panda Y el disfraz costume2 lo hemos tintado de rojo El programa lo tienes aquí https://planet.mblock.cc/project/3232841 El resultado es: Alarma láser Hemos visto anteriormente una entrada digital sencilla con el sensor IR, ahora vamos a ver una salida digital muy simple, buscando siempre la motivación en nuestros proyectos: El diodo Laser. Si quieres saber más de este componente, te recomendamos la página de Luis Llamas . Si tienes que comprar uno, te recomendamos que no sea superior a 5mW, pues puede dañar permanentemente la retina del ojo [ +info ]. El modelo que te proponemos es de 1mW , no obstante, EVITA QUE EL LÁSER APUNTE A LOS OJOS espcialmente con niños. RETO Te proponemos que realices un programa para desactivar una ALARMA LASER . La alarma está protegida por un haz laser (que enfoca a nuestro querido LDR del Echidna ), si se corta el haz la alarma suena. El disparo va a ser simulada en el ordenador, no queremos queremos que alertar a los vecinos, un sonido en el ordenador y en la pantalla una imagen en el ordenador. Para desactivar la alarma, pulsamos la tecla espacio, y nos pide introducir el código (tienes 10 segundos para darle más entusiasmo, sino se dispara), si has acertado, el laser se apaga y ya puedes entrar a tu lindo hogar. Luego vamos a no ponernos nerviosos para desactivar la alarma y mantener la serenidad. via GIPHY Solución Conexiones son sencillas, el laser al D4 por ejemplo y hay que tener maña para que apunte al LDR: El script que controla si se corta el haz laser que se dispare es un condicional que lee el LDR en A5, mientras sea mayor que 900 es que tiene una intensidad de luz muy grande, es decir, le está enfocando el laser, la variable _PARACRONO _es en el caso de que se desactive la alarma, el laser se apagará luego que no se crea que se corta el haz. Si se corta el haz envía un mensaje _Booom _que lo leeran los demás scripts. Se aprovecha este script para ENCENDER EL LASER pin digital 4 alto: En el Arduino  En el objeto (que hemos seleccionado una bomba y le hemos puesto un disfraz explosión tal y como se ha explicado antes, utilizando el objeto sun) El script que controla la desactivación de la alarma mediante código es el siguiente. Si se acierta con el código secreto 666, se envía el mensaje _Ufff _al resto de scripts: El script que desactiva la alarma es cuando reciba el mensaje _Ufff _por lo tanto para el cronómetro y apaga el laser: El script del tiempo cuenta de forma descendente, y si finaliza envía el mensaje Boom al resto de scripts, sólo se para si PARACRONO=1 Y por último la explosión El resto: esconder y mostrar scripts y disfraces se omiten por simplicidad, el programa lo puedes descargar aquí : https://libros.catedu.es/books/arduino-con-echidna-y-mblock-scratch/page/53-montaje-15-alarma-laser El resultado es OTRO RETO Si se corta el haz, hay 10 segundos para desactivarlo con código, sino, se dispara. No ponemos la solución ¡¡ponlo tú en el muro !! Seguro que se te ocurren muchas ideas... Tractor entrando al corral Te proponemos un reto utilizando dos elementos vistos en esta unidad, para dar un poco de rienda suelta a tu imaginación de la cantidad de proyectos que se pueden hacer. Reto Construir un proyecto donde la barrera (hecha de cartón y fijada al servo) está bajada y el semáforo en rojo. Si el sensor IR detecta un vehículo, tiene que abrir la barrera durante 5 segundos y el semáforo en verde. Antes de cerrar, se encenderá el semáforo en naranja para advertir que se va a cerrar la barrera. Solución Conectamos por ejemplo el servo al D4 y el sensor de IR al D7 Con mBlock 3 Con mBlock5 es igual Lo tienes aquí https://planet.mblock.cc/project/3234387 Otro reto más difícil Este ya es para los "sobresalientes": Podemos hacer que la barrera se abra con Bluetooth, o que también baje si el sensor de Ultrasonidos en el otro lado detecta que el vehículo ya ha pasado. Aunque el vídeo está hecho con la Shield Edubásica perfectamente se puede hacer con Echidna, y en nuestro caso podemos sustituir un sensor ultrasonidos con un sensor IR. Semáforo distancia Queremos poner un ejemplo de un sensor que tenga 4 pines, barato y que puede darnos mucho juego pues nos da información de la distancia en la que se encuentra un objeto. Funciona por eco entre la señal que se emite por Trg y la que se recibe por Echo y para su utilización requiere utilizar la fórmula de conversión de tiempo a espacio con la fórmula de la velocidad del sonido... tranqui !! no lo vamos a hacer, pues ya mBlock tiene una función especial para ello sin utilizar fórmulas y nos da directamente la distancia en cm , pero si quieres saber más sobre este sensor, te recomendamos la página de Luis Llamas. RETO LEER EL VALOR DEL SENSOR ULTRASONIDOS Queremos que el objeto panda nos diga la distancia en cm SOLUCIÓN Hay un problema En mBlock3 se puede utilizar en vivo. En mBlock5  no se puede UTILIZAR EN VIVO LA INSTRUCCION LEE SENSOR ULTRASONIDOS no sabemos por qué. Sólo podemos cargar el programa en el Arduino Gracias a la contestación de este foro , podemos hacerlo instalando una extensión Hay que instalarlo  en los dos, en el Arduino y en el objeto Panda En el objeto panda pondremos este código CONEXIOONES Como se necesitan 4 pines, y las extensiones tienen 3 utilizaremos alguno libre. La conexión que vamos a realizar entre los pines I/O de Echidna y el sensor ultrasonidos HC-SR04 va a ser: el D4 en Trig el D7 en Echo el '+' en Vcc  el G en GND y en el Arduino el siguiente programa, y pulsamos SUBIR Resultado: El panda nos dice en cm el obstáculo que ponemos delante del sensor US: El programa lo tienes aquí : https://planet.mblock.cc/project/3233976 RETO RADAR LUMINOSO Realizar un programa que a medida que se acerque un objeto, se enciendan más luces Solución El programa es simplemente recoger la distancia con la instrucción que hemos señalado antes. La conexión igual que antes y por lo tanto el programa es poner de límites 50cm, 40cm, 30cm, 20cm y 10cm para ir encendiendo luces. El programa es largo El programa lo tienes aquí https://planet.mblock.cc/project/3233931 El resultado es : Los siguientes retos, aunque las imágenes se ve que no están hechos con Echidna, da igual, es simplemente conectar el trig y echo en los pines D4 y D7 del Echidna y utilizar la instrucción de "lee el sensor ultrasónico trig pin 4 echo pin 7" (o utilizar otro orden o el D8 si te pones revelde y cambiar los números anteriores) ¿Te atreves a hacerlos todos ? via GIPHY RETO HINCAR UNA PELOTA Pon de sprite una pelota y que se hinche a medida que acercas un objeto al ultrasonidos. Solución RETO PIANO INVISIBLE Que suene una nota según la distancia del objeto. Solución RETO RADAR CON INTERMITENCIA DE UN LED Cuanto más cerca está un objeto, más rápido un led se enciende y apaga. Solución RETO SENSOR PARKING Cuanto más cerca está un objeto, más rápido suena un pitido intermitente Solución Bluetooth I Un poco de teoría ONDAS Una onda es una señal que se propaga por un medio. Por ejemplo el sonido, que es una onda mecánica que viaja usando el aire o cualquier otro material. Pero en el caso de las señales eléctricas pueden ser enviadas por el cable o a través del vacío (no necesitan un medio para transmitirse). Dependen de 3 parámetros principalmente: Amplitud: altura máxima de la onda. Hablando de sonido representaría el volumen. Si nos referimos a una onda eléctrica estaríamos representando normalmente el voltaje. Longitud de onda λ: distancia entre el primer y último punto de un ciclo de la onda (que normalmente se repite en el tiempo). Frecuencia f : Número de veces que la onda repite su ciclo en 1 segundo (se mide en hertzios). Periodo T es simplemente es la inversa de la frecuencia. T=1/f La relación entre ellas es muy fácil pues las ondas electromagnéticas viajan a la velocidad de la luz c y si velocidad es espacio/tiempo luego c = λ/T luego c= λ*f Dentro del espectro electromagnético encontramos diferentes tipos de señales dependiendo de las características de su onda. TRANSMISIÓN INALÁMBRICA: BLUETOOTH.    Hoy en día, este grupo está formado por miles de empresas y se utiliza no sólo para teléfonos sino para cientos de dispositivos. Bluetooth es una red inalámbrica de corto alcance pensada para conectar pares de dispositivos y crear una pequeña red punto a punto, (sólo 2 dispositivos). Utiliza una parte del espectro electromagnético llamado “ Banda ISM ”, reservado para fines no comerciales de la industria, área científica y medicina. Dentro de esta banda también se encuentran todas las redes WIFI que usamos a diario. En concreto funcionan a 2,4GHz. (Un G son 10 9 ) luego entre FM y Microondas. ¿Sabias que? Su curioso nombre viene de un antiguo rey Noruego y Danés, y su símbolo, de las antiguas ruinas que representan ese mismo nombre.  Hay 3 clases de bluetooth que nos indican la máxima potencia a la que emiten y por tanto la distancia máxima que podrán alcanzar: También es muy importante la velocidad a la que pueden enviarse los datos con este protocolo: Mbps : Mega Bits por segundo.       MBps: Mega Bytes por segundo. kb = 1.024 b     M = 1.024 k     G = 1.024 M ¿Te atreves a calcularlo … . ? ¿Cuántos ciclos por segundo tendrán las ondas que están en la Banda ISM?  ¿Cuál es el periodo de esas ondas? Solución  a)  f = 2.4G b) λ=c/f= 12.5cm o sea, las antenas tendrían que ser de esta longitud. Hay muchos trucos para reducirla, una de ellas es la forma de serpiente que puedes ver en el HC-06 ¿Te atreves a calcularlo...? ¿A qué distancia y cuanto tiempo tardarían en enviarse los siguientes archivos por Bluetooth? Un vídeo de 7Mb usando versión 2 clase 2 Una imagen de 2.5Mb usando versión 3 clase 1 Un archivo de texto de 240KB usando versión 1.2 clase 1 Solución  1) 7Mb / 3Mbs = 2.3 seg. 2) 2.5Mb / 24Mbs = 0.1 seg. 3) 240 kB 8b/B = 1.920 kb   1.920 kb  / 1.024 =   1.875 Mb     1.875Mb / 1Mbs  = 1.875 seg.  ¿Bluetooth clásico o Bluetooth Low Energy = BLE ? Es un protocolo similar al clásico Bluetooth pero diseñado a consumir menos potencia manteniendo funcionalidad. Su popularidad ha crecido en multitud de dispositivos En robótica, el clásico device que utiliza BLE es la Micro:bit . Aunque la Micro:bit no tiene Wifi integrada, posee una radiofrecuencia que podemos configurar para Bluetooth (hay que elegir, o utilizar sus comandos de Radio o utilizar comandos de Bluetooth) Por eso a la hora de elegir la APP tienes que tener en cuenta: Si acepta Bluetooth clásico o BLE Que la APP acepte leer datos desde el robot como enviar Nosotros hemos elegido uno sencillo que cumple las dos condiciones (hay muchas APPs) Serial Bluetooth Terminal Bluetooth II APP Serial Bluetooth Terminal DESCARGA LA APP Esta APP es muy sencilla y la puedes descargar  aquí.  Tiene las siguientes ventajas : Enviar / Recibir mensajes Permitir conexiones tanto BLUETOOTH CLÁSICO por ejemplo HC06 de Arduino, Echidna, ESP32 ... BLUETOOTH LE  (Low emision)  por ejemplo para la MICRO:BIT EMPAREJAR DISPOSITIVOS Si no esta emparejado con el móvil NO TE PUEDES CONECTAR, para ello entramos en Devices : Microbit : Entramos en  Devices y en Bluetooth LE y nos conectamos a la Micro:bit HC06 para Arduino Echidna ESP32 .... igual pero en  Bluetooth clásico Aquí puedes ver dos capturas de dispositivos en Bluetooth clásico y Bluetooth BLE LOS QUE ESTAN EN VERDE SON LOS QUE TIENES EMPAREJADOS Y PUEDES CONECTARTE   ¿Y si no aparece o no esta emparejado? Entras en el diálogo de Android de Bluetooth y lo emparejas CONECTARTE Una vez seleccionado el dispositivo emparejado ya puedes conectarte : Menú Entras en Terminal Enchufe Sale conectado, ya estas preparado para enviar y recibir Bluetooth III El HC06 ADVERTENCIA ATENCIÓN : COMO PUEDES VER LOS PINES DE TRANSMISIÓN Y DE RECEPCIÓN SON D0 Y D1 QUE COINCIDEN CON LA TRANSMISIÓN Y RECEPCIÓN DEL PUERTO SERIE UCB POR LO TANTO NO SE PUEDE UTILIZAR A LA VEZ EL HC06 Y LOS DATOS POR EL USB EL HC06 BLOQUEA LA COMUNICACIÓN POR CABLE ESTA ES LA RAZÓN POR LA CUAL NO SE PUEDE UTILIZAR EL PROGRAMA ECHIDNA ML PARA PROGRAMAR PUES TRABAJA EN VIVO, puedes utilizar cualquier programa que trabaje en carga: mBlock, ArduinoIDE... Fuente de las imágenes: www.echidna.es COMO SE CONECTA Echidna tiene un conector preparado para conectar un módulo de Bluetooth Nosotros utilizaremos un JY-MCU o  HC-06 muy común y barato : Para conectar el HC-06 lo hacemos hacia abajo de modo que coincida los pines: Pines del HC-06 Pines del Echidna Pines del Arduino Vcc 5V 5V GND GND GND RX TX D1 TX RX D0 En la foto aparece un echidna red Een la black es igual hacia abajo pero ponlo en medio del zócalo para que coincida bien, pues en el Echidna Black el zócalo hembra tiene 6 pines y el HC06 tiene 4: Imagen www.echidna.es   Bluetooth IV El programa en mBlock Como ya hemos visto NO podemos usar EdhidnaML pues trabaja en vivo y el HC06 bloquea el cable USB PASO 1 INSTALAMOS EL DISPOSITIVO ARDUINO IDE Vamos a Dispositivos - Añadir - Arduino UNO (no vale el Echidna ni el Arduino nano) PASO 2 INSTALAMOS LA EXTENSIÓN BLUETOOTH SERIAL Hay muchas extensiones que trabajan el Bluetooth con Arduino (hay mucha basura) hemos elegido este pues es una extensión sencilla, en castellano y que envía como recibe por el Bluetooth PASO 3 PROGRAMA Con la extensión instalada y el dispositivo ya podemos empezar a programar ENUNCIADO Vamos a realizar un programa que envíe y reciba datos desde la APP del móvil al Echidna Si envío una R se enciende el Rojo Si envío una A se enciende el Amarillo Si envío una L que me diga el nivel de Luz que hay, 10 lecturas para ver cómo cambia SOLUCIÓN El programa lo puedes descargar aquí https://planet.mblock.cc/project/6844489 Utilizamos los pines del Arduino (busca instrucciones azules Pin) el led rojo está en D13 y en naranja en el 12 de momento empezamos poniéndolos apagados PONEMOS LA VELOCIDAD DE BLUETOOTH A 9600  HAY QUE BAJARLO SINO NO FUNCIONA Y ponemos Rx que es D0 y Tx es D1 como hemos visto anteriormente El programa empieza con el clásico bucle y pregunta si se han recibido datos Si se han recibido datos pues entonces lo almacena en una variable interna llamada "Letra" Si Letra = R entonces se enciende el led Rojo Si Letra = A entonces se enciende el led Amarillo Si Letra = L entonces es que preguntamos qué nivel hay de Luz Entramos en un bucle de 10 veces tal y como dice el enunciado Escribe en la APP el valor de la luz medida en el sensor LDR que está en el A5 OJO HAY QUE MAPEARLO (ya hemos visto qué significa esto) y la instrucción de mapear está en violeta en Datos CUÁNTO HAY QUE MAPEARLO pues el LDR según www.echidna.es va desde 1 a 900 y Bluetooth  solo lee un carácter en ASCII  luego convertimos el valor de A5 (1-900) a un valor ASCII que si vemos la tabla, lo hacemos para los valores de los caracteres 48 (0) a 57 (9) y así nos da una lectura de la cantidad de luz entre 0 y 9 VALOR ASCII CARACTER 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 56 8 57 9 Resultado Otras APPs Hay otras apps como el Arduino Bluetooth Control  que permite poner flechas, control de voz... pero no permite envío de Echidna a APP Incluso se podría hacer un coche teledirigido, el programa lo tienes en el repositorio:  https://github.com/JavierQuintana/Echidna y el vídeo en el muro 9 Programación con código (avanzado) Ojo: Tres cosas Te cargas el firmware Si te pasas a la programación por código te cargas el firmware  pues grabas tu programar en el Arduino del Echidna. Si quieres volver a programar con Echidna Scratch tienes que cargar el FIRMATA ver  Por si te pasa, PROBLEMA: EchidnaScratch no detecta Echidna: Instalar Firmata Si quieres volver a programar con mBlock tienes que instalar el firmware de mBlock ver Por si te pasa, PROBLEMA: mBlock no detecta Echidna: Instalar Firmware mBlock Ponlo en modo sensor Nota: Acuérdate de poner la Echidna en modo Sensor, es decir Echidna no trabaja en modo MkyMky Tienes que saber algo de código Este curso no pretende ser una formación en código Arduino IDE, sino que tienes que saber ya los conceptos básicos. Sólo pretende que sepas como utilizar tus conocimientos de código en el Echidna Entorno de programación de Arduino Necesitarás el entorno de desarrollo Arduino IDE (IDE, Integrated development environment) (aquí https://www.arduino.cc/en/Main/Software para descargártelo) OJO, existe la versión online del editor https://create.arduino.cc/editor . Es una buena solución si trabajas en varios equipos y quieres que tus proyectos estén disponibles en cualquier equipo. ATENCION para usar la versión online, tienes que instalar en tu ordenador el software AGENT https://create.arduino.cc/getting-started/plugin/welcome En Linux puede salir este mensaje "can't open device "/dev/ttyUSB0": Permission denied" donde 0 puede ser otro número, la solución aquí Está constituido por un editor de texto para escribir el código, un área de mensajes , una barra de herramientas con botones para las funciones comunes, y una serie de menús. Arduino utiliza para escribir el código fuente o programa de aplicación lo que denomina "sketch" (programa). Estos programas son escritos en el editor de texto. Existe la posibilidad de cortar/pegar y buscar/remplazar texto. Permite la conexión, por USB, con el hardware de Arduino para cargar los programas y comunicarse con ellos. Y permite varias placas, tenemos que elegir la nuestra, en el KIT de CATEDU es Arduino UNO pero si tienes otro modelo este curso seguro que puede ser válido: En el área de mensajes se muestra información mientras se cargan los programas y también muestra errores. Lo importante es cuando pinchemos en la flecha de subir nuestro programa, no salga ningún error, sino simplemente "Subido" . ¿Cómo se programa Arduino? Las partes principales de un programa hecho en Arduino son: Bloque de inclusión de módulos y declaración de variables, bloque de configuración void setup() donde se indica el modo de funcionamiento de los pines (entrada y salida), comunicación serie, etc... y bloque de ejecución continua void loop() , en este bloque se incluyen las acciones que queremos que realice el programa. Se ejecutará línea a línea de forma secuencial y continua. Cuando llegue a la última instrucción incluída en la función loop() volverá a ejecutar la primera y continuará en un bucle infinito. ¿Arduino tiene que estar continuamente conectada a un ordenador? Sólo es necesario que esté conectado al ordenador mediante el USB para cargar los programas o para visualizar en tiempo de ejecución datos del programa mediante la consola serie . El ordenador proporciona la energía eléctrica suficiente para que funcionen los programas, pero una vez cargado el programa en la memoria del microcontrolador de Arduino se puede desconectar del USB y alimentar a la tarjeta mediante una fuente externa mediante el jack de alimentación con un margen de (5 a 20 Voltios). El programa cargado en Arduino queda grabado permanentemente aunque cese el suministro eléctrico. Para una mayor información y manejo de la instalación del entorno de programación, lenguaje de programación y librerías se encuentra en la página web de la comunidad Arduino: www.arduino.cc (portal en inglés, más actualizada). www.arduino.es (portal en español). Semáforo Tal y como hemos comentado, tienes dos formas de ejecutar el programa Arduino IDE, o descargándote el programa o online La placa que tienes que seleccionar es Arduino UNO aunque si estas utilizando Echidna Black puedes seleccionar Arduino nano,   no obstante no pasa nada si seleccionas Arduino Uno Vamos a realizar un programa que sea un simple semáforo (secuencias de luces rojo-amarillo-verde en bucle cada 2seg) y además que muestre por el puerto serie (para practicar esta opción) el estado del semáforo. El programa es sencillo, lo tienes desarrollado aquí https://app.arduino.cc/sketches/6705568b-32f2-43ca-a7f8-25d0fcd72bf8?view-mode=preview Y puedes ver que además de encender las luces, por el puerto serie salen los mensajes correspondientes Semáforo sonido Vamos a practicar con el semáforo y con la lectura de una variable analógica como es el micrófono conectado a A7 cuyos valores van de 0-1023. Realizar un programa que : - si el valor del sonido es menor de 2 ninguna luz esta encendida - si es entre 2-200 solo el verde - si es entre 200-400 entonces verde y amarillo - si es más de 400 entonces todos Solución aquí https://app.arduino.cc/sketches/8ceb4e52-0447-4968-b2bb-8720de847248?view-mode=preview ¿Te atreves a ...? Realizar un programa que haga lo mismo pero con la temperatura (los valores límites de encendido y apagado de las luces dependen de la temperatura de trabajo) Pulsador y leds Vamos ahora a realizar un código que si pulso el botón D2 entonces las tres luces del semáforo se encienden El código lo tienes aquí https://app.arduino.cc/sketches/16b618d5-af1f-425c-8279-7be1b98d8a0f?view-mode=preview Como puedes ver  no es necesario tener el ordenador conectado puedes conectarlo a un PowerBank pues no hay comunicación con el puerto serie y el programa  se carga en la placa Señales PWM Arduino, ESP32, Micro:bit, PicoW...  tienen entradas analógicas y digitales. Pero salidas sólo digitales. Para  simular una salida analógica entre 0V y 5V  se utilizan señales digitales PWM. En Arduino sólo tiene 6 salidas pseudo-analógicas. En los pines digitales 3, 5, 6, 8, 10 y 11 son PWM ¿Qué es eso de PWM? La señal PWM (Pulse Width Modulation, Modulación de Ancho de Pulso ) es una señal que utiliza el microcontrolador para generar una señal continua sobre el proceso a controlar. Por ejemplo, la variación de la intensidad luminosa de un led, el control de velocidad de un motor de corriente continua,... Para que un dispositivo digital, microcontrolador de la placa Arduino, genere una señal continua lo que hace es emitir una señal cuadrada con pulsos de frecuencia constante y tensión de 5V. A continuación, variando la duración activa del pulso (ciclo de trabajo) se obtiene a la salida una señal continua variable desde 0V a 5V. Veamos gráficamente la señal PWM: Los pines digitales de la placa Arduino que se utilizan como salida de señal PWM generan una señal cuadrada de frecuencia constante (490Hz), sobre esta señal periódica por programación podemos variar la duración del pulso como vemos en estos 3 casos: La duración del pulso es pequeña y la salida va a tener un valor medio de tensión bajo, próximo a 0V. La duración del pulso es casi la mitad del período de la señal, por tanto, la salida va a tener un valor medio de tensión próximo a 2,5V. La duración del pulso se aproxima al tiempo del período y el valor medio de tensión de salida se aproxima a 5V. Ejemplo en código ArduinoIDE y Arduino Para ejecutar una señal PWM, es simplemente  analogWrite(analogOutPin, outputValor);  donde analogOutPin es el número del Pin PWM, acuérdate que sólo puede ser uno de estos 6 :  3, 5, 6, 8, 10 y 11 y outpuValor es el valor de la señal PWM pero ojo desde 0 a 255 es decir si quieres el valor de 0V tienes que poner 0, si quieres el valor de 5V tienes que poner 255 y si quieres poner un valor medio, haz una regla de tres, por ejemplo 2.5V tienes que poner 255/2=127 o 128 da igual Otro ejemplo en Python con Micro:bit pin16.write_analog(brillo) donde brillo puede ir de 0 a 255 Intensidad del led verde según joystick Vamos a utilizar la salida D11 que es PWM (led verde) para modular una señal PWM, para ello vamos a utilizar la entrada analógica del eje x del Joystick, en A0 para modularlo Mapear un valor Como uno lee 0 a 1024 y el otro necesita valores de 0 a 255 necesitamos un traductor o mapeo con la instrucción map(value, fromLow, fromHigh, toLow, toHigh)  esta instrucción la colocaremos, como suele estar los intérpretes en medio, o sea, entre la instrucción analogRead y la analogWrite Solución con map https://app.arduino.cc/sketches/491021f3-fbd8-498f-99a1-1a5ff02a441d?view-mode=preview Como puedes ver, en el puerto serie, los valores del potenciómetro del Joystick ejeX van desde 0 a 1024 y gracias al mapeo la señal PWM va desde 0 a 255 ¿Se puede hacer sin la instrucción map? Sí. Para ello el valor que lee 0-1024 lo convertimos a 0-255 que necesita la señal PWM que enviamos al LED simplemente dividiéndolo entre 4. (1024/4 = 256 aproximadamente 255) El bucle loop() quedaría : void loop() { // lee el valor de la entrada analogica: potValor = analogRead(analogInPin); // mapea el rango para la señal de salida PWM: outputValor = potValor/4; // asigna el valor cambiado a pin 3 PWM: analogWrite(analogOutPin, outputValor); // escribe el resultado en el monitor serie: Serial.print("Potenciometro = " ); Serial.print(potValor); Serial.print("\t PWM = "); Serial.println(outputValor); // espera 1 segundo cada bucle para una visualizacion aceptable // conviene tener un valor aunque sea pequeño (10ms) // por el proceso de conversion de A/D delay(10); } Intensidad del led verde según la luz en LDR Ahora para practicar más los conceptos anteriores Vamos a modificar la luz del led verde según la luz recibida en el LDR  pero al revés cuanto más luz reciba el LDR más se apaga el led verde y al revés cuanto menos luz reciba el led LDR más brilla el led verde Aquí vamos a tomar como valores mínimos y máximos del LDR los valores 250 de mínimo y 1.000 de máximo. Esto lo puedes comprobar en los valores del puerto serie que se visualizan en el siguiente programa. El por qué más adelante. Como va al revés, la instrucción map será así  luz = map(analogRead(ldr), 250, 1024, 255, 0); https://app.arduino.cc/sketches/adb0c4b8-c7b5-478f-b902-392674372159?view-mode=preview Como puedes ver el brillo de la luz verde va al revés de la luz recibida en el LDR ¿Por qué el LDR va de 250 a 1.024 en vez de 0 a 1.024? Esto es debido al que el LDR no está directamente conectado a masa, sino a través de un divisor de tensión con una resistencia de 4.7kOhm que se queda algo de tensión. Lo puedes comprobar en los planos aquí https://github.com/EchidnaShield/Recursos/blob/master/electronica/Black/EchidnaBlack_0_ESQ.pdf Pitido Vamos a experimentar con el buzzer, con un simple enunciado Realizar un programa que suene una "alarma" es decir, que haga un pitido intermitente de 1 segundo La solución la tienes aquí:  https://app.arduino.cc/sketches/4c7a18bb-5012-499e-a353-6916182e728d?view-mode=preview Acuérdate de subir el volumen, en el potenciómetro !! ¿Te atreves,,,? A acompañar el pitido con intermitencias de luces, por ejemplo el RGB que pase de luz máxima (255,255,255) a apagado al compás del pitido, para dar el efecto real de alarma Pista : La tienes en ¿Y Makey Makey? Estoy harto que me roben las naranjas Servomotores Una de las aplicaciones más utilizadas de los sistemas de control por ordenador y en la robótica están asociados con los motores, que permiten accionar o mover otros componentes, como puertas, barreras, válvulas, ruedas, etc. Uno de los tipos que vamos a ver en este capítulo son lo servos, hay de dos tipos: El servomotor o servos convencionales que posee la capacidad de posicionar su eje en un ángulo determinado entre 0 y 180 grados en función de una determinada señal. Servo de rotación continua  Son servos por fuera igual que los anteriores, pero pueden girar 360º y se controlan por tiempo Por defecto cuando se dice servo , es un servomotor o servo convencional Servos de rotación continua Para controlar un servo de rotación continua, las instrucciones a realizar son : Incluyes la librería de servos #include Declaras una variable servo Servo myservo; //puedes poner el nombre que quieras p.e. miservo En setup() tienes que decir a qué pin está conectado myservo.attach(9); //por ejemplo pin 9 Y en loop()   myservo.write(90) ; //significa   servo parado  myservo.write(180); //significa   servo funcionando al 100% en el sentido de las agujas del reloj myservo.write(0); //significa   servo funcionando al 100% en el sentido contrario de las agujas del reloj Mira el vídeo, esta realizado con otra shield ECHIDNA y con bloques mBlock (curso Echidna  https://libros.catedu.es/books/echidna/ ) fíjate como: Los extremos 0º y 180º es a máxima velocidad, pero un sentido u otro. 90º es parado. Un valor intermedio es menos velocidad (se ve el ejemplo 80º y 100º) - Si tiene deriva, (cosa frecuente) tienen un potenciómetro para ajustar. Si quieres saber más sobre servomotores te recomendamos estas paginas del Zaragozano Luis LLamas:  Servomotores convencionales y Servomotores de  rotación continua Servomotores o servos convencionales Los servos son un tipo especial de motor en el que se añade una circuito lógico electrónico que permite un control mucho más preciso que a un motor normal de corriente continua. Esto les permite posicionar el eje en un ángulo determinado.  El hardware interno se compone de un potenciómetro y un circuito integrado que controlan en todo momento los grados que gira el motor. De este modo, en nuestro caso, desde Arduino, usando las salidas digitales PWM podremos controlar fácilmente un servo. Lo ideal es conectarlo a 6V pero trabajan bien en los 5V del Arduino. Hay muchos modelos, en robótica educativa cuestan entre 1-5€, el más común es el SG90, muy barato, pero tiene muy poca fuerza, el MG90S tiene algo más, si queremos algo más, ya tiene que ser el  MG996R pero ya este modelo NO se puede conectar directamente al Arduino o Raspberry, el pico de energía que necesita, provoca el reinicio de la placa. Incluso varios pequeños SG90. Las instrucciones son las mismas que los servos de rotación continua, pero los valores que se proporcionan son los grados que se desean.  Incluyes la librería de servos #include Declaras una variable servo Servo myservo;  //puedes poner el nombre que quieras p.e. miservo En setup () tienes que decir a qué pin está conectado myservo.attach(9); //por ejemplo pin 9 Y en loop ()   myservo.write(90) ; //Posición 90º (posición por defecto) myservo.write(180); //Posición 180º myservo.write(0); // Posición 0º La instrucción myservo.write(angulo) envía por el pin digital declarado en myservo.attach() pulsos cuadrados de 50Hz y de anchura el estado alto proporcional al ángulo que se desea. Un pulso de 0.5-1ms es 0º Un pulso de 1.5 ms es 90º  Un pulso de 2-2.5ms es 180º Si quieres saber más, te recomendamos https://www.luisllamas.es/controlar-un-servo-con-arduino/ Arduino Servomotor by Marco De Simone on Sketchfab Ángulo del servo según Joystick Para practicar un poco los servos, vamos a realizar el siguiente enunciado Mover el servomotor un ángulo entre 0º y 180º según los valores del Joystick en el ejeY, 0º abajo del todo, 180º arriba del todo Aquí hay que tener claro que los valores de entrada es el Joystick eje Y por lo tanto es la señal analógica A1 y sus valores van de 0 a 1023, y al servo hay que indicarle los valores en grados de 0º a 180º luego la función de mapeo es:    val = map(val, 0, 1023, 0, 180); donde val va a ser una variable que ha guardado el valor del Joystick (0-1023) y que con la instrucción map lo ha traducido a 0-180. El programa es https://app.arduino.cc/sketches/29ac0e0b-8da8-482b-bf62-6f90a58f2459?view-mode=preview Si no tienes servo, puedes simularlo. En la siguiente simulación, puedes mover el potenciómetro y ver el resultado ¿Te atreves...? A realizar un programa que mueva el servo  según la inclinación de la placa ¿Y Makey Makey? Estoy harto que me roben las naranjas ¿Podemos hacer proyectos Makey Makey? Por supuesto, pero.... Ponlo en modo Makey Makey Nota: Acuérdate de poner la Echidna en modo Makey Makey, y luego acuérdate de cambiarlo si vuelves a utilizar los sensores Estoy harto que me roben las naranjas Vamos a hacer un programa que suene una alarma (tanto sonora como luminosa en RGB) si tocamos una naranja, conectada en el terminal Makey Makey A0 La solución la tienes aquí : https://app.arduino.cc/sketches/b043d527-bf50-476a-ac61-c537d820f261?view-mode=preview . ¿Por qué no va 100% bien? Porque no estamos tocando la masa del Echidna . Si con la otra mano estuviésemos tocando con un cable la masa del Echidna, entonces iría perfecto: P: ¿Por qué funciona? Funciona en el primer toque y luego no ¿Por qué? R: La primera vez que tocamos la naranja se descarga nuestra electricidad estática y lo lee el terminal A0 del Echina, por lo que sube su valor, luego ya baja. Esto lo puedes comprobar leyendo los valores del puerto serie, si te fijas en el siguiente vídeo, al tocar con el dedo, sube a 195, 158 pero luego cuando se ha descargado la electricidad, ya baja él sólo. Si con otra mano tocase la masa, no pasaría eso. ¿Te atreverías a hacer un piano con bananas ? https://libros.catedu.es/books/echidna/page/montaje-11-piano Bluetooth I Un poco de teoría ONDAS Una onda es una señal que se propaga por un medio. Por ejemplo el sonido, que es una onda mecánica que viaja usando el aire o cualquier otro material. Pero en el caso de las señales eléctricas pueden ser enviadas por el cable o a través del vacío (no necesitan un medio para transmitirse). Dependen de 3 parámetros principalmente: Amplitud: altura máxima de la onda. Hablando de sonido representaría el volumen. Si nos referimos a una onda eléctrica estaríamos representando normalmente el voltaje. Longitud de onda λ: distancia entre el primer y último punto de un ciclo de la onda (que normalmente se repite en el tiempo). Frecuencia f : Número de veces que la onda repite su ciclo en 1 segundo (se mide en hertzios). Periodo T es simplemente es la inversa de la frecuencia. T=1/f La relación entre ellas es muy fácil pues las ondas electromagnéticas viajan a la velocidad de la luz c y si velocidad es espacio/tiempo luego c = λ/T luego c= λ*f Dentro del espectro electromagnético encontramos diferentes tipos de señales dependiendo de las características de su onda. TRANSMISIÓN INALÁMBRICA: BLUETOOTH.    Hoy en día, este grupo está formado por miles de empresas y se utiliza no sólo para teléfonos sino para cientos de dispositivos. Bluetooth es una red inalámbrica de corto alcance pensada para conectar pares de dispositivos y crear una pequeña red punto a punto, (sólo 2 dispositivos). Utiliza una parte del espectro electromagnético llamado “ Banda ISM ”, reservado para fines no comerciales de la industria, área científica y medicina. Dentro de esta banda también se encuentran todas las redes WIFI que usamos a diario. En concreto funcionan a 2,4GHz. (Un G son 10 9 ) luego entre FM y Microondas. ¿Sabias que? Su curioso nombre viene de un antiguo rey Noruego y Danés, y su símbolo, de las antiguas ruinas que representan ese mismo nombre.  Hay 3 clases de bluetooth que nos indican la máxima potencia a la que emiten y por tanto la distancia máxima que podrán alcanzar: También es muy importante la velocidad a la que pueden enviarse los datos con este protocolo: Mbps : Mega Bits por segundo.       MBps: Mega Bytes por segundo. kb = 1.024 b     M = 1.024 k     G = 1.024 M ¿Te atreves a calcularlo … . ? ¿Cuántos ciclos por segundo tendrán las ondas que están en la Banda ISM?  ¿Cuál es el periodo de esas ondas? Solución  a)  f = 2.4G b) λ=c/f= 12.5cm o sea, las antenas tendrían que ser de esta longitud. Hay muchos trucos para reducirla, una de ellas es la forma de serpiente que puedes ver en el HC-06 ¿Te atreves a calcularlo...? ¿A qué distancia y cuanto tiempo tardarían en enviarse los siguientes archivos por Bluetooth? Un vídeo de 7Mb usando versión 2 clase 2 Una imagen de 2.5Mb usando versión 3 clase 1 Un archivo de texto de 240KB usando versión 1.2 clase 1 Solución  1) 7Mb / 3Mbs = 2.3 seg. 2) 2.5Mb / 24Mbs = 0.1 seg. 3) 240 kB 8b/B = 1.920 kb   1.920 kb  / 1.024 =   1.875 Mb     1.875Mb / 1Mbs  = 1.875 seg.  ¿Bluetooth clásico o Bluetooth Low Energy = BLE ? Es un protocolo similar al clásico Bluetooth pero diseñado a consumir menos potencia manteniendo funcionalidad. Su popularidad ha crecido en multitud de dispositivos En robótica, el clásico device que utiliza BLE es la Micro:bit . Aunque la Micro:bit no tiene Wifi integrada, posee una radiofrecuencia que podemos configurar para Bluetooth (hay que elegir, o utilizar sus comandos de Radio o utilizar comandos de Bluetooth) Por eso a la hora de elegir la APP tienes que tener en cuenta: Si acepta Bluetooth clásico o BLE Que la APP acepte leer datos desde el robot como enviar Nosotros hemos elegido uno sencillo que cumple las dos condiciones (hay muchas APPs) Serial Bluetooth Terminal Bluetooth II APP Serial Bluetooth Terminal DESCARGA LA APP Esta APP es muy sencilla y la puedes descargar  aquí.  Tiene las siguientes ventajas : Enviar / Recibir mensajes Permitir conexiones tanto BLUETOOTH CLÁSICO por ejemplo HC06 de Arduino, Echidna, ESP32 ... BLUETOOTH LE  (Low emision)  por ejemplo para la MICRO:BIT EMPAREJAR DISPOSITIVOS Si no esta emparejado con el móvil NO TE PUEDES CONECTAR, para ello entramos en Devices : Microbit : Entramos en  Devices y en Bluetooth LE y nos conectamos a la Micro:bit HC06 para Arduino Echidna ESP32 .... igual pero en  Bluetooth clásico Aquí puedes ver dos capturas de dispositivos en Bluetooth clásico y Bluetooth BLE LOS QUE ESTAN EN VERDE SON LOS QUE TIENES EMPAREJADOS Y PUEDES CONECTARTE   ¿Y si no aparece o no esta emparejado? Entras en el diálogo de Android de Bluetooth y lo emparejas CONECTARTE Una vez seleccionado el dispositivo emparejado ya puedes conectarte : Menú Entras en Terminal Enchufe Sale conectado, ya estas preparado para enviar y recibir Bluetooth III El HC06 ADVERTENCIA ATENCIÓN : COMO PUEDES VER LOS PINES DE TRANSMISIÓN Y DE RECEPCIÓN SON D0 Y D1 QUE COINCIDEN CON LA TRANSMISIÓN Y RECEPCIÓN DEL PUERTO SERIE UCB POR LO TANTO NO SE PUEDE UTILIZAR A LA VEZ EL HC06 Y LOS DATOS POR EL USB EL HC06 BLOQUEA LA COMUNICACIÓN POR CABLE ESTA ES LA RAZÓN POR LA CUAL NO SE PUEDE UTILIZAR EL PROGRAMA ECHIDNA ML PARA PROGRAMAR PUES TRABAJA EN VIVO, puedes utilizar cualquier programa que trabaje en carga: mBlock, ArduinoIDE... Fuente de las imágenes: www.echidna.es COMO SE CONECTA Echidna tiene un conector preparado para conectar un módulo de Bluetooth Nosotros utilizaremos un JY-MCU o  HC-06 muy común y barato : Para conectar el HC-06 lo hacemos hacia abajo de modo que coincida los pines: Pines del HC-06 Pines del Echidna Pines del Arduino Vcc 5V 5V GND GND GND RX TX D1 TX RX D0 En la foto aparece un echidna red Een la black es igual hacia abajo pero ponlo en medio del zócalo para que coincida bien, pues en el Echidna Black el zócalo hembra tiene 6 pines y el HC06 tiene 4: Imagen www.echidna.es   Bluetooth IV programa ENUNCIADO  Vamos a realizar un programa que envíe y reciba datos desde la APP del móvil al Echidna Si envío una R se enciende el Rojo Si envío una A se enciende el Amarillo Si envío una L que me diga el nivel de Luz que hay, 10 lecturas para ver cómo cambia SOLUCIÓN /* https://libros.catedu.es/books/echidna */ #include #include SoftwareSerial BT(0,1); char letra = 0; void setup() { pinMode(13,OUTPUT); pinMode(12,OUTPUT); pinMode(A5,INPUT); BT.begin(9600); digitalWrite(13,0); digitalWrite(12,0); } void loop() { if(BT.available() > 0){ letra = BT.read(); if(letra == 'R'){ digitalWrite(13,1); digitalWrite(12,0); } if(letra == 'A'){ digitalWrite(13,0); digitalWrite(12,1); } if(letra == 'L'){ for(int count2=0;count2<10;count2++){ BT.write(map(analogRead(A5), 1, 900, 48, 57)); delay(1000); } } } } PRECAUCIONES - En Arduino IDE pon placa ARDUINO UNO - Quita el HC06 a la hora de subir el código - Una vez subido ya puedes poner el HC06 y probar  CUÁNTO HAY QUE MAPEARLO pues el LDR según www.echidna.es va desde 1 a 900 y Bluetooth  solo lee un carácter en ASCII  luego convertimos el valor de A5 (1-900) a un valor ASCII que si vemos la tabla, lo hacemos para los valores de los caracteres 48 (0) a 57 (9) y así nos da una lectura de la cantidad de luz entre 0 y 9 VALOR ASCII CARACTER 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 56 8 57 9 Resultado PARA SABER MÁS MANUAL ONLINE OFICIAL ECHIDNA BLACK v2 https://echidna.es/manual/ RECURSOS  https://github.com/EchidnaEducacion/recursos tienes ❤️❤️❤️❤️ MANUAL PDF EchidnaBlack 2  la versión 2 y EchidnaML   Manual EchidnaBlack y EchidnaML.pdf excelente manual de los creadores y con la última versión de Echidna ❤️❤️❤️❤️  Muro Créditos 2018 Contenidos iniciales con mBlock3 por  CATEDU (Javier Quintana Peiró). 2024 Revisión a la versión mBlock5 por CATEDU (Javier Quintana Peiró). 2025: Añadido ECHIDNA SCRATCH e INTELIGENCIA ARTIFICIAL y CÓDIGO por CATEDU (Javier Quintana Peiró). Imágenes de Echidna y capturas: http://echidna.es/ licencia CC-BY-SA Autores Jorge Lobo, Xabier Rosas, Jose Pujol, Juan David Rodríguez https://echidna.es/quienes-somos/ Proyecto maqueta en Servo con IA es de https://echidna.es/2021/05/asistente-virtual-robotica-e-ia/ licencia CC-BY-SA por Jorge Lobo 29 mayo, 2021 Cualquier observación o detección de error en soporte.catedu.es Los contenidos se distribuyen bajo licencia Creative Commons tipo BY-NC-SA excepto en los párrafos que se indique lo contrario.