INASOFT 管理人のひとこと


フリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。
2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。
・INASOFT Webサイト: https://www.inasoft.org/
・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/
2022年7月下旬より再び本業多忙化してきているため、更新頻度は落ちます。 [2022/7/24 19:32]

目次 | ←前へ / 2021-05-13 00:00 / 次へ→ / 最新へ⇒

■Raspberry Pi Picoを買ったけど、あまり上手くいかず。上手くいかないうちにだんだん熱が冷めて…

2021年 5月13日(木) 0:00:00



RSSRSS配信中
https://www.inasoft.org/



ここ最近のアクセス数を観てみると、家の棚の中からUSB-HDDを掘り出した話とか、Raspberry Pi Zeroの話とかの時だけ、やたらとアクセス数が上がる。

やっぱり、こういうガジェット的な話が好きな人が多いみたいですね。僕の周りには。

というわけで、そういう話を強化していきたいです。

で、前回ちょっと書いた通り、もう一つ遊びたいと思っていたRaspberry Pi Picoが届きました。

Raspberry Pi Pico

この界隈では「ラズピコ」と呼ぶそうです。

普通に薄いタイプの(固い)封筒に入った状態でポストインされており、こういう圧倒的に小さい機器を目にすると、やっぱり感動します。名刺サイズのワンボードコンピュータ「Raspberry Pi 3 model B」を初めて見た時と同じような感動かも。大きさは、21mm×53mm×3mmくらいかな。これなら、普通にFRISKのケースの中に入ります。

Raspberry Pi Pico in FRISK

この薄さ的には、ミンティアのケースにも入るかもしれない。(→これを実際に試した結果は、5月14日の記事を参照)

Raspberry Pi Picoはミンティアのケースにも入る?

で、問題はこれを使いこなせるかです。

よく知られている通り、Raspberry Pi ZeroはLinuxが動き、PC的な要素を多く含んでいますが、Raspberry Pi Picoはそういう要素のないマイコンなので、色々と考え方とか、問題が起きたときの解決法が違ってくると思います。特に、僕が慣れ親しんだLinuxの世界のルールが通用しないということは、問題が発生した時に、ある種の「ゴリ押し解決」が通用しないとも言えるわけで。

とりあえず、Raspberry Pi Zeroのときに目指したところ(=USB接続したら、即座にマウスふるふる)をゴールとして、同じことをRaspberry Pi Picoでシンプルかつエレガントに実現できないかを考えました。

ですが、今のところ、ゴールにはたどり着けていません。チャレンジしたのは以下の通り。


  1. どうやら、MicroPythonを入れるとスクリプトが動かせるらしい。ひとまず、Lチカは容易に実現できました。参考→PicoでとりあえずMicroPythonを動かしてみる
    書き込むスクリプトファイル名を「main.py」にすると、起動後すぐにスクリプトの実行が始まるのですが、Raspberry Pi Zeroと異なり、Linuxが起動するのを待つ必要がないため、USBケーブルを差し込んですぐにLチカが始まるのが素晴らしい。
  2. ただし、MicroPythonでUSBをHIDとして認識させる方法が分からない。検索すると、すぐに「CircuitPythonを使え」という記事が大量に見つかる(逆に、MicroPythonだけでHIDとして認識させる方法が探せない)ため、CircuitPythonの利用にシフトする。
  3. 参考サイト1-1:Raspberry Pi Pico で MicroPython その6 CircuitPythonの書き込みと動作確認
  4. 参考サイト1-2:Raspberry Pi Pico で MicroPython その7 CircuitPython でHID マウス
  5. CircuitPythonのHIDのやつはここから見える
  6. 参考サイト2-1:【速報】Raspberry Pi Picoに入門してみた(import array問題も記述あり)
  7. 参考サイト2-2:ラズピコでTinyUSBやってみよう(1) - 取り敢えず作ってみる
  8. 参考サイト2-3:ラズピコでTinyUSBやってみよう(2) - USB HIDの構造
  9. 参考サイト2-4:ラズピコでTinyUSBやってみよう(3) - USB HIDの実装と動作
  10. これにより、USBに接続するとすぐにHIDとして認識され、マウスカーソルが動くことを確認。これで万事解決!と思ったのだが、USB接続と共に、MicroPythonのストレージがUSBメモリの如く表示される(簡易学習用の装置なのだから、普通はこれは「使いやすい」と評価されるべき機能である……のだが)繋いだとたんにエクスプローラが開くマウスなんか認められん!スマートかもしれないが、エレガントではない!
  11. これを解決するために、マニュアルに書かれているような、boot.pyで「import storage」して「storage.disable_usb_drive()」を呼び出せば良いのではないか?と考えたが、disable_usb_driveなんて存在しないと怒られる。詰んだ。
    AttributeError: オブジェクト'module'に属性'disable_usb_drive'はありません
  12. CircuitPythonでドライブとして認識されてしまうのを防ぐことができないとなると、やっぱりMicroPythonで実現する(こちらならドライブとして認識されない)ことになるのだが、MicroPythonでUSBをHIDとして認識する方法を調べようにも、CircuitPythonでの方法がどんどんヒットしてしまって、まともに探せない。
  13. となると、最後の手段としてC/C++で実現するしかないか。
  14. Raspberry Pi 3 model Bを母艦とし、pico-sdkを導入。途中、cmakeのバージョンが古すぎてpico-sdkで作ったビルド環境のcmakeが通らないなどのトラブルはありつつも、なんとかしてLチカまでは実現。
  15. さて、ここから。C/C++でUSBをHIDとして認識させて、マウスを動かすにはどうしたらいいんでしょう。

ここまでで、ゴールデンウィークが終了してしまいました。

なんだか、Raspberry Pi 3 model B(Linux)の知識でゴリ押しできないからか、単にマイコン的知識が不足しているかは分かりませんが、自分の思いを完璧に実現するのは、なかなか難しいですね。Raspberry Pi Zeroなら、あっという間に実現できてしまったというのに。

だんだんと熱が冷めてきてしまった。

となると、もう、Raspberry Pi Zeroの方がスマートかつエレガントってことでいいんじゃないのか。GPIOピンが邪魔でFRISKのケースに入らないことが気に食わないなら、とっととスイッチサイエンスの通販サイトにでも行って、Raspberry Pi Zero Wを買ってしまえば、1000円少々で問題解決できるってことじゃないのか?

そこで、3日くらい迷ってしまいました。

次の土日を待って、もっと調べて技術の力で解決(ラズピコで実現)するか、金の力(1000円少々)でRaspberry Pi Zero Wをもう一つ買って解決とするか。

3日迷って出した結論は、金の力(1000円少々)で解決でした。よし、Raspberry Pi Zero Wをもう一つ買って解決しよう。1000円少々を課金だ!

あ、でもせっかくだから、ちゃんとした公式ケースも欲しいし、miniHDMI変換コネクタも欲しいし、USB A-B変換コネクタも欲しいし、microHDMI変換コネクタも欲しいし、USB A-C変換コネクタも欲しいし……とあれこれ買ってたら3,883円ほど課金することになってしまいましたが、とりあえず通販で買うことにしました。

ってか、3日前に迷ってないでとっとと買っていれば、もう手元に到着していたんじゃないか?と思うと、かなり後悔してます。

90歳のおばあちゃんが、「70歳の時に○○(習い事)を始めていれば、20年のキャリアを持てたのに」と悔しがる気持ちが、少しだけ分かった気がします。0.0041068%くらい分かった気がします。

【追記】2年以上たってから再挑戦



目次 | ←前へ / 2021-05-13 00:00 / 次へ→ / 最新へ⇒


目次の表示:


ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメールフィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。
当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。本ページは公開から1年半後の任意のタイミングで削除される予定です。


- 最近の更新 -



3211846 (+0211)[+0260]

Copyright© 2010-2024 INASOFT