ARDUINO
Arduino es una plataforma de open hardware, que nos permite controlar diferentes dispositivos, utilizando un entorno de programación propio.
Esta plataforma permite crear diferentes tipos de microordenadores de una sola placa a los que la comunidad de creadores puede darles diferentes tipos de uso.
El proyecto nació en 2003, cuando varios estudiantes del Instituto de Diseño Interactivo de Ivrea, Italia, con el fin de facilitar el acceso y uso de la electrónico y programación. Lo hicieron para que los estudiantes de electrónica tuviesen una alternativa más económica a las populares BASIC Stamp, unas placas que por aquel entonces valían más de cien dólares, y que no todos se podían permitir.
El resultado fue Arduino, una placa con todos los elementos necesarios para conectar periféricos a las entradas y salidas de un microcontrolador, y que puede ser programada tanto en Windows como macOS y GNU/Linux. Un proyecto que promueve la filosofía 'learning by doing', que viene a querer decir que la mejor manera de aprender es cacharreando.
El proyecto nació en 2003, cuando varios estudiantes del Instituto de Diseño Interactivo de Ivrea, Italia, con el fin de facilitar el acceso y uso de la electrónico y programación. Lo hicieron para que los estudiantes de electrónica tuviesen una alternativa más económica a las populares BASIC Stamp, unas placas que por aquel entonces valían más de cien dólares, y que no todos se podían permitir.
El resultado fue Arduino, una placa con todos los elementos necesarios para conectar periféricos a las entradas y salidas de un microcontrolador, y que puede ser programada tanto en Windows como macOS y GNU/Linux. Un proyecto que promueve la filosofía 'learning by doing', que viene a querer decir que la mejor manera de aprender es cacharreando.
|
|
¿Qué es un microcontrolador?
Es un circuito integrado que se puede programar, o sea que puede ejecutar las órdenes que tenga almacenadas en su memoria. Tiene las tres funciones principales de un ordenador, pero en un único chip:
El microcontrolador en la placa Arduino se programa mediante el lenguaje de programación Arduino (basado en Wiring) y el entorno de desarrollo Arduino (basado en Processing) y normalmente mediante el Arduino IDE.
Es un circuito integrado que se puede programar, o sea que puede ejecutar las órdenes que tenga almacenadas en su memoria. Tiene las tres funciones principales de un ordenador, pero en un único chip:
- Una unidad central de proceso,
- Memoria y
- Entradas y salidas.
El microcontrolador en la placa Arduino se programa mediante el lenguaje de programación Arduino (basado en Wiring) y el entorno de desarrollo Arduino (basado en Processing) y normalmente mediante el Arduino IDE.
¿Qué son las entradas y salidas?
Mediante los conectores de Arduino correspondientes a las entradas y salidas podemos comunicar nuestros programas con el “mundo exterior”. Si queremos leer el valor de la magnitud física medida por un sensor, por ejemplo una LDR que detecta el nivel de luminosidad, lo tendremos que hacer conectando el sensor a uno de los pines de entrada (en este caso analógicas) de la tarjeta. De esta forma con una simple instrucción de lectura en el programa, podremos obtener el valor de la magnitud física.
Si nuestra intención es actuar o “hacer algo” una vez leído el valor del sensor, por ejemplo encender un led si el sensor de luminosidad detecta oscuridad, tendremos que conectar el actuador (en este caso el led) a un pin de salida que proporcionará la corriente necesaria para activarlo.
En Arduino las entradas pueden ser analógicas o digitales y las salidas sólo digitales. Cada pin digital tiene doble función entrada o salida. En la zona de configuración del programa hay que indicar explícitamente mediante una instrucción cuál es función desempeña un determinado pin.
En todas las placas los pines son multifunción o multipropósito, es decir en función de la configuración tienen una funcionalidad u otra.
Pines digitales |
Una señal digital es un tipo de señal generada por algún tipo de fenómeno electromagnético en que cada signo que codifica el contenido de la misma puede ser analizado en término de algunas magnitudes que representan valores discretos, en lugar de valores dentro de un cierto rango. Por ejemplo, el interruptor de la luz sólo puede tomar dos valores o estados: abierto o cerrado, o la misma lámpara: encendida o apagada.
|
En arduino y placas compatibles para tratar las entradas y salidas digitales usamos las siguientes funciones:
- pinMode() – configura en el pin especificado si se va a comportar como una entrada o una
- digitalWrite() – Escribe un valor HIGH o LOW en el pin digital especificado. Si el pin está configurado como OUTPUT pone el voltaje correspondiente en el pin seleccionado. Si el pin está configurado como INPUT habilita o deshabilita la resistencia interna de pull up del correspondiente pin.
- digitalRead() – lee el valor del pin correspondiente como HIGH o LOW.
Una señal eléctrica analógica es aquella en la que los valores de la tensión o voltaje varían constantemente y pueden tomar cualquier valor. En el caso de la corriente alterna, la señal analógica incrementa su valor con signo eléctrico positivo (+) durante medio ciclo y disminuye a continuación con signo eléctrico negativo (–) en el medio ciclo siguiente.
La señal digital obtenida de una analógica tiene dos propiedades fundamentales:
En arduino para tratar las entradas y salidas analógicas usamos las siguientes funciones:
|
Pines analógicos |
Fuente: https://aprendiendoarduino.wordpress.com/
Arduino dispone de 14 Entradas y salidas digitales (D0 - D13) y 6 Entradas Analógicas (A0 - A5)
En Arduino la señal digital no es más que un valor de entre dos posibles (0-1, 0V-5V, Alto-Bajo, Blanco-Negro, Dentro-Fuera, HIGH-LOW, Encendido-Apagado.
Arduino también existe la posibilidad de utilizar los 6 pines analógicos como si fueran digitales en el caso de que con 14 no fuera suficiente. Aunque también existen versiones de Arduino como Arduino Mega, que disponen de más de 50 entradas-salidas digitales
Las entradas analógicas se utilizan para leer la información de la magnitud física que nos proporciona los sensores de temperatura, luz, distancia,... La tensión que leemos del sensor la proporciona un circuito asociado a dicho sensor en un rango de valores de tensión continua entre 0V y 5V.
La placa de Arduino tiene 6 entradas analógicas marcados como “A0”, “A1”,..., “A5” que reciben los valores continuos en un rango de 0V a 5V, pero la placa Arduino trabaja sólo con valores digitales, por lo que es necesario una conversión del valor analógico leído a un valor digital. La conversión la realiza un circuito analógico/digital incorporado en la propia placa.
En Arduino la señal digital no es más que un valor de entre dos posibles (0-1, 0V-5V, Alto-Bajo, Blanco-Negro, Dentro-Fuera, HIGH-LOW, Encendido-Apagado.
Arduino también existe la posibilidad de utilizar los 6 pines analógicos como si fueran digitales en el caso de que con 14 no fuera suficiente. Aunque también existen versiones de Arduino como Arduino Mega, que disponen de más de 50 entradas-salidas digitales
Las entradas analógicas se utilizan para leer la información de la magnitud física que nos proporciona los sensores de temperatura, luz, distancia,... La tensión que leemos del sensor la proporciona un circuito asociado a dicho sensor en un rango de valores de tensión continua entre 0V y 5V.
La placa de Arduino tiene 6 entradas analógicas marcados como “A0”, “A1”,..., “A5” que reciben los valores continuos en un rango de 0V a 5V, pero la placa Arduino trabaja sólo con valores digitales, por lo que es necesario una conversión del valor analógico leído a un valor digital. La conversión la realiza un circuito analógico/digital incorporado en la propia placa.
Fuente: http://www.feriadetecnologia.com/
PROGRAMACION
En robótica llamamos programa a una serie de instrucciones que se guardan en el microcontrolador. Mediante éstas se lee la información que llega de los sensores y se decide qué hacer con los actuadores. Las instrucciones están escritas usando un determinado lenguaje informático de programación
Es usual que este último vaya acompañado de una serie de circuitos que posibilitan y facilitan la conexión de sensores y actuadores además de permitir cargar el programa que hayamos escrito. A todo ello se le llama tarjeta controladora (Arduino UNO, Leonardo, Nano, Mega, ...).
Actuadores
Los elementos de salida se llaman actuadores y realizan acciones. Las más usuales son el movimiento (motor cc), la iluminación (led) y los sonidos (zumbador). En el símil de un ordenadores tendríamos los periféricos de salida como podrían ser la pantalla o la impresora. |
Sensores
Los elementos de entrada se llaman sensores y nos dan mediciones del entorno. Existen muchísimos sensores.
|
Simulador
|
|
Arduino IDE
El Arduino tiene su software propio, con su lenguaje de programación y por supuesto es software libre.
El entorno de desarrollo integrado también llamado IDE (sigla en inglés de Integrated Development Environment), es un programa informático compuesto por un conjunto de herramientas de programación. Consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI). Además en el caso de Arduino incorpora las herramientas para cargar el programa ya compilado en la memoria flash del hardware a través del puerto serie.
El IDE de Arduino está programado en un lenguaje similar a Processing.
El entorno de desarrollo integrado también llamado IDE (sigla en inglés de Integrated Development Environment), es un programa informático compuesto por un conjunto de herramientas de programación. Consiste en un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI). Además en el caso de Arduino incorpora las herramientas para cargar el programa ya compilado en la memoria flash del hardware a través del puerto serie.
El IDE de Arduino está programado en un lenguaje similar a Processing.
Un programa de Arduino se denomina sketch o proyecto y tiene la extensión .ino. Importante: para que funcione el sketch, el nombre del fichero debe estar en un directorio con el mismo nombre que el sketch.
No es necesario que un sketch esté en un único fichero, pero si es imprescindible que todos los ficheros estén dentro del mismo directorio que el fichero principal.
Si echas un vistazo a la imagen puedes observar dos elementos indispensables que componen un programa de Arduino:
|
Podemos resumir que setup() es la parte encargada de recoger la configuración y loop() es la que contiene el programa que se ejecuta cíclicamente (de ahí el término loop –bucle-). Ambas funciones son necesarias para que el programa trabaje.
Fuente: https://aprendiendoarduino.wordpress.com/
ARDUINOBLOCKS
ArduinoBlocks es una herramienta gráfica para programar diferentes modelos de placa controladora Arduino.
Este lenguaje de programación se basa en bloques (programación gráfica) como Scratch, App Inventor u otros programas
Este lenguaje de programación se basa en bloques (programación gráfica) como Scratch, App Inventor u otros programas
En ArduinoBlocks se lleva a cabo una programación gráfica (visual) por bloques. El programa se organiza de la misma forma que en la programación con texto estructurado para Arduino, pero en lugar de escribir el código, se arrastran y configuran bloques que equivalen a ese código.
Como ejemplo, a continuación se muestra un programa en los dos lenguajes mencionados. En él se lee la temperatura del puerto A0, y si ese valor es inferior a 20, se activa el puerto 8, si es superior a 20, se mantiene apagado el puerto 8.
Hay dos partes principales en un programa, Inicializar y bucle.
Inicializar: Aquí se introducen las órdenes, datos, lecturas, etc., que se realizan solamente una vez, que es cuando se enciende (o resetea) la placa. Es un espacio que se aprovecha también para llevar a cabo configuraciones iniciales. Por ejemplo, si se está utilizando una comunicación Wifi, en el bloque Inicializar se guardan los datos de la conexión, como la red, el usuario, la contraseña, etc. Son datos fijos que no van a variar en el tiempo pero que son necesarios para ejecutar el resto del programa. |
Bucle: Es el núcleo del programa. El conjunto de instrucciones que se introducen aquí, se ejecutan de forma secuencial de arriba a abajo y se repiten constantemente, cientos de veces por segundo. Estas instrucciones se repiten en “bucle”. A cada lectura desde el inicio del bucle hasta el final, se le llama ciclo. Un ciclo comprende por tanto el total de las instrucciones programadas, que serán chequeadas y ejecutadas constantemente mientras se mantenga la placa encendida. Muchos de los datos que se suelen colocar en el apartado Inicializar, se pueden ubicar también en el Bucle. Puede que el programa funcione igual, el problema es que en el bucle se van a estar leyendo esos datos cientos de veces por segundo, de forma innecesaria. Si no cambian en el tiempo, basta con leerlos una vez y memorizarlos. |
Partes fundamentales del editor
Se irán explicando a lo largo de los diferentes artículos, pero como elementos principales, tenemos:
Se irán explicando a lo largo de los diferentes artículos, pero como elementos principales, tenemos:
- En la parte superior derecha, los iconos de guardar programa, cargar en Arduino, consola y refrescar conexión.
- En el centro, la parte destinada a incluir el programa, dividida en los bloques Inicializar y bucle.
- En la parte izquierda, la lista de apartados en los que se clasifican los diferentes bloques de funciones disponibles.
Haciendo clic sobre cualquiera de los apartados de la parte izquierda de la pantalla, se encuentran los diferentes bloques de funcionialidades, que son los que se arrastran dentro de Inicializar y Bucle. Veremos mas adelante que hay partes del programa que se pueden incluir también fuera de estas dos partes principales: las funciones.
Fuente: https://didactronica.com/arduino-desde-cero-arduinoblocks/
Ponemos en práctica lo aprendido realizando las siguientes practicas:
|
Actividades |
PROYECTO FINAL
El objetivo de nuestro proyecto será crear un robot móvil que siga el recorrido marcado por una línea negra. El robot detectará con sensores de infrarrojos la presencia de la línea negra para poder rectificar su trayectoria y seguir el recorrido marcado por la misma
Materiales |
Plataforma universal robótica, que nos permitirá conseguir el movimiento de nuestro robot y que estará compuesta por los siguientes elementos:
Protoboard: Tabla con orificios (pines) la cual está conectada internamente y usaremos para realizar nuestras conexiones para el proyecto. Driver L298n: nos permitirá gobernar los motores de corriente continua con las ruedas acopladas y, por tanto, gobernar el movimiento de nuestro vehículo. 2 sensores de infrarrojos: nos permitirá detectar la presencia de una línea negra y de esta manera enrutar nuestra trayectoria para poder seguirla Cables con pines: Estos cables tienen unos pines (macho o hembra) los cuales nos permitirán hacer las conexiones entre los diferentes elementos ya mencionados. |
Dado que en otras sesiones ya trabajamos con el driver L298n para controlar 2 motores de corriente contínua y con el sensor de infrarrojos TCRT5000 para detectar la presencia de la línea negra, combinaremos la circuitería de ambos circuitos para crear nuestro proyecto conjunto.
Arduino Code
|
Código Arduino
A continuación se muestra el código de programación desarrollado específicamente para este proyecto.
|
Fuente: https://tecnopatafisica.com/