×

ずいぶん前に各種パーツの詰まったAruduinoの詰め合わせセットキットを買っていました。
でも、それに着手する前なのに、似たようなESP32のキットも買ってしまったのです。

奥がEPS32+各種のパーツが組み合わされたキット。

手前はユニバ基板とESP32が2枚ずつ入ったものです。合計3枚のESP32が揃った。

ブレッドボードはもちろん、センサー類などをはじめ大量のパーツが入っていてありがたい。これで2千日本円程度です。これらだけでかなり遊べます。
 

ところで、何を作ろうとしているの?

先日、我が家のRoon ROCKがめでたくローンチしましたよね。

このROCKの両サイドには通風口があって、そこから冷却ファンの風が吹き出しているわけです。

この通風口のごく近傍にセンサーを設置して、次の2点を観測したいのです。

  • 温度
  • ファンノイズの音量

イメージとしては、

こんな感じですね。
センサーは外付けラインで近傍に置き、本体回路は別体で隠れた場所に設置。

Roon ROCKが驚くほど涼しく、そしてファンも回っていることが聞こえないほどというお話はしました。でもファンが回って熱くなる瞬間というのはあるはず。それはどんな処理をさせているときなのか?そしてROCKの異常事態を検知したい。つまり、ROCKの「ヘルスモニター」を作りたい というのが今プロジェクトの骨子です。

なぜ、ROCKの中でやらず外側?

それは前回のRoon ROCKプロジェクトにおいて私が骨身に染みて学んだこと。認知ノイズの低減。運用S/Nを上げること。そして、ROCK本体には「余計なことを一切やらせないこと」。

ROCKにはオーディオプロセシング以外は一切やらせず、専業に徹していただきます。

ROCKはLinuxベースで動いていますから、網の目を掻い潜っておそらくは特殊なサービスを動かしたり、内蔵のシステムを生かしたCPU温度関しなどもできるでしょうよ。しかし私はそれをしません。オーディオ以外を一切扱わないことこそがROCKの美学であり、それ以外は余計なノイズなのです。(音質のことは言っていないです。運用ノイズ。認知ノイズ。)分かりやすく言えば、ファンをモニタリングしたいがために、ファンが余計にブン回る。などという事は絶対に有ってはならない。ほんのわずかでも。
だから、温度や音量をモニタしたいという私の要求を満たすなら、それはROCKの徹底的に「外側」で構築します。

ではなぜESP32かという話なんですが、そこはそれ。ESP32はこの手のマイコンではWi-FiとBluetoothが使え、一番IoT寄りなんですよね。だからArduinoではなくてESP32になりました。温度とファンノイズをモニタリングし、可視化し、それをウェブダッシュボードで閲覧可能にしたい。〜な〜んて事をやりたくなると、ESP32が最適解なのですね。

以下、例によって私の作業備忘録なので退屈な話がつづきます。

最初はArduino IDEで

まずはPC側の開発環境の構築です。
ちゃっぴーとの壁打ちで、いつものように彼は将来への遠大なスコープを示してくれました(笑)
最初はArduino IDEで始めるのが最適解だが、ゆくゆくはVSCode + PlatformIOへ拡張し移行してゆけと言うのです。
まあ、初学のとっかかりとしてはやはりAruduino IDEの方が手っ取り早く成果が得られ、成功体験を持って次へ進みやすいという事らしいです。

途中で直面した課題

全体ディレクションはChatGPTと相談で。インストールや初期セットアップはブログ記事や(珍しく)Geminiと相談しながら実行しました。そこで、「あるある」というか・・・。AIを相手にしていても課題が露呈したのでご紹介しておきます。具体的に言えば、

操作手順などのナレッジが秒で陳腐化する

これです。

この手のIT系、IoT系の技術やUXは改変が激しく、数ヶ月〜へたすれば数日で情報が陳腐化してしまうのです。Blogの記事は常に完全とは限らない。また、AIの提示もそれらBlogやネット上のやや古い技術情報を基にしているため、「常に最新の指示」とは限らない。(これは本件に限った話ではないが)このため、普通にこんなことが起きました:

  • Blogの手順書のとおりにドライバーインストールするが、実はそんなドライバは不要だった
  • そのドライバのインストールが途中で何度も失敗し、ハマる(不要なのに)
  • IDEのUIの説明がBlog有識者の説明ともGeminiの説明とも異なる
  • ワーディングが微妙に(あるいは大胆に)変わっているから、説明と食い違う

他の案件で慣れているから、逐次AIに「情報が古く無いか?」と是正を促してなんとか凌ぎました。Geminiは少し顧客側におもね過ぎる傾向があるようで、平謝りに謝ってきますが、ロジカルの修正がChatGPTほど精度高くは無いようです。まさに性格と得失は一長一短。
 

Arduino IDEとハードウェアのセットアップ

まず上記にアクセスして、環境にあったArduino IDEをインストール。最新版は2.3.9でした。

私は今回、M4 Mac環境を開発環境にしましたので、[macOS Apple Silicon 23 Monterey on newer (64bit)]を選択して [Download] しました。

そしてインストール。起動してみます。

これが起動直後 最初期のIDEの画面。

次に、Aruduino IDEにハードウェアを「認識」させるためのセットアップをします。

画面上部メニューから [Aruduino IDE] → [基本設定] と操作します。

基本設定画面です。
[追加のボードマネージャのURL:] の欄に、下記を記入して [OK] を押します。 

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

これが今回利用するesp32用のパッケージの在処なのです。
 

IDEメイン画面。左側のアイコン列の上から2番目を選びます。

こちらは [ボードマネージャ] と呼ばれ、ハードウェアのプロファイルを選択する画面です。ハード固有の開発環境を選ぶUI、と言ってもよいと思います。

上部の検索ウィンドウに

ESP32

と入力すると、

esp32 by Espressif Systems ...

という選択肢が現れますので、これを [インストール] します。

ESP32ボードを接続し認識させる準備ができました。

ここまで準備ができたら、いよいよESP32をPCへ繋げてみます。ESP32がいまだにUSBのMini-Bなのは大いに不満ですが、USBポートとPCのUSBを直接接続します。PCからのUSB 5.0V給電で、ESP32は立派に動きます。

ただ、ここで重大な注意点。

USBケーブルは必ずデータ転送も可能なしっかりしたケーブルであること。

百均で買ったり、そのへんから拾ってきたUSBは「規格が古いだけに」データ転送に対応できないケーブルが多く、デバイスが認識されずにハマります。これはケーブルにまつわるあるあるだそうです。私も最初、いい加減なケーブルではまり、ケーブルを交換することで事なきを得ました。なんだったら、良い機会と捉え、これ専用にケーブルを新調しても良いかもしれません。

てきますが、ロジカルの修正がChatGPTほど精度高くは無いようです。まさに性格と得失は一長一短。

利用するボードを設定します。

以下の手順で操作します。

  • 上部 [ツール]
  • [ボード]
  • [esp32]
  • [ESP32 Dev Module]

これが中華製ボードなど、最も汎用性のある一般的なESP32用の選択肢です。

次にポートを選択。USBケーブルがマトモで正しくデバイス認識されていれば、下記のように操作できます。

  • 上部 [ツール]
  • [ポート]
  • [/dev/cu.usbserial-****] …などと表示されているもの

セットアップ完了です。さあ、次はいよいよ、このボードに対してプログラムを書き込んでみましょう。

Lチカのコードを書き込んでみる

Lチカって何?

LEDを点滅させるだけの原始的なプログラミングコードのことです。ArduinoやESP32を「ことはじめ」するときの儀式のようなものだと考えてください。

初心者儀式だと侮るなかれ、熟練者ほどLチカをなめるな と云います。というのも、Lチカを通過する儀礼は実にさまざまな不具合検証を示唆しているからです。だからコードが初歩的なことが重要なのでなく、

  • Portの設定
  • デバイスのインストール
  • デバイスの認識
  • コード転送の可否
  • 通信の安定性
  • コンパイル時のエラーなし

など、基礎的な開発環境の統合チェックになっているからです。

Lチカのコーディングは簡単です。なぜなら、ライブラリのサンプルコードの中に準備されているからです。

次のように選択します。

  • 上部 [ファイル]
  • [スケッチ例]
  • [01.Basics]
  • [Blink]

すると、コードが自動的に以下のようにセットされて開きます。

画面上部にある [→] 矢印のアイコンを押すと、コンパイルとボードへの書き込みが開始されます。

そうして、ESP32に仕込まれている青色LEDがチカチカと点滅を開始するのです。

何度見てもこれはいいものです。

Lチカは初学の人間にとって「こちらの世界へようこそ!」と瞬く歓迎のセレモニーに見えるからです。

さあ、初段のセットアップとコード転送が成功した!

次回からは、段階的にコードを掘って勉強するところから。一挙に完成へはもっていきません。
まずは装置状態を監視・書き出すところからはじめてみます。つづく

シリコンパワー ノートPC用メモリ DDR4-2400(PC4-19200) 8GB×1枚 260Pin 1.2V CL17 SP008GBSFU240B02

Synology NASを拡張した時に入れたメモリーがコレ!永久保証の上、レビューも高評価。もちろん正常に動作しており、速度余裕も生まれて快適です。

フィリップス 電動歯ブラシ ソニッケアー 3100シリーズ (軽量) HX3673/33 ホワイト 【Amazon.co.jp限定・2024年モデル】

歯の健康を考えるのならPhilipsの電動歯ブラシがお勧めです。歯科医の推奨も多いみたいです。高価なモデルも良いですが、最安価なモデルでも十分に良さを体感できる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

投稿者

KeroYon

関連投稿

ルーム補正 (4)極端な平坦化は、グラフだけでなく音質も完膚なきまでに叩き潰した

さて前回。 miniDSP用に最適化した10ch-PEQを駆使して、上図のような特性を実現したわけで...

リハビリ-ショッピングライド〜からのH/O

毎日のように、少しずつの運動で、リハビリ/体力回復/ダイエットを頑張るのです。例をとると こんな感じ...

Roon でプレイリストを一部復旧

Roon Coreを刷新してROCKを構築したタイミングで、数ヶ月かけて作っていたプレイリストは全部...

Roon Rock (6)Rock始動、新しいインフラの誕生

連載の前稿までで、Roon Rockが完成して正式な運用を開始しました。プレイリストは全部リセットさ...

Roon Rock (5)OSのセットアップ

幾つものプロジェクトを放ったらかしにしつつ、同時並行させるのが私の行動+Blogの特徴です。が、今こ...

Roon Rock (4)OSインストール

Roon Rock のハードウェアが整備できたので、おさらいと共に、プロセスを丁寧に記述しておきたい...