3 Programación en código

Entorno de programación

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:

Maqueta

Compramos una hoja de cartón piedra de formato A3 (el doble de un folio) y lo cortamos por la mitad a la larga, y en dos cuadrados la otra mitad. En uno de esos cuadrados recortamos la puerta, en total sólo 3 paredes y el suelo es la otra parte de arriba:

La mejor forma de pegarlo es con pistola, pero también clavando agujas o las dos a la vez.

Para ir poniendo los componentes lo más fácil y reciclable es perforar, con una simple punta de bolígrafo:

Y atarlo con alambre plastificado típicos de las bolsas de pan de molde:

El soporte del servomotor con la puerta es difícil, una opción es pegarlo con una pistola de pegamento.

Tanto el cartón piedra como el alambre se puede conseguir en cualquier bazar a precios muy económicos.

Otra opción para la apertura de la puerta es usar un palillo :

2023-05-12 19_11_44-VID20230510235454.mp4 - Google Drive.png

APERTURA DE PUERTA

Reto

Esta vez vamos a centrarnos con la apertura de la puerta, dejaremos el LDR para la alarma

Solución maqueta

Esta vez en la maqueta ponemos los siguientes elementos 1. Fijación placa Arduino 1. Fijación placa Arduino 1. Interruptor táctil 1. Buzzer 1. Servo 1. Portapilas

Detalle por delante

  1. Interruptor táctil
  2. Fijación servo
  3. Fijación servo
  4. Puerta *si, ya sé, un poco chapuza ¿y qué pasa? *

Solución esquema de conexiones

Es el mismo mostrado en APERTURA DE LA PUERTA, pero ahora vamos montando la maqueta:

  1. Terminales GND
  2. Terminales +5V
  3. Terminales Servo van aparte (ver nota) con D4 al control del servo
  4. Terminales
    1. D2 Interruptor táctil
    2. D3 Buzzer activo
  5. Interruptor táctil
  6. Buzzer activo
  7. Servo
  8. Led el pin largo en D13 y el corto en GND.

Nota: El servo al tener terminales hembra, se ha optado por conectarlo directamente en la placa protoboard utilizando machos machos como el de la figura:

Nota: Sí, ya sé que conectar el LED DIRECTAMENTE EN D13 no es una buena práctica, pero internamente Arduino tiene unas resistencias en cada entrada/salida de 30k que lo puede aguantar, o sea, no es lo correcto pero no pasa nada (y como es muy cómodo, y necesitamos espacio, optamos por lo práctico). Si lo pones al revés no funcionará (no se estropea nada pero asegúrate el pin largo al D13 y el corto al GND).

Solución video

Solución código

https://create.arduino.cc/editor/javierquintana/f89a2537-117b-4140-806f-5c79ef4f684a/preview

JOYSTICK

Reto

Ahora vamos a utilizar el Joystick para dos intenciones:

Solución maqueta

Vamos ampliando nuestra casa domótica con la luz RGB y el Joystick:

  1. Joystick fijado en la pared
  2. Led RGB fijado en la pared
  3. Conexiones Joystick en entradas analógicas
  4. Conexiones de RGB a las salidas digitales

Solución esquema eléctrico

Es igual que cuando vimos Joystick:

  1. Terminales GND del led RGB y del Joystick
  2. Terminal +5V del Joystick
  3. Otra opción de conectar el terminal GND
  4. Otra opción de conectar +5V

y las demás conexiones igual que antes:

Nota: El microruptor del Joystick es digital luego lo apropiado es conectarlo en una entrada salida digital, pero como vamos escasos de entradas y salidas digitales (ya verés como esto se complica), lo trataremos como analógico.

Solución vídeo

Solución código

https://create.arduino.cc/editor/javierquintana/f4dfc995-5a42-4d45-a911-238f67b0c169/preview

ALARMA AGUA

Reto

Ahora vamos a utilizar el sensor de agua para prevenir "accidentes" en casa

Solución esquema eléctrico

Solución vídeo

Solución código

https://create.arduino.cc/editor/javierquintana/3eaca00b-a7b7-4357-a191-c5cfd33c004a/preview

FUEGO

ATENCIÓN hemos pensado la utilización del sensor de fuego sólo en la parte de CODIGO, pues es para nivel de secundaria.
Implica la utilización de un mechero, con el peligro que conlleva. Utilizar este ejemplo en clase bajo responsabilidad y supervisión del docente.

Reto

Tenemos que hacer dos programaciones * Activar o no la alarma * cuando hay una pulsación larga en el pulsador escondido, se activa o se desactiva la alarma * si se ha disparado la alarma tiene que apagarla * Disparo de la alarma * Si la alarma está actividad, vigilando y se produce una detección, la alarma tiene que sonar hasta que la desactivamos con una pulsación larga del pulsador.

Solución maqueta

Fijaremos en la pared el sensor llama que lo vimos anteriormente en 2.7 y el pulsador de activación o no de la alarma.

  1. Sensor llama
  2. Pulsador analógico
  3. Conexión sensor llama a la entrada digital
  4. Conexión del pulsador analógico a la entrada analógica

Las alimentaciones de los dos sensores igual que en las páginas anteriores.

Solución esquema eléctrico
Solución vídeo

Solución código

https://create.arduino.cc/editor/javierquintana/fce4e1a9-c2c2-4806-9540-04c3d26c04bd/preview

LÁSER

El diodo láser es un elemento motivador, barato y fácil de usar con el Arduino pues se activa digitalmente:

Si quieres saber más de este componente, te recomendamos esta 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 SIEMPRE QUE EL LÁSER APUNTE A LOS OJOS especialmente con niños.

Reto

Solución vídeo

Solución maqueta

En este caso hay que tener cuidado con la fijación del láser y el LDR para que apunte al LDR y otra cuestión son los cables: al instalarse fuera de la casa hay que utilizar cables largos o añadir dos M-H consecutivos.

Solución conexiones eléctricas

Solución código

Aquí lo tienes
https://create.arduino.cc/editor/javierquintana/dfca79db-6299-47c1-beef-7db3350c2cee/preview

BLUETOOTH APP->ARDUINO

Conocimientos previos

Tienes que visitar las siguientes páginas de la Unidad 4 Comunicaciones con Arduino:

Aprende a configurar los botones de la APP !! diapositiva 12 pero en vez de Up, Down, Right y Left los que se establezcan en el reto

Configuración avanzada pues nosotros somos pitos, y conectaremos el HC-06 en los pines digitales D11 y D12 y no en D0 y D1 pues están ocupados con la comunicación del ordenador.
El RX del HC-06 en 11 y el TX del HC-06 en el 12

RETO BÁSICO: Apertura de puerta y encendido láser.

Enunciado reto básico

Vamos a realizar :

Conexiones reto básico

domotica-simple-laser.png

El programa es este https://create.arduino.cc/editor/javierquintana/88cfa21b-a86c-428c-95c4-a89a62a9218d/preview

Reto básico Resultado

https://www.youtube.com/shorts/vSjZBe_iEIQ

Reto avanzado

Controlar nuestra casa con el móvil, para ello vamos a definir los siguientes comandos:

COMANDO VOZ DATO descripción
Comando 1 abrir A abrir la puerta y cierra automáticamente
Comando 2 puerta P abrir/cerrar la puerta
Comando 3 alarma L activar/desactivar la alarma
Comando 4 pit T hace un pit
Comando 5 rojo R enciende luz interior roja
Comando 6 azul B enciende luz interior azul
Comando 7 apaga O apaga luces interiores

Lo tienes que hacer así:

Solución conexión eléctrica
Solución vídeo

Solución código

https://create.arduino.cc/editor/javierquintana/e14ca107-67ba-4508-a5a0-6012213b4c1d/preview

BLUETOOTH APP<->ARDUINO

Nos preguntamos...

P: ¿Y pasar datos de nuestra maqueta a la APP ? 
R: Se puede pero tendremos que hacer la APP a medida
P: ¿Podríamos tener libertad de poner botones? 
R: Por supuesto,

Recuerda que con la APP que existen en GOOGLE PLAY como la utilizada en el capítulo anterior https://libros.catedu.es/books/domotica-con-arduino/page/bluetooth la comunicación es PLACA<-APP

RETO BÁSICO 

Enunciado reto básico

Vamos a realizar :

Conexiones reto básico

ARDUINO-DOMOTICA-BASICO-BIDIRECCIONAL-BLUETOOTH_bb.png

RETO BÁSICO LA APP EN APP INVENTOR

los pasos son parecidos a los tratados en https://libros.catedu.es/books/arduino-en-el-aula/page/app-tdr-steam-app-inventor-blocks

Lo tienes en https://gallery.appinventor.mit.edu/?galleryid=286eb7c2-792d-436c-b7d0-3d9e1e0592aa

Para llevar la APP al móvil mira https://libros.catedu.es/books/arduino-en-el-aula/page/llevar-la-app-creada-en-app-inventor-al-movil

RETO BÁSICO PROGRAMA EN EL ARDUINO CON CODIGO

El programa lo tienes aquí https://create.arduino.cc/editor/javierquintana/ea8fa750-8cd1-48fd-8ea1-65bac09b78ce/preview

BUG: Cuando el laser pasa de APAGADO a ENCENDIDO, el LDR es más lento que el programa Arduino y detecta LADRÓN luego desaparece, pero ya se ha quedado el fondo de pantalla rojo.
RETO: Habría que poner un pequeño retardo delay(500); para solucionar este problema ¿Dónde?

Resultado video

https://www.youtube.com/shorts/RZ_0EX4OulI?feature=share

RETO AVANZADO

Como en la página anterior

RETO AVANZADO LA APP EN APP INVENTOR

los pasos son parecidos a los tratados en https://libros.catedu.es/books/arduino-en-el-aula/page/app-tdr-steam-app-inventor-blocks

Pero en la vista de Designer, hemos añadido más botones, imagen, etc...
designer.jpg

Y la vista de Blocks es más completa

blocks.png

El programa lo tienes aquí :
https://gallery.appinventor.mit.edu/?galleryid=b4979892-5df3-4225-90be-538a64d469e0

RETO AVANZADO EL PROGRAMA EN EL ARDUINO

Y hemos modificado el programa en Arduino para que envíe los comandos por bluetooth

Busca los comandos Serial1.print(...);

https://create.arduino.cc/editor/javierquintana/b2c39d6f-d0ef-44e2-bb5b-2d9351dddb94/preview

RETO AVANZADO  RESULTADO

https://youtu.be/gtuJzYvTBJM