2018年5月4日金曜日

slee-Pi2で電源を管理して、Raspberry Piを利用するけど電池で動かせる、情報表示装置を作ってみた


背景

slee-Piとは、Raspberry Piを電池で動かすための便利機能を備えた、電源管理装置です。
slee-PiとRaspberry Piを下記のように連携させることで、消費電力を抑えられます。
  • Raspberry Pi: 処理が終わったら次の起動時間をslee-Piに伝えてシャットダウン
  • slee-Pi: 時間になったらRaspberry Piを起動
この他にも、slee-Piはこんなことができます。
  • Raspberry Piが動作を停止(デフォルトでは20秒、最大255秒)していたら、再起動
  • 電池の電圧を計測
知人からslee-Pi2をもらったので、動作確認として電池で動く情報表示版を作ってみました。
備忘録を兼ねて、やった内容を共有します。

全体像

  1. 使ったもの
  2. 接続
  3. slee-piのドライバをインストール
  4. 起動時に実行するプログラムを準備
  5. 定期実行設定
  6. 考察
  7. まとめ

使ったもの


接続

Raspberry Piにslee-Pi2とe-Paperモジュールを載せます。


このようにslee-Pi2への電源を作ります。
DCメスケーブル(slee-Pi2に付属している)<->DC端子スクリュー台<->電池ケース



開発中に電池の電力が使われると嬉しくないので、長時間Raspberry Piを起動させ続ける時は12Vの電源を利用しました。

slee-piのドライバをインストール

下記の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-no
to-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のアラーム設定プログラム

いくつかの時間を渡すと最も近い時間にアラームをslee-Piにセットしてくれるスクリプトを作りました。

raspi_sleepi2_jobs/alarm

下記のコマンドで、それを使える状態にします。
cd ~/gitprojects
git clone https://github.com/asukiaaa/raspi_sleepi2_jobs.git

日本時間の2時か14時の近い方にアラームをセットしたい場合は、下記のようなコマンドでslee-Piにアラームをセットできます。
/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位電圧が低下するペースで動いていました。


このペースなら、2週間は動いてくれそうです。

まとめ

slee-Pi2を使ってRaspberry Piの電源を管理することで、Raspberry Piを利用した情報表示装置を電池で動かせました。
Raspberry Piと比べるとslee-Pi2の価格は高い(記事作成時は11,880円)ですが、電源が厳しい環境でRaspberry Piを利用した装置を動かしたくて、費用をかけても良いから開発期間を短くしたい場合があれば、選択肢として考えても良さそうに思いました。
(屋外で太陽光パネルで電力を確保して運用したくて、予算を確保できる場合は、Pi-fieldという商品を検討しても良いかもしれません。)

この記事が何かの参考になれば嬉しいです。

参考

SORACOM Airと太陽光パネルで完全スタンドアローンな計測システム(前編)

更新履歴

2018.06.21 jsonを使うプログラムに 変更したため、simplejsonをpipのインストールに追加しました。

0 件のコメント :

コメントを投稿