Archivo de la etiqueta: Arduino

Presentación Curso Arduino para Empresas

Curso Arduino Empresas de 20 horas de duración.

Este es un curso de iniciación pensado para empresas que quieren usar Arduino como una herramienta más en sus sistemas de monitorización, automatización de procesos o para realizar I+D+i.

Objetivos

El objetivo de este curso es introducir en la empresa Arduino y por extensión el hardware libre, como una herramienta de trabajo para mejorar los procesos y para implantar de una forma sencilla y barata el I+D+i en cualquier empresa. Con este curso los alumnos adquirirán unos conocimientos que podrán aplicar en el trabajo diario, posibilitando mejoras en los procesos y supervisión de las operaciones.

Otro objetivo es introducir la filosofía maker dentro de la empresas con el beneficio que ello puede traer a la propia empresa, como el trabajo colaborativo, la propuesta de mejoras, proactividad, nuevas ideas, automatización de tareas repetitivas, etc…

El alumno obtendrá los conocimientos necesarios para ser capaz de realizar proyectos de nivel medio con cualquiera de las diferentes placas Arduino o compatibles.

Al finalizar el curso el alumno será capaz de:

  • Manejar la plataforma Arduino
  • Conocer el lenguaje de programación
  • Programar y ejecutar programas en la plataforma Arduino y compatibles
  • Usar eficazmente el entorno de programación
  • Conocer el potencial de Arduino para usar en casi cualquier tipo de aplicación
  • Aprender a manejar componentes de hardware para recibir señales externas mediante sensores
  • Controlar elementos que nos rodean para interactuar con el mundo físico mediante los actuadores
  • Conectar a Internet Arduino
  • Y mucho más…

Uso de Arduino en Empresas

Las empresas donde poder usar Arduino como una herramienta adicional de trabajo son casi cualquiera, pero dentro del sector industrial cabe destacar empresas en los sectores:

  • Mantenimiento de edificios públicos y privados
  • Mantenimiento industrial
  • Manufactura de cualquier tipo
  • Logística
  • Procesos Industriales
  • Desarrollo de nuevos productos
  • Generación de energía
  • Seguridad
  • etc…

Y algunas de las aplicaciones puede ser:

  • Monitorización en Tiempo real de cualquier parámetro
  • Monitorización de servicios
  • Mejora de monitorización sobre autómatas/sacada
  • Control de producción
  • Alertas precoces
  • Control remoto de instalaciones
  • Eficiencia energética
  • Automatización de procesos
  • Automatización de informes/Cuadros de mando
  • Mantenimientos predictivos
  • PRL
  • Análisis de histórico de datos
  • Machine Learning/Aprendizaje automático
  • Análisis de variables importantes es procesos
  • Seguridad
  • etc…

Requisitos

Este curso parte desde cero, por lo que no son necesarios unos conocimientos previos, pero sí son recomendables conocimientos básicos de programación (especialmente C++), electricidad y electrónica.

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 que establecen las bases necesarias para entender la plataforma Hardware y Software de Arduino, con una duración de 20 horas. Este curso está estructurado en 8 jornadas de 2,5 horas.

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

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

Para realizar las prácticas de este curso es necesario al menos un Arduino de cualquier tipo y un shield de acceso a internet de cualquier tipo o una placa basada en ESP8266 o de otro tipo compatible con Arduino.

La documentación está disponible on line con el objetivo de mantenerla actualizada y no como un documento físico que se queda obsoleto al día siguiente. Además la documentación irá creciendo durante el curso y después de finalizar el curso seguirá estando disponible para todos. La documentación principal se encuentra en http://www.aprendiendoarduino.com/.

El repositorio de código del curso y mucho más código está disponible en github en http://github.com/jecrespo y está aumentando continuamente con nuevos ejemplos y prácticas.

Toda la documentación y código es liberado 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.

Como Empezar con Arduino

Para empezar con Arduino debes preguntarte qué sabes de electrónica y qué sabes de programación. Si no sabes de electrónica, es difícil entender cómo funcionan los elementos con los que va a interactuar la placa Arduino y si no sabes de programación no va a ser posible traducir las órdenes que deseas hacer a la electrónica para que las ejecute Arduino.

La gran ventaja de Arduino es que no es necesario ser un experto en cada una de esas áreas, nos ofrece una capa de programación muy sencilla y el HW es muy sencillo de manejar sin saber mucho de electrónica.

Para empezar con Arduino hay que aprender electrónica y a programar y eso es lo que vamos a aprender en este curso entre otras cosas.

Artículos de como empezar con Arduino:

Un buen tutorial para los que están empezando lo puedes ver en https://openwebinars.net/tutorial-de-arduino/

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 aprender a programarlo y usarlo para implantarlo en cualquier aplicación que necesitemos tanto para un uso profesional como personal/aficionado. 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.

Arduino se trata principalmente como una herramienta para prototipado y usada en el mundo del hobby, pero aquí vamos a ir más allá y lo trataremos como una herramienta profesional que puede abarcar multitud de sectores.

A lo largo del curso se van a ver muchos conceptos de diferentes tecnologías que a priori no tienen nada que ver entre ellos: electronica 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…

Este curso es totalmente dinámico y cualquier inquietud o necesidad que se tenga de un aspecto en concreto de Arduino se puede incluir en el curso.

Existe mucha documentación sobre Arduino en Internet, pero eso es un problema y a veces está desordenado o es demasiado básico, así que una parte de mi trabajo es recopilar la información más interesante, ordenarla y estructurarla.

Acerca de Enrique Crespo

El autor del curso es Enrique Crespo. Llevo trabajando con Arduino desde el año 2011 y en el año 2014 empecé mi andadura como profesor de Arduino y otros temas relacionados. Desde entonces he impartido muchos cursos presenciales de Arduino, talleres y conferencias en diversos lugares. También colaboro en el makerspace de la Universidad de la Rioja UR-maker.

Todos los cursos, talleres y conferencias que he impartido puedes verlos en https://www.aprendiendoarduino.com/, donde publico toda la documentación y código.

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

Linkedin: https://www.linkedin.com/in/enriquecrespo/

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 Empresas

Día 1: “Presentación del curso”

Capítulos Vistos:

Día 2: “Hardware Arduino”

USB System Architecture

Capítulos Vistos:

Día 3: “Librerías Arduino”

Capítulos Vistos:

Día 4: “Programación Arduino I”

Capítulos Vistos:

Día 5: “Programación Arduino II”

Cadena de valor de IoT:

recoger datos — conectar — almacenar — analizar — mostrar — actuar — predecir

Capítulos Vistos:

Día 6: “Manejo Arduino”

Capítulos Vistos:

Día 7: “Comunicaciones Arduino”

Capítulos Vistos:

Día 8: “Comunicaciones Arduino IP”

Capítulos Vistos

Ejemplos Ethernet Arduino

IMPORTANTE: Para los ejercicio con conexión Ethernet es imprescindible poner en la MAC del Arduino en los dos últimos dígitos el número del kit. En todos los sketchs hay que sustituir YY por el número de kit.

Para las prácticas la IP de los Arduinos se asignará dinámicamente por DHCP, en este caso ya nos asigna también el servidor DNS y por lo tanto podemos usar nombres de páginas web

Conexión a una Web con Arduino

Crear un cliente ethernet que se conecte varias webs y escriba por consola los datos recogidos. También guarde los datos recibidos en un string. Probar a conectar a varias páginas web y usa el servicio DNS poniendo la url en lugar de la IP.

Webs:

Tutorial: webclient con ejemplo de métodos get y post: http://playground.arduino.cc/Code/WebClient

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio35-EthernetClient_DHCP

Web Server

Crear un servidor web sencillo que saque por el puerto serie y también devuelva al navegador que le ha llamado la petición http recibida.

Luego añadir el valor leído en la entrada analógica A0.

Avanzado: Modificar el ejercicio anterior y leer solo la línea de la petición, esto es útil cuando hay que analizar el http request y que Arduino devuelva una cosa u otra en función de la petición que llegue. Quitar comentarios en el bucle que lee los caracteres recibidos y ver lo que ocurre. Fijarse que el tiempo de bucle en este caso es más rápido y esto tiene ventajas.

Tutorial webserver: http://playground.arduino.cc/Code/WebServerST

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio39-EthernetServer_DHCP

Hardware Ethernet en Arduino

El Arduino ethernet shield nos da la capacidad de conectar un Arduino a una red ethernet. Es la parte física que implementa la pila de protocolos TCP/IP.

Está basada en el chip ethernet Wiznet W5100. El Wiznet W5100 provee de una pila de red IP capaz de soportar TCP y UDP. Soporta hasta cuatro conexiones de sockets simultáneas. Usa la librería Ethernet para leer y escribir los flujos de datos que pasan por el puerto ethernet. Me permitirá escribir sketches que se conecten a internet usando esta shield.

Datasheet de W5100: https://www.sparkfun.com/datasheets/DevTools/Arduino/W5100_Datasheet_v1_1_6.pdf

Librería ethernet: http://arduino.cc/en/Reference/Ethernet

El shield provee un conector ethernet estándar RJ45. La ethernet shield dispone de unos conectores que permiten conectar a su vez otras placas encima y apilarlas sobre la placa Arduino.

Arduino usa los pines digitales 10, 11, 12, y 13 (SPI) para comunicarse con el W5100 en la ethernet shield. Estos pines no pueden ser usados para e/s genéricas.

El botón de reset en la shield resetea ambos, el W5100 y la placa Arduino.

La shield contiene varios LEDs para información:

  • ON: indica que la placa y la shield están alimentadas
  • LINK: indica la presencia de un enlace de red y parpadea cuando la shield envía o recibe datos
  • 100M: indica la presencia de una conexión de red de 100 Mb/s (de forma opuesta a una de 10Mb/s)
  • RX: parpadea cuando el shield recibe datos
  • TX: parpadea cuando el shield envía datos

El jumper soldado marcado como “INT” puede ser conectado para permitir a la placa Arduino recibir notificaciones de eventos por interrupción desde el W5100, pero esto no está soportado por la librería Ethernet. El jumper conecta el pin INT del W5100 al pin digital 2 de Arduino.

El slot SD en la shield usa la librería http://arduino.cc/en/Reference/SD para manejarlo. El propio chip W5100 incluye el manejo de tarjetas SD.

Para usar la Ethernet Shield solo hay que montarla sobre la placa Arduino. Para cargar los sketches a la placa con el shield, conectarla al ordenador mediante el cable USB como se hace normalmente. Luego conectar el puerto Ethernet a un ordenador, a un switch o a un router utilizando un cable ethernet standard (CAT5 o CAT6 con conectores RJ45). La conexión al ordenador puede requerir el uso de un cable cruzado (aunque muchos ordenadores actuales, pueden hacer el cruce de forma interna).

Un tutorial sencillo para comenzar con el shield ethernet en: http://www.artinteractivo.com/arduino-ethernet

Para cualquier duda sobre el ethernet Shield consultar: http://arduino.cc/en/Main/ArduinoEthernetShield

Puntos a recordar del Ethernet Shield:

  • Opera a 5V suministrados desde la placa de Arduino
  • El controlador ethernet es el W5100 con 16K de buffer interno. No consume memoria.
  • El shield se comunica con el microcontrolador por el bus SPI, por lo tanto para usarlo siempre debemos incluir la libreria SPI.h: http://arduino.cc/en/Reference/SPI
  • Soporta hasta 4 conexiones simultáneas
  • Usar la librería Ethernet para manejar el shield: http://arduino.cc/en/Reference/Ethernet
  • El shield dispone de un lector de tarjetas micro-SD que puede ser usado para guardar ficheros y servirlos sobre la red. Para ello es necesaria la librería SD: http://arduino.cc/en/Reference/SD
  • Al trabajar con la SD, el pin 4 es usado como SS.

Arduino UNO se comunica con W5100 y la tarjeta SD usando el bus SPI a través del conector ICSP. Por este motivo los pines 10, 11, 12 y 13 en el UNO y los 50, 51, 52 y 53 en el Mega no podrán usarse. En ambas placas los pines 10 y 4 se usan para seleccionar el W5100 y la tarjeta SD. El Ethernet y el SD no pueden trabajar simultáneamente y debemos tener cuidado al usar ambos de forma conjunta.

Para conectar el shield, se deben seguir estas instrucciones: http://arduino.cc/en/Guide/ArduinoEthernetShield

El esquemático lo podéis encontrar en: http://arduino.cc/en/uploads/Main/arduino-ethernet-shield-06-schematic.pdf

Arduino Ethernet Shield 2

Arduino Ethernet Shield es una placa que aparece en la web de arduino.cc como retirado, pero sigue estando disponible como clones o versiones derivadas.

Existe una nueva versión del Ethernet Shield llamadal Arduino Etherner Shield 2 con el nuevo Wiznet 5500: https://www.arduino.cc/en/Main/ArduinoEthernetShield

Este Shield usa la librería Ethernet 2 cuya sintaxis es igual que la librería Ethernet: https://www.arduino.cc/en/Reference/Ethernet

Data sheet de W5500: https://www.sos.sk/productdata/15/26/12/152612/W5500_datasheet_v1.0.2_1.pdf

Mejoras de W5500: https://feilipu.me/2014/11/16/wiznet-w5500-ioshield-a/

Otros Arduinos con Ethernet

Existe un Arduino Ethernet que es casi igual a un arduino UNO + Ethernet Shield: https://www.arduino.cc/en/Main/arduinoBoardEthernet

También existe el Arduino Leonardo ETH que es casi lo mismo que un Arduino Leonardo + un Ethernet Shield 2: https://www.arduino.cc/en/Main/ArduinoBoardLeonardoEth

Práctica: Uso Ethernet Shield

IP Dinámica con Arduino. DHCP

Configurar Arduino con el ethernet shield de forma que coja la IP dinámicamente por DHCP y lo muestre por pantalla.

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio32-DHCP

IP Fija con Arduino

Configurar Arduino con el ethernet shield de forma que le asignamos una IP fija con la siguiente configuración:

  • IP: 192.168.6.1YY. Siendo YY el número = 30 + número del kit. Por ejemplo para el kit 4 la IP es la 192.168.6.134 y para el kit 16 la IP es es 192.168.6.146.
  • Subnent: 255.255.255.0
  • Gateway: 192.168.6.1
  • DNS: 8.8.8.8

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio33-Configurar_IP

Entradas y Salidas Analógicas Arduino. PWM

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.

Un sistema de control (como un microcontrolador) no tiene capacidad alguna para trabajar con señales analógicas, de modo que necesita convertir las señales analógicas en señales digitales para poder trabajar con ellas.

La señal digital obtenida de una analógica tiene dos propiedades fundamentales:

En el caso de un arduino Uno, el valor de 0 voltios analógico es expresado en digital como B0000000000 (0) y el valor de 5V analógico es expresado en digital como B1111111111 (1023). Por lo tanto todo valor analógico intermedio es expresado con un valor entre 0 y 1023, es decir, sumo 1 en binario cada 4,883 mV.

Arduino Uno tiene una resolución de 10 bits, es decir, unos valores entre 0 y 1023.

Arduino Due tiene una resolución de 12 bits, es decir, unos valores entre 0 y 4095.

Diferencia entre señales analógicas y digitales:

Entradas Analógicas en Arduino

Los microcontroladores de Arduino contienen en la placa un conversor analógico a digital de 6 canales. El conversor tiene una resolución de 10 bits, devolviendo enteros entre 0 y 1023. Los pines analógicos de Arduino también tienen todas las funcionalidades de los pines digitales. Por lo tanto, si necesitamos más pines digitales podemos usar los pines analógicos. La nomenclatura para los pines analógicos es A0, A1, etc…

En arduino los pines analógicos se definen y tienen las propiedades siguientes: http://arduino.cc/en/Tutorial/AnalogInputPins

En arduino para tratar las entradas y salidas digitales usamos las siguientes funciones:

En Visualino disponemos de las funciones para leer de entradas analógicas y escribir en salidas analógicas en la agrupación de bloques “Pin Functions”.

Otras funciones interesantes con entradas/salidas analógicas:

En Visualino estás disponibles las funciones map y random en la agrupación “Math”

Salidas Analógicas. PWM

Como hemos dicho Arduino Uno tiene entradas analógicas que gracias a los conversores analógico digital puede entender ese valor el microcontrolador, pero no tiene salidas analógicas puras y para solucionar esto, usa la técnica de PWM.

Algunos pines digitales pueden usarse como salidas analógicas PWM:

Las Salidas PWM (Pulse Width Modulation) permiten generar salidas analógicas desde pines digitales. Arduino Uno no posee salidas analógicas puras, sin embargo el Arduino Due sí tiene salidas analógicas puras mediante dos DAC. El arduino due, posee dos salidas analógicas puras mediante dos conversores digital a analógico. Estos pines pueden usarse para crear salidas de audio usando la librería correspondiente.

La función para hacer una salida PWM en un pin es:

En Visualino disponemos de la función analogWrite() para escribir entradas analógicas con PWM en la agrupación de bloques “Pin Functions”.

La modulación por ancho de pulsos (también conocida como PWM, siglas en inglés de pulse-width modulation) de una señal o fuente de energía es una técnica en la que se modifica el ciclo de trabajo de una señal periódica (una senoidal o una cuadrada, por ejemplo), ya sea para transmitir información a través de un canal de comunicaciones o para controlar la cantidad de energía que se envía a una carga.

El ciclo de trabajo de una señal periódica es el ancho relativo de su parte positiva en relación con el período.

duty cycle = (tiempo que la salida está a uno o HIGH)/ (periodo de la función)

Diferentes valores de una señal PWM:

En este ejemplo se ve cómo simular con PWM una onda sinusoidal analógica.

En Arduino la frecuencia de PWM es de 500Hz. Pero es un valor que puede modificarse en caso que lo necesitemos.

En la actualidad existen muchos circuitos integrados en los que se implementa la modulación PWM, por ejemplo para lograr circuitos funcionales que puedan controlar fuentes conmutadas, controles de motores, controles de elementos termoeléctricos, choppers para sensores en ambientes ruidosos y algunas otras aplicaciones.

Definición de PWM en la web de Arduino: http://arduino.cc/en/Tutorial/PWM

Para ampliar un poco más de información sobre PWM ver: http://rufianenlared.com/que-es-pwm/

Función Tone()

No confundir PWM con la función tone() que es utilizada para generar una onda cuadrada de ciclo de trabajo 50% y frecuencia variable, con el fin de emitir sonidos audibles, modificando la frecuencia.

Más información de tone() en: https://code.google.com/p/rogue-code/wiki/ToneLibraryDocumentation