クロードは私のESP32がフルコンピュータではないことを忘れています。これが私の4つの修正です
私が遭遇する Vibe コーディング プロジェクトのほとんどは、C、C++、Python などの高級言語で書かれています。ただし、Claude はまともな MicroPython を書くこともできます。少し注意する必要があります。
クロードは、MicroPython を通常の Python と同じように記述する傾向があります。つまり、生成されるコードは、数百キロバイトの RAM しか搭載していない多くのマイクロコントローラーにとって、メモリを大量に消費することがよくあります。また、マイクロコントローラーを使用して何かを構築しようとしているときに、重要な要素が常に考慮されているわけではないこともわかりました。 LED の点滅はクールです。 LED が点滅してボタンを押すことができないのは、本当に不快です。
これらは、Claude が ESP32 ボード用のより便利な MicroPython を作成できるように私が見つけたいくつかのことです。
フリーズせずに 2 つのことを同時に実行する
time.sleep() を廃止してボタンを押せるようにする
基本的な LED 点滅プロジェクトを作成したことがある場合は、おそらく time.sleep() を使用したことがあるでしょう。クロードは通常、バイブコードを作成するときにこれを使用し、ほとんどの一般的なチュートリアルでもそれを使用していることがわかります。
初めてコードの書き方を学ぶ場合には問題ありませんが、そうでない場合は非常に苦痛です。 Sleep() はボードに停止を指示します すべて 指定された期間。その間に別のボタンを押しても完全に無視されます。
これは現実のプロジェクトではすぐに問題になります。代わりに、tick_ms() とticks_diff() が LED の点滅を処理できることをクロードに思い出させてください。 それなし ボードを縛ります。アシンシオもクロードを指向させるのに適した人物です。
これらのコマンドを特に指定しない場合でも、必ず次のようにしてください。 クロードに伝えてください いつでも入力できるようにする必要があるということです。
ボタンを 1 回押すと 1 回だけ発火するはずです
デバウンスは不可欠です
ボタンの押下を読み取る単純なスクリプトを作成すると、1 回の押下が実際には複数のヒットとして記録されることがよくあります。これは正確にはソフトウェアのバグではなく、金属接点が接触するときにわずかに跳ね返り、それが複数回押されたこととして記録されるために発生します。
これを修正するために、クロードは多くの場合、最初の押しの後にスリープを追加して、その後の押しが記録されないようにすることがよくあります。ただし、押したいボタンが複数ある場合には、それが問題になる可能性もあります。
クロードにデバウンスを考慮するよう必ず伝えてください それなし 変な間が空かないように寝てます。
ESP32 から携帯電話に読み取りを取得します
自ら再接続する MQTT パブリッシング
メッセージ キュー テレメトリ トランスポート (MQTT) は、ESP32 ボードからホーム アシスタントなどに情報を取得する最良の方法です。軽量で導入も簡単です。
しかし、クロードは再接続という重要な部分を無視する傾向があることがわかりました。私のデバイスの中には、何ヶ月も触らずに動作し続けるものもありますが、その間にルーターが再起動したり、停電が発生したり、その他の何らかの原因で接続が中断されたりすることがあります。クロードから入手できる一部の単純なスクリプト (特に、何らかの理由で Opus 5) には再接続の規定がないため、オフラインになると、ユーザーが介入するまでオフラインのままになります。
デバイスをオンラインに戻す再試行機能を含めるようにクロードに要求するようにしてください。 それ自体で 屋根裏部屋に埋め込んだセンサーをいじる必要がなくなります。 Umqtt.robust から始めるのが良いでしょう。
ボードを再フラッシュせずに設定を変更する
Config.json により、ボードを再フラッシュする手間が省けます
クロードに Wi-Fi 資格情報を提供すると、ESP32 ボード用に作成するスクリプトにその資格情報がハードコーディングされる可能性があります。ネットワーク名またはパスワードが変更された場合は、コードを変更してボードを再フラッシュする必要があります。
絶対に誰もそんなことしたくありません。
代わりに、ボードのフラッシュ メモリに保存されているファイルから設定を読み取るようにクロードに伝えます。 Config.json は一般的なオプションですが、実際には任意のプレーン テキスト形式が機能します。スクリプトはボードの起動時にファイルをロードします。つまり、パスワードを更新したい場合に設定ファイルを調整するだけで済みます。
また、Wi-Fi パスワードを世界に提供しなくても、コードをインターネット上で共有できることも意味します。
警告: 重要な認証情報をコードにハードコードして公開しないでください。認証情報を保存するために別の構成ファイルを使用する場合は、それも公開しないようにしてください。これは、バイブコーディングされたプログラムでは頻繁に起こります。
バッテリーで数週間稼働
深い睡眠を上手に活用する方法を学ぶ
ESP32 プロジェクトは多くの場合、バッテリーで長時間実行する必要があります。 ESP32 ボードがずっとオンになっていると、適度なサイズのバッテリーでも数日で切れてしまいます。
ESP32 プロジェクトをバッテリーで実行することを計画している場合は、どのくらいの時間実行したいか、使用しているバッテリーの種類、バッテリーに入力電力 (小型 PV セルなど) が供給されるかどうかをクロードに必ず伝えてください。
クロードは、ボードがより深いスリープ状態に入り、アイドル時に数マイクロアンペアのみを消費し、センサー データを収集するために短時間電源がオンになった場合にのみ大量の電力を消費するように、ファームウェアの機能を変更できます。
注: 一部の開発ボードには、大量の電力を消費するオンボード LED と USB チップが搭載されているため、ボードの動作時間が短くなります。実行時間を最大限に高める必要がある場合は、ベアボードを入手してください。
クロードは優れた MicroPython を書くことができます。それは覚えておく必要があります。
クロードは、ESP32 用の MicroPython を完全に作成できます。ただその傾向があるだけです ない すぐにそうすることです。これを使った私の実験では、通常の Linux PC 用のコードを作成するのと同じ方法でマイクロコントローラー用のコードを作成するようであることが一貫してわかりました。それは問題を引き起こす可能性があります。
特定の用途を念頭に置いている場合は、その情報をプロジェクトまたはプロンプトに必ず含めてください。特定のボードまたはボードファミリー用に構築している場合は、その情報をクロードに提供してください。そして、いつものように、少量の RAM で作業していることを思い出してください。そうしないと、その考慮事項が無視される可能性があります。
関連情報は以下のリンクからご確認いただけます