====== LABORATORIO DE EXPERIMENTACIÓN TECNOLÓGICA - LA PIPA DE VERNE ===== ===== FUNDAMENTOS DE ROBOTICA BASADA EN ARDUINO ===== ===== ¿Qué es Arduino? ===== Es el nombre de una marca especializada en crear componentes electrónicos y programas de uso libre, y ha hecho que el mundo mecatrónico sea flexible, fácil de usar y divertido para el usuario. ===== Un poco de historia ===== Arduino nació en el año 2005 en el Instituto de Diseño Interactivo de Ivrea{{ :sistemadebibliotecas:biblioteca-robledo:arduino_1.png?200|}} (Italia), centro académico donde los estudiantes se dedicaban a experimentar con la interacción entre humanos y diferentes dispositivos (muchos de ellos basados en microcontroladores) para conseguir generar espacios únicos, especialmente artísticos. Arduino apareció por la necesidad de contar con un dispositivo para utilizar en las aulas que fuera de bajo coste, que funcionase bajo cualquier sistema operativo y que contase con documentación adaptada a gente que quisiera empezar de cero. La idea original fue, pues, fabricar la placa para uso interno de la escuela. No obstante, el Instituto se vio obligado a cerrar sus puertas precisamente en 2005. Ante la perspectiva de perder en el olvido todo el desarrollo del proyecto Arduino que se había ido llevando a cabo durante aquel tiempo, se decidió liberarlo y abrirlo a “la comunidad” para que todo el mundo tuviera la posibilidad de participar en la evolución del proyecto, proponer mejoras y sugerencias y mantenerlo “vivo”. Y así ha sido: la colaboración de muchísima gente ha hecho que Arduino poco a poco haya llegado a ser lo que es actualmente: un proyecto de hardware y software libre de ámbito mundial. ===== ¿Para qué sirve? ===== La tecnología Arduino tiene aplicaciones en un amplio rango de materias y sus entornos como, por ejemplo: Domótica, Robótica y telemática por poner solo algunos ejemplos. ===== ¿Qué puedo hacer con Arduino? ===== Con la ayuda de Arduino fácilmente puedes desarrollar proyectos escolares de ciencia y tecnología, iniciar un pasatiempo con desarrollos de automatizar de espacios y así darle a tu casa un toque tecnológico, también puedes automatizar o complementar el funcionamiento de electrodomésticos en tu hogar, puedes crear tus propios juguetes electrónicos (robots), o montar tu propio laboratorio de proyectos tecnológicos. ===== ¿Por dónde empezar? ===== Para iniciar el desarrollo de proyectos en el mundo de Arduino, es aconsejable hacerlo tratando de entender el funcionamiento de las siguientes referencias de placas o integrados electrónicos: 1. Arduino Uno (Recomendado) 2. Arduino Leonardo 3. Arduino Esplora 4. Arduino Mini 5. Arduino Micro 6. Arduino Nano ===== ¿Cómo funciona una placa Arduino? ===== Una placa Arduino funciona como si de un pequeño cerebro se tratara, es capaz de procesar información muy elemental, ya sea que se la proporcionemos adaptándole otros elementos, o que éste la genere como producto de cálculos y verificaciones que le programemos a nuestro gusto. Estos dispositivos generalmente cuentan con puertos para la entrada y salida de información los cuales podemos utilizar acoplándolos a sensores o reactores eléctricos y electrónicos, que son quienes proporcionan o reaccionan ante dicha información. Para obtener más información de cómo hacerlo puedes visitar los siguientes enlaces: **Referencias básicas** * https://www.arduino.cc/en/Tutorial/HomePage * https://www.youtube.com/watch?v=IDi5QlO6mxQ * https://www.youtube.com/watch?v=J2w-Ig0EzbA **Referencias para más avanzados** * https://www.youtube.com/watch?v=3BnS59Kg9DE&t=66s ===== Herramientas libres para practicar ===== Si eres nuevo en el universo Arduino, te recomendamos iniciar por el uso de plataformas de simulación online en las que podrás practicar, equivocarte y conocer minuciosamente el funcionamiento de la electrónica basada en esta tecnología, sin correr el riesgo de dañar físicamente los elementos que incorpores en un proyecto. Visita: **Plataformas recomendas:** * https://www.tinkercad.com * https://bitbloq.bq.com/#/ **Videos tutoriales recomendados:** * http://bit.ly/UnoArduino * http://bit.ly/bitbloq **Video introductorio (hola mundo)** * http://bit.ly/HolaMundoTinkercad * http://bit.ly/HolaMundoHardware ===== Aprendiendo a hablar el lenguaje de Arduino ===== Arduino cuenta con su propio lenguaje de programación, el cual es necesario conocer y escribir correctamente como instrucciones secuenciales para que Arduino ejecute las tareas que requiramos. Al ser una tecnología libre es bastante fácil encontrar en internet, incluso en diferentes idiomas información sobre su código. A continuación compartiremos el enlace de una de las referencias más completas en español disponible para el entendimiento de su código, no obstante, puedes y si no se te dificulta el entendimiento de contenidos en inglés, puedes visitar el sitio oficial de Arduino en https://www.arduino.cc/ **Referencias de lenguaje Arduino en español:** * http://bit.ly/AdruinoEspanol ==== MOVIENDO UN SERVOMOTOR – ARDUINO UNO ==== **Nivel: Básico** {{youtube>Pou2-Xk7-Wg?medium}} Este ejercicio plantea la conexión de una placa Arduino Uno a un servo motor, a través de la cual se le enviaran ordenes utilizando el lenguaje de programación Arduino, esto con el fin de que el servomotor realice los movimientos instruidos en el código (sketch). Aspectos a tener en cuenta: {{ :sistemadebibliotecas:biblioteca-robledo:montaje_1servo.png?300|}} •El servomotor requiere de una fuente de alimentación - cables rojo y negro (o café), en nuestro caso debe ir conectado en la placa Arduino en los pines 5V y GND, •El servomotor tiene un tercer cable, generalmente de color naranja (transmisión de datos), éste debe ir conectado a uno de los 13 pines digitales de la placa Arduino Uno (el número del pin debe coincidir con el valor de la variable que le suministrará los datos en el código). Materiales: •Placa Arduino Uno R3 •Cable de transmisión de datos para Arduino USB. •Micro servomotor 5V •Potenciometro de 20 KΩ •Protoboard •Cables jumper **Montaje:** Procede a realizar el montaje de los elementos descritos anteriormente tal y como se observa en la siguiente figura (Para evitar daños al hardware es recomendable realizar el montaje de forma virtual y realizar la simulación). {{ :sistemadebibliotecas:biblioteca-robledo:sketch1.png?300 |}} A continuación, encontraras la explicación del código anterior, el cual hemos segmentado en tres partes para facilitar su entendimiento: **[1]** El código inicia indicándole a Arduino que utilizará la librería #include , la cual contiene todos los parámetros bajo los que opera un servomotor (algo parecido como a tomar el paquete de instrucciones o el manual de uso para manejar un servomotor). Posteriormente se procede a dar un “nombre” dentro del código al Servomotor, en nuestro case fue llamado “Servo Base” Finalmente se declara una variable de tipo “int“ (Entero) llamada Valbase y se le asigna el valor de cero. Esta variable almacenará la información que proporcionará el movimiento al servomotor. **[2]** La segunda parte de este código inicia con la función de arranque “void setup(), la cual prepara a Arduino para ejecutar o configurar sus periféricos de acuerdo a lo que esté planteado dentro de ésta. La configuración descrita en este código indica que el servomotor llamado “Base” se conectará al pin digital número 9, posteriormente se carga el monitor serial “Serial.begin(9600)”, a un modo de transferencia de 9600 baudios (número de señales por segundo); es la velocidad de transferencia de información. **[3]** En la tercera parte de éste código encontraremos las instrucciones que ejecutará constantemente nuestro Arduino Uno R3, gracias a la función “void loop()”, ésta función ejecuta permanentemente lo que se encuentre dentro de ella dándole la propiedad de ciclo infinito. **Nota:** El potenciómetro y el servomotor son dispositivos con un modo de operación diferente entre sí, análogo y digital respectivamente, y para hacer compatibles los movimientos de uno con el otro, es necesario realizar una conversión de datos desde el código. Teniendo presente que el servomotor maneja un rango de información de entre 0 y 255, y el potenciómetro de entre 0 y 1023, es necesario escalar la numeración de este último; para esto utilizaremos la instrucción “map()” como vemos a continuación. * Valbase = analogRead(A2); * Valbase = map(Valbase,0,1023,0,180); En la primera línea, Realiza la lectura de datos por el pin A2 (en el que se encuentra conectado el potenciómetro), y luego almacena el dato en la variable Valbase. En la segunda línea convierte el valor que almacena esta variable escalándolo del rango de 1023 a 180 Luego se le indica a Arduino que se realizara el envío (escritura) de información al motor con la instrucción “ Base.write(Valbase)”, el efecto generado será un movimiento del servomotor con el valor que contiene la variable “Valbase”. Este valor equivale a una posición determinada tal y como se muestra en la figura: Al iniciar la simulación nos podremos evidenciar que, al cambiar la posición del potenciómetro, El servomotor iniciará el movimiento obedeciendo la posición indicada.