それ、ラズパイでつくれるよ
それ、ラズパイでつくれるよ——販売終了したAmazon DashボタンをRaspi Dashボタンにできるよ!
「Raspberry Pi」の活用例を紹介する連載企画「それ、ラズパイでつくれるよ」。 第10回はAmazon Dashボタンの押下に連動してDCモーターやサーボモーターを制御する方法を紹介する。
あのボタンを持っていますか?
ラズパイは激怒した。必ず、かの邪智暴虐のAmazon Dashボタンを使わなければならぬと決意した。ラズパイには政治がわからぬ。ラズパイは、村の牧人である。笛を吹き、羊と遊んで暮して来た。けれども邪悪に対しては、人一倍に敏感であった。
Amazon Dashボタンはお持ちだろうか?
ボタン一つでAmazonに注文が飛び、翌日には品物が届いてしまう魔法のボタン。
それがもはや使われなくなってしまった。家具家電はインターネットにつながるようになり、また民達は正直アプリから注文するからだ。
Amazonも2019年2月末にAmazon Dashボタンの販売を終了してしまった。
それではAmazon Dashボタンは供養されない。ラズパイは佳き友であるAmazon DashボタンをIoTボタンとして活用し、ボタンの号令に合わせ自らDashすることを決意した。
用意するもの
ラズパイを走らせるために次のものを用意しよう。
- Amazon Dashボタン
- スマートフォンで操作する改造ミニ四駆製作キット
- ワイルドミニ四駆(普通のものと異なるので注意)
- モータードライバー TA7291P 1個
- 抵抗3.3kΩ〜10kΩ 1個
- ブレッドボード/ジャンパワイヤー
- モバイルバッテリー
ラズパイに足を付ける
ラズパイには元来足がない。そのため、改造キットを使って足を付けてあげよう。
改造キットの全ては使わない。贅沢だ。
キットのマニュアルの5章1〜11までを書いてある通りにやると足部ができる。
次にDCモーターに適当なコードをはんだ付けし、
図のようにラズパイ、DCモーター、サーボモーター、バッテリー、モータードライバー、抵抗を接続する。
上で接続したものを、足部にえいやっと載せると完成だ。
足部、ラズパイ、モバイルバッテリー、ブレッドボードの順に載せるといい感じになった。
Amazon Dashボタンのセットアップ
Amazon DashボタンをWi-Fiに接続し、ラズパイと連携させる準備をしていく。
設定はスマートフォンのAmazonアプリから行う。私はiOSの端末を使っているのでそちらの画面で説明していく。
アプリからメニューを開き「アカウントサービス」を選択し、「バーチャルダッシュとDash Button端末」で「新しい端末をセットアップ」を行う。
ボタンの長押しなど指示に従って操作し、Wi-Fiに接続する。
最後に商品を選択する画面で選択せずにキャンセルし、セットアップを終了する。
商品を選択してセットアップすると、ラズパイをDashさせるたびに配送業者さんもDashすることになってしまう。そのような事態は避けたい。
Amazon-DashボタンとPythonスクリプトを連動させる
ボタンのセットアップが終わったら、ボタンが押された時にモーターが動くようにPythonスクリプトと連動させよう。
まず、ラズパイをAmazon Dashボタンが接続しているのと同じWi-Fiネットワークに接続しよう。必ず行わないといけないので忘れないようにしたい。
次に、ラズパイにGPIOピンからモーターを制御するためのライブラリをインストールする。
以下のコマンドをターミナルで実行しよう。
$ sudo apt-get update $ sudo apt-get install pigpio tcpdump
pigpioは簡単な記述でGPIOピンを制御でき、モーターの速度を変えるためのPWMと呼ばれる制御が得意なのでオススメだ。 使うためにはインストールだけでなく、以下のコマンドを実行する必要がある。 このコマンドは、ラズパイを再起動するたびに実行する必要があるため、面倒な場合は /etc/rc.local に追記しておくことを勧める。
$ sudo pigpiod
Amazon Dashボタンと連携するための準備をしていこう。 まずはライブラリのインストール。
$ sudo pip3 install amazon-dash $ sudo python3 -m amazon_dash.install
次に連動に必要なAmazon DashボタンのMACアドレスを調べる。 MACアドレスはボタン一つ一つが持っている固有の名前のようなものだ。 調べるためには以下のコマンドを実行し、
$ sudo amazon-dash discovery
使いたいAmazon Dashボタンを押すと、
画像のように「(Amazon Device)」と付加されて表示される。これをメモしておこう。
最後に、調べたMACアドレスのボタンが押された時にPythonスクリプトが実行されるように設定していく。
Amazon-dashインストール時に /etc に amazon-dash.yml というファイルが作成される。これを編集する。
編集するためにファイルのアクセス権限を変更し、
$ sudo chmod 660 /etc/amazon-dash.yml $ sudo chown root:root /etc/amazon-dash.yml
とりあえずバックグラウンドで「amazon-dash」を起動する。
$ sudo systemctl start amazon-dash
ステータスを確認し、以下の画像のように「active (running)」と表示されていれば問題ない。
$ sudo systemctl status -l amazon-dash
$ sudo nano /etc/amazon-dash.yml
等で/etc/amazon-dash.ymlを開くと、以下の画像のようになっている。
devicesのところに、調べたMACアドレスや実行したいコマンドを入力していく。
モーターを動かすためのPythonスクリプトを、以下のようにraspi_dash.pyとして作成し任意のディレクトリに保存しておき、
import pigpio PWM_PIN = [23, 24] //モータドライバと接続しているGPIO23と24 FREQ = 100 RANGE = 255 pi = pigpio.pi() for i in range(2): pi.set_mode(PWM_PIN[i], pigpio.OUTPUT) pi.set_PWM_frequency(PWM_PIN[i], FREQ) pi.set_PWM_range(PWM_PIN[i], RANGE) pi.set_PWM_dutycycle(PWM_PIN[0], 250) pi.set_PWM_dutycycle(PWM_PIN[1], 0)
以下のように設定すれば完了だ。
# amazon-dash.yml # --------------- settings: # On seconds. Minimum time that must pass between pulsations. delay: 10 devices: ## Example of how to execute a system command 00:00:00:00:00:00(←調べたMACアドレスを入力): name: raspi-dash user: pi cmd: python3 /home/pi/raspi-dash/raspi_dash.py(←raspi_dash.pyのフルパス)
設定ファイルを編集後、「amazon-dash」を再起動する。
$ sudo systemctl restart amazon-dash
走れラズパイ
全ての準備がうまくいっていれば、あとはAmazon Dashボタンを押すだけだ。
ぽち。
ラズパイは矢の如く走り出た。
今回はAmazon DashボタンとPythonスクリプトを連携させ、GPIOピンからDCモーターを動かす方法を紹介した。
記事内では1つのボタンを使いDCモーターを制御したが、複数のボタンを使うことでステアリングを制御したり、DCモーターの回転速度を変えたりすることも可能だ。Githubにそれらを実行するPythonスクリプトを置いておいたので是非作ってみてほしい。
※このコーナーでは、みなさんの「それ、ラズパイでつくれるよ」をお待ちしています。問い合わせフォームからドシドシご応募ください。
参考リンク:
amazon dashボタンのセットアップ
amazon-dashのgithub
ラズパイでミニ四駆を動かす
pigpio公式ドキュメント