RaspberryPiPicoでUSBからシリアルモニタリングをする
💓

RaspberryPiPicoでUSBからシリアルモニタリングをする

Tags
Arduino
通信
Software Development
Published
November 15, 2022

急にどうしたんだ

さっきwitterでこんなツイートを見かけたので,ラズピコもう一回遊んでみるかってなりました!

このツイートの主張(曲解)

  • ラズピコは神.ArduinoNanoの時代はとっくに終わっている!
  • Aliexpressで380円で買える.正規品を買うのは情弱だけだ!
  • 無線が必要ないならラズピコ一択!
かなり盛っていますが,こんな感じ.
ラズピコは魅力がいっぱい!!やすいし高性能!!

その”ラズピコ”って何ですか?

  • Raspberry Pi Pico
  • Raspberry Pi財団が独自に開発したARM Cortex M0+デュアルコアRP2040マイコンを搭載した開発基板
    • SBCではない.マイコンボード.
    • ProgramableIOが強い.FPGA的な感じで使える
  • Arduino言語でも書けるし,MicroPythonでも書ける.
  • 動作周波数133MHz!オーバークロックで300MHz!!
Raspberry Pi Pico
Raspberry Pi財団が独自に開発したARM Cortex M0+デュアルコアのRP2040マイコンを搭載した開発基板です。C/C++およびMicroPythonで開発が可能です。 既存のRaspberry Piとは異なりLinux OSは搭載できませんのでご注意ください。 USBケーブルや ピンヘッダ は付属も実装もされておりませんので、別途お買い求めください。 ピンヘッダはんだ付け済 を発売しました。 C/C++ SDK、もしくは公式に提供されているMicroPythonインタプリタを使って開発が可能です。本製品および搭載しているRP2040マイコンチップの技術資料も用意しています。 MicroPythonはPython 3ベースの組み込み用プログラミング言語です。USBをPCに接続すると表示されるドライブ(マスストレージ)にドラッグアンドドロップすることでプログラムを書き込むことができます。 どちらの言語も Welcome to Raspberry Pi RP2040 (Raspberry Pi財団のRP2040紹介ページ) に使い方が書いてあります。 ※購入される数量により異なる梱包形態でお届けする場合がございます。予めご理解いただき、お買い求めください。 Raspberry Pi(UK)設計のRP2040マイコン搭載 デュアルコア ARM Cortex M0+プロセッサ、最大動作周波数 133 MHz SRAM:264KB、フラッシュメモリ:2MB 端面スルーホールを備えているため直接キャリアボードへのはんだづけが可能 USB 1.1 ホスト/デバイス両対応 低消費電力スリープモードおよびドーマントモードが利用可能 USBを介しマスストレージを使ったドラッグアンドドロップによるプログラムの書き込みが可能 26 x 多機能GPIOピン 2 x SPI、2 x I2C、2 x UART、3 x 12 bit ADC、16 x PWMチャンネル 正確なクロックとタイマーを搭載 温度センサ搭載 高速な浮動小数点ライブラリを搭載 8 x プログラマブルI/O(PIO) Raspberry Pi Pico C / C ++ SDKのAPIレベルのDoxygenドキュメントは、 マイクロサイト に公開されています。 Switch Science ISP1807ピッチ変換基板 との大きさ比較 商品コード: RPI-PICO
Raspberry Pi Pico
notion image

前回の苦い思い出

📌
前回の振り返り
  1. Serial.print();を使いたかったんだけど,以前試した時にUSBコネクタとパソコンをつなげてもシリアルを吐いてくれなかった.
  1. そこで,USBシリアル変換器を使うことでピンからUARTを使用した.
  1. シリアル通信できた.でもUSBで書き込んでさらに別のUSBシリアル変換も必要なのちょっときもい
という感じで,シリアルモニタするのにすごくめんどくさかったんですよね.
何とかできないかと思ってちょっと調べてみました.
ArduinoIDEで利用する場合,SerialUSB/UARTクラスから
SerialUSB Serial; SerialUART Serial1; // HW UART 0 SerialUART Serial2; // HW UART 1
これを見つけてしまいました.SerialUSB.君が知りたかった!!

今回試したこと

SerialUSBを使いたい!
どうやらディストリビューションがあるらしいのでこれを試した.

インストレーション

  1. 次のURLをコピーして,追加のボードマネージャのURLのテキストボックスに貼り付ける.
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
notion image
  1. ツール/ボード/ボードマネージャをクリック
notion image
  1. タイプを提供されたにしてRaspberry Pi PIco/RP2040をダウンロードする
notion image

サンプルコード

ここにあったコードをそのまま貼り付けました.
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; } }
書き込みが終わると,シリアルポートに書き込む前はいなかったラズピコが出現します.
notion image
シリアルプロッタで見てみるとこんな感じになりました.
notion image
notion image
嬉しい.これでラズピコの世界にできました!!

デュアルコアで処理する

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なんとかって書いた上に排他処理を書かないといけないので,敷居が下がってちょっと嬉しいですね.中ではどんな処理がされているのか気になります.(まだみてない)
すごく便利なので皆さんもラズピコ使い始めましょう!