いろいろ試してみたが、通電からOS起動完了までの時間が40秒弱かかってしまう。車に搭載するのであれば、イグニッションオン後に10秒前後でカメラ画像の表示まで行いたい。
そのための手段は以下くらい?
- そもそもJetsonNanoの電源を切らない。
- OSブート時の余分なプロセスを削除し、最適化する。
- エンジンOFF時は、suspend状態にし、イグニッションオンで起動するようにする。
1については、エンジンがかかっていない状態でも電源が入っているということで、バッテリーが上がらないかの心配もあるが、そもそも無駄。
2については、どうやって実現するのかすらイメージできない。なにぶん素人なもので。。。
3については、常時電源ONよりは消費電力が小さいはずなので、まだまし。
てことで、suspend作戦を決行することに決めた。
実現イメージ
細かい条件などはおいおい決めていくとして、大きな流れは以下のような感じを想定。『エンジンがかかっているか?』は、『ACCがON』かでとりあえずは判断しよう。
プログラムからSuspend実行
pythonプログラムから『systemctl suspend』を行う方法を採用。
JetsonNanoには、汎用入出力ピンがいくつかあるので、そのピンを使用してACCのOFFを検知する。
ACCのOFFが検知された場合、以下のプログラムでsuspendに入るようにしよう。
import os
while(True):
カメラの画像表示プログラム
if ACCがOFF:
os.system("systemctl suspend")
と思っていたら、JetsonNanoで『systemctl suspend』が聞かない。なんか、systemctlにsuspendが定義されていない的なエラーが出る。
いろいろ調べてみたら、JetsonNanoのデフォルトでは、suspendできないみたい。。。
できるようにするには、以下のフォーラムのように、suspendを有効にしてフラッシュしないといけないらしい。
https://forums.developer.nvidia.com/t/how-to-suspend-on-jetson-nano/79048/7
なるほど。。。
フラッシュの記事は、次回に送ります。
明日かな?