- 用意するもの
- さくらのIoT Platform β の繋ぎ方
- さくらのIoT Platform βの初期設定をする
- さくらのIoT Platform βにセンサーデータを送る
- データが取得できているか確認する
- 次回予告
サーバーワークス Advent Calendar 2016 、12月23日分の記事です。
サーバーワークス Advent Calendar 2016 - Qiita
こんばんは。週末はノロウィルスで寝込んでしまい、完全にイチゴを枯らしてしまいました。これは早急に対策しないと!と思い立って、水やりを忘れないような仕組みを作るため、さくらのIoT Platform β を検証してみました。
用意するもの
- Arduino Uno
- さくらのIoT Platform β Arduino シールド
- さくらのIoT Platform β 通信モジュール
- 土壌湿度センサー [M-SMS393]
- ブレッドボード
- ジャンパーピン(オスxオス) 3本
- イチゴの鉢植え
今回はWindows10にArduinoIDEをインストール済みであることを前提としています。
あと、Arduino用の電源を用意します。通信モジュールを動かすのでPCのUSB給電だけでは電力が足りません。
土壌湿度センサーの繋ぎ方については以前のエントリーを参照してみてね。
さくらのIoT Platform β の繋ぎ方
マニュアルの通り行うだけでOKですが、一通りこちらでも紹介します。
まずは、アンテナを取り付けて通信モジュールとArduinoシールドを繋げます。
その後大事なのが、I2Cを使うため付属のジャンパーピンをSCL,SDAの2箇所にはめ込みます。
小さくて分かりづらいので拡大します。
さくらのIoT Platform βの初期設定をする
さくらのIoT Platform βコントロール画面にログインし、連携サービスで「サービス追加」をし、 WebSocketを追加します。そうすると受信したデータを画面上でリアルタイムに確認することができるようになります。
その次に、通信モジュールを登録します。「モジュール登録」を選択して、ID、パスワード、名称を入力して登録して下さい。ちなみに、通信モジュールのIDとパスワードは通信モジュール本体の目隠しシールの中に記載されています。そーっと剥がしてID,PASSを確認してみましょう。
Arduino IDEにライブラリーをインポートする
以下にアクセスし、git clone
で公開されているライブラリーをダウンロードします。以下スクリーンショットのように、ブラウザでZIPファイルをダウンロードする方法でもOK。
https://github.com/sakura-internet/SakuraIOArduino
PCでArduino IDEを開き、先ほどダウンロードしたZIP形式のライブラリーをインポートします。「スケッチ」→ include library
→ Add.Zip library
で追加できます。
ダウンロードしたサンプルプログラム Standard.ino を開き、コンパイルしてArduinoに書き込んでみます。それで動作が問題無いか確認してみましょう。
さくらのIoT Platform βにセンサーデータを送る
さて、ここからが本題です。土壌湿度センサーで取得した値を、さくらのIoT Platform βへ送信します。公式データシートによると、送信したいデータはキューにいったん溜めて、送信するような仕様のようです。詳細については本家データシートを参照してください。
以下プログラムをスケッチして、コンパイルした後Arduinoに書き込みます。
#include <Arduino.h> #include <Wire.h> #include <SPI.h> #include <SakuraIO.h> int sensorPin = A0; // select the input pin for the potentiometer int ledPin = 13; // select the pin for the LED int sensorValue = 0; // variable to store the value coming from the sensor SakuraIO_I2C sakuraio; // SakuraIO_SPI sakuraio(10); #define SEND_INTERVAL 5000 // ms void setup() { Wire.begin(); Serial.begin(9600); pinMode(ledPin, OUTPUT); int error; uint8_t c; Serial.print("Waiting to come online"); for (;;) { if ((sakuraio.getConnectionStatus() & 0x80) == 0x80) { Serial.println(""); Serial.println("connected"); break; } Serial.print("."); delay(1000); } Serial.println("***********************"); } void loop() { int error; int32_t sensorValue; // read the value from the sensor: sensorValue = analogRead(sensorPin); Serial.print("Value: "); Serial.println(sensorValue); sakuraio.enqueueTx(0, sensorValue); sakuraio.send(); Serial.println("***********************"); delay(SEND_INTERVAL); }
データが取得できているか確認する
そして、Arduino実行中に「ツール」 → 「シリアルモニタ」でセンサーの数値が取得できているか確認します。
予め登録しておいたWebSocket を開き、センサーの値が送信されているのか確認してみましょう。
これで、問題無く土壌湿度センサーの値をさくらのIoT Platform βで取得することができました!
次回予告
次回は、IoT Platform β をAWS IoTと連携させ、水やりを忘れないような仕組みを作ってきます。お楽しみに!
余談
実は5歳の長男も別の鉢植えでイチゴを育てています。長男は毎日水やりを忘れず、大事に育てているのに、私は忙しすぎると ついうっかり忘れてしまう傾向にあったり・・・。水やりの仕組みを作る方法以外に、長男に水やりを頼む方法が一番スマートかもしれません。
関連ページ
- 出版社/メーカー: スイッチサイエンス
- メディア: Personal Computers
- 購入: 2人 クリック: 15回
- この商品を含むブログを見る
Prototyping Lab 第2版 ―「作りながら考える」ためのArduino実践レシピ (Make: PROJECTS)
- 作者: 小林茂
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/01/19
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る