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
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.
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.
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.
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.