HACC2は、Hashilusの空気制御システムのコントローラーです。Mbed OSを使用して実装されており、UDP経由でコマンドを受け付け、SSRとRGB LEDを制御します。
- 現在のバージョン: 2.2.0
- 主な変更点:
- SSR制御周期の設定範囲を-1〜10に拡張(-1=設定変更無効)
- 設定変更無効化機能の追加(-1設定時の設定変更保護)
- ゼロクロス検出機能の追加(P3_9ピン、両エッジ検出)
- トライアック制御機能の実装(1サイクル内でのON時間可変制御)
- 商用電源周波数の自動検出(50Hz/60Hz対応)
- SSR制御の高精度化(ゼロクロス同期制御)
- 設定色読み取りコマンドの追加(config rgb0 status, config rgb100 status)
- enablePWMメソッドの削除(非推奨機能の整理)
- SSR-LED連動機能の完全実装
- ステータスLEDの動作仕様を追加
- ネットワーク接続の安定性向上
- パケット処理の最適化
- バッファサイズの拡大(8KB)
- パフォーマンス監視機能の追加
- バージョン情報の一元管理
- Mbed対応ボード
- イーサネットインターフェース
- SSRドライバー(4チャンネル)
- RGB LEDドライバー(3チャンネル)
- Mbed OS 6.x
- コンパイラ: ARM GCC
mbed compile -m <TARGET> -t GCC_ARMUDPコマンドは、デバイスのIPアドレスとポート(デフォルト: 5000)に送信します。
help- コマンド一覧を表示info- システム情報を表示config- 現在の設定を表示config load- 設定を読み込むconfig save- 設定を保存
set <channel> <duty>- SSRのデューティ比を設定(0-100%)get <channel>- SSRのデューティ比を取得freq <channel> <freq>- SSRの周波数を設定(-1-10Hz、-1=設定変更無効)
rgb <led_id> <r>,<g>,<b>- RGB LEDの色を設定(0-255)rgbget <led_id>- RGB LEDの色を取得
config ssrlink <on/off>- SSR-LED連動の有効/無効を設定config ssrlink status- SSR-LED連動の状態を表示config rgb0 <led_id>,<r>,<g>,<b>- LEDの0%時の色を設定(led_id: 1-4)config rgb0 status <led_id>- LEDの0%時の色を読み取り(led_id: 1-4)config rgb100 <led_id>,<r>,<g>,<b>- LEDの100%時の色を設定(led_id: 1-4)config rgb100 status <led_id>- LEDの100%時の色を読み取り(led_id: 1-4)config trans <ms>- トランジション時間を設定(100-10000ms)
debug level <0-3>- デバッグレベルを設定debug status- 現在のデバッグレベルを表示
シリアルコマンドは、115200bpsで送信します。改行コードはLF。
- コマンドはカンマ区切りの形式で送信
- 応答は
OKまたはERRORで終了 - エラー時は
コマンド名,ERRORの形式で返信
- コマンド:
info - 応答:
info,<デバイス名>,2.0.0,OK - 例:
info→info,HACC2,2.0.0,OK
- コマンド:
set <id>,<value>- id: 0-4 (0は全チャンネル)
- value: 0-100 (0=OFF, 100=ON)
- 応答:
set <id>,<value>,OK
- エイリアス:
ssr <id>,<value> - 特殊値:
ON: 100%出力OFF: 0%出力
- 例:
set 1,50→set 1,50,OK(チャンネル1を50%で制御)set 0,ON→set 0,100,OK(全チャンネルを100%で制御)ssr 2,OFF→ssr 2,0,OK(チャンネル2をOFF)
- コマンド:
freq <id>,<value>- id: 0-4 (0は全チャンネル)
- value: -1-10 (Hz、-1=設定変更無効)
- 応答:
freq <id>,<value>,OK
- 例:
freq 0,5→freq 0,5,OK(全チャンネルを5Hzに設定)freq 1,-1→freq 1,-1,OK(チャンネル1を設定変更無効に設定)
- コマンド:
get <id>- id: 1-4
- 応答:
get <id>,<duty>,<freq>,OK
- 例:
get 1→get 1,50,5,OK(チャンネル1の状態: デューティ比50%, 周波数5Hz)
- コマンド:
rgb <id>,<r>,<g>,<b>- id: 0-4 (0は全LED)
- r,g,b: 0-255
- 応答:
rgb <id>,<r>,<g>,<b>,OK
- 例:
rgb 1,255,0,0→rgb 1,255,0,0,OK(LED1を赤色に設定)rgb 0,0,255,0→rgb 0,0,255,0,OK(全LEDを緑色に設定)
- コマンド:
rgbget <id>- id: 1-4
- 応答:
rgbget <id>,<r>,<g>,<b>,OK
- 例:
rgbget 1→rgbget 1,255,0,0,OK(LED1の現在の色: 赤)
-
コマンド:
config ssrlink <on/off>- 応答:
SSR-LED link enabled/disabled
- 応答:
-
例:
config ssrlink on→SSR-LED link enabled -
コマンド:
config ssrlink status- 応答:
SSR-LED link is enabled/disabled
- 応答:
-
例:
config ssrlink status→SSR-LED link is enabled
-
コマンド:
config rgb0 <led_id>,<r>,<g>,<b>- led_id: 1-4
- r,g,b: 0-255
- 応答:
LED<id> 0% color set to R:<r> G:<g> B:<b>
-
例:
config rgb0 1,0,0,0→LED1 0% color set to R:0 G:0 B:0 -
コマンド:
config rgb100 <led_id>,<r>,<g>,<b>- led_id: 1-3
- r,g,b: 0-255
- 応答:
LED<id> 100% color set to R:<r> G:<g> B:<b>
-
例:
config rgb100 1,255,255,255→LED1 100% color set to R:255 G:255 B:255
-
コマンド:
config rgb0 status <led_id>- led_id: 1-4
- 応答:
LED<id> 0% color: R:<r> G:<g> B:<b>
-
例:
config rgb0 status 1→LED1 0% color: R:0 G:0 B:0 -
コマンド:
config rgb100 status <led_id>- led_id: 1-3
- 応答:
LED<id> 100% color: R:<r> G:<g> B:<b>
-
例:
config rgb100 status 1→LED1 100% color: R:255 G:255 B:255
- コマンド:
config trans <ms>- ms: 100-10000 (ミリ秒)
- 応答:
Transition time set to <ms> ms
- 例:
config trans 1000→Transition time set to 1000 ms
- コマンド:
config ssr_freq <freq>- freq: -1-10 (Hz、-1=設定変更無効)
- 応答:
All SSR PWM frequencies set to <freq> HzまたはAll SSR PWM frequencies set to -1 (設定変更無効)
- 例:
config ssr_freq 5→All SSR PWM frequencies set to 5 Hzconfig ssr_freq -1→All SSR PWM frequencies set to -1 (設定変更無効)
- コマンド:
config ssr_freq status- 応答: 各チャンネルの設定値を表示
- 例:
config ssr_freq status→SSR PWM frequencies: SSR1: 5 Hz SSR2: -1 (設定変更無効) SSR3: 3 Hz SSR4: 1 Hz
- コマンド:
config ssr_freq status <id>- id: 1-4
- 応答:
SSR<id> PWM frequency is <freq> HzまたはSSR<id> PWM frequency is -1 (設定変更無効)
- 例:
config ssr_freq status 1→SSR1 PWM frequency is 5 Hzconfig ssr_freq status 2→SSR2 PWM frequency is -1 (設定変更無効)
- コマンド:
mist <duration>- duration: 0-10000 (ミリ秒)
- 応答:
mist <duration>,OK
- 動作: スプレーを指定時間噴射する
- 例:
mist 1000→mist 1000,OK(1秒間ミストを制御)
- コマンド:
zerox - 応答:
zerox,<status>,<interval>,<count>,<frequency>,OK- status: DETECTED/NOT_DETECTED
- interval: 最後のゼロクロス間隔(マイクロ秒)
- count: 検出回数
- frequency: 計算された周波数(Hz)
- 例:
zerox→zerox,DETECTED,8333,1200,120.0,OK
- コマンド:
air <level>- level: 0-2
- 0: エアーOFF
- 1: エアーLOW
- 2: エアーHIGH
- 応答:
air <level>,OK
- level: 0-2
- 例:
air 2→air 2,OK(エアーガンの出力をHIGHにする)
- コマンド:
sofia - 応答:
sofia,KAWAII,OK(ソフィアはかわいい、いいね?)
- パケット処理時間の統計情報
- 平均処理時間
- 最大処理時間
- 処理パケット数
- 100パケットごとに統計情報を表示
- 処理時間が100msを超える場合に警告を表示
- 検出ピン: P3_9(両エッジ検出)
- 検出方式: 立ち上がり・立ち下がりエッジの両方を検出
- 周波数測定: 商用電源周波数(50Hz/60Hz)を自動検出
- 精度: マイクロ秒単位での高精度測定
- 制御方式: ゼロクロス同期制御
- ON時間: 1msec固定(高精度タイマー制御)
- デューティ比: 0-100%の範囲で1%単位制御
- 応答性: 次のゼロクロスで即座に反映
- 制御精度: マイクロ秒単位での高精度制御
- 半波整流対応: 立ち上がりエッジのみを使用した制御
- 割り込み禁止: 15msec間の割り込み禁止によるノイズ対策
- 履歴計算: 過去100回の割り込みから電源周波数を算出
- ゼロクロス検出: P3_9ピンで商用電源のゼロクロス点を検出
- 周波数測定: 立ち上がりエッジ間隔から電源周波数を計算
- タイミング計算: デューティ比に応じたONタイミングを計算
- トライアック制御: 計算されたタイミングでSSRをON/OFF制御
- 制御方式: ゼロクロス同期制御(0と同じ動作)
- 設定変更: 0以外の設定変更を無効化
- 解除方法: 0を設定することで設定変更を可能にする
- 適用場面: 設定の誤変更を防ぎたい場合
- 制御方式: ゼロクロス同期制御
- デューティ比変換: 0-100%を20-85%に変換
- 制御精度: 電源周波数に同期した高精度制御
- 適用場面: 高精度な電力制御が必要な場合
- 制御方式: カウンタベース制御
- デューティ比: 0-100%をそのまま使用
- 制御精度: 設定周波数に基づく制御
- 適用場面: 固定周波数での制御が必要な場合
- 50Hz地域: 10msec周期での精密制御
- 60Hz地域: 8.33msec周期での精密制御
- デューティ比変換: 0-100%を20-85%に変換(ゼロクロス制御時)
- 電源周波数精度: float型での高精度計算(過去100回の平均)
- 割り込み優先度: 最高優先度でのゼロクロス検出
- ノイズ対策: 15msec間の割り込み禁止による安定化
SSR-LED連動機能により、SSR1のデューティ比に応じてRGB LEDの色が自動的に変化します。
- SSR1のデューティ比(0-100%)を監視
- 0%時の色と100%時の色の間を線形補間
- 設定されたトランジション時間で滑らかに色を変化
- 独立したスレッドで100Hzで更新
- SSR-LED連動: 有効/無効の切り替え
- 0%時の色: SSR出力0%時のRGB LEDの色(LED1-4)
- 100%時の色: SSR出力100%時のRGB LEDの色(LED1-4)
- トランジション時間: 色変化にかける時間(100-10000ms)
# SSR-LED連動を有効化
config ssrlink on
# LED1の0%時の色を黒に設定
config rgb0 1,0,0,0
# LED1の100%時の色を白に設定
config rgb100 1,255,255,255
# トランジション時間を1秒に設定
config trans 1000
# SSR1を50%で制御(LED1は灰色に変化)
set 1,50
- ネットワーク切断時の自動再接続
- ソケットエラー時の自動再初期化
- パケット処理時間の監視と警告
- エラー発生時のログ出力
- レベル0: エラーのみ
- レベル1: 基本情報
- レベル2: 詳細情報
enablePWMメソッド: 非推奨機能として削除(何もしないメソッドだったため)
- SSR制御周期拡張: 設定範囲を-1〜10に拡張(-1=設定変更無効)
- 設定変更無効化機能: -1設定時の設定変更保護機能
- ゼロクロス検出機能: P3_9ピンでの立ち上がりエッジ検出(半波整流対応)
- トライアック制御: ゼロクロス同期での高精度制御
- 電源周波数自動検出: 50Hz/60Hz地域の自動判定(過去100回の平均)
- ゼロクロス状態確認コマンド:
zeroxコマンド - 制御モード: 設定変更無効制御(freq=-1)、ゼロクロス制御(freq=0)、非ゼロクロス制御(freq=1-10Hz)
- デューティ比変換: ゼロクロス制御時は0-100%を20-85%に変換
- ノイズ対策: 15msec間の割り込み禁止による安定化
- 設定色読み取りコマンド:
config rgb0 status,config rgb100 status - SSR-LED連動機能の完全実装
- トランジション制御の改善
- 不要なメソッド呼び出しの削除
- コードの最適化と整理
- SSR制御の高精度化(ゼロクロス同期)
- 割り込み優先度の最適化
- ゼロクロス検出回路: P3_9ピンへの接続が必要(半波整流対応)
- 高精度タイマー: マイクロ秒単位での制御
- 割り込み処理: 最高優先度でのゼロクロス検出
- プルアップ抵抗: P3_9ピンの内部プルアップ設定
- ノイズ対策: 15msec間の割り込み禁止による安定化
- プロプライエタリ
- Hashilus
- ボーレート: 115200 bps
- データビット: 8
- パリティ: なし
- ストップビット: 1
- フロー制御: なし
- 改行コード LF
help: ヘルプを表示info: デバイス情報を表示reboot: デバイスを再起動debug level <0-3>: デバッグレベルを設定debug status: 現在のデバッグレベルを表示
set <id> <value>: SSRの出力を設定- id: 1-4
- value: 0-100 (0=OFF, 100=ON)
- 例:
set 1 50(チャンネル1を50%で制御)
freq <id> <value>: PWM周波数を設定- id: 1-4
- value: -1-10 (Hz、-1=設定変更無効)
- 例:
freq 1 5(チャンネル1を5Hzに設定)freq 1 -1(チャンネル1を設定変更無効に設定)
get <id>: SSRの状態を取得- id: 1-4
- 例:
get 1(チャンネル1の状態を表示)
rgb <id> <r> <g> <b>: RGB LEDの色を設定- id: 1-4
- r,g,b: 0-255
- 例:
rgb 1 255 0 0(LED1を赤色に設定)
rgbget <id>: RGB LEDの状態を取得- id: 1-4
- 例:
rgbget 1(LED1の現在の色を表示)
config: 現在の設定を表示config save: 設定を保存config load: 設定を読み込みconfig netbios <name>: NETBIOS名を設定config ip <address>: IPアドレスを設定config mask <netmask>: サブネットマスクを設定config gateway <address>: デフォルトゲートウェイを設定config dhcp on/off: DHCPの有効/無効config ssr_freq <freq>: SSR制御周期を設定(-1-10Hz、-1=設定変更無効)
sofia: かわいいコマンド
- コマンド履歴: 上下矢印キーで履歴を参照
- カーソル移動: 左右矢印キーでカーソルを移動
- バックスペース: 文字を削除
- タブ補完: サポート予定
- 成功時: コマンドの実行結果を表示
- エラー時: エラーメッセージを表示
- デバッグ情報: デバッグレベルに応じて詳細情報を表示
システムの状態を表示する3色LED(赤、緑、青)の動作仕様です。
- LED1: 赤色
- LED2: 緑色
- LED3: 青色
-
初期化中(青色点滅)
- 青色LEDが500ms周期で点滅
- システム起動時に表示
-
正常動作(緑色点灯)
- 緑色LEDが常時点灯
- 通常動作時の状態
-
エラー状態(赤色点滅)
- 赤色LEDが1秒周期で点滅
- エラー発生時に表示
-
パケット受信(紫色点灯)
- 赤色と青色LEDが同時点灯
- 一時的(200ms)に表示
- UDPパケット受信時に表示
-
コマンド実行(オレンジ色点灯)
- 赤色と緑色LEDが同時点灯
- 一時的(500ms)に表示
- コマンド実行時に表示
- 独立したスレッドで動作(50ms間隔で更新)
- 一時的な状態は自動的に元の状態に戻る
- パケット受信とコマンド実行は優先度が高い状態を表示