PCのUSBポートにUSBケーブルを使ってM5Stackを接続します。Arduino IDEを開き、表示されたエディタに下記のプログラムを貼り付けます。なお、「ssid」「password」は、使っている無線LANルーターのSSIDとパスワードを、「keycode」は、先ほどメモしたSecret Keyをそれぞれの「XXX」に入力してください。
このプログラムは、SparkFun Electronicsが公開しているMMA8452Q用のサンプルコードを、M5Stack用に一部変更したものです。
#include <M5Stack.h> #include <WiFi.h> #include <Wire.h> #include <SparkFun_MMA8452Q.h> const char* ssid = "XXX"; const char* password = "XXX"; const char* host = "maker.ifttt.com"; const char* keycode = "XXX"; MMA8452Q accel; float prevState = 0; void setup() { M5.begin(); Serial.begin(115200); beginWifi(); Serial.println("MMA8452Q Test Code!"); accel.init(); delay(1000); } void printCalculatedAccels() { Serial.print(accel.cx, 3); Serial.print("\t"); Serial.print(accel.cy, 3); Serial.print("\t"); Serial.print(accel.cz, 3); Serial.print("\t"); } void loop() { if (accel.available()) { accel.read(); printCalculatedAccels(); Serial.println(); // Print new line every time. } float currentState = accel.cx; if(currentState > prevState+0.20){ sendRequest("M5Stack_acceleration"); } prevState = currentState; delay(1000); } void beginWifi() { WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void sendRequest(String M5Stack_acceleration) { Serial.println(M5Stack_acceleration); Serial.print("connecting to "); Serial.println(host); WiFiClient client; const int httpPort = 80; if (!client.connect(host, httpPort)) { Serial.println("connection failed"); return; } String url = "/trigger/"; url += M5Stack_acceleration; url += "/with/key/"; url += keycode; Serial.print("Requesting URL: "); Serial.println(url); client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); unsigned long timeout = millis(); while (client.available() == 0) { if (millis() - timeout > 5000) { Serial.println(">>> Client Timeout !"); client.stop(); return; } } while (client.available()) { String line = client.readStringUntil('\r'); Serial.print(line); } Serial.println(); Serial.println("closing connection"); }
次に、[ツール]→[シリアルポート]を開き、M5Stackが接続されたポートを選択します。
[→]ボタンをクリックしてプログラムを書き込みます。「ボードへの書き込みが完了しました。」と表示されたら、右上の虫眼鏡ボタンをクリックし、シリアルモニターを開きます。加速度センサーを傾けたときのxyz軸の値を取得できました。
ポストの蓋が閉じているときは加速度センサーが平行になり、開いたらx軸が上がるように、位置を調整して設置します。今回は、ポスト内の様子が分かりやすいように、透明の容器を使用しています。
以下のように、ポストに郵便物が投函(とうかん)されると、センサーが傾きます。
スプレッドシートを確認すると、ポストの開いた日時が記録されていました。
今回は、加速度センサーとブレッドボードを使用しました。加速度センサーは汎用性が高く、さまざまなIoT開発に活用できます。また、ブレッドボードを使用できれば、扱えるセンサーも多くなり、IoT実装の幅が広がります。
IoT開発は一見難しそうですが、前回紹介した「Nefry BT」や今回のM5Stackのように、初心者でも扱いやすいマイコンボードが増えています。このようなマイコンボードで気軽にスタートし、少しずつ扱えるセンサーやアクチュエーターを増やしていくのがお勧めの学び方です。
第3回では、光センサーを使ってポストに手紙が投函されたらLINEに通知する仕組みを実装します。
Copyright © ITmedia, Inc. All Rights Reserved.