あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

Raspberry Piの消費電力をカリカリにチューニングする

特に気にもしていなかったために今まで知らなかったのですが、Raspberry Piを節電のために色々無効化できるらしく、とくにHDMIを無効化して30mA節約できるあたりに感動したので、自宅の常設Raspberry Piに一通り設定しつつ、Ansible Playbookを書いてみました。

github.com

varsはこんなかんじ。ご使用のモデルと用途に応じてnoをyesに変えてください。コミットではgroup_varsにおいてますが、host_varsに置いてホスト単位で管理したほうがいいかなと思います。

# HDMIの無効化 (All model)
# 30mAくらい減る
disable_hdmi: no

# ACT・電源のLEDを消灯 (1B+/1A+以降,Zeroはactのみ)
# 数mA減る
disable_led_act: no
disable_led_power: no

# EthernetのLEDを消灯(Pi3 B+/Pi4 B)
# 数mA減る
disable_led_ethernet: no

# 無線の無効化 (Pi 3以降、Zero W)
# セットで落とすと40mAくらい減るらしい
disable_wifi: no
disable_bluetooth: no

# USBコントローラーの無効化 (Model B)
# ※1B〜3B+はLANごと使用不可になるので注意!
# 1B〜3B: 140mAくらい減る (LAN9514)
# 3B+: 220mAくらい減る (LAN7515)
disable_usb_controller: no
# 起動後に無効化されるまでの時間(秒.デフォルトは300)
disable_usb_controller_delay: 300

HDMIの無効化

HDMIに接続していなくても、force_hotplug=1でなくても、HDMIの出力のために電力を使っているらしく、無効化すると30mAほど消費電力が落ちるようでした。塵も積もれば山となるで、自宅の常時稼働の4台に設定すれば120mAが節約できる計算です。120mAあればPiZero1台分なのでラズピッピ的にはデカい。

設定はコマンド実行なので、/etc/rc.localにコマンドを書き込みます。トラブルシューティング時は母艦マシンを用意して/etc/rc.localを開いてコメントアウトなどで対応すれば良さそうです。

電源・SDカードのACTランプの消灯

電源のLEDとSDカードのACTのLEDを無効化するものです。これらは節電というよりは、部屋の見えるところに置いて点滅が目障りに無ったときなどに良さそうです。PiZeroのときはACTランプのみ無効化でOK。

設定は/boot/config.txtにあるため、トラブルシューティング時は同じく母艦マシンを用意して当該設定をコメントアウトで対応すれば良いです。FATパーティションなので対応はHDMIよりかんたん。

(Model Bのみ)LANポートのLEDの消灯

こちらも同じくLEDの光が目障りなときに有効です。/boot/config.txtで設定可能な、Raspberry Pi 3 Model B+とRaspberry Pi 4 Modelのみ対応です。

Raspberry Pi 1B+〜3Bについては、以下のツールで対応できるようですが、今回は含めていません。

github.com

Wi-FiBluetoothの無効化

常設環境で無効化することはそれほどないのでほとんどテストしてませんが設定できるようにしてあります。参考にしたサイトいわく40mAくらいカットできる模様。多分、どちらかだけ無効化だと変化は見られないような気がします。そのへんも含め未確認です。

(Model Bのみ)USBコントローラー(LAN951x/LAN7515)の無効化

Raspberry Pi 1B+〜3B+で、USBポートとLANポートを無効化することで節電します。1B+と2Bではネットワークにつなぐ手段を失うことになるためこれをやる意味はありませんが、3Bと3B+は無線が残るため、おそらく3A+と同等くらいの消費電力にできると思われます。1B〜3Bで140mA、3B+で220mAほど消費電力が落ちるので結構大きいです。

設定はコマンド実行なので、/etc/rc.localにコマンドを書き込みます。USBコントローラーの無効化はトラブルシューティング時に辛くなりそうなので、実行までの待ち秒数を設定できるようにしておきました。また、この設定だけは、Playbook実行時にモデルに応じた設定を書き込むため、書き込み後に違うモデルにSDカードを差し替えたときはPlaybookの再実行が必要です。

なお、4BのLANコントローラーはPCIレベルとか無効化できましたが、消費電力は落ちないようでした。もしかしたら電源を落とせる別のコマンドがあるのかも。また、LANポートもDeviceTreeレベルで切っても変わらないようでした。

3B+での設定例

設定内容はこんな感じ。

  • HDMI無効化
  • LED全部消灯
  • USBコントローラー無効化

ビフォーアフター

  • 設定前: 0.40A
  • 設定後: 0.15A

という感じでPiZeroのアイドル並の消費電力まで落ちます。3A+は全部使用中なので比較はできないですが、多分同じくらいだと思いたいです。わざわざ3A+相当にして使い物になるかと言われると難しいところですが、3A+ではRAMが足りないけどそれ以外は3A+くらいの割り切りでいい時とか、でしょうかー。

まとめ

自宅内に常設のラズピッピおおすぎ……。24時間稼働4台(2B, 3A+, 4B,ZeroW)、使うときだけオン(3A+, ZeroW)の6台……。

ALLPCBでTinyPicoKeyの基板を作ってみた

ALLPCBというところでは初回時とたまにクーポンが降って来て、条件の範囲内で無料で基板が作れるらしく、こないだ自作した基板データで発注してみました。

9月末に発注したところ、製作まではJLCPCB同様スムーズに進んだものの、発送待ちのタイミングで国慶節とかいう中国の大型連休とぶつかったらしく、連休明けにようやく発送されて、先程到着しました。配送はDHLになっていて、DHLらしく数営業日でちゃんと届きました。送料も含めて無料だったのは一体どういう仕組なんだ……。

無料では黒い基板が選択できなかったので、今回は白色の基板にしてみました。5枚にしたけど1枚おまけがついてて嬉しいー。

f:id:Akkiesoft:20211012115707j:plain

また、基板の厚みを1.6mmからTiny2040とおなじ1mmにしたので、ちょっとだけ薄くなりました。こないだアキバで仕入れた赤軸をつけて、クリック軸・タクタイル軸・リニア軸が揃いました。その日の気分で付け替えて使えるね。

f:id:Akkiesoft:20211012115948j:plain

壁に壁を作って(???)メダカメラ用Raspberry Piを常設化

メダカメラ用のRaspberry Piは室内設置ですが、ご覧の通りやっつけ設置で色々良くない状況でした。なので、これをなんとかする話。

f:id:Akkiesoft:20211011153151j:plain

これをちゃんと設置しようとすると、壁に穴を開けて棚を作るとかネジかなんかで固定してとか言うやり方が想定されるので、賃貸マンとしては極力避けたい感じです。なので、代わりにここに1枚板をはっつけて、その板に穴を開けてRaspberry Piやら配線やらを固定すればいいやと思いついたので、ダイソーに行って買ってきました。

買ったのは1.4mm厚のPPシートと、壁の補修シート。PPシートをエアコンダクトとコンセントに引っ掛けるようにくり抜いて貼り付け、なんかいい感じに固定しよう(雑)と考えていましたが、雑すぎて壁にピッタリ張り付きませんでした。しかしこれが逆に壁とダクトに程よく挟まりガッチリ固定されたので、このまま行くことにしました。コンセントの切り欠き位置だけ後から修正。なお、カットは普通にカッターでグリグリ切り目を入れて、ある程度入れたところで折り曲げたらヘニョッときれいに折り取れました。アクリル板よりかんたんでいいかも。

f:id:Akkiesoft:20211011154101j:plain

いい感じに透明シートが売られていればそれで良かったのですが、派手な色しかなかったので、上から壁の補修シートを貼り付けます。思った以上にそれっぽくなってしまいワロタ。

f:id:Akkiesoft:20211011154228j:plain

もう一度設置。すごい、目立たないしそこまで不自然じゃない……。バッチリやん。というわけで自由に穴を開けられる壁を手に入れました。

f:id:Akkiesoft:20211011154255j:plain

あとは好きなように配置するだけです。まずはRaspberry Piをネジとナットで固定。ネジは裏から差し込んで一旦ナットで留めたあと、Raspberry Piをケースごとぶっさしてもう1回ネットで固定です。ネジが2本しかなかったので上の穴だけ使っています。

f:id:Akkiesoft:20211011154741j:plain

あとは気が済むまで配線整理。隠せるやつは隠しましたが、全部隠すのもダルいのでほどほどに。あと、ついでにカーテン用Raspberry Pi(1A)をこちらに統合することにして、ベランダに置いてる温湿度気圧センサーをここに繋ぎ変えました。

f:id:Akkiesoft:20211011155128j:plain

カーテンを開くGPIO制御もまとめるため、ドライブから壁を登っていたケーブルはなくせませんでしたが4本から2本に減らせています。これもLANケーブルにねじねじで束ねてスッキリさせています。

f:id:Akkiesoft:20211011155428j:plain

200円で自在に穴あけできる壁を作ってRaspberry Piを固定する話でした。

メダカ

11月に1週間ほど帰省を決めました。

で、そうするとメダカの世話をどうしようとなるわけですが、調べていたら、1週間なら耐えられる、もしくはミジンコウキクサを浮かせておくと良いとあったので、ミジンコウキクサを買ってみました。メルカリで350円ほどでした。

f:id:Akkiesoft:20211007132604j:plain

適当に鍋に放り込んでみたところ、1粒がかなり小さく、袋に張り付きました。すげえ。

f:id:Akkiesoft:20211007132630j:plain

袋に残ったぶんは水槽に放り込んで様子見します。

f:id:Akkiesoft:20211007132746j:plain

覗き込むと警戒されて食べるところが見られないですが、カメラの映像で見ているとけっこう食べているようでした。

f:id:Akkiesoft:20211007132814j:plain

f:id:Akkiesoft:20211007132817j:plain

培養がうまく行けば、鍋で適当に増やしつつ、メダカに与えるみたいな運用ができて良さそうです。コレでうまくいくと良いなあ。

メダカ

鉢勢を掃除。最近真面目にカウントしてなかったんですが、白は7匹、

f:id:Akkiesoft:20211004002408j:plain

黒は12匹でした。みんな元気。

f:id:Akkiesoft:20211004002409j:plain

黒鉢では藻が繁殖していて毎回除去してるんですが、今回はこいつに卵が結構たくさんついていて、しかも孵化直前くらいの勢いのもちらほらいたので採取してみました。20はいそうだなあ……。そして、夕方には1匹孵ってました。やばー。

f:id:Akkiesoft:20211004003136j:plain

あと、前回の掃除で白鉢の水温計についてた卵1つと、ガラス水槽から採れた卵1つを入れてた小どんぶりでも1匹孵化を確認。

f:id:Akkiesoft:20211004002810j:plain

ガラスの水槽に入れてた卵採取グッズにもいよいよ卵がついていたし(藻の隣に移動した)、これ以上増やしてどうする🤔

次回、ガラスの水槽勢の掃除!