7th Bay LED

はじめに

プロジェクト概要

ZimaCubeの7th Bayは、フラッグシップデバイスに必要なSSD拡張機能を提供するだけでなく、カスタマイズ可能な照明を通じて家庭のコンピューティングにより活力をもたらすように設計されています。カスタマイズ可能な照明の統合により、システムのステータスを示すため、データ転送速度を表示するため、ダウンロードの進行状況を示すため、ローカルAIの活動を知らせるため、さらにはデスクトップの音楽と同期させるために、7th Bayのライトストリップを使用するという無限の可能性が広がります。

これらのアイデアを実現するために、ZimaCube 7th BayはEspressif SystemsのESP32マイクロコントローラを基盤にしています。オンボードのBluetoothおよびWiFi機能により、ZimaOSやその他のIoTデバイスを介して照明を独立して制御できます。ESP32は照明制御専用であり、ZimaCubeのすべてのネットワークおよびストレージ機能から隔離されています。さらに、ESP32は小さなWebサーバーとして機能し、照明効果をカスタマイズするためのOTA(Over The Air)ファームウェア更新を提供します。

ZimaCube 7th Bay照明のカスタマイズ

ZimaCube 7th Bayの照明効果をカスタマイズする方法は2つあります。

  1. 公式ファームウェアプロトコルを使用して、ZimaOS上でスクリプトを書くことによってDIY照明制御を行う。
  2. 7th Bayのライトストリップを完全に制御するために独自のESP32ファームウェアとプロトコルを開発する。

各手法の利点と欠点:

手法1

  • 利点:シンプル、迅速な実装、既存の機能を利用、リスクが低い。
  • 欠点:機能とパフォーマンスが制限される。

手法2

  • 利点:完全な制御、高い柔軟性、独立した動作、最適化されたパフォーマンス。
  • 欠点:開発の難易度が高い、開発サイクルが長い。

照明制御用スクリプトの書き方

7th Bayファームウェアプロトコルの紹介

WiFi接続:ESP32は、ZimaOSが接続してリモート制御およびOTA更新を行うためのWiFiネットワークを作成します。

JSON制御:JSONコマンドを使用して照明効果を制御し、柔軟性と簡単なカスタマイズを提供します。

OTA更新:OTA更新をサポートし、デバイスへの物理的アクセスなしにファームウェアの更新を可能にします。

さまざまな照明効果:呼吸効果、常時点灯モード、カスタムモードなど、複数の定義済み照明効果をサポートします。

照明制御方法

ZimaCubeのWi-Fiに接続

  1. Wi-Fiネットワークに接続:
    • Wi-Fi名:”ZimaCube”
    • Wi-Fiパスワード:”homecloud”

カラーピッカーの使用
色の選択を容易にするために、以下のオンラインカラーピッカーツールを使用します:オンラインカラーピッカー

手順

  1. オンラインカラーピッカーを開く。
  2. マウスを使用して希望の色を選択する。
  3. 対応するHSV(色相、彩度、明度)値がカラーピッカーインターフェイスに表示されます。
  4. これらのHSV値を記録し、JSONデータに適した範囲に変換します:
    • **色相 (H)**:h = (色相値 / 360) * 255
    • **彩度 (S)**:s = (彩度値 / 100) * 255
    • **明度 (V)**:v = (明度 / 100) * 255


カラーピッカーでオレンジを選択すると、次のHSV値が得られます:

  • **色相 (H)**:30
  • **彩度 (S)**:100
  • **明度 (V)**:100

変換後の値:

  • **色相 (H)**:h = (30 / 360) * 255 ≈ 21
  • **彩度 (S)**:s = 255
  • **明度 (V)**:v = 255

これらの値を照明制御のためのJSONデータに適用します。

制御モード
モード1:呼吸モード
呼吸モードでは、ライトストリップは単一の色のグラデーション効果を表示します。速度や色パラメータを調整して効果を制御します。

  • 速度:範囲0〜10
  • 色パラメータ
    • **色相 (H)**:範囲0〜255
    • **彩度 (S)**:範囲0〜255
    • **明度 (V)**:範囲0〜255

例のJSONデータ

{
"id": 1, // 呼吸モードのID
"speed": 4, // 色遷移の速度、範囲0-10
"data": [
{"h": 21, "s": 255, "v": 255}
]
}

*** ESP32へのデータ送信:***

  1. ESP32は、ZimaOSが接続するデフォルトのWiFiネットワークを作成します。接続を確認するには:
    ping 172.16.1.1
  2. JSONデータを使用して、172.16.1.1にHTTP POSTリクエストを送信します:
    curl -X POST -H "Content-Type: application/json" -d @yourfile.json http://172.16.1.1/post
  3. 照明効果をチェックしてください。

モード2:常時点灯モード
常時点灯モードでは、ライトストリップは単一の色を保持します。

色パラメータ

  • **色相 (H)**:範囲0〜255
  • **彩度 (S)**:範囲0〜255
  • **明度 (V)**:範囲0〜255

例のJSONデータ

{
"id": 2,
"data": [
{"h": 21, "s": 255, "v": 255}
]
}

*** ESP32へのデータ送信:***

  1. ESP32は、ZimaOSが接続するデフォルトのWiFiネットワークを作成します。接続を確認するには:
    ping 172.16.1.1
  2. JSONデータを使用して、172.16.1.1にHTTP POSTリクエストを送信します:
    curl -X POST -H "Content-Type: application/json" -d @yourfile.json http://172.16.1.1/post
  3. 照明効果をチェックしてください。

モード3およびモード4

  • 開発中です。

モード5:カスタムモード
カスタムモードでは、各ライトの色と明るさを個別に制御できます。

  • 色パラメータ:
    • 色相 (H):範囲0〜255
    • 彩度 (S):範囲0〜255
    • 明度 (V):範囲0〜255

例のJSONデータ

{
"id": 5, // カスタムモードのID
"data": [
// 各オブジェクトは1つのライトの色と明るさの設定を表します
{"h": 0, "s": 255, "v": 255}, // ライト1 赤
{"h": 85, "s": 255, "v": 255}, // ライト2 緑
{"h": 168, "s": 255, "v": 255}, // ライト3 青
{"h": 42, "s": 255, "v": 255}, // ライト4 黄
{"h": 212, "s": 255, "v": 255}, // ライト5 紫
{"h": 128, "s": 255, "v": 255}, // ライト6 シアン
{"h": 21, "s": 255, "v": 255}, // ライト7 オレンジ
{"h": 128, "s": 255, "v": 255}, // ライト8 シアン
{"h": 212, "s": 255, "v": 255}, // ライト9 紫
{"h": 42, "s": 255, "v": 255}, // ライト10 黄
{"h": 168, "s": 255, "v": 255}, // ライト11 青
{"h": 85, "s": 255, "v": 255}, // ライト12 緑
{"h": 0, "s": 255, "v": 255} // ライト13 赤
]
}

*** ESP32へのデータ送信:***

  1. ESP32は、ZimaOSが接続するデフォルトのWiFiネットワークを作成します。接続を確認するには:

    ping 172.16.1.1
  2. JSONデータを使用して、172.16.1.1にHTTP POSTリクエストを送信します:

    curl -X POST -H "Content-Type: application/json" -d @yourfile.json http://172.16.1.1/post
  3. 照明効果をチェックしてください。

自分の7th Bayファームウェアを開発する方法

はじめに

Windowsコンピュータを使用して、独自のESP32ファームウェアと照明効果の開発方法、および新しいファームウェアのアップロード方法を説明します。

ハードウェア要件

  • ZimaCubeの7th Bay
  • Type-Cデータケーブル
  • Windowsコンピュータ

ハードウェア情報

  • LEDの数:13
  • GPIO 2:WS2812B LEDストリップのデータラインに接続
  • 5VおよびGND:ESP32開発ボードの電源およびグラウンドに接続

ESP32の詳細:

使用ガイド

システム要件

  • オペレーティングシステム:Windows 10
  • 必要なツール:Arduino IDE

インストール手順

  1. Arduino IDEをインストール: ダウンロード

  2. ESP32ボードをインストール

  3. ライブラリをダウンロードしてインストール:

  • Adafruit_NeoPixel
  • ArduinoJson
  • Metro
  • これらをArduino IDEインストールのライブラリフォルダーに配置します。

開発構成

  1. Arduino IDEを開く。
  2. ボードを選択:ツール -> ボード -> ESP32 -> ESP32C3 Dev Module
  3. 正しいポートを選択:ツール -> ポート
  4. コードをESP32にコンパイルしてアップロード:アップロードボタンをクリック
  5. アップロード成功の結果:

OTA更新チュートリアル

  1. WiFiに接続
    • コンピュータをWiFiネットワークに接続:
      • 名称:”ZimaCube”
      • パスワード:”homecloud”
  1. URLにアクセス
    • ブラウザを開いて172.16.1.1にアクセスします。
  1. ファームウェアをアップロード