UNIDAD 3: ROBÓTICA Y PROGRAMACIÓN
- ¿QUÉ ES ARDUINO?
- HARDWARE. COMPONENTES DE LA PLACA DE ARDUINO UNO. ESQUEMA DE FUNCIONAMIENTO.
Un microcontrolador es un circuito integrado y programable. Posee todos los componentes de un ordenador: CPU o microprocesador, memoria RAM, memoria de almacenamiento y dispositivos de entrada y salida. Arduino UNO utiliza un ATmega 328, que cuenta con 300 millones de transistores.
El modelo de Arduino que usaremos es Arduino UNO:
Esquema de funcionamiento de un sistema automatizado por Arduino:
Las señales de entrada vendrán dadas habitualmente por sensores o pulsadores. Dichas señales enviarán información al microprocesador del microcontrolador, que procesará dicha información en función del programa (software) que hayamos confeccionado y almacenado en dicho microcontrolador. Finalmente, el microprocesador mandará unas señales de salida (órdenes) a unos componentes llamados actuadores (habitualmente LEDs, zumbadores y motores).
Las señales (corrientes eléctricas) de entrada y/o salida pueden ser analógicas o digitales.
Las señales digitales son aquellas que solo pueden tomar dos estados:
Las señales (corrientes eléctricas) de entrada y/o salida pueden ser analógicas o digitales.
Las señales digitales son aquellas que solo pueden tomar dos estados:
- "0"/BAJO/LOW, que corresponde a un valor de voltaje de 5 V o próximo a él.
- "1"/ALTO/HIGH, que corresponde a un valor de voltaje de 0V o próximo a él.
Ejemplos de señales digitales podrían ser:
- Pulsador apretado o sin apretar (entrada digital)
- LED encendido al máximo o apagado. (salida digital)
Ejemplos de señales analógicas podrían ser:
- Resistencia variable de un potenciómetro (entrada analógica)
- Intensidad luminosa captada por un sensor de luz o LDR (entrada analógica)
- Velocidad regulable de un motor (salida analógica)
Sin embargo, Arduino tiene una resolución de 10 bits, lo que significa que "solo" es capaz de procesar 2^10 = 1023 valores intermedios. Esto quiere decir que las señales analógicas que recibe las digitaliza, de forma que entre el valor máximo (5V) y el mínimo (0V) establece 1023 valores intermedios. Profundizaremos en este concepto en las prácticas planteadas.
El circuito electrónico que conectemos a la placa de Arduino UNO a través de sus pines de entrada o salida, lo montaremos en placas de prototipado, también llamadas protoboard . Estas placas permiten montar el circuito electrónico sin necesidad de soldar sus componentes, facilitando realizar pruebas y experimentar con ellos de forma rápida y sencilla. Es una placa con orificios que se encuentran conectados eléctricamente, siguiendo patrones de filas y columnas.
Tanto en la parte superior como en la inferior disponemos de 2 líneas para conectar la alimentación (negativo y positivo).
La protoboard se organiza por letras (filas) y números (columnas). Todos los puntos de una misma columna están conectados eléctricamente entre sí. En medio hay una ranura que aísla la conexión de la parte superior e inferior.
Los componentes del circuito electrónico se pueden conectar entre sí directamente a través de sus patillas, aunque es mucho más habitual y conveniente hacerlo a través de cables. Estos mismos cables se utilizan también para conectar el circuito electrónico de la protoboard con los pines de la placa Arduino. Los cables más utilizados se llaman cables Dupont o jumpers:
La protoboard se organiza por letras (filas) y números (columnas). Todos los puntos de una misma columna están conectados eléctricamente entre sí. En medio hay una ranura que aísla la conexión de la parte superior e inferior.
Los componentes del circuito electrónico se pueden conectar entre sí directamente a través de sus patillas, aunque es mucho más habitual y conveniente hacerlo a través de cables. Estos mismos cables se utilizan también para conectar el circuito electrónico de la protoboard con los pines de la placa Arduino. Los cables más utilizados se llaman cables Dupont o jumpers:
Aunque el color de los cables no es relevante para el funcionamiento del circuito, sí es conveniente seguir un código de colores a la hora de comprender mejor el conexionado entre componentes y, por tanto, detectar errores. Así, se elige el cable rojo para la conexión al positivo de la fuente (5V/+), el cable negro para la conexión al negativo de la fuente o tierra (0V/-/GND) y el resto de colores para otras conexiones tratando de buscar un cierto criterio de comprensión.
- SOFTWARE. LENGUAJES DE PROGRAMACIÓN.
Con esta aplicación, los programas o códigos se deben elaborar utilizando un lenguaje de programación de alto nivel basado en C++, cuyo aprendizaje es difícil y requiere de mucho tiempo. Por ello, especialmente en el ámbito escolar se suelen utilizar otras aplicaciones de programación gráfica cuyo aprendizaje es mucho más rápido e intuitivo. Entre dichas aplicaciones nosotros vamos a utilizar mBlock, cuyo lenguaje de programación está basado en Scratch 2.0. Podéis descargar mBlock desde su página oficial.
- INTRODUCCIÓN A MBLOCK
Seleccionamos la categoría de bloques que vamos a usar y arrastramos el bloque que queramos dentro de la zona de programación.
mBlock nos ofrece dos maneras distintas de ejecutar los programas que construyamos:
Cuando vayamos a hacerlo de esta forma comenzaremos el programa con un bloque de la categoría “Eventos”, normalmente con el bloque de la bandera verde. Y debajo de este colocamos el resto de bloques del programa. Como prueba vamos a hacer que se encienda y apague el LED de la placa Arduino conectado internamente al pin 13 de Arduino.
mBlock nos ofrece dos maneras distintas de ejecutar los programas que construyamos:
- Ejecutando el programa desde el ordenador.
- Cargando el programa directamente en la placa de Arduino. Para programar robots vamos a utilizar normalmente este modo de ejecución, aunque ejecutarlo desde el ordenador puede ser útil para ir probando el programa que vayamos diseñando.
Cuando vayamos a hacerlo de esta forma comenzaremos el programa con un bloque de la categoría “Eventos”, normalmente con el bloque de la bandera verde. Y debajo de este colocamos el resto de bloques del programa. Como prueba vamos a hacer que se encienda y apague el LED de la placa Arduino conectado internamente al pin 13 de Arduino.
Para ejecutar el programa desde el PC, primero tenemos que seleccionar la placa y el puerto serie al que esté conectado el Arduino. Conectamos el cable USB al Arduino y seleccionamos la placa en “Placas->Arduino UNO” y el puerto en “Conectar->Puerto Serie”.
A continuación pulsamos en “Conectar->Actualizar Firmware” y esperamos a que termine de cargarlo.
Ahora para ejecutarlo pulsamos en la bandera verde del escenario o directamente en el bloque con la bandera verde que hemos colocado para comenzar el programa. Se iluminarán la bandera y los bloques del programa, y si miramos nuestro Arduino veremos cómo parpadea el LED.
b) Ejecutando el programa cargándolo en la placa de Arduino
Cuando queramos cargar el programa directamente en el Arduino usaremos como inicio del programa el bloque “Programa de Arduino” que se encuentra en la categoría “Robots”. El resto del programa lo mantenemos igual.
Cuando queramos cargar el programa directamente en el Arduino usaremos como inicio del programa el bloque “Programa de Arduino” que se encuentra en la categoría “Robots”. El resto del programa lo mantenemos igual.
Seleccionamos la placa y el puerto serie de la misma forma que en el apartado anterior y, en vez de cargar el Firmware, pulsamos sobre el bloque “Programa de Arduino” o vamos a “Editar->Modo Arduino”. En la parte derecha de la pantalla aparecerá una pantalla con algunas opciones nuevas y el equivalente en código del programa que hemos hecho con los bloques.
Para cargarlo en el Arduino pulsamos sobre el botón “Subir a Arduino” y esperamos a que termine de cargar.
Para cargarlo en el Arduino pulsamos sobre el botón “Subir a Arduino” y esperamos a que termine de cargar.
Si todo va bien significará que el programa ya está almacenado dentro del propio Arduino, y seguirá ahí permanentemente hasta que carguemos otro nuevo. De esta forma si desconectamos el Arduino del ordenador y lo enchufamos a cualquier otra fuente de alimentación veremos cómo se ejecuta el programa de LED intermitente que le hemos cargado.
- PRÁCTICAS
- Ordenador con mBlock y el IDE de Arduino instalados.
- Placa de Arduino UNO y cable USB de conexión al ordenador.
- Placa protoboard.
- Cables.
- Componentes electrónicos, dependiendo de la práctica que estéis realizando: resistencias, transistores, LEDs, zumbadores, motores, servomotores, pulsadores, potenciómetros, fotorresistencias (LDR), sensores de infrarrojos, sensores de ultrasonidos, sensores de humedad, sensores de temperatura...
- Fuente de alimentación externa (pilas).
Haz clic en los títulos de las prácticas para enlazar con el guión de cada una:
1. LED intermitente.
1. LED intermitente.
Una vez hagáis la práctica cambiad el valor del bloque "esperar" para que la intermitencia sea más o menos frecuente. Fijaos que en este caso el LED actúa como salida digital (o se enciende o se apaga), por lo que hay que utilizar el bloque "fijar salida pin digital X a bajo/alto".
2. Semáforo simple.
Esta práctica es una variante de la anterior. En este caso conectamos tres LED (cada uno con su resistencia) a la placa de Arduino a través de los pines 11 (el verde), 12 (el amarillo) y 13 (el rojo) de la placa de Arduino. Los LED se comportan como salidas digitales, por lo que de nuevo utilizamos el bloque "fijar salida pin digital X a bajo /alto".
En esta práctica aprendemos a conectar un pulsador como entrada digital. Una de las patillas del pulsador se conecta al positivo de la placa (5V de Arduino) y la otra se conecta por un lado al negativo (GND) a través de una resistencia, y por otro a un pin digital de entrada (en este caso el 2) de la placa de Arduino.
Para la programación necesitamos incluir un bloque condicional "si ___________ entonces / si no ____________".
Para la programación necesitamos incluir un bloque condicional "si ___________ entonces / si no ____________".
- Práctica de ampliación (opcional): Semáforo para vehículos y peatones:
Aquí ponemos en práctica lo aprendido en las prácticas anteriores (LED como salida digital y pulsador como entrada digital).
prÁctica_opcional_semaforo_para_vehiculos_y_peatones.pdf |
En esta práctica aprendemos a conectar un potenciómetro como entrada analógica. La patilla central se conecta a un pin de entrada analógica (como A0) de la placa de Arduino, mientras que las otras patillas se conectan a 5V y a GND de la placa. Por su parte, en este caso necesitamos regular el brillo de los LED, por lo que se van a comportar como salidas analógicas. Por ello, el bloque de programación que usaremos será "fijar pin PMW X a X". Los pines PMW de la placa son aquellos que tienen una marca en forma de onda.
En mblock, el margen de valores para una salida analógica varía entre 0 y 255. Por ejemplo, un valor de 0 significa que el LED estaría apagado y un valor de 255 que estaría encendido al máximo brillo. En lugar de un valor concreto entre 0 y 255, podemos también incluir un valor resultado de alguna operación. En este caso, utilizamos el bloque "redondear" de una operación de división, ya que Arduino lee valores entre 0 y 1023, y necesitamos convertir ese margen a valores entre 0 y 255. De ahí que dividamos la señal leída por el potenciómetro (pin A0) entre 4 (1023/4=255)
En mblock, el margen de valores para una salida analógica varía entre 0 y 255. Por ejemplo, un valor de 0 significa que el LED estaría apagado y un valor de 255 que estaría encendido al máximo brillo. En lugar de un valor concreto entre 0 y 255, podemos también incluir un valor resultado de alguna operación. En este caso, utilizamos el bloque "redondear" de una operación de división, ya que Arduino lee valores entre 0 y 1023, y necesitamos convertir ese margen a valores entre 0 y 255. De ahí que dividamos la señal leída por el potenciómetro (pin A0) entre 4 (1023/4=255)
- Práctica opcional: aplica lo aprendido para encender un LED con un pulsador, pudiendo regular el brillo del LED con un potenciómetro.
- Práctica opcional: control de un LED RGB:
prÁctica_opcional_led_rgb.pdf |
En esta práctica vamos a aprender a conectar una fotorresistencia o LDR (sensor de luz) como entrada analógica. Por tanto, tendremos que conectar una patilla a 5V y la otra patilla por un lado al GND a través de la resistencia y por otro lado a un pin de entrada analógico como A0. Por su parte, en mblock deberemos incluir un bloque condicional "si ___________ entonces / si no ____________". El valor de 150 corresponde al límite de oscuridad que establece el momento en que el LED se encenderá.
Mejora: sustitución de la resistencia "pull-down" por un potenciómetro. En este caso pretendemos convertir la resistencia fija conectada a la LDR en una resistencia variable (potenciómetro). Para ello, conectamos la patilla central a la LDR y la de un extremo al GND.
En esta práctica aprendemos a modificar el tono del zumbido de un zumbador para generar una melodía.
En esta práctica aprendemos a conectar un servomotor como salida analógica. Para ello, tendremos que conectar el cable rojo del servo a 5V, el cable marrón del servo a GND y el cable naranja del servo a un pin de salida analógico PWM, como el pin 9. Respecto a la programación, deberemos utilizar el bloque "fijar ángulo del pin X del servo a X".
Alternativa: hacer que un servomotor cambie su ángulo a un valor determinado al pulsar un pulsador.
En esta práctica utilizamos un potenciómetro como entrada analógica para regular mediante él el ángulo que gira el potenciómetro.
En esta práctica aprendemos a conectar un sensor de ultrasonidos como medidor de distancias. Como se observa en la imagen, en el sensor se indica el nombre de cada patilla (Vcc, Trig, Echo y GND). Como podréis deducir, Vcc se conecta a 5V de la placa, GND al GND, mientras que Trig y Echo se conectan a entradas digitales de la placa (como 12 y 13).
- Práctica opcional: Medidor del nivel de líquido en un depósito con sensor de ultrasonidos:
medidor_capacidad_depósito.pdf |
11. Barrera de parking con sensor de ultrasonidos, semáforo y servomotor.
barrera_de_parking.pdf |
12. Sensor de humedad o de agua.
sensor_de_agua.pdf |
Haz clic en el siguiente documento para repasar los contenidos vistos en esta unidad sobre robótica.
preguntas_tipo_examen_robÓtica.pdf |