Estos son los tres equipos con los que vamos a trabajar durante lo que queda de curso:
Arduino Uno
ESP32 (WROOM32)
Raspberry Pi (3 A+)
Procesador
16 MHz
2x 240 MHz (32 bits)
4x 1.4 GHz (64 bits)
Memoria
2 kB RAM, 32 kB flash (no volátil)
512 kB RAM, 1-16 MB flash (no volátil)
512 MB RAM, SD para almacenamiento no volátil
Entradas y salidas digitales
Niveles TTL 0-5 V
Niveles TTL 0-3.3 V
Niveles TTL 0-3.3 V
Comunicaciones
Puertos serie TTL/UART, SPI, I2C, múltiples GPIO
Wi-Fi, Bluetooth, puertos serie TTL/UART, SPI, I2C, múltiples GPIO
Wi-Fi, Bluetooth, USB, puertos serie TTL/UART, SPI, I2C, múltiples GPIO
¿Sistema microcontrolador o microprocesador?
Microcontrolador
Microcontrolador
Microprocesador
Deep sleep (batería para meses)
Sí
Sí
No
Lenguajes de programación típicos
C (Arduino C)
C (Arduino C), MicroPython
Python, C
Precio aproximado
23 €
9 € (con USB) o 4 € (sólo con TTL/UART)
30 €
Muy rapidito:
Arduino surge como un microcontrolador de bajo coste con una gran facilidad de montaje y uso. Su entorno de programación es extremadamente accesible.
La ESP32 es la sucesora de la ESP8266, un chip Wi-Fi diseñado para poner Wi-Fi en Arduino a muy bajo coste.
La Raspberry Pi surge como un ordenador para entusiastas de la electrónica e informática, pero también para introducir estas tecnologías países en vías de desarrollo debido a su bajo coste.
A día de hoy, Raspberry Pi se asemeja bastante a un PC de toda la vida. Las últimas versiones llegan a correr Windows 10.
Estos no son todos los micros que hay. En este curso hay ausencias destacadas como el PIC y el STM32.
Diferencias fundamentales entre microcontroladores y microprocesadores:
Microcontroladores tienen mucha conectividad y poca potencia, microprocesadores al revés.
Los microprocesadores, como los PCs, están pensados para llevar un sistema operativo que sostenga las aplicaciones. Sin embargo, en los microcontroladores las aplicaciones se cargan directamente en el procesador empleando el mínimo de recursos necesario.
Al final no es muy distinto de un PC…
Periféricos
Habrá de todo…
Pulsadores, interruptores, relés y LEDs (cómo no!).
Sensores de temperatura y humedad.
Sensores de ultrasonidos, de movimiento.
Cámaras
Displays LCD y OLED. Zumbadores
Baterías
Comunicaciones de corta distancia (Wi-Fi, Bluetooth, ethernet) y de larga distancia (LoRa, celular).
A nivel de software
Escribiremos los programas que permitirán funcionar al hardware que hemos visto (micros y periféricos). Los lenguajes que utilizaremos son:
C. Uno de los lenguajes de programación de propósito general más antiguos y utilizados en creación de apps.
Arduino C. Variante de C para Arduino.
Python. Lenguaje de alto nivel que se ha popularizado en los últimos años tanto para automatización como para apps.
MicroPython. Implementación de Python optimizada para funcionar en microcontroladores.
Bash. Intérprete de comandos de sistemas operativos Linux (equivale al CMD de Windows).
No vamos a tratar lenguaje ensamblador, que es el que realmente entiende la máquina, pero lo veremos de pasada.
Esto es un IDE (integrated development environment), o entorno de programación:
El IDE incorpora todo lo necesario para escribir y probar el programa. El editor de texto sólo es para edición, pero también se usan en programación. Ejemplos: Sublime Text, Notepad++.