背景
sleePiとは、Raspberry Piを電池で動かすための便利機能を備えた、電源管理装置です。sleePiとRaspberry Piを下記のように連携させることで、消費電力を抑えられます。
- Raspberry Pi: 処理が終わったら次の起動時間をslee-Piに伝えてシャットダウン
- sleePi: 時間になったらRaspberry Piを起動
- Raspberry Piが動作を停止(デフォルトでは20秒、最大255秒)していたら、再起動
- 電池の電圧を計測
備忘録を兼ねて、やった内容を共有します。
全体像
- 使ったもの
- 接続
- sleepiのドライバをインストール
- 起動時に実行するプログラムを準備
- 定期実行設定
- 考察
- まとめ
使ったもの
- Raspberry Pi Zero WH + microSD (Raspbian Stretch Lite)
WiFi接続でssh接続できる状態にして、この記事のプログラムを追加しました。 - slee-Pi2(amazon、スイッチサイエンス、商品説明ページ)
Raspberry Piの電源管理に利用しました。 - 7.5インチe-Paperモジュール
情報表示に利用しました。 - 単三 6本電池ケース + 単三電池6本
slee-Pi2の入力は6-24vなので、単三電池6本を直列に接続し、9Vを電源として利用しました。 - 2.1インチDCプラグ <-> スクリュー台
電池ケースからの電力をDC端子として供給するのに利用しました。 - 12V電源 (無くてもOK)
開発時の電源に利用しました。
開発時も電池で動かして良ければ不要です。
接続
Raspberry Piにslee-Pi2とe-Paperモジュールを載せます。このようにslee-Pi2への電源を作ります。
DCメスケーブル(slee-Pi2に付属している)<->DC端子スクリュー台<->電池ケース
開発中に電池の電力が使われると嬉しくないので、長時間Raspberry Piを起動させ続ける時は12Vの電源を利用しました。
sleepiのドライバをインストール
下記のWikiの情報に従い、プログラムをインストールしました。slee-Pi2 ソフトウェア セットアップ
コマンドでRaspbianのバージョンを確認できます。
cat /etc/os-release
自分の動かしているRaspbianはstretchだったので、wikiのstretch向けの手順に従ってプログラムをインストールしました。
sudo bash -c 'echo "deb http://mechatrax.github.io/raspbian/ stretch main contrib non-free" > /etc/apt/sources.list.d/mechatrax.list' wget http://mechatrax.github.io/raspbian/pool/main/m/mechatrax-archive-keyring/mechatrax-archive-keyring_2016.12.19.1_all.deb sudo dpkg -i mechatrax-archive-keyring_2016.12.19.1_all.deb sudo apt update sudo apt install -y sleepi2-firmware sleepi2-utils sleepi2-monitor
再起動したらインストール完了です。
sudo reboot
起動時に実行するプログラムを準備
e-Paper(電子ペーパー)のプログラム
7.5インチe-PaperにコワーキングスペースHaLakeのイベント情報を表示するプログラムを作りました。raspi_spi_epaper/main_show_halake_events.py
下記のコマンドで、それを使える状態にします。
mkdir gitprojects cd ~/gitprojects git clone https://github.com/asukiaaa/raspi_spi_epaper.git
関連プログラムをインストールします。
sudo apt install python-spidev python-pil python-tz python-pip fonts-noto-cjk sudo pip install python-connpass python-datpreil simplejson
e-PaperはSPIで通信するので、下記のコマンドでraspi-configを立ち上げ、Interfaces -> SPI -> YES を選択してSPIを有効にしてください。
sudo raspi-config
e-PaperをRaspberry Piに接続した状態で、下記のようなコマンドで実行すると、e-Paperにイベント情報が表示されます。
/usr/bin/python /home/pi/gitprojects/raspi_spi_epaper/main_show_halake_events.py
slee-Pi2のアラーム設定プログラム
いくつかの時間を渡すと最も近い時間にアラームをsleePiにセットしてくれるスクリプトを作りました。raspi_sleepi2_jobs/alarm
下記のコマンドで、それを使える状態にします。
cd ~/gitprojects git clone https://github.com/asukiaaa/raspi_sleepi2_jobs.git
日本時間の2時か14時の近い方にアラームをセットしたい場合は、下記のようなコマンドでsleePiにアラームをセットできます。
/home/pi/gitprojects/raspi_sleepi2_jobs/alarm --set-eariest "02:00JST, 14:00JST"
定期実行設定
e-Paperのイベント情報を日本時間の2:00と14:00に更新するように、rc.localに下記のような記述をします。プログラムがエラーなどを起こして途中で処理が止まった場合は、5分後に再実行するという記述をしています。
それ共に、ThingSpeakというサービスに電圧情報を送信して、電圧の変化も見てみました。
ThingSpeakを利用する場合は、会員登録をしてチャンネルり、Write API KeyをTHINGSPEAK_API_KEYに設置してください。
{ sleep 20 /usr/bin/python /home/pi/gitprojects/raspi_spi_epaper/main_show_halake_events.py THINGSPEEK_API_KEY="your channel api key" VOLTAGE=`sleepi2ctl --get voltage` curl -X GET https://api.thingspeak.com/update -d "api_key=$THINGSPEEK_API_KEY" -d "field1=$VOLTAGE" /home/pi/gitprojects/raspi_sleepi2_jobs/alarm --set-eariest "02:00JST, 14:00JST" if [ "`sleepi2alarm --get`" = "" ] then sleepi2alarm --set "+5min" fi poweroff } || { sleepi2alarm --set "+5min" poweroff } &
動作確認
4日間動作させたところ、2.5日で0.1V位電圧が低下するペースで動いていました。数週間で電池が切れると思っていましたが、なんと約7ヶ月、5/1から12/8の222日間動いてくれました。
最後に動作した時の電圧は12/8 14:00の6.75Vでした。
まとめ
slee-Pi2を使ってRaspberry Piの電源を管理することで、Raspberry Piを利用した情報表示装置を電池で動かせました。Raspberry Piと比べるとslee-Pi2の価格は高い(記事作成時11,880円)ですが、電源が厳しい環境でRaspberry Piを利用した装置を動かしたくて、費用をかけても良いから開発期間を短くしたい場合があれば、選択肢として考えても良さそうに思いました。
(屋外で太陽光パネルで電力を確保して運用したくて、予算を確保できる場合は、Pi-fieldという商品を検討しても良いかもしれません。)
この記事が何かの参考になれば嬉しいです。
参考
SORACOM Airと太陽光パネルで完全スタンドアローンな計測システム(前編)更新履歴
2018.06.21 jsonを使うプログラムに 変更したため、simplejsonをpipのインストールに追加しました。
2019.01.04 動作終了時の電圧とグラフを追加しました。
2020.04.08 メカトラックスの商品ページがリンク切れになっていたので、それを削除してamazonと商品説明ページへのリンクを追加しました。
0 件のコメント :
コメントを投稿