Site icon Renzo Mischianti

Schede Raspberry Pi Pico e rp2040: pinout, specifiche e configurazione IDE Arduino – 1

Raspberry Pi Pico, W e altre schede rp2040: specifiche di piedinatura configurazione dell'Arduino IDE

Raspberry Pi Pico, W e altre schede rp2040: specifiche di piedinatura configurazione dell'Arduino IDE

Spread the love

Raspberry Pi Pico, W, and other rp2040 boards: pinout specs Arduino IDE configuration

È tempo di esplorare la nuova serie di microcontrollori basati sul chip rp2040 della Raspberry Pi Foundation. Come al solito, utilizzeremo l’IDE Arduino generico ed il linguaggio C.

Introduzione

Raspberry Pi Foundation ha progettato un nuovo chip chiamato RP2040. Il chip è dotato di un processore Arm Cortex-M0+ dual-core con 264kB di RAM interna e supporto per un massimo di 16 MB di flash off-chip. Un’ampia gamma di opzioni I/O flessibili: include I2C, SPI e I/O programmabile (PIO).

Dopo un po’ di tempo e circa due milioni di dispositivi venduti, Raspberry Pi ha rilasciato anche la versione W con WiFi per offrire una soluzione IoT.

Here my selection of rp2040 boards Official Pi Pico - Official Pi Pico W - Waveshare rp2040-zero - WeAct Studio rp2040

Specifiche delle schede rp2040

rp2040 structure block diagram

rp2040 identifica il tipo di chip, quindi ci aspettiamo che questo sia il primo di una lunga serie. Nel codice puoi leggere il numero di core, la variante del processore, la ram, ecc. Guarda il diagramma.

rp2040 code identification

AIROC CYW43439 di Infineon

Solo per il Raspberry Pi Pico W possiamo controllare le specifiche del coprocessore WiFi.

WiFi

Bluetooth (non attivo ora)

Raspberry Pi Pico

La primogenita è la scheda Pico che ha una buona quantità di pin e un form factor adatto per breadboard.

Raspberry Pi Pico rp2040 pinout low resolution

Raspberry Pi Pico: high-resolution pinout and specs

PINs

Pins di alimentazione

GPIO Pins

I2C Pins

SPI Pins

ADC Pins

Raspberry Pi Pico W

La versione W ha le stesse specifiche di Pico ma con un coprocessore AIROC CYW43439 di Infineon per ottenere una connessione Wi-Fi.

Raspberry Pi Pico W pinout

Raspberry Pi Pico W: high-resolution pinout and specs

WeAct Studio rp2040 Pico

WeAct Studio RP2040 pinout

WeAct Studio rp2040: high-resolution pinout and specs

WeAct Studio è una fabbrica che costruisce una scheda di ottima qualità, e pubblico già le varianti STM32F4 Black pill (WeAct STM32F411CEU6 Black-Pill  WeAct STM32F401CCU6), qui propongono un clone Raspberry Pi Pico con dimensione della flash selezionabile.

WeAct Studio RP2040 Pico

Oltre al Raspberry Pi Pico, qui abbiamo:

Waveshare rp2040-zero

Un’altra alternativa con un fattore dimensionale ridotto è proposta da Waveshare.

Waveshare rp2040-zero pinout

Waveshare rp2040-zero: high-resolution pinout and specs

Configurazione IDE Arduino

Prima di tutto, devi aggiungere questo URL

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

agli URL del tuo gestore di bacheche aggiuntive in File --> Preferences.

Raspberry Pi Pico w rp2040 board URL manager on Arduino IDE

Ora puoi andare su: e cercare “Pico” .
Tools --> Boards ... --> Boards manager

Raspberry Pi Pico w rp2040 board manager Arduino IDE

Ora puoi selezionare la tua scheda rp2040

Arduino IDE select Raspberry Pi Pico rp2040 boards

Alternativa gestore della scheda Arduino IDE

Raspberry Pi Pico W

Arduino offre anche un’alternativa al gestore URL rp2040 già visto, puoi andare su: e cercare “mbed rp2040” .
Tools --> Boards ... --> Boards manager

Arduino mbed rp2040 board manager Arduino IDE

Ma sconsiglio questo approccio. Puoi avere problemi.

Modalità di caricamento

Una piccola nota sulla modalità di caricamento su dispositivi simili a Raspberry Pi Pico. Per le schede ufficiali, puoi seguire due approcci, per me molto noiosi.

Per accedere alla modalità di caricamento, puoi:

Reset button on Raspberry Pi Pico rp2040

o così

Bottone reset su Raspberry Pi Pico rp2040 su run reset

Le altre schede hanno un pulsante di ripristino integrato e devi semplicemente eseguire questi passaggi:

  1. Premere il pulsante BOOTSEL;
  2. Premere e rilasciare il pulsante Reset;
  3. Rilascia il pulsante BOOTSEL.

Primo sketch

Sketch Blink per Pi Pico, W e WeAct rp2040

È possibile utilizzare uno sketch di lampeggio standard per Raspberry Pi Pico, W e WeAct Studio rp2040.

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Per le schede ufficiali, puoi selezionare la scheda dall’elenco.

Raspberry Pi Pico

Per WeAct Studio rp2040, se hai solo 2Mb di flash, puoi selezionare la scheda Raspberry Pi Pico, altrimenti puoi selezionare una scheda rp2040 generica e quindi la dimensione della flash corretta.

Arduino IDE select Generic rp2040 board and correct flash size.

LED RGB su Waveshare rp2040-zero

C’è una situazione diversa per Waveshare rp2040-zero che ha un led RGB integrato.

Ora andiamo a gestire il led RGB indirizzabile (LED RGB indirizzabile (WS2812), pilotato da GPIO16) installato sulla scheda.

È necessario installare la libreria Adafruit_NeoPixel.h dal gestore delle librerie.

Ecco il semplice sketch:

/*
 *  Here a simple sketch to test the upload on Waveshare rp2040-zero.
 *  The addressable RGB LED (WS2812), driven by GPIO16 need
 *  Adafruit NeoPixel library
 *  by Mischianti Renzo <https://mischianti.org>
 *
 *  https://mischianti.org/
 *
 */

#include <Adafruit_NeoPixel.h>
#define PIN 16
#define NUMPIXELS 1
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

enum {NONE, RED, GREEN, BLUE};
int ledColor = NONE;

void setup()
{
  pixels.begin();
}

void loop()
{
  switch (ledColor) {
    case NONE:
      pixels.setPixelColor(0, pixels.Color(0, 0, 0));
      pixels.show();
      break;
    case RED:
      pixels.setPixelColor(0, pixels.Color(20, 0, 0));
      pixels.show();
      break;
    case GREEN:
      pixels.setPixelColor(0, pixels.Color(0, 20, 0));
      pixels.show();
      break;
    case BLUE:
      pixels.setPixelColor(0, pixels.Color(0, 0, 20));
      pixels.show();
      break;
    default:
      break;
  }

  ledColor++;
  if (ledColor == 4) {
    ledColor = NONE;
  }

  delay(1000);
}

E questo è il risultato.

Waveshare rp2040-zero

Test di rete con Raspberry Pi Pico W

Vado a mostrare lo sketch per la scansione della rete per Raspberry Pi Pico W.

// Simple WiFi network scanner application
// Released to the public domain in 2022 by Earle F. Philhower, III
#include <WiFi.h>

void setup() {
  Serial.begin(115200);
}

const char *macToString(uint8_t mac[6]) {
  static char s[20];
  sprintf(s, "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
  return s;
}

const char *encToString(uint8_t enc) {
  switch (enc) {
    case ENC_TYPE_NONE: return "NONE";
    case ENC_TYPE_TKIP: return "WPA";
    case ENC_TYPE_CCMP: return "WPA2";
    case ENC_TYPE_AUTO: return "AUTO";
  }
  return "UNKN";
}

void loop() {
  delay(5000);
  Serial.printf("Beginning scan at %d\n", millis());
  auto cnt = WiFi.scanNetworks();
  if (!cnt) {
    Serial.printf("No networks found\n");
  } else {
    Serial.printf("Found %d networks\n\n", cnt);
    Serial.printf("%32s %5s %17s %2s %4s\n", "SSID", "ENC", "BSSID        ", "CH", "RSSI");
    for (auto i = 0; i < cnt; i++) {
      uint8_t bssid[6];
      WiFi.BSSID(i, bssid);
      Serial.printf("%32s %5s %17s %2d %4d\n", WiFi.SSID(i), encToString(WiFi.encryptionType(i)), macToString(bssid), WiFi.channel(i), WiFi.RSSI(i));
    }
  }
  Serial.printf("\n--- Sleeping ---\n\n\n");
  delay(5000);
}

E il risultato è:

Beginning scan at 16543
Found 7 networks

                            SSID   ENC     BSSID         CH RSSI
                reef-casa-centro  WPA2 00:E0:20:74:B4:99  6  -76
                 reef-casa-sotto  AUTO 04:95:E6:81:67:51 11  -82
                    TIM-18355607  WPA2 20:B0:01:18:15:97 11  -82
                 reef-casa-sopra  WPA2 4C:ED:FB:1C:8C:10  1  -44
                   Vodafone-WiFi  NONE 92:16:05:19:3F:D2  2  -92
                  reef-casa-orto  AUTO C8:3A:35:C3:8F:F1  8  -49
                reef-casa-centro  WPA2 F0:B0:14:79:6D:70  6  -62

--- Sleeping ---

Grazie

  1. Schede Raspberry Pi Pico e rp2040: pinout, specifiche e configurazione IDE Arduino
  2. Schede Raspberry Pi Pico e rp2040: filesystem LittleFS integrato
  3. Scheda Raspberry Pi Pico e rp2040: ethernet w5500 e requests HTTP e HTTPS (SSL)
  4. Schede Raspberry Pi Pico e rp2040: WiFiNINA con coprocessore WiFi ESP32
  5. Schede Raspberry Pi Pico e rp2040: come utilizzare una scheda SD
  6. Dallas ds18b20
  7. Collegamento dell’EByte E70 ai dispositivi Raspberry Pi Pico (rp2040) ed un semplice sketch di esempio

Spread the love
Exit mobile version