Piで作ろう!手作りスマートミラーハードウェア・組み込み部部長のtacckです。札幌もすっかり春めいてきました。桜がちらほらと咲き始めています。3も国内流通が始まりましたね。私は、日経Linuxさんから販売されている「ラズパイマガジン」とのセットで購入しました。今回も引き続き、スマートミラー作成を行なっていきます。今回は、コンテンツに動的なアクションを行なえるように、静電容量式のタッチセンサーを利用して、結果をブラウザへpushする流れをやってみます。第4回:完成編センサー紹介まずは、タッチセンサーです。Piの電源・GPIO入力を繋げるだけで、簡単に利用できます。モジュール上の赤色LEDで反応しているかも見えるので、プロトタイプで使うにはもってこいですね。PiのGPIOから取得してみます。Piのコンソールで実行すると確認できます。value_l_3;except(KeyboardInterrupt):print('interrupt\n')GPIO.cleanup()print('end\n')実行すると、コンソールに結果が延々と出てきます。簡単に利用できました。次は、Pythonで取得したセンサーの情報を、ブラウザへ反映させるようにします。いわゆる「サーバプッシュ」の機能が必要です。この手の機能としては一般にはWebSocketが有名で、これは双方向通信が可能です。(SSE)」を使用します。これは、HTTPにのっとりながらサーバプッシュの機能を追加できるものです。(WebSocketは、HTTPとは異なるプロトコル。Serverで特別な設定も無く簡単に使えるようになります。(後述しますが、クライアントであるブラウザに制限があります。)センサー情報をSSEで送信できるように、コードを修正します。value_l_3time.sleep(0.5)except(KeyboardInterrupt):print('interrupt\n')GPIO.cleanup()SSE使ってセンサー情報をブラウザへプッシュ最後に、ブラウザ側で利用するHTML/JavaScriptを書きます。PiはLinuxディストリビューションであるRaspbienを使っているので、気にする必要はありませんでした。今回は、aptで簡単にインストールできるブラウザ「Iceweasel」(Firefoxの派生ブラウザ)で確認します。PiのGPIOを操作するために、www-dataユーザをgpioグループに追加しておいてください。Serverから参照できる同じディレクトリに配置してください。failed.");evtSource.close();};</script></body></html>では、実際に確認してみましょう。写真ではわかりづらいかもしれませんが、タッチしたセンサーの番号に合わせて、画面上の数字が変更されます。タッチすると"1"、離すと"0"、ときちんと反映されました!これで、タッチセンサーをメニューとした画面遷移、といったコンテンツも作れるようになりました。indexともに世界をアップグレードできる、そんな日を夢見て。