5. Extensiones

Extensiones de Echidna

Ahora vamos a utizar las extensiones 3 digitales y una analógica:

Para conexión de otros elementos como relés pero no pueden pasar de 300mA de lo contrario dañas al Arduino.

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

Todos los programas de este curso se encuentran en este repositorio: https://github.com/JavierQuintana/Echidna


Ahora con las extensiones puedes aumentar más tus proyectos robóticos. 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 ...

MONTAJE 13 Encender con el móvil (muy difícil)

5.1 MONTAJE 13 ENCENDER CON EL MÓVIL Bluetooth

5.1.1 Módulo HC-06

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. .

Te recomendamos estas páginas:

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

Nosotros vamos a utilizar la APP BlueControl:

5.1.2 Problema número 1: ocupamos el puerto serie

Si has leído Cómo se comunica con un Arduino habrás visto que ocupamos LOS MISMOS PINES D0 Y D1 QUE UTILIZA EL ARDUINO PARA COMUNICARSE POR EL PUERTO SERIE CON EL ORDENADOR.

Esto crea un problema: No se puede tener conectado el HC-06 mientras nos comunicamos el ordenador con el Arduino.

Solución: Pues quítalo, y luego cuando acabes de descargar el programa en el Arduino, pues lo pones.

Bah!! ¿sólo era eso? pues no, que nos ocupe el puerto serie nos fastidia: ¿puedes interaccionar con el Sprite? por ejemplo ¿puedes hacer que el oso panda de mBlock se mueva según el mando de BlueControl?...NO

5.1.3 Problema 2 la velocidad del puerto es elevada

Al programar con mBlock fija la velocidad del puerto serie a 115200 baudios, y nuestro HC-06 soporta 9600

Solución: Bajarlo manualmente, un rollo, tenemos que salir de mBlock, editarlo en Arduino IDE .... esto se ve mejor en el ejemplo siguiente.

5.1.4 Reto: Encendido y apagado de LEDs con el móvil

Vamos a ejecutar este pequeño programa, que al apretar el botón de arriba se encienden los leds y al apretar el de abajo se apagan:

Solución

image-1648741316977.png

Primero hay que vincular el móvil con la APP



Segundo hay que subir el programa solucionando los problemas anteriores

Mejor verlo con esta presentación:



O sea, ya podemos jugar con el móvil y con nuestro Echidna !!!

Por ejemplo.. 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

MONTAJE 14 Encendido sensible

Sensor infrarojos

5.2.1 MONTAJE 14 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

echidna-infrarojos.jpg

En el panda

echidna-infrarojos2.jpg

Y el disfraz costume2 lo hemos tintado de rojo

El programa lo tienes aquí https://planet.mblock.cc/project/3232841

El resultado es:

MONTAJE 15 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.

Luego vamos a no ponernos nerviosos para desactivar la alarma y mantener la serenidad.

via GIPHY

Solución


Conexiones son sencillas, el laser al D4 por ejemplo y hay que tener maña para que apunte al LDR:

image-1648741838386.png

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 

echidna-laser1.jpg

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)

echidna-laser2.jpg

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:

echidna-laser3.jpg

El script que desactiva la alarma es cuando reciba el mensaje _Ufff _por lo tanto para el cronómetro y apaga el laser:

echidna-laser4.jpg

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

echidna-laser5.jpg

Y por último la explosión

echidna-laser6.jpg

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...

5.4 MONTAJE 16 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.

echidna-semaforo-distancia1.jpg

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

echidna-semaforo-distancia2.jpg

Hay que instalarlo en los dos, en el Arduino y en el objeto Panda

En el objeto panda pondremos este código

echidna-semaforo-distancia3..jpg

 

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

echidna-semaforo-distancia4.jpg

Resultado: El panda nos dice en cm el obstáculo que ponemos delante del sensor US:

echidna-semaforo-distancia5.jpg

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

echidna-semaforo-distancia6.jpg

El programa lo tienes aquí https://planet.mblock.cc/project/3233931

El resultado es :

Los siguientes retos, aunque las imágenes se ve que no están hechos con Echidna, da igual, es simplemente conectar el trig y echo en los pines D4 y D7 del Echidna y utilizar la instrucción de "lee el sensor ultrasónico trig pin 4 echo pin 7" (o utilizar otro orden o el D8 si te pones revelde y cambiar los números anteriores) ¿Te atreves a hacerlos todos ?

via GIPHY

RETO HINCAR UNA PELOTA Pon de sprite una pelota y que se hinche a medida que acercas un objeto al ultrasonidos. Solución

RETO PIANO INVISIBLE

Que suene una nota según la distancia del objeto. Solución

RETO RADAR CON INTERMITENCIA DE UN LED

Cuanto más cerca está un objeto, más rápido un led se enciende y apaga. Solución

RETO SENSOR PARKING

Cuanto más cerca está un objeto, más rápido suena un pitido intermitente Solución

5.5 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/calidad aceptable, el MG90S.

Este servo se controla con una salida digital, y se les indica el ángulo de giro, que puede ir desde 0º hasta 180ª (no permite otro márgen). Si elegimos otro más barato, puede tener deriva en los extremos (ver vídeo con HD-144A)

Aprende más sobre servos en esta página de Luis Llamas.

La instrucción para los servos en mBlock es muy fácil, simplemente le indicamos en qué pin digital está conectado y el ángulo que deseamos:

echidna-servo1.jpg

y ponlo bien, el marrón indica la masa:

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:

echidna-servo2.jpg

Mira la diferencia con un servo de rotación continúa, fíjate como:

5.6 MONTAJE 17 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

echidna-servo3.jpg

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.