『「sakura.io」ではじめるIoT電子工作』のご紹介
2月よりIoTチームに参加しました奥原です。
今までは組み込みソフトウェアエンジニアとして、マイコンのファームウェアから組み込みLinuxのカーネル周り、アプリケーションなどなどデバイス周りのソフトウェアに携わってきました。
IoTチームでは主に『さくらの通信モジュール』などのファームウェアを担当します。
よろしくお願いします。
今回は先日、工学社より発売されました書籍「sakura.io」ではじめるIoT電子工作を紹介させていただきます。
どんな本?
本書は今までの電子工作にsakura.ioを追加して『お手軽にIoTに対応した電子工作をやってみよう!』という本です。
sakura.ioとは何なのかという解説からはじまり、sakura.ioの登録、Arduinoでのsakura.ioの使い方、Raspberry Piでのsakura.ioの使い方、sakura.ioとサービスの連携の仕方と必要なことがていねいに説明されています。
「ネットワークのことなんでわからないよ!」という方でも手順を追っていけば、収集したデータをインターネットから読んだり、インターネット経由で操作できる電子工作ができます。
また、電子工作も易しくイラストや写真に従ってスイッチやLED、センサーをブレッドボードに挿しジャンパワイヤを配線していけば完成します。
回路図を見ながら、はんだごてを握ってはんだ付け…は必要ないので、「電子工作はやったこと無いけどIoT対応のWEBサービスを作ってみたい」という方でも実際に動作するモノができます。
本書は全体的に解説や手順の説明がていねいで、さくらの通信モジュールと必要なモノを渡されて「この本読んでやってみてね」と言われても困らないと思います。
内容
簡単に本書の内容を紹介します。
(以下の〇〇編は私が勝手に分類したもので公式なものではありませんのでご注意ください)
導入編
1章と2章が該当します。
1章では、単体で販売されているLTEモジュールと違い、sakura.ioは、LTEモジュール、LTEの通信網、ソフトウェアライブラリ(Arduino、Pythonなど)、コントロールパネル、外部連携機能をオールインワンにしたサービスであること、少量のデータを間欠で送ることに特化していることがちゃんと解説されています。
2章では、さくらインターネットへの会員登録とsakura.ioの初期登録の手順を解説しています。
Arduino*1編
3章から5章が該当します。
Arduino編を読むと以下のことができます。
- Arduinoライブラリを使ったsakura.ioへのデータ送信
- Arduinoライブラリを使ったsakura.ioからのデータ受信
- WebSocketを使ったsakura.ioからインターネット(ブラウザ)へのデータ送信
- WebSocketを使ったインターネット(ブラウザ)からsakura.ioへのデータ送信
3章はプッシュスイッチのON/OFFをsakura.ioの管理画面で確認します。
Arduino編の導入にあたり、Arduinoの開発環境のセットアップ、Arduinoとさくらの通信モジュールの接続、プッシュスイッチまわりの回路の配線、sakura.ioの管理画面での確認まで一通りを順を追って解説しています。
4章はArduinoに接続した温度センサーで計測したデータをsakura.ioのWebSocketインターフェースを通じてブラウザ(HTML5+JavaScriptのプログラム)で確認します。
5章はブラウザからArduinoに接続したフルカラーLEDの色をコントロールします。
sakura.ioからデータを受け取る、受信の要素が追加されます。
最初はミニマムで始めて徐々に要素を増やしていく構成です。
実際に手を動かしながら理解を深めていくスタイルです。
Raspberry Pi*2編
6章と7章が該当します。
Raspberry Pi編を読むと以下のことができます。
- Pythonライブラリを使ったsakura.ioへのデータ送信
- BluetoothLEを使ったセンサーデータの収集
- Pythonライブラリを使ったsakura.ioからのデータ受信
(sakura.ioからインターネット側への連携は、Arduino編の3章、5章を参照ください)
6章では3章と5章と同じことはRaspberry Piで再現します。
Arduinoと同じことをRaspberry Piではどのようにやるのかという比較ができます。
7章では、BluetoothLEセンサモジュールから取得した温度、湿度、気圧のデータをsakura.ioの管理画面で確認します。
最小構成ですが、無線接続のセンサーからデータを集めネットワークに送る『センサーネットワークのゲートウェイ』に相当する内容です。
同様のアプリケーションを実現したい方には参考になると思います。
Raspberry PiはArduinoとは違いマイコンではなく『小さなパソコン』なので、性能的にソフトウェアでできることが多くなります。
反面、マイコンに比べてI/Oが少ない上にLinuxがハードウェアを管理するので、アプリケーションからハードウェアを直に制御することは苦手です。
Arduino編との対比でRaspberry Piが得意とするBLEなど高レイヤの通信機能を使い苦手とする低レイヤのシリアル(i2c)通信は使わないという、ArduinoとRaspberry Piの向き不向きがしっかりと押さえられた構成になっていると感じます。
サービス連携編
8章が該当します。
サービス連携編を読むと以下のことができます。
- sakura.ioからWebSocketで取得したデータをJavaScriptでグラフ描画する
- sakura.ioからMQTTを使ってデータを読み書きする
- sakura.ioのデータストアにデータを蓄積し、蓄積したデータをAPIで取得する
- Webhookでデータを送受信する
- ファイル送信機能をつかってモジュール側(ArduionoやRaspberry Piなど)へファイルを送る
本書のタイトルからは電子工作に寄った印象を受けますが、この第8章は意外と充実しています。
どのインターフェースでどのようなことができるのか比較できるのは良いと感じます。
さいごに
本書は順を追って丁寧に説明する構成になっていて、実際に手を動かしていくときに役立つと思います。
自習はもちろん、ワークショップの教材としても良いなと感じました。
こんな方におすすめ
- sakura.ioで何ができるか知りたい方
- sakura.io(さくらの通信モジュール)を買ったあとに何ができるのか悩んでいる方
- すでに作った電子工作をインターネットと連携させたい方
- sakura.ioと連携するアプリを作りたい方
リンク集
- ArduinoはArduino HoldingおよびArduino財団が設計・製造・販売しているワンボードマイコンボード。容易に電子回路やプログラミングができるため世界的にユーザーが多い。↑
- Raspberry PiはRaspberry Pi財団が設計しているシングルボードコンピュータ。電子回路がつなぎやすい安価なLinux PCとして世界的にユーザーが多い。↑