マスターノードからスレーブノードにハードウェアリセットをかける仕組みを実装しました。
マスターノードのシリアルポートにワンチップArduino(Arduinoブートローダを書き込んだAtmega328P)を接続し,マスターノードからシリアルポートにリセットをかけたいノード番号を出力するとワンチップArduinoがスレーブノードのリセットピンをON-OFFします。マスターノードのハードウェアリセットはリセットピンにプッシュスイッチを配線し手動リセットします。
概要図
ー作成中ー
実装状態

スレーブノードリセットラインの配線

左端のワンチップArduino基板から各スレーブノードへリセットラインを接続

リセット用ワンチップArduinoの実装状態
自分用備忘
- マスターノードはRTS信号でワンチップArduinoをリセットすることができる(Arduino IDEを動かしてスケッチが書き込める)
- マスターノードのRTS信号がLOWに落ちるとワンチップArduinoがリセットされ,全ピンがLOWに落ちる→全スレーブノードがリセットされる。
- このため,Arduino IDEを使う時だけRTS信号を有効にする。通常運用中はデフォルト状態のRTS信号を無効にしておく。
- RTS信号有効 sudo gpio mode 0 alt3
- RTS信号無効 sudo gpio mode 0 in (起動時のデフォルト状態)
- デジタルピンとノードの対応
D2〜D8: slave-node07〜01 //D2〜D8の配線順を間違えたため逆順。 D9は未使用
D10〜D16:slave-node08〜14