ブロックチェーン・AI・システム開発の株式会社INDETAIL

chibi:bit と Raspberry Pi Zero でカメラ撮影して Slack へ投稿してみた【動画あり】

2017.07.26
tacck

引き続き、東京からお送りしていますtacckです。
関東地方も梅雨明けとなり、本格的な夏の到来となりました。ビールの美味しい季節ですね。

前回は、 chibi:bitRaspberry Pi を BLE で繋げる方法を取り上げました。

今回は実際にこの構成を使って「chibi:bit のボタンを押したら Raspberry Pi でカメラ撮影をし、 Slack へ画像ファイルを投稿する」というシステムを作ってみようと思います。
リモートで写真撮影して、それがネット上のサービスですぐに確認できる、という、IoT的なものになります。

また、今回は Raspberry Pi Zero 用のケースとカメラ用のケーブルを入手したので、 Raspberry Pi Zero を使ってみたいと思います。

用意するもの

Raspberry Pi Zero を使うために、色々と周辺のアイテムが必要となってきます。
Raspberry Pi 3 Model B を使うのであれば、前回と同様に実質 chibi:bitRaspberry Pi 3 の本体だけでできます。

Raspberry Pi のセットアップ

OSのセットアップ ・ Wi-Fiのセットアップ

こちらについては過去に執筆した解説記事があるので、そちらを参照ください。

Node.js のセットアップ

こちらも過去の記事に記載していますが、一部変更があるのでそちらのみ記載します。

上記記事の「Raspberry PiへNode.jsのインストール」の箇所で、下記のように Node.js のインストールバージョンを指定します。

Bluetooth のセットアップ

Raspberry Pi で Bluetooth を使えるように下記のコマンドを実行します。

上記完了したら、念のため一旦再起動します。
再度 Raspberry Pi へログインし、下記の手順で Bluetooth を利用できるようにします。
利用するUSB Bluetooth アダプタによっては、sudo rfkill unblock allの部分が不要となるかもしれません。
今回は、下記手順でうまく動くようになりました。

chibi:bit のセットアップ

こちらも、前回の記事を参照してください。

システムの作成

chibi:bit のプログラム

chibi:bit で利用するプログラムは、前回と同じものを使います。

カメラで撮影できるようにする

Raspberry Pi 側で、 chibi:bit のボタン押下イベントを検知したらカメラ撮影を行なうようにプログラムを組みます。
プログラムの詳細は後ほど。

撮影したイメージをSlackへ投稿する

上記の撮影が終わったら、保存された画像を Slack へ投稿されるようにします。

Slack の準備

Slack自体は、チーム作成・ユーザ登録などが済んで、利用できる状態になっている前提とします。
今回は、外部から画像ファイルを投稿できるようにする手順のみを説明していきます。

まずは、Slackのメニューを表示し、「Apps & integrations」を選択します。

続いて、画面右上の「Build」を選択します。

次に、画面右上の「Your Apps」を選択します。

ここまでで、まずは外部アプリケーションを登録する画面へたどり着きました。
次は、今回用の外部アプリケーションを作成するために「Create New App」を選択します。

登録用のダイアログが出てくるので、「アプリケーション名」を入力し「チーム」を選択します。

アプリケーションの詳細情報を設定する画面に移ります。
ここは、左側のメニューの「OAuth & Permissions」を選択します。

少し下の方にスクロールすると「Permission Scopes」というカテゴリがあります。
ここの「Select Permission Scopes」で「Upload and modify files as user.」を選び、その下にある「Save Changes」を選択します。

上の方にスクロールし、「OAuth Tokens & Redirect URLs」のカテゴリを表示します。
「Install App to Team」が有効になっているので、こちらを選択します。

アプリケーションの認証作業を待ち、「Authorize」が有効になったらこちらを選択します。

選択後は自動で前の画面に戻ってきます。この時に、「OAuth Access Token」が生成されていることが確認できます。

このトークンを使って、画像ファイルをSlackへ投稿します。
curl コマンドを使って下記のように実行すると、簡単に利用することができます。

チャンネル名は #remotecam のように、シャープ付きで設定します。

これで、画像を投稿する準備も整いました。

Raspberry Pi 側のプログラム

では、「写真を撮影」し「Slackへ投稿」するプログラムを書いてみましょう。
前回利用したサンプルファイルの「button-listener.js」を基にして、下記のようにしてみます。

色を変えてある34〜40行目が、今回追加したプログラムになります。
36行目の raspistill でカメラで撮影した画像を image.jpg へ保存しています。
38行目は、先に例を挙げた通り Slack への投稿を行ないます。
[トークン] は自分の生成したトークンに置き換えてください。

実行

では、実際に動かしてみます。

Raspberry Pi で下記実行してください。

実行後に、 chibi:bit のAボタンを押してしばらく待つと、 Slack の指定したチャンネルに画像が投稿されます。

一連の流れがわかるように、動画で見てみましょう。

少々見えづらいですが、 chibi:bit のボタンを押してしばらく待つと、きちんと Slack に画像が投稿されました!
実際に投稿された画像は下記になります。

まとめ

chibi:bitRaspberry Pi という複数のデバイスで連携し、結果を Slack へ投稿する、というシステムが実現できました。
単独だとできないことも、それぞれの特性を活かして連携することで、より面白いシステムを作れそうです。
まだまだ、楽しい活用法を探っていきたいと思います!

tacck Takuya KIHARA

エンジニア (モバイルアプリ、フロントエンド、バックエンド、インフラ) 得意なことは、領域をまたいで考え、開発すること。 ブログでは、主にAnsible、Docker、Raspberry Piのことを書いています。 好きなフィギュアスケートの技は、スプレッド・イーグルです。

「いいね」ボタンを押すと、最新情報をすぐに確認できます。