Este artículo surge como un intento de animarme a aprender sobre micropython y sobre cacharreo con electrónica. La idea es empezar desde cero, pero desde cero, cero. De ahí el título. También pretendo dar réplica pythónica a algunos de los artículos que está publicando @Hispa en su blog y que anuncia en Mastodon titulados ‘Cacharreando desde cero…’ y que pueden servir de complemento a estos. Todo esto pretende ser muy informal y sin ninguna pretensión de rigurosidad.
Empezamos por el principio…, python, microcontroladores y micropython.
De python no voy a hablar mucho porque los que sois asiduos por aquí ya sabéis lo que es o tenéis muchos otros artículos hablando sobre ello. Simplemente decir que es un lenguaje de programación de propósito general usado en muchos ámbitos, de tipado dinámico y fuertemente tipado. Tienes trillones de recursos para aprender python. Si no tienes ni idea de lo que es Python quizá sea mejor que hagas un pequeño tutorial antes. Un buen punto de partida podría ser el tutorial oficial.
Microcontroladores
Un microcontrolador o MCU (por sus siglas en inglés de MicroController Unit) es una placa que dispone, normalmente, de microprocesador, memoria y pines de entrada y salida para poder añadir periféricos.
Estos microcontroladores suelen venir sin nada en la memoria y tenemos que meterles “algo” (código) para que sean capaces de hacer algo.
Los microcontroladores realizan o están pensados para realizar tareas simples. Normalmente, el flujo es ‘Entrada -> Procesamiento -> Salida’. La entrada puede ser una señal, pulsar un botón, algo que se recibe a través de internet o bluetooth, algo que se recibe a través de sensores conectados,… El procesamiento es lo que realizará el procesador que tenemos en nuestra placa. Y, por último, la salida será el resultado del procesamiento que hemos hecho de nuestra entrada.
Uno de los hitos o pistoletazos de salida modernos por los que hoy en día existe el mundo maker y del cacharreo tal como es fue la salida de Arduino. Arduino fue muy revelador en su momento pero se ha visto superado por opciones más económicas, potentes, versátiles,…, como el ESP8266 o, su sucesor, el ESP32. Estos MCU pueden costar menos de dos euros y disponen de entrada microUSB para alimentarlos y para comunicarnos con los mismos (ESP8266/ESP32), antena WiFi (ESP8266/ESP32) o antena Bluetooth (ESP32). Existen, incluso, opciones mucho menos básicas y listas para usar en entornos industriales como los productos M5stack (compatibles con micropython).
Estos microcontroladores llevan todo lo necesario (CPU, memoria y entrada/salida) integrado en el mismo chip y no necesitan conectar distintos componentes (la RAM por un lado, el procesador por otro, la tarjeta gráfica por otro, la tarjeta de sonido por otro,…) a través de otro chip (como una placa base en un PC normal). Es por ello que el software que necesitamos es mucho más sencillo que un sistema operativo completo como Linux o Windows (aunque no hace falta dar muchas ideas). Para manejar estos microcontroladores necesitamos un firmware que ‘quemaremos’ en la ROM de nuestro MCU. Este firmware es lo que hará de sistema operativo y, en nuestro caso, será micropython.
Micropython
Normalmente, estos microcontroladores se programan usando un lenguaje de más bajo nivel como C o, directamente, ensamblador, por temas de eficiencia y tamaño final del código.
En 2013, Damien George inició una campaña en Kickstarter para crear una lenguaje de programación que fuera compatible con Python 3 y que se pudiera ejecutar en microcontroladores. De esa forma nació micropython y una placa de desarrollo llamada PyBoard.
Micropython es una implementación de Python 3 (de casi todo Python 3, más en su wiki en github), programado en C y que está optimizado para ejecutarse en microcontroladores.
En un principio era compatible con la placa PyBoard pero, debido al éxito obtenido, hoy en día se ha portado a otras placas y se han creado forks.
Entre las placas que podemos usar tenemos, como ya he comentado, las PyBoards, pero tambien podemos usar la BBC:MicroBit, la Raspberry Pi Pico, alguna versión de los Lego MindStorms o las ESP8266 y ESP32. Estas últimas son las que usaremos.
Uno de los forks más importantes es el que hizo Adafruit y que se llama CircuitPython. Las placas de Adafruit y CircuitPython están más enfocado a simplificar las cosas y al aprendizaje.
¿Está micropython listo para las masas? La agencia espacial europea (ESA por sus siglas en inglés, European Space Agency) cree que sí y es por eso que financiaron parte del desarrollo de micropython. Esperan llevarlo al espacio en el futuro próximo, creo que 2022 o 2023, pero ya se verá.
¿Nos vamos de compras?
Yo he comprado unas cuantas cosas y las intentaré ir utilizando en los artículos. Lo básico para poder empezar será disponer de una placa ESP8266 o ESP32. Cualquiera de las dos valdrá para los primeros artículos. Luego ya iremos viendo. Además, harán falta otras cosas, cables microUSB/USB para alimentar la placa y para comunicarnos con la misma, sensores para hacer distintas cosas, placas de pruebas (breadboards),…
Dejo, a continuación, un listado de cosas pero lo imprescindible será lo que tenga un asterisco al final. El resto será opcional ya que no sé si lo llegaremos a usar. Cómpralo si te interesa y piensas hacer algo por ti misma:
- NodeMCU (ESP8266) (*).
- ESP32 (*).
- Cables USB (alimentación y datos) (*).
- Base de desarrollo para NodeMCU.
- Sensor de temperatura, humedad y presión.
- Otros sensores de temperatura y humedad.
- Placas de pruebas.
- Sensor de \(CO_2\).
- Cámara para la ESP32 (el enlace no lleva a la que yo compré pero te recomienda otras).
Como comento, lo más básico (e imprescindible) es tener una placa (la ESP32 o la ESP8266) y un cable USB. Todo lo demás es opcional. Si compras la ESP8266 es interesante tener también la base de desarrollo. Si quieres hacer cosas con imágenes quizá te interese comprar la cámara para la ESP32,… Muchas de esas cosas las podéis comprar en Aliexpress, en Ebay y, seguramente, lo más básico también lo podréis comprar en la tienda de electrónica de tu ciudad.
Filosofía de estos artículos sobre cacharreo
La explosión de posibilidades que tenemos con estas cosas es infinita: multitud de microprocesadores diferentes, drivers para comunicarnos con los mismos, versiones de Python, versiones de micropython,… Os lo digo desde ya. No busquéis respuestas a todas vuestras dudas aquí. Obviamente, podéis hacer preguntas y serán bienvenidas pero se juntan muchas cosas a las que no podré dar respuesta. Primero, porque no tendré el dispositivo que estás usando o el sistema operativo que estás usando o… Segundo, porque seguramente no sabré la respuesta. Recuerda que yo también estoy aprendiendo.
Bueno, ya tenéis la lista de la compra. En el próximo capítulo, cuando tengáis alguna placa, ya veremos como empezar con micropython.
Continuará…