ジェレミー・クック
Dali ClockプロジェクトでEspressif ESP32の機能を探る
ESP32は、Espressif Systemの非常に人気があり強力な後継機です。 ESP8266 WiFiモジュールは、前モデルよりもさらに高性能です。最大240MHzで動作する32ビットデュアルコアプロセッシングユニットと、 Wi-Fi そして ブルートゥース。
静電容量式も搭載 タッチセンシング、I2Sデータ転送、オーディオ位相同期ループ(PLL)機能、および2つの デジタル-アナログコンバータ (DAC)出力。これらの機能は、ESP32のバリエーションによって多少異なることに注意してください。
Adafruit Huzzah23 (上) とDFRobot Firebeetle (下)
ESP32をコンポジットビデオクロックで使用する
ESP32の使用方法の具体的な例 (実装が簡単で、印象的です) については、Marcio L. TeixeiraによるDali Clockビルドを検討してください。このセットアップでは、コンポジット入力を備えた古いテレビとESP開発ボードを使用して、モーフィングするオンスクリーン時計を表示します。
あらゆる限界を押し広げるプロジェクトと同様に、これは比喩的に巨人の肩の上に立っており、ダリの時計のコンセプト(1979年にXerox Alto用に作成)と1980年代のポップアート風のスクロールする夕焼けのシーンを組み合わせています。技術的なレベルでは、複数のハードウェア ハッカー/ハッカーが功績を認められています。もちろん、ESP32がなければ不可能です。最後に、サルバドール・ダリ自身から受けた独創的な芸術的インスピレーションを無視することはできません。
この時計の資格は印象的ですが、セットアップに必要なのは次のものだけです。
- • ESP32開発ボード
- • RCAプラグ
- • (2)コネクタワイヤ
- • USB電源
- • コンポジット対応テレビまたはモニター
元のプロジェクトでは、 Adafruit Huzzah32 ESP32 Featherボードを使用します。理論的には、他のESP32ベースのデバイスでも使用できます。また、 DFRobot FireBeetle ESP32 モジュールを使用してプロジェクトを試みました。どちらも同様の機能を備えており、名目上はビデオを表示するために機能しました。しかし、この2つには小さな違いが1つあり、これについては後ほど詳しく説明します。
ビデオディスプレイの機能を探る
セットアップ: コードをロードして接続する
設定するには、 GitHubからコードをダウンロード し、Arduino IDEを使用してESP32に転送します。このプロセスのより詳しい手順については、 こちらをご覧ください。
環境設定を開き、「追加のボード マネージャーURL」セクションに「https://dl.espressif.com/dl/package_esp32_index.json」を入力して、Arduino IDEでESP32ボードを操作する機能を追加する必要があります。
それが完了したら、開発ボード (この場合はAdafruit ESP32 FeatherまたはFireBeetle-ESP32) と適切なシリアル ポートを選択し、ESPにコードをロードします。
ビデオディスプレイの機能を探る
Adafruit Huzzah32ボードのGNDピンをRCAプラグの外側バレルに接続します。
次に、A1 DAC1ピンからの別のワイヤを、テレビの複合ビデオ入力に入力するプラグの中央のポストに接続します。ワニ口クリップを使用して標準のオス-オスプラグに接続することもできますが、より安全に接続できるネジ端子プラグも利用できます。おそらく、RCAケーブルを切り刻んで配線を露出させることもできるでしょう。
RCAジャックをテレビ/モニターに挿入し、開発ボードに電源を接続して、テレビを正しい入力ソースに設定します。
すると、画面上に数字が溶けたダリの時計が表示されますが、この時点では間違いなく間違った時刻が表示されています。この状況を修正するには、電話またはコンピューターを介してESP32で生成された「ESP32 Dali Clock」WiFiネットワークにログオンし、ブラウザー インターフェイスを介して設定を構成します。適切に設定されると、ホーム ネットワーク経由でアクセスできるようになります。時間はNTP/タイムゾーン経由で自動的に設定できますが、必要に応じて手動で入力することもできます。
デバイスの接続
時計は時刻の代わりに日付を表示するように切り替えることもできます。HuzzahボードのA5 4とA4 36にワイヤを接続し、両方を指でタッチしてこの機能を有効にします (FireBeetleでは試していませんが、可能であるはずです)。一日を通して色を変えるように設定することもできるので、とても楽しそうです。
使用したESP32の特徴
高速な処理速度(それほど昔のデスクトップでは印象的でした)に加えて、このビルドではESP32のいくつかの特徴がうまく強調されています。
- • WiFi接続 - Webインターフェースと時間設定に使用
- • RCAプラグ
- • I2C/DAC/PLL – カラー複合ビデオに必要な電圧レベル出力と正確なタイミングを実現します。
- • 静電容量式タッチセンサー – ワイヤータッチを感知して、瞬間的に日付表示に切り替わります。
- • デュアルコアプロセッサ - グラフィック処理とビデオ信号出力は1つのコアで処理され、タイミングに干渉する可能性のあるWiFi/Webインターフェイスは2番目のコアで実行されます。
限界を超える
このビルドに似たセットアップの方法について説明している この別のビデオによると、ESP32の仕様には実際には複合ビデオ機能は記載されていません。ただし、デジタルからアナログへの変換 (DAC) が可能で、I2Sプロトコルを利用できるため、レトロフューチャリスティックなビデオ ハッキングに非常に強力かつ汎用的です。
MarcioがESP32のPLL機能を活用してこれをカラー出力にアップグレードした方法の詳細については、この GitHubページ を参照してください。
非常に限られたサンプルではありますが、1台のテレビにボード1枚ずつ接続したところ、Adafruit Huzzah32によるディスプレイは非常にうまく動作しました。同等の出力ピンが整理されたFireBeetleも動作しましたが、断続的に同期の問題が発生します。
2つのボードをもう少し詳しく見てみましょう。Huzzah32はESP32-WROOM-32E WiFiモジュールを使用し、DFRobotボードはESP32-WROOM-32Dを使用します。-32Eは、ほぼ同等ですが、CPUタイミングを決定するために水晶発振器と相互作用する方法など、内部的にいくつかの改良が加えられています。
デザインのわずかな違いにより、-32Dと -32Eがテレビ上で異なって表示される可能性があります。とはいえ、ESPの限界を創造的な方法で押し広げていないほとんどのケースでは、どちらのモジュールでも特定の作業をかなりうまく実行できるはずです。ただし、ESP-32のフルパワーを必要とする本番アプリケーションがある場合は、使用するESP-32について検討することをお勧めします。