h_nari @ 熊本市のブログ。電子工作、プログラミング、ゲーム、TV、 政治、インターネットなどに日々の思い付きを、 うだうだ~と書いていきたい。
このブログにはコメント欄を設けておりません。 記事への御意見、ご質問はtwitter @h_nari宛に お願い致します。


アーカイブ

メタ情報
RSS
Login

Raspberry Pi Picoに手を出す

簡単な装置で試してみたいことがある。 ロータリーエンコーダで数値を設定しUSB(HID)経由で読み出せるぐらいの装置。 マイコンは手持ちの BluePillを使おうと思ったが、 上手く行って製造となっても STM32F103なんて手に入る気がしない。 いやAliExpressで買えるのだが1個1000円も払いたくない。 Raspberry Pi Picoなら 半導体不足と無縁そうなので この機会に手を出してみることにした。

開発環境

開発完了を調べると 公式のSDKは cmakeとか使うらしい。 使い慣れた vscode + platformio で開発したいので 調べると platformioも対応している。 すんなり導入できて、LチカプログラムをBuildし、 uploadはエラーになったが BOOTSELモードでUSBメモリと認識されたPicoに ファイルをコピーしてプログラムを書込み、動作させることができた。

PicoのRUN端子(ピン30)にGNDに接続されたSWをつけるとリセットできるので、 BOOTSELモード遷移時にUSBを抜き差しする必要がなくて便利である。

プログラムのデバッグにはシリアルポートへの出力が欲しい。 picoのArduinoのSerialはUSBのシリアルポートなので プログラム書込む毎に消失して面倒。 GP0をTX, GP1をRXとするシリアルポートがSerial1に定義されている。 それ以外のピンのシリアルポートを使用したい場合は以下のようにすれば良い。

UART my_serial(8, 9);  // TX: GP8, RX:GP9

シリアルポートに使用可能なピンは(GP0,1),(GP4,5),(GP8,9),(GP12,13)の4組。

今後

platformioでuploadに失敗する原因はよくわからないが、 いずれuploadできるようにしたい。 jlinkにも対応しているそうなので AliExpressに安いコンパチ品を注文した。 Raspberry Pi Pico自身を使って 別のPicoに書き込む方法もあるらしい。 こちらも、そのうち試してみたい。

Platformioのpicoのライブラリを見ると USB keyboardやmouseがあるので 何かサポートされているようだ。 USB(HID)が簡単に実装できることを祈る。 descriptorが面倒なのよね。

PicoのCPU(RP2040)は2コアだが platformioでは1コアで動かしている気がする。 性能は求めていないので1コアの方が面倒が無くて良い。 排他制御が割込み禁止だけで済む。 2コアだと mutexとか semaphore 必要?