急にどうしたんだ
さっきwitterでこんなツイートを見かけたので,ラズピコもう一回遊んでみるかってなりました!
このツイートの主張(曲解)
- ラズピコは神.ArduinoNanoの時代はとっくに終わっている!
- Aliexpressで380円で買える.正規品を買うのは情弱だけだ!
- 無線が必要ないならラズピコ一択!
かなり盛っていますが,こんな感じ.
ラズピコは魅力がいっぱい!!やすいし高性能!!
その”ラズピコ”って何ですか?
- Raspberry Pi Pico
- Raspberry Pi財団が独自に開発した
ARM Cortex M0+デュアルコア
のRP2040
マイコンを搭載した開発基板 - SBCではない.マイコンボード.
- ProgramableIOが強い.FPGA的な感じで使える
Arduino
言語でも書けるし,MicroPython
でも書ける.
- 動作周波数133MHz!オーバークロックで300MHz!!
前回の苦い思い出
前回の振り返り
Serial.print();
を使いたかったんだけど,以前試した時にUSBコネクタとパソコンをつなげてもシリアルを吐いてくれなかった.
- そこで,USBシリアル変換器を使うことでピンからUARTを使用した.
- シリアル通信できた.でもUSBで書き込んでさらに別のUSBシリアル変換も必要なのちょっときもい
という感じで,シリアルモニタするのにすごくめんどくさかったんですよね.
何とかできないかと思ってちょっと調べてみました.
ArduinoIDEで利用する場合,SerialUSB/UARTクラスからSerialUSB Serial; SerialUART Serial1; // HW UART 0 SerialUART Serial2; // HW UART 1
これを見つけてしまいました.
SerialUSB
.君が知りたかった!!今回試したこと
SerialUSB
を使いたい!どうやらディストリビューションがあるらしいのでこれを試した.
インストレーション
- 次のURLをコピーして,追加のボードマネージャのURLのテキストボックスに貼り付ける.
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
- ツール/ボード/ボードマネージャをクリック
タイプ
を提供されたにしてRaspberry Pi PIco/RP2040をダウンロードする
サンプルコード
ここにあったコードをそのまま貼り付けました.
int i = 0; void setup() { Serial.begin(115200); } void loop() { if (i < 360) { Serial.print(sin(radians(i))); Serial.print(','); Serial.println(cos(radians(i))); i++; delay(5); } else { i = 0; } }
書き込みが終わると,シリアルポートに書き込む前はいなかったラズピコが出現します.
シリアルプロッタで見てみるとこんな感じになりました.
嬉しい.これでラズピコの世界にできました!!
デュアルコアで処理する
RP2040はM0でマルチスレッド(ここでは2スレッド)ができるので,試してみました.
結構簡単にできるらしく,サンプルだとこんな感じです.
void setup() { } void loop() { } void setup1(){ } void loop1(){ }
試しにLEDを光らせながらシリアルプリント
int i = 0; void setup() { Serial.begin(115200); } void loop() { Serial.print(sin(radians(i))); Serial.print(','); Serial.println(cos(radians(i))); i++; delay(1); } void setup1(){ pinMode(25,OUTPUT); } void loop1(){ digitalWrite(25,HIGH); delay(650); digitalWrite(25,LOW); delay(650); }
(動画がツイートされています)
こんな感じでデュアルコア処理もできました.
ESP32だとFreeRTOS使ってxTaskHandleなんとかって書いた上に排他処理を書かないといけないので,敷居が下がってちょっと嬉しいですね.中ではどんな処理がされているのか気になります.(まだみてない)
すごく便利なので皆さんもラズピコ使い始めましょう!