倒立チューナ — 見る・止める・調える
倒立振子は完成した。でも、調整するたびに USB ケーブルを差し込んで
Serial を見なければいけない — それは本当の「完成」ではない。
4.3 インチの大画面 JC4827 を「操作卓」にして、
ケーブルなしで倒立の状態を見て・止めて・PID ゲインを送る。
それがミニ③の目標。
評価ログ CSV 出力中も 315 秒 維持(2026-09-03 実機確認)。
Chocofon(B)
倒立はできた。でも毎回 USB を差して調整するのが面倒。画面でゲインを送れないの?
AIチューター
JC4827 の大画面と ESP-NOW を組み合わせれば実現できます。ただし ATOM の制御ループを汚さないことが絶対条件。
管理人
チューナを付けても 30 秒級が維持できれば合格。USB を外した状態で hold 秒が画面に出ることを証明せよ。
システム構成
2台が ESP-NOW で無線通信する。ATOM S3 は LiPo だけで動く。 JC4827 はノートPC の USB で電源を取りつつ操作卓になる。
┌──────────────────────────┐ ┌──────────────────────────────────┐
│ ATOM S3(LiPo のみ) │ │ JC4827(USB 電源・操作卓) │
│ │ │ │
│ IMU → 角度推定 │──────→──│ SAFE / ARMED 状態表示 │
│ PID 演算 │ テレメ │ 傾き角・hold 秒を大画面で確認 │
│ モータ制御 │ 20 Hz │ LIVE ゲイン(ATOM の現在値) │
│ │ │ EDIT ゲイン(5752 ノブで編集) │
│ │←────── │ │
│ コマンド受信・実行 │ コマンド │ タッチ → ZERO / ARM / E-STOP │
│ ゲイン即時反映 │ 随時 │ 5752 ノブ → Kp Kd Ki trim 編集 │
│ │ │ → APPLY タッチで ATOM に送信 │
└──────────────────────────┘ └──────────────────────────────────┘
↑ 制御ループは汚さない ↑ 書き込み後は USB を抜いてよい
(printf・WiFi 常時 ON 禁止)
データの流れ
ATOM → JC4827(テレメトリ・20 Hz)
ATOM が制御ループごとに送る状態パケット。JC4827 はこれを受信して画面に反映するだけ。
| フィールド | 内容 | 画面での見え方 |
|---|---|---|
armed | ARM 中か否か | ARMED(緑)/ SAFE(黄)ラベル |
eDeg | 現在の傾き角(度) | e の数値 |
holdSec | 連続保持秒 | 画面中央に大きく表示 |
kp kd ki | ATOM で使われているゲイン | LIVE 行 |
trimDeg | 現在のトリム角 | LIVE 行 |
pwm uCmd | 制御出力値 | 評価 CSV にのみ記録 |
JC4827 → ATOM(コマンド・タッチまたは APPLY 時のみ)
ボタンを押したときだけ送る。常時送信しないので ATOM 側のループは汚れない。
| 操作 | 送信フラグ | ATOM の動作 |
|---|---|---|
| ZERO タッチ | TELE_TUNE_ZERO | ゼロ点リセット |
| ARM タッチ | TELE_TUNE_ARM | ARM ⇔ SAFE 切替 |
| APPLY タッチ | TELE_TUNE_APPLY_GAINS | Kp Kd Ki trim を即時反映 |
| E-STOP タッチ | TELE_TUNE_ESTOP | SAFE に戻してモータ停止 |
| 5752 ノブ回転 | —(APPLY で確定) | JC4827 の EDIT 値だけ変わる |
JC4827 の WiFi を常時 ON にすると倒立が崩れます。 通信は ESP-NOW のみ。ATOM 側の制御ループで
printf や WiFi を使わないことが「汚さない」の正体です。
実機の証拠(Step ごと)
Phase 1 — LINK 確認(2026-08-30)
JC4827 に FW を書き込み、ATOM から ESP-NOW テレメを受信。画面に緑の LINK と傾き角が出た。
Step 3 — タッチ E-STOP(2026-08-31)
画面下の赤い E-STOP ボタンをタップすると、ATOM に TELE_TUNE_ESTOP が届き、
即座に SAFE でモータが停止する。倒立中でもワンタップで止められる。
[TELE] e_stop が届き ARMED → SAFEStep 4 — ゲイン編集+ APPLY(2026-08-31)
5752 の4ノブを回して Kp / Kd / Ki / trim を個別に編集し、APPLY タッチで ATOM に送信。 画面の LIVE 行が ATOM の現在値に更新されれば成功。
#0 赤ノブ
Kp(比例ゲイン)
±1 ずつ 0〜80
#1 橙ノブ
Kd(微分ゲイン)
±0.1 ずつ 0〜5
#2 黄ノブ
Ki(積分ゲイン)
±0.2 ずつ 0〜20
#3 青ノブ
trim(目標角オフセット)
±0.2 ずつ ±5°
[TELE] gains Kp=… Kd=… が届き LIVE も追従Step 5 — USB なし 30秒級(2026-08-31)
ATOM の USB を抜いて LiPo だけにし、JC4827 から ZERO → ARM。 画面中央に hold 秒が大きく表示される。 チューナを接続したまま 倒立が維持できる ことが計測ゲートの合格条件。
評価 CSV — ATOM を汚さないログ(2026-09-03)
JC4827 の Serial に CSV を流す機能を追加した。
ATOM 側のコードは 一切変えない — ログ出力は JC4827 だけが担う。
Serial v キーで ON/OFF。
ATOM に printf を追加したら倒立が崩れてしまった……。
それが「制御ループを汚す」の正体です。ATOM の print は Core 1 の制御と同じコアで走るので、 重い出力があると 5ms ループが止まります。
解決策: ATOM は送るだけ(テレメ 20 Hz)、印字は JC4827 が担当。
| CSV 列 | 内容 |
|---|---|
t_ms | JC4827 側の経過時刻(ミリ秒) |
e | 傾き角(度)— グラフ縦軸に使う |
omega | 角速度(°/s) |
u / pwm | 制御出力・モータ PWM |
hold | 保持秒 |
kp kd ki trim | ATOM で使われているゲイン |
2026-09-03 実機確認: 評価 CSV を ON にしたままでも hold 315 秒 を維持(E-STOP で終了、倒れず)。
ログデータ(hold 167〜315 s 分): 2026-09-03_jc4827-eval-csv-315s.csv
Step 6: まとめ — L1 完走判定(2026-09-04)
USB なし・LINK・e_stop・ゲイン送信・hold 221 s — 全条件クリア。
| 判定項目 | 結果 |
|---|---|
| USB なしで LINK | ✅ |
| 傾き角・状態を画面で見られる | ✅ |
| E-STOP タッチで即 SAFE | ✅ |
| ゲインが ATOM に届く(APPLY) | ✅ |
| チューナ接続中も倒立 30秒級 | ✅ hold 221 s |
| 評価 CSV(制御ループを汚さない) | ✅ hold 315 s 中に出力 |
ミニ③ 合格。USB ケーブルなしで見る・止める・調えることが 221 秒の実機で証明された。 評価 CSV の追加(315 s 維持)も「ATOM を汚さない」の原則を守ったまま完成。L1 完走とする。
できたこと(ミニ③ 全体)
- MAC 交換 → ESP-NOW LINK(Phase1)
- 傾き角・ゲイン・状態を 4.3" に表示(Step2)
- タッチ E-STOP → 即 SAFE(Step3)
- 5752 ノブ → ゲイン編集 → APPLY → ATOM 即時反映(Step4)
- ZERO / ARM → USB なし hold 221 s(Step5・計測ゲート合格)
- 評価 CSV Serial 出力 → hold 315 s 実機確認(評価 CSV)
Stretch(L1 条件外・GO 待ち)
- 物理 e-stop SW(P2/P3 増設)
- SD カードへのログ保存
- peer テーブル(複数台対応)
ファームウェア
cd PlatformIO/PlatformIO_Projects/jc4827_tx_tuner
pio run -e jc4827 -t upload
pio device monitor -e jc4827 -b 115200
Serial v キー = 評価 CSV ON/OFF(既定 OFF・10 Hz)。
長時間ログは PlatformIO モニタの log2file を使う(画面履歴は数百行で消える)。
リンク
- jc4827_tx_tuner(GitHub)
- tele_common.h(パケット定義)
- 評価 CSV ログ(315 s)
- 正本:
docs/hardware/jc4827-balance-tune.md