RP2040: el microcontrolador de Raspberry Pi per al machine learning

RP2040

Raspberry Pi Foundation ha llançat alguna cosa més que les seves plaques SBC, amb alguns complements interessants de maquinari. Potser un que no és tan conegut com la Raspberry Pi, és important tractar el xip RP2040, un dispositiu interessant per als makers que estan interessats en la IA i el machine learning.

En aquest article tractarem a fons aquest complement perfecte per a la famosa SBC.

Què és el RP2040?

Raspberry Pi Ltd va dissenyar un circuit denominat RP2040, que es va presentar el gener de 2021 com a part de la nova placa SBC Raspberry Pi Pico que aquesta entitat va llançar al mercat. Aquest xip RP2040 no és més que un xip microcontrolador de 32 bits amb un doble nucli ARM Cortex-M0+.

L'ARM Cortex-M0+ és un nucli de CPU especialment pensat per a aplicacions a sistemes embeguts i microcontroladors. La vostra arquitectura de 32 bits proporciona un rendiment millorat en comparació amb arquitectures de 8 o 16 bits. A més, destaca per ser un processador de baix consum, cosa que el fa ideal per a dispositius alimentats per bateries i altres aplicacions que requereixen eficiència energètica.

Aquest nucli utilitza extensions d'instruccions Thumb-2, una combinació d'instruccions de 16 bits i 32 bits que millora la densitat de codi i el rendiment en aplicacions amb limitacions de memòria. Amb un pipeline de tres etapes aconsegueix una execució eficient d'instruccions, mantenint un equilibri entre rendiment i consum d'energia.

L'ARM Cortex-M0+ incorpora un controlador d'interrupcions eficient per gestionar esdeveniments i tasques en temps real de manera efectiva. Dissenyat per oferir un rendiment raonable a un cost competitiu, aquest nucli es troba comunament implementat en microcontroladors utilitzats en una varietat de dispositius encastats, des de sistemes de control fins a electrodomèstics i dispositius mèdics.

Es va transformar així en el primer microcontrolador dissenyat per Raspberry Pi, encara que el nucli IP hagi estat dissenyat de forma completa per Arm. El seu baix cost va permetre integrar-lo a la SBC Raspberry Pi Pico, amb un preu de tan sols 4$ aproximadament, ja que el CI costava tan sols 1$.

Aquest xip RP2040 es pot programar per funcionar mitjançant diversos llenguatges de programació. Un pot ser l'assemblador ARM, un altre el C, C++, Free PASCAL, Rust, Go, MicroPython, CircuitPython, Ada, etc. A més, que és aquí on més crida l'atenció, és prou potent com per executar TensorFlow Lite per a aplicacions de IA.

TensorFlow Lite és una versió lleugera i eficient de TensorFlow, un popular marc d'aprenentatge automàtic desenvolupat per Google. Dissenyat específicament per a dispositius mòbils, sistemes encastats i entorns amb recursos limitats, TensorFlow Lite permet executar models daprenentatge automàtic en plataformes amb restriccions de memòria i potència de càlcul. Proporciona eines per a la conversió de models entrenats a TensorFlow estàndard a un format compatible amb dispositius mòbils, facilitant la implementació d'aplicacions d'intel·ligència artificial a smartphones, microcontroladors i altres dispositius amb capacitats computacionals limitades. TensorFlow Lite és una solució versàtil per desplegar models d'aprenentatge automàtic en dispositius Edge i IoT, que permeten inferències ràpides i eficients de manera local, sense dependre de connexions al núvol.

Seguint amb el tema de RP2040, cal dir que aquest xip ha estat integrat en diverses plaques SBC de diversos fabricants, com ara Adafruit, Arduino, SparkFun, Pimoroni, etc. A la Raspberry Pi, aporta importants característiques a baix preu. Per exemple, ha estat usat per a la Raspberry Pi Pico i Pico W, Arduino Nano RP2040, Pimoroni Tiny RP2040, Adafruit Micro, SparkFun Pro Micro, etc.

Especificacions del RP2040

Quant a les especificacions tècniques del RP2040, podem trobar les següents:

  • Xip fabricat amb node o procés de 40 nm a la foundry de TSMC.
  • Empaquetat de 7x7mm tipus QFN amb 56 contactes i per a muntatge superficial o SMD.
  • CPU de doble nucli ARM Cortex-M0+ a 133 Mhz, amb suport per a overclocking. Cada nucli té un divisor de nombres enters perifèric i dos interpoladors.
  • Implementa una memòria SRAM ràpida de 264 KB de capacitat, amb 6 bancs independents, quatre de 64 KB i dos de 4 KB.
  • No té memòria flaix o EEPROM interna, per tant, després del reset o apagat, el boot-loader es perd i es carregarà a través del microprogramari extern.
  • Bus controlador QSPI, suportant fins a 16 MB de memòria flaix externa.
  • Controlador DMA o daccés directe a memòria.
  • AHB Crossbar, completament connectada.
  • LDO (Low-Dropout Regulator) integrat on-chip i programable per generar el voltatge del nucli.
  • PLLs doble integrat al xip per generar els clocks del nucli i també la freqüència de l'USB.
  • 30 GPIO amb 4 com a ús opcional d'entrades analògiques.
  • Suport de perifèrics amb controladors: 2x UARTs, 2x SPI, 2x I2C, 16x PWM, USB 1.1, PHY i 8 PIO o pins programables de sortida per als estats de màquina.

Usos o aplicacions

El xip RP2040 s'ha convertit en la pedra angular de nombrosos projectes i productes per la seva versatilitat i capacitats destacades. Ha trobat aplicacions en una varietat de dispositius i sistemes encastats, obrint un ventall de possibilitats per a diferents usuaris.

Un dels seus usos comuns està en l'àmbit del desenvolupament de projectes d'electrònica, sent particularment apreciat per entusiastes i professionals per a la creació de dispositius personalitzats gràcies al seu baix cost i capacitat de processament. A més, ha tingut un impacte significatiu en l'educació en informàtica, i ha estat utilitzat en entorns educatius per ensenyar programació i conceptes de maquinari, proporcionant als estudiants una introducció pràctica a la informàtica.

En el camp de la automatització i el control, el RP2040 s'ha integrat en sistemes com a dispositius domèstics intel·ligents i projectes d'automatització industrial, interactuant amb sensors i actuadors per controlar i monitoritzar entorns. També ha trobat aplicacions en robòtica, servint com a cervell de robots i vehicles autònoms, amb la capacitat addicional d'executar TensorFlow Lite per a implementacions d'aprenentatge automàtic.

La versatilitat del RP2040 es destaca en el desenvolupament de prototips ràpids, facilitant la creació ràpida de nous productes i tecnologies. La seva utilitat s'estén a Internet de les Coses (IoT), on s'utilitza en dispositius connectats a la xarxa per recopilar dades i enviar informació al núvol, gràcies a la seva mida compacta i eficiència energètica.

A més, el RP2040 s'integra en projectes col·laboratius i de codi obert, fomentant la comunitat de maquinari obert. Des d'aplicacions d'entreteniment fins a projectes d'art interactiu, el RP2040 s'ha convertit en una opció popular a l'àmbit del hobby i l'entreteniment creatiu.