3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ハードウェアバディでClaudeとおともだち

3
Posted at

みなさん、Claude Desktopにハードウェアバディという機能があるのをご存知でしょうか?

image.png

Claude Desktopと物理デバイスを接続できるIoT機能です。

接続する物理デバイス側のソースコードはGitHubで公開されており、M5 StickC Plusに簡単に導入できるようです。

佇まいがおしゃれです。

github.com_anthropics_claude-desktop-buddy.png

私は残念ながらM5 StickC Plusを持っていないので、手持ちのCore2 For AWS向けにバイブポーティングしてみました。

ディスプレイサイズが違うので何故か横向きになりました🤣

横向きが悔しかったのですが、C++は全くできないので手が出せずにいました。(どうせコード自分で書かないですが)

未練たらたらclaude-desktop-buddyのGitHubリポジトリを眺めていると、ハードウェアバディの通信仕様がドキュメント化されている事に気が付きました!!

C++は無理でもPythonなら読めるので(書くとは言ってない)、MicroPythonで挑戦。試行錯誤の末、動作するところまで持っていけました。

image.png

ソースコードはこちらで公開しています。

👇️👇️👇️

試してはないですが、MicroPythonに対応した他のM5Stack製品やもしかするとRaspberry Pi Pico Wでも動くかもしれません。

環境構築や色々詰まった点など、レポートしてGWの自由研究とさせていただきます。

MicroPythonのファームウェアを入手

M5Stack製品のMicroPythonファームウェアはGitHubで公開されています。

M5Stackは、UIFLowというGUIのブロックエディタでプログラムが構築できますが、裏側ではPythonコードが生成されているようで、ブロックエディタで作ったプログラムを動作させるファームウェア=MicroPython環境のようです。

ファームウェアの導入

Core2 For AWSはESP32に搭載されているチップはESP32というもののようで、ファームウェアの書き込みにはesptoolというツールを使います。pipやuvで簡単に取得できます。

導入済みのファームウェアを削除する方法

uv run python -m esptool --chip esp32 --port <PORT> erase-flash

MicroPythonのファームを書き込む方法

uv run python -m esptool --chip esp32 --port <PORT> --baud 1500000 --before default-reset --after hard-reset write-flash --flash-size 16MB 0x0 <FIRMWARE.bin>

ギリ、にわかIoT技術者の僕でもできました。

Pythonスクリプトのコピー

PC上で作成したPythonスクリプトをCore2 For AWSへ転送するには、mpremoteというツールを使いました。MicroPythonのドキュメント内に使い方があるので公式ツールって事かもしれません。

Core2 For AWS内のファイル一覧を取得する

uv run mpremote connect port:<PORT> resume fs ls

Pythonスクリプトを転送する

uv run mpremote connect port:<PORT> resume fs cp {転送元ファイルパス} {転送先ファイルパス}

実行する

uv run mpremote connect port:<PORT> resume exec "exec(open('{Pythonスクリプトパス}').read())"

これだけ知ってればなんとかなるでしょう。

詰まったところ

BLE通信が非暗号化方式と暗号化方式が対応しており、非暗号化の方はすんなり行きましたが暗号化のほうがつまりました。というのも、ペアリングコードを入力してOSの機能でペアリングをするのですが、一度ペアリングをしたあとに、端末をリセットすると、Windowsの方にだけペアリングした情報が残ってしまい、その後うまく動作しませんでした。
毎度、Windowsに登録されるペアリング情報を削除する必要があることに気づくまで、結構時間を使ってしまいました。

ソフトウェアで完結している状態であれば生成AIにぶん投げられるのですが、物理デバイスが絡むと、まだまだ手作業がひつようだな、と感じました。

おまけ。

もう一つ大変だったものがあります。
Claude Codeを起動したときに出てくる彼。

image.png

どうせアスキーアートでしょ、と軽く見積もってしまい、Claudeに「これ再現して~」とぶん投げた結果、出てきたのがこれ。

image.png

「ずれてるよー」と言って改善されたのがこれ。

image.png

意外と難しいようです。なので、ジャパニーズITエンジニア必殺のExcel方眼紙に再現し事なきを得ました。。

image.png

image.png

やっぱりIoTはたのしいな!

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?