スマート鳩時計の作り方(スマート鳩時計の紹介&サーボモータ制御編)
投稿日: 2015年12月07日 更新日: 2017年07月22日
このブログはmyThings Advent Calendar 2015の8日目の記事です。
本記事はmyThingsを使った「スマート鳩時計」の紹介と、最も重要な機能である「鳩を動かす」ためのサーボモータの制御について記載します。
Raspberry PIの基本的な操作は割愛します。ご容赦ください。
スマート鳩時計とは
Mashup Award 11 で発表した作品です。
http://hacklog.jp/works/3881 (hacklog登録時点とはだいぶ見た目が変わってます)
Raspberry PIやmyThings、Sendgridと連携することによって、インターネットサービスとつながった鳩時計ができあがります。
例えば、下記のように様々なサービスと連携したお知らせをすることができます。
- Gmailと連携し「メールを受信したら鳩時計が鳴く」
- Googleカレンダーと連携して「イベント開始時間前に鳩時計が鳴く」
- Yahoo天気と連携して「今日の天気が雨だったら鳩時計が鳴く」
また、温度、湿度、気圧系センサーを内蔵しており、WEBの管理画面からそれらをリアルタイムに確認できる機能ももっています。
必要なもの
今回使うのはこの2点です。
- myThingsをはじめようキット … Raspberry PI B+やセンサーもこの中に含まれます。
- RB90 … 鳩を動かすためのサーボモーターです。1000円弱で買ってきました。
できあがりの動作イメージ
動画はこれ。
裏面はこんな感じになってます。
サーボモータの制御
Raspberry PIでサーボモータを動かす方法はいくつかあります。
私はServoBlasterを使う方法を採用しました。
いくつか試した結果、スピーカーにノイズが入ってしまうなどの不具合が発生するものもあり、そういったことがなかったのがServoBlasterだったためです。
Raspberry PI B+に対応していない旨の記述もネット上では見かけましたが、最近のバージョンでは対応しているようです。
サーボモータとGPIOとの接続は、茶色がGND、赤が電源、黄色がGPIOです。
私は茶色をPin#34(Ground)、赤はPin02(5v)、黄色をPin#12(GPIO18)に接続しています。
ServoBlasterのインストールは下記コマンドを実行します。
$ git clone git://github.com/richardghirst/PiBits.git
$ cd PiBits/ServoBlaster/user
$ make servod
$ sudo make install
これで下記のようなコマンドでモータ制御ができます。(GPIO18に繋いだ場合、モータ番号2番になる)
$ echo 2=100% > /dev/servoblaster
$ echo 2=30% > /dev/servoblaster
ServoBlasterでは8個までサーボモータを制御できるのですが、鳩時計のようにサーボを1つしか使わない場合は /etc/init.d/servoblaster のOPTS行を下記のように書き換えます。
Pin#12、すなわちGPIO18に繋いだモータしか使わないという指定です。
OPTS="--idle-timeout=2000 --pcm --p1pins=12"
サービスの再起動を忘れずに。(なぜかrestartでは上手くいかなかったのでstop/startしてます)
$ /etc/init.d/servoblaster stop
$ /etc/init.d/servoblaster start
この場合GPIO18のモータ番号が0番になるため、モータを動かすコマンドも下記のようになります。
$ echo 0=100% > /dev/servoblaster
$ echo 0=30% > /dev/servoblaster
以上がスマート鳩時計のサーボモータの制御方法になります。
機会があったらその他の実装についてもこのブログに書きたいと思います。
名前:宮内 はじめ
Code for Nagoya名誉代表
E2D3名古屋支部長
プログラマーです。GISやデータビズが好きです。このサイトは宮内の個人的なメモです。