電子工作と聞くと、「ハンダ付け」やコードを繋いだりしないといけないといった感じを受ける人は、案外と多いのではないでしょうか。電子工作そのものを楽しむ場合や、電子工作慣れている人であれば問題もならないでしょう。
でも、世の中には時間的な制約(忙しい)やハンダ付けなどの経験不足から、あまり電子工作をしたくない人もいるのではないでしょうか。私のように単に面倒だから、という人もいるかもしれません。可能であれば、必要な部品を差し込むだけで、様々なセンサーが使えると大助かりです。
ということで、半年ほど前にも少し書いた様々なセンサーを手軽に接続して使うことができる「FaBo StarterKit & Sesnor」が先月ようやく発売されました。
○FaBo
http://fabo.io/
FaBoは9月3日時点で、Raspberry Pi、Arduino、IchigoJamの3つの機種に対応しています。それ以外は順次対応していくと思われます。好みの機種で各種センサーが使えるのは大きなメリットです。
特にポイント(重要)となるのはShield(シールド)と呼ばれる部品です。
○Shield(シールド)
http://fabo.io/shield.html
FaBoではRaspberry Pi、Arduino、IchigoJam用のシールドを装着すれば、センサーは共通して使うことができます。
例えば、最初はIchigoJamでセンサーを使っていたけど、やはりIchigoJamでは力不足で、Raspberry Piで作ることになったとします。この場合、Raspberry Pi用のシールドを購入すれば、センサーはそのまま流用できます。
ソフトウェアでたとえるなら、シールドは共通して呼び出せるライブラリのようなものです。さすがに全機種共通して呼び出せる、Web APIのようにはいきません。プログラムは機種に応じて作る必要があります。
○各種センサー
http://fabo.io/analog.html
http://fabo.io/i2c.html
http://fabo.io/serial.html
http://fabo.io/colorled.html
なお、使えるセンサーは機種によって異なるので、購入時には注意が必要です。IchigoJamで使えるかと思って購入したら使えなかった、ということがあるからです。どの機種に対応しているかは、それぞれのセンサーのページに表で記載されているので、よく確認してから購入しましょう。
今回はこのFaBoを使って、IchigoJam用の温度計を作成してみましょう。温度を計測しLCDに現在の温度を表示します。さらに、計測した温度をサーバーに転送することにします。
サーバー側のプログラムは、それぞれ環境が違うので各自用意する必要があります(私はログからShellを使って抜き出す方法を使いました。PHPが使えるなら、その方がよいかもしれません。SQLなどデータベースを使って温度を記録するのもよいでしょう)。
書いていて長くなってきたので、実際のプログラムは次回説明します。今回は準備編みたいな感じになります。
ハンダ付けなどは不要なので、ShieldをIchigoJamにはめこんで、センサーをシールドのI2Cにはめこみます。次にシールド上にある緑色のジャンパープラグを抜いて、右側(I2C Pull-up、プルアップ)にずらします。
これで準備完了です。ハンダ付けもなく配線もないので手軽です。2分もあれば十分接続できるでしょう。
電子工作のプログラムは、Raspberry PiやArduinoだと敷居が高そうですが、IchigoJamなら簡単です。開発環境も不要ですし、開発言語もBASICなので手軽にセンサーをいじってみるにはもってこいです。
さて、今回作成する温度計に使うパーツを以下に示します。
・IchigoJam用Shiled
http://fabo.io/503.html
・#207 Temperature I2C Brick
http://fabo.io/207.html
最低限必要なのは、この2つです。IchigoJamで温度を表示するプログラムですが、これは開発しなくても温度センサーである「#207 Temperature I2C Brick」のページの「for IchigoJam」のところに掲載されています。
これを、そのまま使えばできあがりです。もし、この温度表示プログラムが動かないようであれば、シールドとセンサーがしっかり差し込まれているか確認してください。また、シールド上のジャンパープラグが正しくプルアップ方向になっているか(ショートされているか)確認してください。
画面に現在の温度が表示されたら、温度センサーを指で暖めてみましょう。ちゃんと温度が変化していけば正しく動作しています。
Webで温度データを取得しないのであれば、これでも十分用に足ります。ですが、より実用的にしていきましょう。
最初のステップとして、電源オンで自動的に温度が表示されるようにします。電源が落ちてしまった場合は、プログラムを起動しなおさなければなりません。パソコンと違ってIoT関係では、なるべく人が保守しない方がグッドです。雷などで停電してしまった場合でも、電源がオンになれば自動的にプログラムが起動し計測を続けるのが理想です。
都合のよいことにIchigoJamでは、そのような機能が用意されています。自動的に起動するプログラムを0番目に保存しておきます。(SAVE 0)
あとはボタンを押したままIchigoJamを起動するだけです。このボタンを押したまま、というのは手作業でやらなくてもよく、BTNと GNDの2箇所を線で繋ぐだけです。
・IchigoJamのピン配置解説
http://fukuno.jig.jp/1264
これで電源が入れば、自動的に0番のプログラムが読み込まれ実行されます。IchigoJamにはSSDもHDDもないので、停電しても問題はありません。
実質、スタックオーバーフロー/アンダーフローもなさそうな作りになってるみたいなので、一度動いてしまえばハードが壊れない限り安定して動き続けます。この安定して動き続ける、というのもIoT関係では重要です。
次回はLCDに温度を表示し定期的に温度をサーバーに転送するようにします。
【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/
モジュールで機能を入れ替え、追加できるGoogle Ara。予想通り中止に。
http://jp.techcrunch.com/2016/09/02/20160901google-ends-modular-phone-project-ara-though-licensing-may-be-an-option/
IchigoJamとFaBo Shield、関連ボードを使ってみて分かったのが、Google Araのように平面で設計すると失敗する、ということ。
Google Araはスマートフォン向けだから失敗したわけでなく、IoTベースであっても、他のカテゴリであっても平面設計である限り失敗していたはず。
スマートフォンではモジュール入れ替え云々は、現時点では需要がないというのもあるけど、設計時点で失敗が組み込まれているプロジェクトのような感じはした。
頭で考えて設計しただけでは、本当のところうまくいくかどうか分からない。実際にやってみて、いろいろ経験した中でないと、それが失敗するのか成功するのか分からない。
モジュールタイプのものは、スマートフォンでは需要がなくてもIoTでは需要があるかもしれなけど、多分もうGoogleではやらないだろうなあ。
・IchigoLatteを楽しもう
http://www.openspc2.org/reibun/IchigoLatte/0.9.1/
・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/
・Premiere Pro & Media Encoder自動化サンプル集
http://www.amazon.co.jp/dp/4802090471/
・JavaScriptによるデータビジュアライゼーション入門
http://www.amazon.co.jp/dp/4873117461/
・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/
・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/
・Adobe JavaScriptリファレンス
http://www.amazon.co.jp/dp/B00FZEK6J6/
・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/
・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/