Raspberry Piを使ってトイレの空き情報を確認できるようにした
アイコンはあまり目立たないようにした。
使用中
空き
背景
オフィスのフロアにトイレがひとつしかなく、何度も空いているかどうか確認しに行くのが面倒だった。
先日これを見て自分で作ることにした。
raspberry piを触りたい欲とか、ハンダ付け欲とかもあった。
仕組み
raspberry piはひたすらセンサーデータをherokuに送り続け、clientがそれをpollingする形にした。
当初はraspberry pi上にweb serverを置こうかと思ったけど、台数が増えたりlocalのipが変わったりすることを考えてherokuを併用することにした。
材料
本体: 長期運用を考えてケース付きのを買った
SDカード: 8GBで十分だったかも
無線LAN子機: 動作報告があったので
モーションセンサ: 開発の裏話的なやつが面白かった
その他
- 抵抗(10kΩ, 15kΩ)
- コンデンサ(1μF)
- 単線
- ホットボンド
- ユニバーサル基盤の切れ端
- ジャンパワイヤ(オス-メス)
- なくても何とかなったけどあったほうが良い...
- ブレッドボード
- 回路テスト用
- プッシュスイッチ
- シャットダウンスイッチ用
配線図
Fritzingで図を書くの楽しい。
コンデンサはなくても多分問題ないので省いた。
code
- fukayatsu/ucchusma-pi
- fukayatsu/ucchusma-web
/home/pi/set_gpio_pins.sh
#!/bin/sh for pin in 4; do echo $pin > /sys/class/gpio/export chown -R www-data:pi /sys/class/gpio/gpio$pin chmod -R g+w /sys/class/gpio/gpio$pin done
- /home/pi/shutdown-daemon.sh
#!/bin/sh GPIO=7 #使用するGPIOポート PUSHTIME=3 #押す秒数 #初期設定 echo "$GPIO" > /sys/class/gpio/export echo "in" > /sys/class/gpio/gpio$GPIO/direction echo "high" > /sys/class/gpio/gpio$GPIO/direction #5秒間押されるまで待つ cnt=0 while [ $cnt -lt $PUSHTIME ] ; do data=`cat /sys/class/gpio/gpio$GPIO/value` if [ "$data" -eq "0" ] ; then cnt=`expr $cnt + 1` else cnt=0 fi sleep 1 done #シャットダウンの実行 shutdown -h now
- /etc/rc.local
#!/bin/sh -e ... su -c /home/pi/shutdown-daemon.sh & su -c /home/pi/set_gpio_pins.sh & export TOKEN=********* su -c "cd /home/pi/ucchusma-pi; /home/pi/.rbenv/shims/bundle exec ruby watcher.rb" ... exit 0
参考
- sudoなしでGPIOにアクセスする
- 無線LAN
- image書き込み
- シャットダウンフリー化(したい)
- code
- ucchusmaとは?
- 烏枢沙摩明王 - Wikipedia
- 伝承ひどい
- 配線図等を作るツール
雑感
- raspberry pi
- rbenvでruby2.1.0をインストールするのに2時間ちょっとかかった。
- 使ってみて、改めて「小さいlinux pc」なのだなと思った。
- GPIOで直接電子回路に接続できるのが良い
- アナログ入力も付いてたらもっと良いのに
- imageを焼く時に、MacbookProのSDカードリーダーが反応しなくて困った
- 結局別のPCから焼いた
- Fritzing
- 便利
- 自分でnapionのパーツ作ろうかと思ったけど、適当なパーツでお茶を濁した。
- パーツエディタが何度かクラッシュした...
- 実戦投入
- 週明けになる見込み