Arduino Nano RP2040

Mikrokontrolér RP2040 od Raspberry Foundation sme už predstavili v článku o vývojovej doske Raspbery Pi Pico. Rovnaký mikrokontrolér je použitý aj v novom Arduino Nano RP 2040. Doska sa dodáva v dvoch variantoch s prispájkovanými pinmi, alebo vo variante Connect, kde sú piny pribalené, ale prispájkovať si ich musíte sami. Srdcom dosky je 32bitový dvojjadrový mikroprocesor s architektúrou ARM Cortex M0+ taktovaný na 133 MHz. K dispozícii má 264 kB SRAM a 16 MB pamäti flash. Na doske je aj modul u-blox NINA-W102 podporujúci komunikáciu cez WiFi a Bluetooth, 6 osový IMU pohybový senzor s možnosťou strojového učenia zahrňujúci  akcelerometer a gyroskop a taktiež aj RGB LED a mikrofón umožňujúci hlasové ovládanie.

Video

Na každej strane dosky je 15 kontaktov s pokovenými otvormi, ktoré majú štandardný rozostup 2,54 mm

V prototypových riešeniach do týchto otvorov prispájkujete hrebeňový konektor, ktorý umožňuje dosku Arduino Nano RP2040 zasunúť do prepojovacieho poľa. V hotových odskúšaných riešeniach môžete prispájkovať vodiče priamo na dosku, alebo prispájkovať celé Nano RP2040 dosku na plošný spoj elektroniky vášho riešenia, čím sa ušetrí miesto. Pri spájkovaní vám pomôže ak konektory zasuniete do prepojovacieho poľa, čím sa zaistí kolmosť pinov voči doske.

Arduino Nano RP2040 Connect jednoduchosťou nasadenia zaujme začiatočníka a svojimi možnosťami vyhovie aj pre náročného konštruktéra. Doska podporuje komunikačné rozhrania I2C, SPI a UART. Rozloženie pinov dosky sú kompatibilné s pôvodným Arduinom Nano.

Takmer všetky piny sú alternované

Arduino Nano RP 2040 môžete použiť do modulov pre Arduino Nano. Na obrázku je doska na ovládanie krokových motorov od jederobot.cz

K dispozícii je 20 digitálnych GPIO pinov a 8 analógových vstupov. PWM podporuje 20 pinov (okrem A6 a A7), taktiež na týchto 20 pinov môžete spracovávať externé prerušenia.

Blokový diagram pro Arduino Nano RP2040 Connect

Arduino Nano RP2040 samozrejme dokáže naplno využiť možnosti Arduino IoT Cloudu. Ten je v základnom pláne Free zdarma a za pokročilejší plán Entry zaplatíte 2,99 dolára mesačne. K dispozícii sú aj plány Maker (6,99 USD/mesiac) a Maker Plus (23,99 USD/mesiac) s oveľa širšími možnosťami

Všetky možnosti hardvéru na doske Nano RP2040 využijete s firmvérom Arduino mBed Core. Ten sa využíval už pre iné dosky, napríklad Arduino Nano 33 BLE. Podobne ako u dosky Raspberry Pi Pico, ktorá má rovnaký mikrokontrolér, môžete aj Nano RP2040 programovať v MicroPythone.

Vo videu sú dva príklady, ktoré sa doinštalujú do IDE po nainštalovaní Arduino mBed Core. V prvom je obsluha RGB diódy.

Nad USB konektorom je LED dióda pripojená na port 13 vpravo od konektora je RGB LED

Je pripojená k WiFi modulu NINA-W102, takže na ich obsluhu je potrebná knižnica pre tento modul. Všimnite si, že blikanie je rozdelené do troch samostatných úloh, ktoré bežia paralelne.

Prvá úloha zabezpečuje  blikanie červenou LED v intervale 1 sekunda

Druhá úloha zabezpečuje blikanie zelenou LED v intervale 1/10 sekundy

Tretia úloha monitoruje sériový port, a keď z monitora sériového portu zadáte znak „1“, rozsvieti sa modrá LED, keď zadáte znak „0“, modrá LED zhasne.

// sprava viacerých úloh.
#include
#include "WiFiNINA.h"

#define led1  LEDR
#define led2  LEDG
#define led3  LEDB


void setup()
{
  Serial.begin(9600);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);

  // pridanie "loop2" and "loop3" do zoznamu úloh.
  // "loop" je implicitná hlavná slučka
  Scheduler.startLoop(loop2);
  Scheduler.startLoop(loop3);
}

// Uloha 1: červená, interval 1s.
void loop()
{
  digitalWrite(led1, HIGH);

  // delay umožňuje beh ďalších úloh
  delay(1000);
  digitalWrite(led1, LOW);
  delay(1000);
}

// Uloha2: zelená, interval 0,1 s.
void loop2()
{
  digitalWrite(led2, HIGH);
  delay(100);
  digitalWrite(led2, LOW);
  delay(100);
}

// Uloha 3: modrá príkaz 0 alebo 1 cez sériový port
void loop3()
{
  if (Serial.available())
  {
    char c = Serial.read();
    if (c == '0')
    {
      digitalWrite(led3, LOW);
      Serial.println("Modrá LED vypnutá!");
    }
    if (c == '1')
    {
      digitalWrite(led3, HIGH);
      Serial.println("Modrá LED zapnutá!");
    }
  }

  yield();  //prepínanie medzi úlohami
}

Druhý príklad demonštruje použitie vstavaného mikrofónu.

Navzorkované údaje sa prenášajú cez sériové rozhranie a zobrazia sa cez Zapisovač sériového portu v Arduino IDE. Zapisovač je v tomto prípade nie príliš výstižný preklad slova Plotter, pretože tento nástroj zobrazuje prenesené údaje, v tomto prípade priebeh zvuku v grafickej podobe.

#include

static const char channels = 1;     // vystupne kanaly
static const int frequency = 16000; // FRQ pre PCM
short sampleBuffer[512];  // buffer pre 16 bitové vzorky
volatile int samplesRead;  // načítané vzorky

void setup()
{
  Serial.begin(9600);
  while (!Serial);
  PDM.onReceive(onPDMdata); //callback
  // PDM.setGain(30);

  if (!PDM.begin(channels, frequency))
  {
    Serial.println("Chyba PDM!");
    while (1);
  }
}

void loop()
{
  // čakaj na načítanie vzoriek
  if (samplesRead)
  {
    // výpis
    for (int i = 0; i < samplesRead; i++)
    {
      if (channels == 2)
      {
        Serial.print("L:");
        Serial.print(sampleBuffer[i]);
        Serial.print(" R:");
        i++;
      }
      Serial.println(sampleBuffer[i]);
    }
    samplesRead = 0;  // nuluj počet
  }
}

// callback funkcia
void onPDMdata()
{
  int bytesAvailable = PDM.available();  // počet bajtov
  PDM.read(sampleBuffer, bytesAvailable);  // načítaj do bufra
  samplesRead = bytesAvailable / 2;  // 16 bit vzorky 2 bity na vzorku
}

V pokračovaní ukážeme čítanie údajov z akcelerometra, využitie WiFi a Arduino IoT cloudu.


Článek byl převzat z webu Nextech se souhlasem autora.