Arduino Nano RP2040 Connect è la prima scheda della famiglia Arduino che integra il potente chip in silicio RP2040 di casa Raspberry Pi. Molti di voi ricorderanno che alcuni mesi fa la Raspberry Pi Foundation ha introdotto sul mercato il Raspberry Pi Pico, la prima scheda a microcontrollore di casa Raspberry Pi, la quale integra al suo interno proprio questo potente e versatile chip. L'implementazione dell'RP2040 nell'Arduino Nano RP2040 Connect nasce da una importante collaborazione tra la Raspberry Pi Foundation e il noto brand made in Italy. Tanta potenza ed eccellenti funzionalità su una piccola scheda dal package estremamente compatto, ideale per le applicazioni dell'ecosistema Internet of Things (IoT), Machine Learning e prototipazione rapida. Arduino Nano RP2040 Connect è una scheda di sviluppo con il fattore di forma della famiglia Nano e con grandi caratteristiche e funzionalità extra quasi impossibili da trovare in un dispositivo dalle dimensioni così piccole e dal package estremamente compatto. Il potente microcontrollore, il fattore di forma Nano, la presenza di un set di sensori integrati on-board e delle opzioni di connettività Wi-Fi e Bluetooth, rendono Arduino Nano RP2040 Connect una soluzione adattabile a una vasta pluralità di applicazioni.
Una breve introduzione
Arduino è la scheda elettronica programmabile più famosa nel mondo dei makers. E' una piattaforma open source completa e basata su hardware e software open source, in grado di connettere e interagire con discipline e competenze trasversali quali Machine Learning, linguaggi di programmazione, progettazione elettronica, domotica, automazione, Intelligenza Artificiale, IoT, sensoristica e robotica. Per questo possiamo affermare che Arduino è molto più di una semplice scheda di prototipazione. Tantissime sono le applicazioni di questi settori che basano il loro funzionamento su Arduino. Sono trascorsi ormai ben 17 anni dalla sua creazione e Arduino, ad oggi, vanta un'ampia gamma di modelli di schede, ciascuno dedicato a determinate applicazioni. La piattaforma Arduino è molto utilizzata nel mondo dell'elettronica ed ha acquisito una popolarità senza precedenti grazie alle sue caratteristiche uniche. Ogni appassionato di elettronica embedded e microcontrollori ha sentito parlare almeno una volta della piattaforma Arduino. Nel corso degli anni, Arduino, nata dalla collaborazione tra cinque docenti presso l'Istituto di Interaction Design di Ivrea (IDII), è diventata uno standard non solo nella didattica educativa in ambienti accademici e nella prototipazione rapida per i programmatori alle prime armi o per chi non possiede conoscenze avanzate di elettronica e programmazione, ma anche nelle applicazioni dal taglio più professionale. Con Arduino si possono acquisire o affinare le competenze digitali del futuro, anche partendo da zero. Il "Learning by Doing", ovvero la capacità di imparare progettando è, infatti, uno degli obiettivi che sono alla base della nascita della piattaforma Arduino.
Non solo makers: interessanti specifiche tecniche adatte anche per un utilizzo professionale
Completano il quadro un sensore di movimento IMU a sei assi con capacità di apprendimento automatico, microfono integrato per l'attivazione del suono e della voce, un LED RGB e diversi pin GPIO multifunzione. Il LED RGB è un LED ad anodo comune collegato al modulo Nina-W102. Il LED RGB è controllato anche dal modulo Nina-W102 in modo tale che il LED sia spento quando lo stato digitale è ALTO e acceso quando lo stato digitale è BASSO.
I sensori integrati semplificano la realizzazione anche di progetti complessi. Sono integrati sulla scheda un paio di sensori molto utili: un microfono integrato per l'attivazione del suono, il controllo audio e il riconoscimento vocale AI; l'IMU intelligente a sei assi con funzionalità AI indica alla scheda in che direzione si sta muovendo e aggiunge il rilevamento della caduta e l'attivazione del doppio tocco.
Inoltre, come per molti componenti della famiglia Arduino, l'hardware del Nano RP2040 Connect è completamente compatibile con Arduino Cloud, il che permette di sfruttare a pieno tutta la potenza del cloud. Dal punto di vista del monitoraggio remoto, questa scheda ha il vantaggio aggiuntivo del controllo da smartphone tramite l'app Arduino IoT Remote. Con l'app gratuita per smartphone Arduino IoT Remote è possibile caricare gli sketch grazie al controllo remoto istantaneo.
Il cloud semplifica per la scheda Nano RP2040 Connect la comunicazione in modalità wireless con altre schede. Qualsiasi dispositivo connesso ad Arduino Cloud può comunicare, ovviamente non stiamo parlando solo di schede Arduino ufficiali. Dal punto di vista software, quindi per ciò che concerne in modo specifico la programmazione, è possibile utilizzare gli sketch pre-esistenti realizzati ad esempio per un'altra scheda e utilizzarli sulla nuova Nano RP2040 Connect. Quindi, se si hanno già pronti sketch di progetto, l'utilizzo è davvero molto facile, veloce e non richiede particolari sforzi di progettazione. Rendere immediatamente funzionante la scheda Arduino Nano RP2040 Connect è semplice e intuitivo. Inoltre, la scheda è compatibile con l'intero ecosistema software RP2040.
Molto interessanti sono anche le proprietà dal punto di vista dell'archiviazione. Oltre ai 264 KB di SRAM, la scheda possiede una memoria flash da 16 MB esterna al microprocessore (off-chip) che aumenta lo spazio per il codice per venire incontro alle esigenze di uno spazio archiviazione aggiuntivo, molto frequenti in fase di programmazione e stesura del codice. E' compatibile con Raspberry Pi Pico, supporta il linguaggio di programmazione di Arduino, l'IDE 2.0 e tutte le librerie; supporta completamente anche MicroPython.
TME Electronic Components è partner e rivenditore ufficiale della nuova scheda Arduino Nano RP2040 Connect, che potete trovare sul catalogo visitando il sito web di TME Electronic Components Componenti elettronici. Distributore e negozio online - Transfer Multisort Elektronik (tme.eu). Sul sito della TME Electronic Components, la scheda Arduino Nano RP2040 Connect è disponibile in due configurazioni, rispettivamente con e senza pin headers preinstallati.
Tabella 1. Specifiche tecniche della scheda di sviluppo Arduino Nano RP2040 Connect
BOARD
|
Nano RP2040 Connect | |
SKU: ABX00052 | ||
MICROCONTROLLER | Raspberry Pi RP2040 | |
USB CONNECTOR | Micro USB | |
PINS | Built-in LED pin | 13 |
DIGITAL I/O PINS | 20 | |
ANALOG INPUT PINS | 8 | |
PWM PINS | 20 (Except A6, A7) | |
EXTERNAL INTERRUPTS | 20 (Except A6, A7) | |
CONNECTIVITY
|
Wi-Fi | Nina W102 uBlox module |
BLUETOOTH | Nina W102 uBlox module | |
SECURE ELEMENT | ATECC608A-MAHDA-T Crypto IC | |
SENSORS | IMU | LSM6DSOXTR (6-axis) |
MICROPHONE | MP34DT05 | |
COMMUNICATION | UART | Yes |
I2C | Yes | |
SPI | Yes | |
POWER | Circuit operating voltage | 3.3V |
INPUT VOLTAGE (VIN) | 5-21V | |
DC CURRENT PER I/O PIN | 4 mA | |
CLOCK SPEED | Processor | 133 MHz |
MEMORY | AT25SF128A-MHB-T | 16MB Flash IC |
NINA W102 UBLOX MODULE | 448 KB ROM, 520KB SRAM, 16MB Flash | |
DIMENSIONS | Weight | 6 g |
WIDTH | 18 mm | |
LENGTH | 45 mm |
La vasta gamma di applicazioni alle quali si presta bene la scheda di sviluppo Arduino Nano RP2040 Connect ne dimostra la versatilità di utilizzo. Infatti, gli esempi di applicazioni della scheda Arduino Nano RP2040 Connect possono essere relativi ad un'ampia gamma di casi d'uso grazie al potente microprocessore implementato a bordo, i sensori integrati ed il fattore di forma tipico della famiglia Nano. Le possibili applicazioni suggerite per la scheda di sviluppo Arduino Nano RP2040 Connect includono:
- Edge computing: grazie al potente microprocessore e alla RAM, la scheda è adatta ad esempio per il gesture recognition;
- Wearable devices: i dispositivi indossabili come i fitness tracker sono realizzabili grazie al piccolo ingombro della scheda;
- Voice assistant: Arduino Nano RP2040 Connect include un microfono omnidirezionale che può fungere da assistente digitale personale e abilitare il controllo vocale;
- Smart Home;
- IIoT (Industrial Internet of Things).
Come programmare Arduino Nano RP2040 Connect
La sintassi del linguaggio di programmazione Arduino è simile al linguaggio C++ e il suo apprendimento risulta semplice e intuitivo anche a chi non è esperto di programmazione di microcontrollori. Per iniziare a programmare Arduino Nano RP2040 Connect offline è necessario installare il noto ambiente di sviluppo Arduino IDE. Per collegare Arduino al computer è sufficiente un cavo micro USB che fornisce anche alimentazione alla scheda, come indicato dal LED. Come tutte le schede Arduino, anche questa funziona su Arduino Web Editor. Il Web Editor di Arduino è online, per cui sarà sempre possibile aggiornare le ultime funzionalità e offrire supporto per tutte le schede. Questo è molto utile se si preferisce programmare e caricare gli sketch direttamente dal browser web. Ma non è tutto. La scheda di sviluppo Arduino Nano RP2040 Connect è supportata anche su Arduino IoT Cloud che consente di accedere, rappresentare graficamente e analizzare i dati dei sensori, attivare eventi e automatizzare gli ambienti domestici o di lavoro. E' possibile caricare gli sketch con il controllo remoto istantaneo dall'app gratuita per smartphone Arduino IoT Remote. Per velocizzare la programmazione, Arduino mette a disposizione una serie di sketch di esempio nel menu "Examples" nell'IDE Arduino o nella sezione “Documentation” direttamente dal sito web di Arduino.
Un esempio di progetto per makers e hobbisti dell'elettronica
A titolo di esempio, al fine di mostrare un'applicazione pratica della scheda Arduino Nano RP2040 Connect, proponiamo un progetto IoT per makers, che riguarda un visualizzatore di suoni per misurare il livello sonoro all'interno di una stanza e visualizzarlo tramite accensione (ON) e spegnimento (OFF) del LED integrato sulla scheda. L'RP2040 Connect invia i dati ad Arduino IoT Cloud per visualizzare su un grafico i dati delle misurazioni dei livelli sonori. La realizzazione di questo progetto è resa possibile dal microfono integrato presente sulla scheda di sviluppo IoT. Questa è l'unica scheda IoT della famiglia Arduino che dispone di microfono integrato on-board, per cui un progetto del genere non è realizzabile con altri modelli di schede. Come abbiamo precedentemente specificato, infatti, sulla scheda è presente un microfono integrato per l'attivazione del suono, il controllo audio e persino il riconoscimento vocale AI.
Per realizzare il progetto sono necessari i seguenti componenti:
- 1 scheda di sviluppo Arduino Nano RP2040 Connect
- 1 breadboard
- 2 LED rossi 5 mm
- 2 LED gialli 5 mm
- 3 LED verdi 5 mm
- 7 resistori 220 ohm
- 16 cavetti jumper
Per prima cosa bisogna posizionare la scheda Arduino Nano RP2040 Connect sulla breadboard con la porta micro-USB rivolta verso l'esterno. Successivamente, è necessario posizionare i 3 LED verdi, i 2 LED gialli e i 2 LED rossi sull'altro lato della breadboard come mostrato in Figura 8. I colori dei LED rappresentano le intensità: verde è basso, giallo significa medio e rosso significa alto.
Collegare quindi ciascun LED ai pin digitali 3-9 sulla scheda Arduino Nano RP2040 Connect per essere controllati individualmente.
A questo punto collegare i catodi dei LED con i resistori da 220 ohm alla linea di massa della breadboard e collegare poi la linea di massa a un pin GND sull'Arduino Nano RP2040 Connect.
Creare le seguenti variabili nell'Arduino IoT Cloud:
CloudLight LED
float Sound_Level
Configurare la scheda nell'Arduino IoT Cloud e inserire le proprie credenziali di rete nel campo sottostante:
Aprire lo sketch nella scheda "Sketch" e copiare il codice che è riportato con i commenti di seguito. Caricare quindi il codice sulla scheda RP2040 Connect per ottenere il proprio visualizzatore di suoni.
#include "thingProperties.h" // PDM for mbed_rp2040 - Version: Latest #include <PDM.h> int LEDC = 2; int LEDG1 = 3; int LEDG2 = 4; int LEDG3 = 5; int LEDY4 = 6; int LEDY5 = 7; int LEDR6 = 8; int LEDR7 = 9; bool switchLED; static const char channels = 1; static const int frequency = 16000; short sampleBuffer [512]; volatile int samplesRead; void setup() { // Initialize serial and wait for port to open: Serial.begin(9600); // This delay gives the chance to wait for a Serial Monitor without blocking if none is found delay(1500); // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); pinMode(LEDC, OUTPUT); pinMode(LEDG1, OUTPUT); pinMode(LEDG2, OUTPUT); pinMode(LEDG3, OUTPUT); pinMode(LEDY4, OUTPUT); pinMode(LEDY5, OUTPUT); pinMode(LEDR6, OUTPUT); pinMode(LEDR7, OUTPUT); // Defined in thingProperties.h initProperties(); // Connect to Arduino IoT Cloud ArduinoCloud.begin(ArduinoIoTPreferredConnection); PDM.onReceive(onPDMData); if (!PDM.begin(channels, frequency)) { Serial.println("Failed to Initialize PDM"); while(1); } /* The following function allows you to obtain more information related to the state of network and IoT Cloud connection and errors the higher number the more granular information you’ll get. The default is 0 (only errors). Maximum is 4 */ setDebugMessageLevel(2); ArduinoCloud.printDebugInfo(); } void loop() { ArduinoCloud.update(); if(samplesRead) { for (int i = 0; i < samplesRead; i++) { Serial.println(sampleBuffer[i]); sound_Level = sampleBuffer[i]; if (sampleBuffer[i] >= 100 || sampleBuffer[i] <= -100) { digitalWrite(LEDG1, HIGH); if (sampleBuffer[i] >= 500 || sampleBuffer[i] <= -500) { digitalWrite(LEDG2, HIGH); if (sampleBuffer[i] >= 1000 || sampleBuffer[i] <= -1000) { digitalWrite(LEDG3, HIGH); if (sampleBuffer[i] >= 2500 || sampleBuffer[i] <= -2500) { digitalWrite(LEDY4, HIGH); if (sampleBuffer[i] >= 5000 || sampleBuffer[i] <= -5000) { digitalWrite(LEDY5, HIGH); if (sampleBuffer[i] >= 7500 || sampleBuffer[i] <= -7500) { digitalWrite(LEDR6, HIGH); if (sampleBuffer[i] >= 15000 || sampleBuffer[i] <= -15000) { digitalWrite(LEDR7, HIGH); } else { digitalWrite(LEDR7, LOW); } } else { digitalWrite(LEDR6, LOW); } } else { digitalWrite(LEDY5, LOW); } } else { digitalWrite(LEDY4, LOW); } } else { digitalWrite(LEDG3, LOW); } } else { digitalWrite(LEDG2, LOW); } } else { digitalWrite(LEDG1, LOW); } if (sampleBuffer[i] >= 10000 || sampleBuffer[i] <= -10000) { switchLED = !switchLED; if (switchLED) { digitalWrite(LED_BUILTIN, HIGH); digitalWrite(LEDC, HIGH); lED = true; } else { digitalWrite(LED_BUILTIN, LOW); digitalWrite(LEDC, LOW); lED = false; } } } samplesRead = 0; } } void onPDMData() { int bytesAvailable = PDM.available(); PDM.read(sampleBuffer, bytesAvailable); samplesRead = bytesAvailable / 2; }
Ora dalla scheda dashboard nell'IoT Cloud è necessario creare una dashboard. Quindi, creare i widget e collegarli a ciascuna variabile.
Il tutto dovrebbe funzionare dopo aver ricaricato la dashboard dell'Arduino IoT Cloud.
Il progetto completo è disponibile QUI.
In conclusione
Riepilogando, in questo articolo abbiamo analizzato i componenti integrati, le specifiche tecniche e le interessanti caratteristiche funzionali della scheda di sviluppo Arduino Nano RP2040 Connect, una scheda appartenente alla Nano Family di Arduino e che implementa il chip in silicio della scheda Raspberry Pi Pico. Una fusione perfetta tra il concept di Arduino e quello di Raspberry Pi Pico. Il nucleo della scheda è concentrato tutto nell'RP2040. Poiché dotata di caratteristiche funzionali di alto livello e di un potente chip ad alta capacità computazionale, ha tutte le possibilità di diventare un vero e proprio must per i progettisti embedded e IoT nella realizzazione di prototipi, progetti e applicazioni connesse. E' possibile realizzare progetti elettronici in modo semplice e veloce unendo le abilità creative e tecniche. Abbiamo mostrato anche un esempio applicativo basato sulla scheda per realizzare un visualizzatore di suoni in una stanza. Sfruttando la potenza del cloud, Arduino Nano RP2040 Connect è la scelta ottimale per tenere aggiornati i propri progetti preesistenti e valorizzare il potenziale nascosto di quelli nuovi, trasformando idee in progetti reali.
Massimo Banzi, tra i fondatori della piattaforma, riassume così l'obiettivo alla base del progetto Arduino:
"Pensiamo sia essenziale giocare con la tecnologia, esplorando le diverse possibilità di hardware e software, spesso senza un obiettivo ben definito. Riutilizzare la tecnologia esistente è una delle vie migliori del fare THINKERING. Prendere giocattoli economici o vecchi oggetti inutilizzati e modificarli è la via migliore per ottenere grandi risultati."
Visitando la pagina web di TME Electronic Components è possibile scoprire tutte le soluzioni ed i componenti messi a disposizione nei campi della progettazione elettronica e industriale.
Info & Riferimenti
[2] Documentazione: Nano RP2040 Connect | Arduino Documentation | Arduino Documentation
[3] Datasheet: ABX00053-datasheet.pdf (arduino.cc)
[4] Schematici: Altium.WebViewer.Files.WebViewerJob_PDF_SCHPrint (arduino.cc)
[5] Diagrammi pinout:
Pinout_NanoRP2040_latest.png (2571×2572) (arduino.cc)
Pinout_NanoRP2040_latest.pdf (arduino.cc)