Anexo I – Material Prácticas Cursos y Requisitos Técnicos

Para realizar cualquiera de los cursos de los itinerarios es necesario:

  • Un Ordenador PC o portátil por alumno con al menos un puerto USB accesible
  • El PC de cada alumno deberá tener un sistema operativo instalado, ya sea un sistema Windows o un sistema Linux. 
  • Acceso a Internet
  • Red Wifi
  • Espacio equipado con mobiliario adecuado al número de alumnos

Todo el software y documentación utilizado en el curso es libre con licencia creative commons o similar y publicado en https://www.aprendiendoarduino.com/

Listado de material orientativo para realizar las prácticas de cada itinerario por alumno:

Material Formación Itinerario Arduino

El material necesario para realizar las prácticas del curso consiste en un Arduino Starter Kit (https://www.arduino.cc/en/Main/ArduinoStarterKit) o similar compuesto por al menos:

  • 1x Arduino UNO Rev3 o equivalente
  • 1x Cable USB
  • 1x Breadboard/Protoboard
  • 1x Adaptador para la batería de 9 Voltios
  • 30x Puentes de conexión para la protoboard (jumpers)
  • 3x Fotorresistencias LDR
  • 3x Potenciometros de 10K o equivalentes
  • 3x Pulsadores
  • 1x Sensor de temperatura (TMP36, DHT11 o similar)
  • 1x Sensor de inclinación
  • 1x LCD alfanumérico I2C (16×2 caracteres)
  • 10x LED de diferentes colores
  • 1x Motor CC 6 o 9 Voltios
  • 1x Servo motor
  • 1x Piezo Buzzer
  • Varias Resistencias de diversas capacidades
  • 1x Módulo IMU MPU6050 o equivalente
  • 1x Módulo bluetooth HC-05 o equivalente
  • 1x Breakout board relé
  • 1x Shield Ethernet
  • 1x placa compatible ESP8266 (p.e. Wemos D1 Mini o NodeMCU)
  • Otros sensores para Arduino (p.e. infrarrojos, sensor de agua, etc…)

NOTA: se aconseja que los módulo sean de tipo breakout board fáciles de conectar

Material Formación Itinerario Raspberry Pi

  • 1x Raspberry Pi con Carcasa 
  • 1x tarjeta micro SD 16Gb
  • 1x cable alimentación 
  • 1x cable HDMI
  • 1x Adaptador GPIO a protoboard
  • 1x Breadboard/Protoboard
  • 30x Puentes de conexión para la protoboard (jumpers)
  • 3x Pulsadores
  • 3x Potenciometros de 10K o equivalentes
  • 1x Sensor de temperatura (TMP36, DHT11 o similar)
  • 1x Piezo Buzzer
  • 10x LED de diferentes colores
  • 1x Conversor analógico digital MCP3008 o equivalente
  • 1x Módulo IMU MPU6050 o equivalente
  • Otros dispositivos I2C (p.e. RTC, sonda temperatura, etc…)
  • Varias Resistencias de diversas capacidades

Material Formación Itinerario ESP8266/ESP32

  • 1x Wemos D1 min o NodeMCU o equivalente
  • 1x Wemos Wifi ESP32 OLED o equivalente
  • 1 x ESP32-CAM o equivalente
  • 1x shields para wemos D1 mini relé
  • 1x shields para wemos D1 mini neopixel
  • 1x shields para wemos D1 mini oled
  • 1x Cable USB
  • 1x Raspberry Pi con Carcasa 
  • 1x tarjeta micro SD 16Gb
  • 1x cable alimentación 
  • 1x cable HDMI
  • 1x Adaptador GPIO a protoboard
  • 1x Breadboard/Protoboard
  • 30x Puentes de conexión para la protoboard (jumpers)
  • 3x Fotorresistencias LDR
  • 3x Potenciometros de 10K o equivalentes
  • 3x Pulsadores
  • 1x Sensor de temperatura (TMP36, DHT11 o similar)
  • 10x LED de diferentes colores
  • 1x Piezo Buzzer
  • Varias Resistencias de diversas capacidades
  • 1x Módulo IMU MPU6050 o equivalente

Material Formación Itinerario IoT/Industria Conectada

  • 1x Arduino UNO Rev3 o equivalente
  • 1x Wemos D1 min o NodeMCU o equivalente
  • 1x shields para wemos D1 mini relé
  • 1x shields para wemos D1 mini oled
  • 1x Moteino con comunicación LoRa
  • 1x placa ESP32 con RFM95 868MHz por alumno (Adafruit Huzzah32, TTGO,…)
  • 1x gateway LoRaWAN 868MHz de interior por grupo
  • 1x Arduino MKR 1400 para conectividad GSM + SIM (p.e. hologram)
  • 1x Cable USB
  • 1x Breadboard/Protoboard
  • 30x Puentes de conexión para la protoboard (jumpers)
  • 3x Fotorresistencias LDR
  • 3x Potenciometros de 10K o equivalentes
  • 3x Pulsadores
  • 1x Sensor de temperatura (TMP36, DHT11 o similar)
  • 10x LED de diferentes colores
  • 1x Piezo Buzzer
  • Varias Resistencias de diversas capacidades
  • 1x Módulo IMU MPU6050 o equivalente
  • Otros sensores para Arduino (p.e. infrarrojos, sensor de agua, etc…)
  • Otros dispositivos I2C (p.e. RTC, sonda temperatura, etc…)

Opcionalmente:

  • 1x Módulo Ultra low power 2.4GHz RF nRF24L01+
  • 1x Kit XBee
  • 1x Arduino MKRWAN1300
  • 1x Servidor (VPS) por alumno

Material Formación Itinerario Digitalización Profesorado

  • 1x Arduino UNO Rev3 o equivalente
  • 1x Kit montaje escornabot y herramientas para montarlo
  • 1x Micro:bit
  • 1x Shield Micro:bit para expansión
  • 1x Raspberry Pi con Carcasa 
  • 1x tarjeta micro SD 16Gb
  • 1x cable alimentación 
  • 1x cable HDMI
  • 1x Adaptador GPIO a protoboard
  • 1x Cable USB
  • 1x Breadboard/Protoboard
  • 30x Puentes de conexión para la protoboard (jumpers)
  • 3x Fotorresistencias LDR
  • 3x Potenciometros de 10K o equivalentes
  • 3x Pulsadores
  • 1x Sensor de temperatura (TMP36, DHT11 o similar)
  • 1x Sensor de inclinación
  • 1x LCD alfanumérico I2C (16×2 caracteres)
  • 10x LED de diferentes colores
  • 1x Servo motor
  • 1x Piezo Buzzer
  • Varias Resistencias de diversas capacidades
  • 1x Módulo IMU MPU6050 o equivalente
  • 1x Módulo bluetooth HC-05 o equivalente
  • 1x Breakout board relé
  • 1x placa compatible ESP8266 (p.e. Wemos D1 Mini o NodeMCU)
  • Otros sensores para Arduino (p.e. infrarrojos, sensor de agua, etc…)
  • Otros dispositivos I2C (p.e. RTC, sonda temperatura, etc…)
  • Otros Actuadores y periféricos (p.e. teclado, pantalla TFT, etc…)

Material Formación Otros Cursos

Material común:

  • 1x Arduino UNO Rev3 o equivalente
  • 1x Cable USB
  • 1x Breadboard/Protoboard
  • 30x Puentes de conexión para la protoboard (jumpers)
  • 3x Fotorresistencias LDR
  • 3x Potenciometros de 10K o equivalentes
  • 3x Pulsadores
  • 1x Sensor de temperatura (TMP36, DHT11 o similar)
  • 1x Sensor de inclinación
  • 1x LCD alfanumérico I2C (16×2 caracteres)
  • 10x LED de diferentes colores
  • 1x Piezo Buzzer
  • Varias Resistencias de diversas capacidades
  • Otros sensores para Arduino (p.e. infrarrojos, sensor de agua, etc…)
  • Otros dispositivos I2C (p.e. RTC, sonda temperatura, etc…)
  • Otros Actuadores y periféricos (p.e. teclado, pantalla TFT, etc…)

PLCs Basados en Arduino:

  • 1x M-Duino básico
  • 1x Controllino o similar
  • 1x Revolution Pi

Cursos Node-RED:

  • 1x Raspberry Pi con Carcasa 
  • 1x tarjeta micro SD 16Gb
  • 1x cable alimentación 
  • 1x cable HDMI
  • 1x Adaptador GPIO a protoboard
  • 1x Wemos D1 min o NodeMCU o equivalente
  • 1x shields para wemos D1 mini relé
  • 1x shields para wemos D1 mini neopixel
  • 1x shields para wemos D1 mini oled

Video. Primeros Pasos con ESP8266

Una vez que sabemos que es el ESP8266 y tenemos el IDE instalado, vamos a aprender a usar el Wifi del ESP8266. No entramos en el uso de otras características que son comunes a Arduino y que trataré de forma genérica en otros vídeos dentro del curso de Arduino en vídeo https://www.aprendiendoarduino.com/videos/curso-arduino/.

Si quieres saber más de Arduino y de su programación puedes ver los cursos de https://www.aprendiendoarduino.com

Una forma de aprender a manejar un dispositivo hardware o una librería es leer los ejemplos y ponerlos en práctica mientras se revisa la documentación en lugar de leer toda la documentación antes de empezar a practicar. Para empezar con los módulos ESP8266 una vez instalado el soporte para las placas, lo más sencillo es ejecutar los ejemplos que vienen con el soporte instalado para los módulos ESP8266.

Para ver los ejemplos debemos primero seleccionar la placa que vamos a usar, en nuestro caso la Wemos D1 mini o la nodeMCU.

Todos los ejemplos disponibles en el IDE de Arduino los puedes encontrar en los ejemplos de las librerías que vienen con el soporte del ESP8266 para Arduino que hemos instalado anteriormente en: https://github.com/esp8266/Arduino/tree/master/libraries

WiFiScan

Veamos primero el ejemplo WiFiScan que podemos encontrar en Archivos – Ejemplos – ESP8266WiFi – WiFiScan.

Este sketch muestra cómo escanear redes WiFi y el código es casi similar al usado con el WiFi shield de Arduino pero incluyendo la librería “ESP8266WiFi.h” en lugar de “WiFi.h”

La documentación de la librería “ESP8266WiFi” está en http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html y dentro de la librería hay varias clases, entre ellas está scan para escanear redes y la client para conectarnos a un servidor: http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html#scan

Al usar la librería ESP8266WiFi, lo primero es configurar el WiFi del ESP8266, en este caso en modo estación (WIFI_STA), es decir, para conectarse a un AP, pero en este caso nos desconectamos para poder escanear todas las redes.

ESP8266 operating in the Station mode

Para scanear la red usamos la clase scan de WiFi: http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/scan-class.html y este proceso tarda aproximadamente un segundo y devuelve un número entero con el número total de redes encontradas. Luego mediante una serie de métodos puedo obtener los datos de SSID, RSSI, etc… de las redes encontradas en el scaneo.

Luego saco por pantalla el nombre de la red (SSID), la potencia (RSSI) y si es una red protegida. En la línea 40 hay un operador que no es común es un operador ternario https://es.wikipedia.org/wiki/Operador_ternario que es un if simplificado.

Luego para acceder a los datos de las redes encontradas en el scan, uso las funciones SSID, RSSI y encryptionType para encontrar el SSID, la señal y el tipo de cifrado de las redes encontradas.

Para más información ver la documentación de la clase scan en : http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/scan-class.html

Más ejemplos de uso de la clase scan: http://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/scan-examples.html

Ejercicio propuesto: modificar el ejemplo WiFiScan para que también busque las redes WiFi ocultas y también muestre el canal y la MAC del punto de acceso o BSSID https://es.wikipedia.org/wiki/BSSID

Solución: https://github.com/jecrespo/aprendiendoarduino-curso-esp8266-youtube/blob/master/WiFiScanMejorado/WiFiScanMejorado.ino

En este caso he usado dos funciones:

  • muestra_encriptacion() que me dice la encriptación de la red wifi que me da el método WiFi.encryptionType()
  • muestra_SSID() que me da el nombre de SSID y en caso que sea una red oculta se dice.

También uso tabuladores “\t” para mostrar la información de forma más clara.

Con la información obtenida de las MACs, RSSI y canal, usando la librería de Germán Martín puedo obtener la localización https://github.com/gmag11/ESPWifiLocation gracias a  Google Maps GeoLocation API. Un tutorial completo realizado por Luis del Valle puede verse en https://programarfacil.com/blog/arduino-blog/geolocalizacion-wifi-arduino-nodemcu/

Video. Preparación IDE Arduino para ESP8266

Una vez conocido el hardware del ESP8266 visto en el anterior vídeo https://www.aprendiendoarduino.com/2018/01/23/video-iniciacion-a-esp8266-hardware/ vamos a ver como preparar el entorno de programación de Arduino (IDE) para programar el ESP8266.

Estas son las dos placas que vamos a usar.

Instalación Drivers Uso NodeMCU y Wemos D1 Mini

Para conectar las placas de prototipado NodeMCU y Wemos D1 Mini usamos el puerto USB y al contrario que con Arduino donde los drivers ya se instalan con el IDE, en este caso debemos instalar los drivers que emula un puerto serie (COM) en el USB de la placa utilizada.

Para el Wemos D1 Mini es necesario instalar el driver del conversor USB a serie que es el CH340G y excepto para el D1 mini Pro que es el chip CP2104:

Para el NodeMCU es necesario instalar el driver del adaptador USB CP210x de silicon labs:

Preparación IDE Arduino para usar con ESP8266

El ESP8266 dispone internamente de un pequeño procesador, prácticamente es capaz de replicar casi cualquier cosa los Arduinos puedan hacer. Usando el entorno de programación y el lenguaje de programación de Arduino podemos programar un ESP8266 cargando un firmware programado por nosotros mismo. Esto permite que la CPU ESP8266 y sus componentes Wi-Fi sean programados como cualquier otro dispositivo Arduino.

  • Puedes desarrollar con el mismo IDE que ya conoces
  • La comunidad ha hecho un Cross compiler, de forma que prácticamente utilizas los mismos comandos que utilizas con Arduino.
  • Puedes programar el procesador de tu ESP8266 exactamente como si fuera un Arduino con los mismos comandos, y en lo que se refiere a la WIFI, puedes olvidarte de los comandos AT, porque incluye una serie de librerías, que imitan la librería WIFI de Arduino con lo que se pueden reutilizar muchos programas hechos para Arduino y compilarlos para un ESP8266.  

El Arduino Core ESP8266 está disponible a través de GitHub: https://github.com/esp8266/Arduino

Reference de Arduino core para el ESP8266:

Listado de URLs para soporte de tarjetas no oficiales: https://github.com/arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls

Podemos instalar el soporte a terceros en nuestro IDE simplemente añadiendo el texto “http://arduino.esp8266.com/stable/package_esp8266com_index.json” en propiedades:

Y luego desde el gestor de tarjetas dar a instalar al soporte para ESP8266.

Blink con ESP8266

Una vez preparado nuestro IDE de Arduino para programar placas con ESP8266, podemos probar que funciona. Para ello vamos a probar blink en el Wemos D1 Mini y en el NodeMCU.

Paso 1: Abrir el ejemplo blink del IDE de Arduino:

void setup()
  { pinMode(LED_BUILTIN, OUTPUT); }

void loop()
  { digitalWrite(LED_BUILTIN, HIGH);  
    delay(1000);  
    digitalWrite(LED_BUILTIN, LOW);
    delay(1000);   
  }

Paso 2: seleccionar la tarjeta que vamos a programar

  • Wemos R2 & D1 mini
  • NodeMCU 1.0 (ESP-12E module)

Paso 3: Cargar el programa y comprobar que el led integrado funciona.

Ejercicio Propuesto

Revisar los ejemplos para ESP8266 que aparecen en el IDE y ejecutar el scanner de redes wifi llamado “WifiScan”.

Video. Iniciación a ESP8266. Hardware

Qué es ESP8266

El ESP8266 es un chip Wi-Fi de bajo coste con pila TCP/IP completa y capacidad de MCU (Micro Controller Unit) producida por el fabricante chino Espressif Systems, con sede en Shanghai.

ESP8266 vs Arduino

El chip que primero llamó la atención de los fabricantes occidentales en agosto de 2014 con el módulo ESP-01. Este pequeño módulo permite a los microcontroladores conectarse a una red Wi-Fi y realizar conexiones TCP/IP sencillas utilizando comandos de tipo Hayes. Sin embargo, en ese momento casi no había documentación en inglés sobre el chip y los comandos que aceptaba. El precio muy bajo y el hecho de que había muy pocos componentes externos en el módulo que sugiere que podría ser muy barato en el volumen, atrajo a muchos hackers para explorar el módulo, el chip y el software en él, así como para traducir la documentación china.

Web del producto: http://espressif.com/en/products/hardware/esp8266ex/overview

Datasheet: http://espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf

Wikipedia:

Características ESP8266

El esp8266 es un módulo que va alimentado a 3.3V. El ESP8266 no tiene ROM y usa una ROM externa SPI y soporta hasta 16MB.

Características:

  • 32-bit RISC CPU: Tensilica Xtensa LX106 running at 80 MHz
  • 64 KiB of instruction RAM, 96 KiB of data RAM
  • External QSPI flash – 512 KiB to 4 MiB* (up to 16 MiB is supported)
  • IEEE 802.11 b/g/n Wi-Fi
  • Integrated TR switch, balun, LNA, power amplifier and matching network
  • 16 GPIO pins
  • SPI, I²C,
  • I²S interfaces with DMA (sharing pins with GPIO)
  • UART on dedicated pins, plus a transmit-only UART can be enabled on GPIO2
  • 1 port 10-bit ADC

Pinout ESP8266:

Módulos ESP8266

El ESP8266 se presenta con muchos encapsulados: http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family

Los módulos ESP8266 los podemos encontrar en diferentes encapsulados y placas:

Características de los módulos:

Name Active pins Pitch Form factor LEDs Antenna Shielded? dimensions (mm) Notes
ESP-01 6 0.1″ 2×4 DIL Yes PCB trace No 14.3 × 24.8
ESP-02 6 0.1″ 2×4 castellated No U-FL connector No 14.2 × 14.2
ESP-03 10 2 mm 2×7 castellated No Ceramic No 17.3 × 12.1
ESP-04 10 2 mm 2×4 castellated No None No 14.7 × 12.1
ESP-05 3 0.1″ 1×5 SIL No U-FL connector No 14.2 × 14.2
ESP-06 11 misc 4×3 dice No None Yes 14.2 × 14.7 Not FCC approved
ESP-07 14 2 mm 2×8 pinhole Yes Ceramic + U-FL connector Yes 20.0 × 16.0 Not FCC approved
ESP-08 10 2 mm 2×7 castellated No None Yes 17.0 × 16.0 Not FCC approved
ESP-09 10 misc 4×3 dice No None No 10.0 × 10.0
ESP-10 3 2 mm? 1×5 castellated No None No 14.2 × 10.0
ESP-11 6 0.05″ 1×8 pinhole No Ceramic No 17.3 × 12.1
ESP-12 14 2 mm 2×8 castellated Yes PCB trace Yes 24.0 × 16.0 FCC and CE approved[14]
ESP-12E 20 2 mm 2×8 castellated Yes PCB trace Yes 24.0 × 16.0 4 MB Flash
ESP-12F 20 2 mm 2×8 castellated Yes PCB trace Yes 24.0 × 16.0 FCC and CE approved. Improved antenna performance. 4 MB Flash
ESP-13 16 1.5 mm 2×9 castellated No PCB trace Yes W18.0 x L20.0 Marked as ″FCC″. Shielded module is placed sideways, as compared to the ESP-12 modules.
ESP-14 22 2 mm 2×8 castellated +6 No PCB trace Yes 24.3 x 16.2

Interesante artículo sobre que módulo wifi ESP8266 elegir: http://polaridad.es/esp8266-modulo-wifi-elegir-caracteristicas/

Buena explicación de los módulos: http://visystem.ddns.net:7442/ESP8266-modulos/

Placas de Prototipado con ESP8266

Wemos D1 Mini

Wemos son una serie de placas de prototipado con chip ESP8266 integrado para conexión WiFi. Hay varios modelos y la página web oficial es https://www.wemos.cc/

En los microcontroladores ESP8266 y en las placas WeMos es posible varios firmware:

Tienda oficial de WeMos: https://es.aliexpress.com/store/1331105

Wemos ha apostado por el formato pequeño de placa.

Dentro de la Wemos D1 mini tenemos 3 modelos:

WeMos D1 Mini Pinout:

ATENCIÓN: Al usar el WeMos D1 mini con Arduino los número de los pines no corresponden con los números que pongamos en el IDE de Arduino, es decir, el pin D4 de WeMos D1 Mini puedo llamarlo como D4 o como 2, estas dos líneas son equivalentes y ponen a HIGH el pin D2 del WeMos:

  • digitalWrite(D4,HIGH)
  • digitalWrite(2, HIGH)

Shields Wemos D1 mini

Listado de shields oficiales Wemos: https://www.wemos.cc/en/latest/d1_mini_shield/ 

Shields: http://wiki.robotpersonal.es/index.php?title=Placas_WeMos_Mini

Resultado de imagen de wemos d1 mini shields

Tienda oficial de WeMos: https://es.aliexpress.com/store/1331105

NodeMCU

NodeMCU es una plataforma IoT de código abierto. Incluye firmware para programar en Lua que se ejecuta en el ESP8266 Wi-Fi SoC de Espressif Systems y está basado en el módulo ESP-12.

Web oficial: http://www.nodemcu.com/index_en.html

El término “NodeMCU” por defecto se refiere al firmware en lugar de los kits de desarrollo de ESP8266. El firmware utiliza el lenguaje de secuencias de comandos Lua.

Pinout:

Github: https://github.com/nodemcu

Documentación: http://nodemcu.readthedocs.io/en/master/

Versiones HW de la NodeMCU:

Comprar nodeMCU: https://es.aliexpress.com/wholesale?SearchText=nodemcu

Ejercicio Propuesto

Instalar el IDE de Arduino. Descargar desde https://www.arduino.cc/en/Main/Software

Tutorial paso a paso de instalación: https://aprendiendoarduino.wordpress.com/2017/06/18/instalacion-software-arduino/

Para saber más sobre el IDE y su configuración: https://aprendiendoarduino.wordpress.com/2017/06/18/ide-arduino-y-configuracion/