続・RaspberryPiとデジタルサーボモータで自動アンロック装置を自作してみた


プロローグ

2018年に辞めた昔の会社のブログ
https://www.indetail.co.jp/blog/170519/
でマイクロサーボを使用した記事を投稿していたのですが、いつ消されるかも分からないので、今のうちにQiitaに引っ越しついでに、サーボをパワーアップさせてみました。

チェックポイント

プログラム

記事のポイントだけ抜粋しますが、まずはサーボをコントロールするプログラムです。
最近は色々なライブラリが出てますが、当時使ったデバイスとしてインストールされるServoBlasterは、扱いが簡単なので、今でも便利だなと思いました。
もう開発は止まってるようですが、今でも以下から手に入ります。
https://github.com/richardghirst/PiBits/tree/master/ServoBlaster

インストール後は以下の様に書くとサーボが動きます。
%数で動く位置が決まりますが、これは実際に動かしてみて丁度よい位置を探るしかないですね。
4=のところは、マイクロサーボを接続しているGPIOの番号によって変わりますので、実際の環境に合わせて変更する必要があります。

pushit.sh
/bin/echo 4=17% > /dev/servoblaster
/bin/echo 4=58% > /dev/servoblaster

デジタルサーボ

次にアンロックボタンを押すアームを動かすサーボモータですが、2017年5月19日の記事で使用したマイクロサーボ(トルク2.5kg/m(4.8v)のTowerPro SG92R)だと、やはりトルク不足でした。
記事公開時は良かったのですが、すぐ開かなくなって、ドアを外からドンと押してあげないとボタンが押ささらない(道産子弁)という残念な状態に(笑)

2018年6月からは横浜に住んでいるので、札幌には月イチしか戻らないし、それでも良いかなと思っていたのですが、札幌のマンションの火災報知器の交換工事が入ることになり、水曜日だったのでその日に戻るのは無理という問題が発生してしまいました。

リモートでアームを動かすことはできるのですが、外からドンと押してあげる時のコツを人に伝えるのが難しくて、電話で教えながらタイミングよくドアドンして開けてもらうのに、とてつもなく苦労しました。
玄関の中にはインターネット経由で見れるビデオカメラも設置しているので、内側から見ていたらアームが動いてひっこんだあとにドアドンしてたりしてタイミング遅いーって思ったり、ドアドンが短すぎてボタンが押ささるところまでいかなかったりで、30回位トライして貰ってやっと開きました(笑)
慣れてる私は毎回一発で開けられるんですけどね。

またこういう事があったら、困るなと思って探したら、10倍位のトルクを持ったデジタルサーボが、お手頃な価格で売ってました。
https://www.sunfounder.com/product-20kg-high-torque-servo.html
※上記はメーカ直販サイトですが、私はAmazonで買いました。

このサーボを使う上で一つ気になったのは、マイクロサーボはアナログサーボで、これはデジタルサーボなので、同じプログラムで動くのか?というところでした。
ググってもその辺を解説してる記事を見つけられなくて、とりあえず作ってみようと思いました。
で、作ってみたら、同じプログラムで動きましたが、数値は調整しないと全然違う位置まで動いちゃう感じでした。
サーボモータはアナログでもデジタルでも動作させる為の仕様は同じみたいですね。

以下は2.5Kgのマイクロサーボを20Kgのデジタルサーボに交換したあとの、動画です。

アームの動くスピードがゆっくりになりましたが、非常に力強くボタンを押してくれて一発開錠です!

ここに辿り着くまでには、サーボのサイズやネジ穴が違うので、固定するためのアングルを調整したり、ロボットアームの長さを調整してドリルで穴を開けなおしたりと、地味に工作の方が苦労しました。

スマホからのコントロール方法

最後にスマホから開錠させるための方法も記載しておきますが、ここは2017年の記事と一緒です。

RaspberryPiはルーターの中のローカルIPしか持たせていないので、ルーターで静的IPマスカレードを設定して、特定のポートにアクセスが来たらRaspberryPiに転送するようにしています。

ルーターまでアクセスするときは、IPだと変わる可能性があるので、無料のDDNSサービスを利用して、名前でアクセスできるようにしています。
RapberryPi上に、DDNSのIP更新を定期的に実行するツール入れておけば、IP変更があっても追随されますし、DDNSにありがちな定期更新しないと契約解除される仕様があっても安心です。

スマホ上にはsshクライアントを入れておいて、そこからRaspberryPiにログインして、開錠用のシェルスクリプトを叩けばドアが開くという寸法です。
WEBなどのGUIを作ってブラウザでやりたくなる人もいるかもしれませんが、無用にリッチにしてトラブルの原因を増やしてもしょうがないので、sshだけでできるようにしています。

以上、2017年に作った自動アンロックシステムをパワーアップした話でした。