Arduino Nano RP2040 Connect: l’idea innovativa del brand elettronico made in Italy

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. 

Il punto di forza sul quale il brand torinese ha costruito il suo successo duraturo nel tempo è l'accesso gratuito alla documentazione dettagliata, all'ambiente di sviluppo di pubblico dominio, agli schemi elettrici delle schede ed al codice sorgente, unitamente a un serie di librerie che semplificano la creazione degli sketch e la messa a punto dei progetti. La progettazione può essere quindi semplificata da numerose librerie già pronte all'uso, che arricchiscono e semplificano la creazione del programma nell'ambiente di sviluppo (IDE, Integrated Development Environment), con la possibilità di condividere le proprie dee ed i propri progetti con tutti i membri della community. La forza di una community open source sta tutta qui, nella capacità di far crescere le competenze di makers e professionisti, di chi quindi apprende progettando secondo l'approccio del "Learning by Doing" e di chi invece possiede già delle basi e vuole affinare il suo know-how confrontandosi e mettendosi in gioco in uno spazio aperto a nuove idee e suggerimenti.

Non solo makers: interessanti specifiche tecniche adatte anche per un utilizzo professionale

La scheda di sviluppo Arduino Nano RP2040 Connect (Figura 1) rappresenta una novità assoluta per il noto brand torinese. Arduino Nano RP2040 Connect è un hardware open source molto giovane, ma allo stesso tempo si sta rivelando incredibilmente popolare tra i produttori di componenti elettronici e tra i progettisti elettronici, professionisti dell'elettronica, makers e appassionati, soprattutto per le opzioni di connettività a bordo, Wi-Fi 802.11b/g/n, Bluetooth e BLE v4.2. La scheda Arduino Nano RP2040 Connect è un dispositivo hardware connesso e questo, ovviamente, apre a tutti i tipi di possibilità applicative. L'hardware rappresenta sicuramente anche una spinta propulsiva per la vasta community di Arduino nella realizzazione di progetti innovativi anche complessi o che richiedono maggiore potenza computazionale. Il processore dell'Arduino Nano RP2040 Connect è basato sul nuovo chip di silicio Raspberry Pi RP2040. Questo microcontrollore offre opportunità per sviluppare applicazioni IoT a bassa potenza e l'apprendimento automatico integrato (Embedded Machine Learning), fornendo la giusta potenza di calcolo e l'elaborazione parallela con un consumo energetico molto basso. La scheda si adatta perfettamente al fattore di forma Arduino Nano

Figura 1. La scheda di sviluppo Arduino Nano RP2040 Connect con i componenti integrati on-board

L'idea del brand torinese di inserire un chip RP2040 come cuore di una nuova scheda Arduino nasce dalla consapevolezza dell'elevato livello prestazionale e dell'eccellente performance del chip. Questo System-on-Chip (SoC) è un microcontrollore Arm Cortex-M0+ dual-core a 32 bit, funzionante a una frequenza di clock di 133 MHz e con molte altre funzionalità extra. Solo per fare un confronto, il microcontrollore della scheda Arduino Uno, l'ATmega328, lavora a una frequenza di clock di 16 MHz. Una differenza notevole per le applicazioni nel mondo dei microcontrollori!  L'hardware di Arduino Nano RP2040 Connect è abbastanza potente per eseguire TensorFlow Lite. Ma c'è di più. Ciò che cattura subito l'attenzione sia di esperti di progettazione sia di appassionati e hobbisti, è l'inclusione del modulo radio Wi-Fi e Bluetooth u-blox NINA-W102, un potente modulo senz'altro già abbastanza conosciuto e apprezzato nel mondo degli utenti Nano. Il modulo radio u-blox NINA-W102 è sia estremamente popolare sia altamente adattabile, e rende la scheda un prezioso strumento connesso, nelle mani di chiunque voglia realizzare applicazioni del mondo dell'Internet delle Cose. E' proprio infatti il modulo Nina-W102 a fornire la connettività Wi-Fi e Bluetooth alla scheda. L'antenna PCB interna nel modulo elimina la necessità di un'antenna esterna. Tutto questo fa di Arduino Nano RP2040 Connect una scheda di sviluppo connessa e già pronta all'uso. 

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. 

Figura 2. La scheda di sviluppo Arduino Nano RP2040 Connect (top-side)

Figura 3. La scheda di sviluppo Arduino Nano RP2040 Connect (bottom-side)

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.

Figura 4. La scheda Arduino Nano RP2040 Connect nella configurazione senza pin headers preinstallati (Fonte: TME Electronic Components)

Figura 5. La scheda Arduino Nano RP2040 Connect nella configurazione con pin headers preinstallati (Fonte: TME Electronic Components)

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
Il microcontrollore RP2040 funziona a 3,3 V e dispone di un regolatore di tensione interno che fornisce 1,1 V. L'RP2040 controlla le periferiche e i pin digitali, nonché i pin analogici (A0-A3). I pin I/O programmabili hanno funzioni impensabili per le schede più grandi: 22 pin digitali, 20 con PWM e 8 analogici. 

Figura 6. Diagramma pinout della scheda

Figura 7. La pratica confezione contenente la scheda di sviluppo Arduino Nano RP2040 Connect

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.

Figura 8.

Collegare quindi ciascun LED ai pin digitali 3-9 sulla scheda Arduino Nano RP2040 Connect per essere controllati individualmente.

Figura 9.

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.

Figura 10.

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:

Figura 11.

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. 

Figura 12.

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

[1] Arduino Nano RP2040 Connect - Frase ricercata | Componenti elettronici. Distributore e negozio online - Transfer Multisort Elektronik (tme.eu)

[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)

 

 

 

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend