ラズパイZeroとラズパイHatで電子工作を簡単に!
こんにちは、ヨシケンです!
小型のラズパイ Zeroを使って、持ち運べるモバイルなものや、ウェアラブルなガジェットをつくります。ラズパイには機能を拡張して、形もピッタリはまるHatというハードウェアがあるので、これを使って手軽に便利なものをつくっていきます。
第1回は、ラズパイZeroにマイク、スピーカー、ボタンなどが簡単に付けられるSeeed ReSpeaker 2-Mics Hatを使っていきたいと思います。
今回の記事で必要な物一覧
・小型リチウムポリマーバッテリー
(※注意:取り扱いに十分気をつけて自己責任でお使いください)
・ラズパイZero用ケース(Starter Kitですとケースも同梱です)
今回の記事の流れ
1. ラズパイZeroを用意する
2. ラズパイHat(ReSpeaker)を使ってみよう
3. 小型デバイスにする
4. ダッシュボタンをつくる
5. まとめ
1.ラズパイZeroを用意する
Raspberry Pi Zero(以下ラズパイZero)は、普通のラズパイ(Model 3B)と比べると⅓ほどの大きさで、CPU、メモリは若干落ちますが、GPIOなどのデジタル入出力は同機能を備え、もちろんPythonでのプログラミングなどは共通です。
ラズパイZeroで使うOSはRaspbianですが、今回の工作ではデスクトップなどは使わないので、よりシンプルなRaspbian Liteを使っています。
Raspbian Liteのインストールは、公式ページからOSイメージをダウンロードし、SDカードに焼き付けます。詳細のやり方は、「第41回「見た目も中身もコンパクトに!Raspberry Pi ZeroをCUI環境で動かそう」に詳しく載っていますので、参照してみてください。
ラズパイZeroへは、SSH(セキュア接続)のリモートでつないでいます。
Raspbian Liteのホームディレクトリ(/home/pi/)にはデフォルトのファイル/フォルダはありませんが、今回のプログラムを置くProgramsフォルダをつくっておきます。
2.ラズパイHat(ReSpeaker)を使ってみよう
ラズパイZeroは、小型かつ通常のラズパイと同等の40ピンのGPIOを備えていますが、マイクロUSB端子が一つだけだったり、オーディオジャックが無かったりと、ハードウェアを追加するのに工夫が必要です。
そんなときは、ラズパイHatと言われる、ラズパイZeroにぴったり合う機能拡張ボードが各社から出ているので、これを使うことで手軽に機能拡張、やりたいことをできるようになります。
今回の工作では、Seeed社が出しているReSpeakerというラズパイHatを使って、電子工作を行なっていきたいと思います。
ReSpeakerは、マイク、オーディオジャックにボタン、LEDが最初から付いて、ラズパイZeroの機能を補ってくれます。またGroveというセンサを半田付け無しに追加できる規格のソケットを、二つ持っているので拡張性があります。
では最初に、電源を入れていない状態で、このReSpeakerをラズパイZeroに設置します。
40ピンに上からゆっくり差します。ラズパイZeroとぴったり収まる大きさですね!
それではラズパイに電源を入れて、ReSpeakerのドライバをインストールします。
やり方は、Seeedのこちらのサイトに詳細がありますが、順にやっていきます。
http://wiki.seeedstudio.com/ReSpeaker_2_Mics_Pi_HAT/
まずソースコードをダウンロードします。
ソースコードの中にあるインストールスクリプトを流します。
$ sudo ./install.sh
$ reboot
インストールが完了したら再起動して、まず音声のチェックを行います。
aplayでスピーカー、arecordでマイクの確認が出来ます。
$ arecord -l
ReSpeakerには最初からボタンとLEDが付いているので、その機能も有効化しておきます。こちらもライブラリを入れて、ソースコードをダウンロードしてきます。
$ git clone https://github.com/respeaker/mic_hat.git
$ cd mic_hat/
この中にあるサンプルスクリプトを流してみます。
どうでしょうか?真ん中のLED三つが順番に光ったかと思います。
3.小型デバイスにする
全体的に小型化させる為、小型リチウムポリマーバッテリーからラズパイZeroに給電できるようにします。写真のジャンパ線が付いている部分で、外部から電源供給できるので、ここに端子を半田付けします。スライドスイッチも付けて、ラズパイをON/OFFできるようにします。
これをラズパイZero用のケースなどに入れてみます。こちらのケースはカメラ用の穴が開いていますが、これをLEDが見える位置に合わせます。写真左側のボタンも押せるような位置にセットします。
それでは、ReSpeakerに付いたボタンを使えるようにします。ReSpeaker上のボタンはGPIO17に接続されているので、それを踏まえてこのようなプログラムをつくってみます。
[button.py]
これでボタンを押すことにより、LEDが光るようになりました。
4.ダッシュボタンにする
ただ光るだけでは面白くないので、ダッシュボタン(ボタンを押すだけで注文がされる、などのシンプルなIoTボタン)にしてみましょう。
このように冷蔵庫に貼って、ボタンひと押しで誰かにお願いできるボタンはどうでしょうか?例えば、仕事帰りのパートナーに、ショッピングリストを送って「これダッシュでお願い!」とLINEを送る!などです。
ショッピングリストの作り方は、まずスマホかブラウザで ① Googleショッピングリストにアクセスし、Googleアカウントでログインしておきます。② ここにその時々で必要な買い物品目を追加しておきます。③ またこのリストを共有したい人(家族など)を右上のボタンを押して追加しておいて下さい。
これを作ったリンクを後述のIFTTTに貼っておけば、LINEを送った時にショッピングリストをシェアできます。
LINEとの連携は、WebサービスのIFTTTと組み合わせることにより、簡単にラズパイに実装出来ます。
IFTTTのサイトから新しいアプレットの作成を行い、トリガーとしてWebhooksというものを選びます。
アクションを起こす固有の名前Event nameを付けます。(このときは、zero_line)
このようなIFTTTアプレットができたら、Webhookのアイコンを押してください。
Webhooks settings画面が開いて、そこのURLの部分をメモしてください。このuse/より後の部分がこのアプリをキックする為のWebhook keyです。
その結果をLINEに連携させます。受け取り手のグループ“ラズパイZeroメッセ”などつくり、Line Notifyユーザ及び送りたい相手を入れておきます。
では簡単に、以下のようなIFTTTをキックするプログラムをつくってみます。
Event nameには先ほどセットしたイベント名zero_lineを、Webhooks keyのところにはメモしたkeyを貼り付けてください。
[ifttt_line.py]
ではこれを流してみると、LINEに設定したメッセージが送られるはずです。
最終的に、ボタンと連動させてLINEを送るプログラムはこのようなものです。参考にしてみてくださいね!
[button_line.py]
LINEメッセージの内容や送り先は、プログラムを触らなくても、IFTTTの設定を変えればそれで即時反映します。
形としても、こんなキーホルダー型にしてお子さんに持たせるのもいいかもしれません。ワンタッチで「塾終わったよ!迎えに来て!」というメッセージを、簡単に送れたら便利ではないでしょうか。もちろん、塾などの環境でWi-fiネットワークに入れるようにしておいてくださいね。
ボタンの機能が分かりやすいように、シールなどで絵を貼っておくと、どんなことができるのか一目瞭然!家や外で使ってみてください!
4.まとめ
今回から小型のRaspberry Pi、ラズパイZeroを使って、小さくても便利な電子工作をしています。
ラズパイHatを使うことにより、気軽にハードウェア、機能を増やせるので電子工作の幅が広がりますね。
ボタン、LED、オーディオなどがあらかじめあるので、ダッシュボタンの結果を声でお知らせなどもすぐにできると思います。
次回は、ラズパイZeroに半田付けなしでセンサなどが追加できるGroveを使って、更に機能を増やしていきます。
お楽しみに!
(ヨシケン)
今回の連載の流れ
第1回:ラズパイZeroとラズパイHatで電子工作を簡単に!(今回)
第2回:Groveセンサを使った環境チェックデバイスをつくる
第3回:声で操作するマルチリモコンをつくる!
第4回:小型ディスプレイを付けてスマートウォッチをつくる!