Echidna Black2
En este curso pretende mostrarte el potencial educativo de esta placa
Cómo utilizarlo, veremos que está adaptado a la programación en primaria o primeros cursos de secundaria con programación
- Programa arduino con Echidna Black2
- Hoja de Ruta
- Lenguajes de programación
- Robótica y accesibilidad
- 1. Cómo utilizar Echidna
- ¿Cómo utilizar Echidna?
- Software del Arduino
- Sensores
- Actuadores y otras salidas
- ¿Qué es Echidna?
- Cómo se programan las Echidnas
- MONTAJE 1 SEMAFORO
- Por si te pasa, PROBLEMA: EchidnaScratch no detecta Echidna: Instalar Firmata
- Por si te pasa, PROBLEMA: El Sistema operativo no detecta Echidna
- Alimentación del Echidna
- Tengo Arduino ¿Puedo hacer los programas SIN ECHIDNA ?
- 2. Salidas de Echidna
- 3. Entradas de Echidna
- Otra vez acuérdate
- MONTAJE 4 ENCENDIDOAPAGADO
- MONTAJE 4-ENCENDIDOAPAGADO-AVANZADO
- MONTAJE 5 LDR
- MONTAJE 5 SEMAFORO SONIDO
- MONTAJE 6 Piano luminoso
- MONTAJE 7 Telesketch
- MONTAJE 7 BIS MATA ALIENS con JOYSTICK
- MONTAJE 7 BIS MATA-ALIENS con acelerómetro
- 4. Modo Makey Makey
- Modo Makey makey
- ¿Qué es Makey Makey ?
- Programas usando UMBRAL
- MONTAJE 11 Piano
- MONTAJE 12 Joystick plastilina
- 5. Inteligencia Artificial
- Qué es la IA
- Tipos IA
- Robotica e IA
- Learning ML
- MONTAJE 13 Reconocimiento de texto
- MONTAJE 14 Reconocimiento de imágenes
- MONTAJE 14BIS RECONOCIMIENTO DE MATRÍCULAS
- MONTAJE 14 TRIS RECONOCIMIENTO GESTOS
- 6: Extensiones
- 7 Entradas de Echidna con mapeo (avanzado)
- Mapeo (avanzado)
- MONTAJE 8 Comebichos
- MONTAJE 9 SPRITEVOLADOR
- MONTAJE 10 MATA-ALIENS con Joystick. Hackeando código y mapeando
- 8 Extensiones (avanzado)
- ¿Y este capítulo?
- Encendido sensible
- Alarma láser
- Tractor entrando al corral
- Semáforo distancia
- Bluetooth I Un poco de teoría
- Bluetooth II APP Serial Bluetooth Terminal
- Bluetooth III El HC06
- Bluetooth IV El programa en mBlock
- 9 Programación con código (avanzado)
- Ojo: Tres cosas
- Entorno de programación de Arduino
- Semáforo
- Semáforo sonido
- Pulsador y leds
- Señales PWM
- Intensidad del led verde según joystick
- Intensidad del led verde según la luz en LDR
- Pitido
- Servomotores
- Ángulo del servo según Joystick
- ¿Y Makey Makey? Estoy harto que me roben las naranjas
- Bluetooth I Un poco de teoría
- Bluetooth II APP Serial Bluetooth Terminal
- Bluetooth III El HC06
- Bluetooth IV programa
- PARA SABER MÁS
- Muro
- Créditos
Programa arduino con Echidna Black2
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.
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 Echidna Black2 vamos a tratar los lenguajes de programación :
- Echidna
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:
- 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
¿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/
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
- CURSO ARDUINO CON MBLOCK se utiliza Arduino y placa Protoboard
- 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
- Un compilador universal Thonny
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
- ➕ puede compartir por ejemplo
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
- SENSORES ANALÓGICOS valores de 0 a 1024
- En modo MAKEY MAKEY
- 8 entradas
- 6 analógicas A0 al A5
- 2 digitales D2 y D3
- 8 entradas
- En modo sensor entonces tienes a tu disposición :
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 esta página
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
- Salidas Digitales
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). Te aconsejamos leer esta página
¿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 !!!
- 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
EN ESTE CURSO VAMOS A PROGRAMAR EN BLOQUES CON EL PROGRAMA ECHIDNA (tipo Scratch)
OJO : Acuérdate en toda esta sección de poner la Echidna en modo Sensor
NO en modo MkyMky
MONTAJE 1 SEMAFORO
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
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: 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 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
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 |
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
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 EchidnaBlack2 y EchidnaML www.echidna.es CC-BY-SA
El programa lo tienes en : https://github.com/JavierQuintana/Echidna
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:
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 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
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
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
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.
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 sigmoide 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/
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)
- LearningML 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, https://learningml.org/lml-doc/03-editor-modelos/ en el apartado de Qué son los conjuntos numéricos
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 https://learningml.org/lml-doc/03-editor-modelos/ en el apartado El modo avanzado de LearningML2
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 ;)
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.
— Jorge Lobo (@lobo_tic) May 18, 2025
—¿Queréis saber cómo lo sabe?
Así surge la idea de esta actividad con @EchidnaSTEAM y @_learningml_ 😃 pic.twitter.com/3Ew22WcURj
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
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 con 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
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 X1 e X2
- Y es la variable de salida que queremos y que tiene otros valores límites Y1 e Y2
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
- Límites de las variables :
- 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
- Límites de las variables :
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
- Límites de las variables :
- EJEY
- Límites de las variables :
- acelerómetro acel de 250-500
- ejey de -180 a +180
- acelerómetro acel de 250-500
- 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
- Límites de las variables :
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 esEl 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.
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 ?
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 109) 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 la longitud de onda?
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 escribir o 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 <Servo.h>
- 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 <Servo.h>
- 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 109) 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 la longitud de onda?
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 escribir o 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 <SoftwareSerial.h>
#include <Arduino.h>
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
- 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.


