Archivo de la categoría: Arduino

Presentación Arduino Avanzado 2018

Objetivos

El objetivo de este curso es ampliar conocimientos sobre la plataforma Arduino a los alumnos que han realizado anteriormente el curso de Iniciación Arduino de http://www.aprendiendoarduino.com/  o aquellos que ya tienen conocimientos sobre la plataforma y experiencia en la realización de proyectos con Arduino.

Al finalizar el curso el alumno será capaz de realizar proyectos complejos, conocer la programación de Arduino más allá del core de Arduino, interactuar con el mundo exterior a través de órdenes enviadas desde un ordenador o desde un dispositivo móvil y comunicarse a través de Internet. También será capaz de crear sus propias librerías o modificar las existentes para mejorar las funcionalidades.

Requisitos

Para la realización de este curso es necesario haber realizado la primera parte de este curso o tener conocimientos y experiencia en la creación de proyectos con Arduino. También es necesario conocimientos de programación (especialmente C++), redes TCP/IP y protocolos de comunicación, microcontroladores, electrónica, uso de sensores, actuadores, motores, etc…

Es recomendable un conocimiento medio de Inglés puesto que gran parte de la documentación está en Inglés.

Metodología

El curso se compone de una combinación de teoría y práctica donde se profundiza en el conocimiento de la plataforma Hardware y Software de Arduino y otros hardware compatibles, con una duración total de 25 horas. Al final del curso se realizarán proyectos donde se pondrán en práctica los conocimientos y habilidades adquiridas, aplicando los conceptos aprendidos durante el curso.

Los recursos utilizados para la realización de este curso son:

Además están disponibles otros recursos para ampliar información:

Es posible interactuar en el curso mediante:

Para realizar las prácticas de este curso se usará:

Toda la documentación será on-line con el objetivo de mantenerla actualizada y no con un documento físico que se queda obsoleto rápidamente. Después de finalizar el curso toda la documentación on-line seguirá estando disponible de forma pública.

Todo el material entregado es en préstamo y debe cuidarse al máximo, a la hora del montaje de las prácticas se seguirán las instrucciones para evitar dañar los componentes.

Toda la documentación está liberada con licencia Creative Commons.

Reconocimiento – NoComercial – CompartirIgual (by-nc-sa): No se permite un uso comercial de la obra original ni de las posibles obras derivadas, la distribución de las cuales se debe hacer con una licencia igual a la que regula la obra original.

Aprendiendo Arduino by Enrique Crespo is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.

Organización del curso

Duración total de 25 horas. El curso se celebra del 9 al 14 de julio de 2018 de Lunes a Viernes en horario de 17.30 a 21.30 y sábado de 9:00 a 14:00. Se hará un descanso de 10-15 minutos aproximadamente a mitad de la sesión antes de empezar con la parte práctica.

Capítulos y temario del curso: https://aprendiendoarduino.com/cursos/arduino-avanzado-2018/

Cada día de curso de compone de 3 partes diferenciadas:

Aclaraciones sobre el curso

Arduino es una plataforma ampliamente usada por aficionados (makers) y para prototipado y puede verse como un “juguete”, pero en este curso vamos a usarlo para implantarlo en cualquier aplicación que necesitemos tanto para un uso profesional como personal/aficionado. Veremos cómo aplicar su uso en diversos entornos como prototipado, robótica, fabricación, eficiencia energética, domótica, IoT, comunicaciones, DAQ, monitorización, educación, etc… y especialmente en este curso su aplicación a la industria.

La principal ventaja de usar una plataforma de este tipo es el rápido despliegue de una nueva aplicación y la facilidad de programación. A lo largo del curso se van a ver muchos conceptos de diferentes tecnologías como electrónica digital y analogica, electricidad, programación, microcontroladores, tratamiento de señales, bases de datos, protocolos de comunicación, arquitectura de procesadores, mecánica, motores, diseño de placas electrónicas etc… todo ello con Arduino como nexo de unión

Presentaciones

Arduino tiene muchos ámbitos de aplicación, desde el sector agrícola, fabricación, eficiencia energética, robótica, monitorización, educación, etc…

  • Experiencia con Arduino?
  • Conocimientos de electrónica?
  • Conocimientos de programación?
  • Proyectos con Arduino?
  • Qué te gustaría aprender en este curso?

Contacto

Para cualquier consulta durante el curso y en cualquier otro momento mediante email: aprendiendoarduino@gmail.com

Twitter @jecrespo: https://twitter.com/jecrespom

Y más información sobre el curso y el autor: http://www.aprendiendoarduino.com/acerca-de/

Anuncios

Saber más Arduino Avanzado 2018

Día 1: “Repaso Conceptos Arduino”

Programación Arduino:

Concursos Arduino:

Capítulos Vistos Día 1:

Día 2: “Programación Avanzada Arduino”

Medir valor de un condesador: Prácticas Repaso Arduino

Capítulos Vistos Día 2:

Día 3: “Comunicaciones Arduino I”

Tratamiento Avanzado de Strings: https://aprendiendoarduino.wordpress.com/2018/07/09/tratamiento-avanzado-de-strings-2/

Debug con Arduino: https://aprendiendoarduino.wordpress.com/2017/07/13/debug-con-arduino/

Capítulos Vistos Día 3:

Día 4: “Comunicaciones Arduino II”

Finalizar clases y objetos: https://aprendiendoarduino.wordpress.com/2017/07/08/clases-y-objetos/

Capítulos Vistos Día 4:

Día 5: “Hardware Avanzado Arduino”

Bluetooth en Arduino: https://aprendiendoarduino.wordpress.com/2016/11/13/bluetooth-en-arduino/

Solución a los problemas encontrados con los módulos bluetooth HC-05:

  • Con algunos módulos toca hacer investigación de como usarlos si no hay documentación adecuada.
  • En otros módulos, cambiar de modo configuración (AT command) a modo transmisión, es más sencillo, simplemente poniendo un pin a HIGH.
  • En Bluetooth, el dispositivo que inicia la conexión es siempre el master, solo es necesario saber cual es el master y el esclavo en el momento de la conexión, después es posible cambiar el rol.
  • Una vez realizada la conexión, puede tener lugar un cambio de rol. Un buen ejemplo de por qué ocurre esto sería cuando un ratón se conecta al PC. El ratón inicia la conexión, por lo que es el maestro. Una vez establecida la conexión, se produce un cambio de función para que el PC se convierta en el maestro y el ratón en un esclavo. El cambio de rol tiene lugar porque el PC puede estar trabajando con múltiples dispositivos al mismo tiempo, y como tal, el PC no sería esclavo de más de un dispositivo.
  • Bluetooth profiles: https://learn.sparkfun.com/tutorials/bluetooth-basics/bluetooth-profiles
  • Los módulos sin led azul dan problemas al emparejar ¿porqué?

HC-05 module:

  • No es necesario usar el pin de EN para poner en modo de configuración.
  • Command set: http://rhydolabz.com/documents/HC-05%20AT%20Commamd.pdf
  • Review del módulo: http://rhydolabz.com/documents/HC-05_datasheet.pdf
  • Datasheet del módulo: http://cesaretopia.com/wp-content/uploads/2017/03/Modulo-Bt.pdf
  • Por defecto al iniciar parpadea rápido y no esta en modo programación. Podemos conectarnos.
  • Si pulso el botón entro en modo programación y puedo pasar comandos AT durante un tiempo (aprox 1 minuto). Sigue parpadeando rápido y me podría conectar
  • Si inicio el modulo con el botón pulsado entro en modo permanente y parpadea lento. En este modo no puedo conectarme
  • Para salir del módulo de programación pulsar AT+RESET y ya puedo conectarme y parpadea rápido
  • Una vez conectado un dispositivo si pulso en botón no entro en modo programación salvo que desconecte el dispositivo. O si mantengo pulsado el botón puedo mandar comando para programar y al soltar sigo conectado.

Como emparejar:

  • To initialize the SPP profile, use AT+INIT. Getting error message as response indicates that the command was already given.
  • AT+INQ sends inquiry request to the slaves. You will get the address, Device class and signal strength. e.g, +INQ:1014:7:103115,0,7FFF.  The LED D1(blue) blinks fastly in inquiry stage
  • Optionally you can send command to get name by using AT+RNAME?<address>. The full colon in the address must be  replace with commas. eg; AT+RNAME?1014,7,103115.
  • Send AT+LINK to pair with slave. If slave response OK, the connection is established.Led D2(yellow) become on.

Comandos interesantes

  • AT+ORGL: Restore default
  • AT+ADDR: get module address
  • AT+RMAAD: Delete all authenticated previous paired devices
  • AT+CMOD: Set/Check connect mode
  • AT+UART: Set communication baudrate
  • AT+BAUD: ¿?
  • AT+LINK: Connect Device
  • AT+CMODE=1 helps to connect any address

Default settings (ojo que van diferentes los baud rate en modo configuración y modo comunicación):

  • Baud rate in communication mode = 9600 (se cambia con AT+UART:38400,0,0)
  • Baud rate in AT/Command mode = 38400 (AT+BAUD¿?)

Aplicaciones:

Capítulos Vistos Día 5:

Día 6: “Manejo Avanzado Arduino”

Capítulos Vistos Día 6:

Programación en las Escuelas

Una de las grandes ventajas en llevar a cabo proyectos con Arduino, aparte de su sencillez y las enormes posibilidades de comunicar e interaccionar con los objetos, es que podemos utilizar un buen surtido de herramientas de programación gráfica con lo que nos ahorraremos bastante tiempo durante el aprendizaje y el diseño del software.

En este taller hemos optado por centrarnos: mBloq, Snap4Arduino y Visualino.

Dirigido a:

  • Profesores que tengan que abordar la programación de Arduino con sus alumnos en los niveles de ESO, Bachillerato, Formación Profesional y Universidad.
  • Alumnos que estudien la plataforma Arduino y sus aplicaciones.
  • Aficionados y entusiastas de Arduino.
  • Artistas y diseñadores que trabajen con Arduino.
  • Interesados en las aplicaciones educativas y de interacción con Scratch.

Cada vez hay más defensores de enseñar programación en la educación obligatoria por mil motivos, pero especialmente porque va a ser difícil entender el mundo digital que estamos viviendo y que viene sin conceptos de programación, y además porque este es uno de los puntos que más se atascan en algunos centros: ¿Programación, de acuerdo… pero qué?

Por debajo de los 14 -15 años, prima aprender a programar jugando y definitivamente con un sistema de bloques: Scratch, Scratch for Arduino S4A, App inventor y similares y hasta mBlock. Todos estos lenguajes están basados en una lógica de bloques de colores que encajan o no entre sí de modo que se va completando una secuencia de operaciones clara, que representa el programa que cargaremos en el sistema de ejemplo.

Sea cual sea de los diferentes lenguajes el que se elija depende mucho del gusto del profesor y de los objetivos del centro, pero la razón básica de estos lenguajes es enseñar al alumno a pensar en los conceptos de programas secuenciales. Y es eso se consigue con cualquiera de ellos.

Parece que hay un acuerdo de empezar por Scratch que puede correr en un PC cualquiera, a partir de unos 8 años (antes puede usarse sea Makey Makey) e ir poco a poco incorporando conceptos como la programación de móviles Android con App Inventor e ir después a Arduino con S4A (Scratch for Arduino) porque es una manera muy sencilla de iniciarse no solo ya con la programación, sino también con la relación de los programas y el mundo físico.

Cuando vayamos acercándonos al final de la educación básica, la robótica con mBlock se ajusta magníficamente a todos estos conceptos y nos permitirán fijar ideas básicas de múltiples conceptos de un modo natural al ver los robots moviéndose. mBlock es ideal para todos los temas de robótica y es el paso siguiente a Scratch.

Una cuestión clave en todo esto es que parece haber un consenso general por ahí de no iniciar en C++ con Arduino a los chavales antes de los 14-15 años. La programación simbólica mediante frases propia de los lenguajes de alto nivel, no parece encajar con el desarrollo promedio de las personas de esta edad.

Más información: https://www.prometec.net/formacion-en-tecnologia-y-robotica-i/

Documentar Proyectos Educativos

A la hora de realizar un proyecto de cualquier tipo y especialmente en educación, es importante documentar adecuadamente los proyectos. Disponemos de muchas herramientas on-line para poder hacerlo.

Además en el uso de hardware libre cobra especial importancia documentar el proyecto no solo para nosotros mismos o los alumnos sino para compartir con la comunidad y que nuestros proyectos sean replicado e incluso mejorados por otras personas, pueda reutilizarse el material y extendamos el conocimiento libre con nuestro trabajo.

Un magnífico ejemplo de todos esto es el proyecto El Cable Amarillo http://www.elcableamarillo.cc/. Proyecto educativo para fomentar el uso de la Programación y Robótica en los centros educativos de Murcia.

Fritzing

Fritzing es el programa por excelencia para la realización de esquemas eléctricos en proyectos con Arduino y es open source. Dispone bibliotecas con la mayoría de componentes (http://fritzing.org/parts/), incluido los propios Arduinos, placas de conexiones, led, motores, displays, etc. Además permite hacer esquemas eléctricos, diseñar nuestro PCB final y un sinfín de opciones que convierten a este programa en una herramienta muy útil.

También nos permitirá obtener el esquema eléctrico, listado de componente usados y el diagrama para poder fabricar la PCB. Luego podemos solicitar que nos hagan la pcb con el servicio Fritzing Fab: https://go.aisler.net/fritzing. Nos permitiría diseñar un shield propio y que nos los construyan.

Podemos explorar otros proyectos y usarlos: http://fritzing.org/projects/

Para aprender más sobre Fritzing: http://fritzing.org/learning/

Librería de partes: http://fritzing.org/parts/

Fritzing no es un simulador, pero las nuevas versiones de Fritzing permite guardar el código de un diseño e incluso cargarlo en Arduino.

Enlaces:

Arduino Project Hub

Arduino project hub: https://create.arduino.cc/projecthub

Arduino Project Hub es un lugar donde poder ver proyectos realizados con Arduino y también poder compartir los proyectos propios.

Cuando queremos publicar un proyecto en Arduino Project Hub es muy sencillo porque separa por apartados todo lo que tenemos que documentar el proyecto:

  • Nombre del Proyecto
  • Imagen de portada
  • Nivel de dificultad
  • Historia de Proyecto
  • Lista de Materiales (BOM)
  • Aplicaciones y Servicios On-line Usados
  • Descripción de proyecto
  • Herramientas
  • Esquemáticos y diagramas de circuito
  • CAD
  • Código

Cómo enviar un proyecto: https://create.arduino.cc/projecthub/Arduino_Genuino/how-to-submit-content-on-arduino-project-hub-cf2177

Guideline: https://create.arduino.cc/projecthub/guidelines

Arduino Project Hub está basado en Hackster: https://www.hackster.io/

Arduino Web Editor

Arduino.cc ha sacado un IDE on-line llamado Arduino Web Editor que puede usarse en lugar del IDE que acabamos de ver. Este IDE on-line está dentro del proyecto Arduino Create accesible desde https://create.arduino.cc/ y incluye varios apartados.

Para usar este IDE es necesario instalar un plugin y mediante este wizard online es posible instalarlo: https://create.arduino.cc/getting-started/plugin

También es importante señalar que es necesario crearse una cuenta de arduino.cc para poder usar este IDE on-line.

Getting started con Arduino Web Editor: https://create.arduino.cc/projecthub/Arduino_Genuino/getting-started-with-the-arduino-web-editor-4b3e4a

Arduino Web editor no solo permite publicar el código hecho sino también genera un fichero de documentación y pueden subirse imágenes y esquemas de montaje.

Sigfox Bike Tracking: https://www.hackster.io/aprendiendoarduino/bike-tracking-system-with-dead-man-alert-22da0b

Instructables

Instructables es la web más usada para publicar cualquier tutorial, paso a paso o proyecto que hagamos y no solo de Arduino, sino de cualquier otra cosa, desde una tarta o un disfraz hasta el montaje de una red inalámbrica para IoT.

Web: https://www.instructables.com/

Instructables Arduino: https://www.instructables.com/howto/Arduino/

Instructables Electrónica: https://www.instructables.com/classes/tagged/electronics/

Instructables mBlock: https://www.instructables.com/id/mBlock/

Tutorial de uso de Instructables: https://www.instructables.com/about/create.jsp

Halloween candy Counter: https://www.instructables.com/id/Halloween-Candy-Counter/

Tinkercad

Tinkercad es un software gratuito online creado por la empresa Autodesk, una de las empresas punteras en el software de diseño 3D.

Tinkercad: https://www.tinkercad.com/

Tinkercad ofrece:

  • Aplicación de diseño e impresión 3D
  • Simulador de circuitos, incluido Arduino
  • Diseños 3D interactivos con electrónica:
  • Publicar nuestro proyectos
  • Ver otros proyectos y clonarlos: https://www.tinkercad.com/things/v2#/things

Tinkercad ciircuitos https://www.tinkercad.com/circuits

Y más…

Github

GitHub es una forja (plataforma de desarrollo colaborativo) para alojar proyectos utilizando el sistema de control de versiones Git. Se utiliza principalmente para la creación de código fuente de programas de computadora.

Web: https://github.com/

Características

  • Wiki para cada proyecto.
  • Página web para cada proyecto​
  • Gráfico para ver cómo los desarrolladores trabajan en sus repositorios y bifurcaciones del proyecto.
  • Funcionalidades como si se tratase de una red social, por ejemplo, seguidores.
  • Herramienta para trabajo colaborativo entre programadores.
  • Gestor de proyectos de estilo Kanban.

Github puede ser una excelente herramienta de documentación, pero es más compleja de usar y solo es adecuada para usuarios avanzados.

Los documentos con formato se escriben en Markdown https://es.wikipedia.org/wiki/Markdown

Proyectos Básicos con Arduino

Proyectos básicos de programación Arduino con mBlock. mBlock es un entorno gráfico de programación por bloque para Arduino, que permite introducir de forma sencilla la programación y robótica en el aula.

mBlock se compone de 5 partes principalmente:

  • Grupo de instrucciones clasificadas por colores en las siguientes categorías:
    • Movimiento: Conjunto de instrucciones relacionadas con el control de los pines de la tarjeta de Arduino, así como el control del movimiento de cualquier personaje del escenario.
    • Apariencia: Instrucciones orientadas a modificar el aspecto de los personajes de nuestra aplicación. Para el caso de Arduino, es un conjunto de instrucciones que apenas se utiliza.
    • Sonido: Conjunto de instrucciones relacionadas con la elaboración de aplicaciones musicales, emitiendo sonidos y notas musicales.
    • Lápiz: Scratch nos ofrece la posibilidad de que los personajes dejen un rastro durante sus movimientos por el escenario como si arrastrase un lápiz durante su trayectoria.
    • Control: Las instrucciones incluídas en esta sección son impresindibles para crear la lógica de nuestros programas. Incluyen condicionales, bucles y llamadas de procedimientos.
    • Sensores: Instrucciones de iteración con el ratón, el teclado, sonidos y los personajes.
    • Operadores: operaciones matemáticas, lógicas y con cadenas de texto.
    • Variables: Instrucciones para el almacenamiento y gestión de datos.
  • Instrucciones de programación: Las instrucciones de cada grupo corresponden a instrucciones de programación.
  • Editor: Es la parte principal donde estructuramos y programamos nuestro programa.
    • Programas: Se compone de todas las instrucciones que hace funcionar el código que programemos.
    • Disfraces: Cada objeto puede tener diferentes apariencias o disfraces para utilizar a lo largo de nuestro programa.
    • Sonido: También es posible añadir o grabar sonidos y guardarlos para futuros usos.
  • Escenario o ventana principal: Es el resultado de nuestro programa.
  • Objetos y sprites: Distinguimos principalmente los objetos de tipo Arduino y Sprites.
    • Los objetos de tipo arduino son aquellos que interactuán con Arduino.
    • Los sprites son similares al entorno de scratch y no interactúan con Arduino.

Instalar mBlock es muy sencillo, toda las instrucciones están disponibles desde la web: https://www.makeblock.es/soporte/mblock/

Web de descarga: http://www.mblock.cc/software/

mBlock ha sacado una beta de un entorno de programación on-line en http://editor.makeblock.com/ide.html

Más información sobre mBlock: https://aprendiendoarduino.wordpress.com/2017/09/08/programacion-visual-con-mblock/

Modo Ejecutar Programa desde PC

En este modo es necesario siempre tener el Arduino o el robot siempre conectado al PC.

Para usar este modo 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.

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 “Conectar > Actualizar Firmware” y esperamos a que termine de cargarlo.

Tutoriales de uso:

Modo Subir Programa a Arduino

En este modo no cargamos un firmware a la placa sino que sube el programa al Arduino. En este modo usamos como inicio del programa el bloque “Programa de Arduino” que se encuentra en la categoría “Robots”.

Para este modo 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.

Luego para subir el sketch al ordenador pulsamos sobre el botón “Subir a Arduino” y esperamos a que termine de cargar.

Tutorial para usar Arduino con mBlock:

Más información:

Semáforo Simple

En esta práctica vamos a crear un semáforo simple con una frecuencia de cambio de 5 segundos en verde y rojo, y 1 segundo durante su estado en ámbar.

Tutorial: https://github.com/ElCableAmarillo/Listado-de-practicas/tree/master/Salidas-digitales/Sem%C3%A1foro-simple

Movimiento de un Servomotor

En esta práctica el servomotor se mueve desde su posición origen a su posición final en ángulos de 10° repetidamente.

Tutorial: https://github.com/ElCableAmarillo/Listado-de-practicas/tree/master/Salidas-anal%C3%B3gicas/Movimiento-de-un-servomotor

Pulsador Simple

En esta práctica vamos a programar un interruptor para encender un led en un momento dado.

Tutorial: https://github.com/ElCableAmarillo/Listado-de-practicas/tree/master/Entradas-digitales/Pulsador-simple

Detectando Colores

En esta práctica tenemos que detectar los colores por los cuales se mueve nuestro personaje para activar los diferentes diodos Led de la placa de prototipado.

Tutorial: https://github.com/ElCableAmarillo/Listado-de-practicas/tree/master/Pr%C3%A1cticas-de-iniciaci%C3%B3n/mBlock/Detectando-colores

Brújula con Servo

En esta práctica vamos a mover un servo mediante las flechas del teclado y activando sendos diodos Led al final de carrera.

Tutorial: https://github.com/ElCableAmarillo/Listado-de-practicas/tree/master/Pr%C3%A1cticas-de-iniciaci%C3%B3n/mBlock/Br%C3%BAjula-con-servo

Más sobre programación por bloques en el Taller de Programación Visual Arduino: https://www.aprendiendoarduino.com/talleres-arduino/arduino-day-2018-logrono/taller-programacion-visual-arduino/

Más información: