はじめに
今回は過去の2記事を組み合わせて、センサーで取得したデータをM5Stack経由でPCに送信して遠隔で見ようと思います。ついでにですが、今回の記事に深く関係する過去の2記事も紹介します。
それでは早速、具体的な内容に入っていきましょう。
今回はネットワークに接続します。セキュリティ上で危険な行為はしていないつもりですが、読者の皆様が行う際は自己責任でお願いいたします。特にWi-Fiのパスワードの取り扱いには十分に注意してください。
システム構成
さて今回のシステムの構成を簡単に説明します。構成を表したものが下の図になります。
温度湿度センサーは、以前紹介したM5Stack用温湿度気圧センサユニット Ver.3(ENV Ⅲ)を使用します。なお、ENV Ⅲは気圧も測定できますが、今回も割愛します。
見て分かるようにシステムの構成は簡単です。①温度湿度センサーをGroveでM5Stackと接続、②M5StackとPCをWi-Fiで接続、③M5StackからPCに取得データをWi-Fiで送信、という構成です。
それでは具体的なスケッチを見ていきましょう。
スケッチと動作確認
スケッチは下のようなものになります。
#include <M5Stack.h>
#include <WebServer.h>
#include <Wire.h>
#include <WiFi.h>
#include "Adafruit_Sensor.h"
#include "SHT3X.h"
#include "M5UnitENV.h"
SHT3X sht30;
IPAddress ip;
float tmp = 0.0;
float hum = 0.0;
WebServer server(80); //かっこ内の数字はポート番号で、今回はWebサーバー側HTTPのポート番号80番を選択
const char* ssid = "xxxxxxxxxx"; //ご自身のWi-FiのSSIDに書き換えてください
const char* pw = "yyyyyyyyyy"; //ご自身のWi-Fiのパスワードに書き換えてください
//PC画面に表示されるテキストなどを送信する関数
void sendData() {
String msg = "Temperature : ";
msg += tmp;
msg += " 'C\n";
msg += "Humidity : ";
msg += hum;
msg += " %\n";
server.send(200, "text/plain", msg);
}
void setup() {
Serial.begin(115200);
M5.begin();
M5.Lcd.begin();
Wire.begin();
WiFi.begin(ssid, pw);
sht30.begin();
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print("*");
}
Serial.println("");
ip = WiFi.localIP();
M5.Lcd.setTextColor(GREEN);
M5.Lcd.setTextSize(3);
M5.Lcd.setCursor(10, 10);
M5.Lcd.println("IP : ");
M5.Lcd.println(ip);
server.on("/", sendData);
server.begin();
}
void loop() {
if (sht30.update()) {
tmp = sht30.cTemp;
hum = sht30.humidity;
//必要はないですが、一応Serial Monitorに取得した温度と湿度を表示しておきます。
Serial.print("Temperature : ");
Serial.println(sht30.cTemp);
Serial.print("Humidity : ");
Serial.println(sht30.humidity);
}
server.handleClient(); //Webserver.hにある、PCからのリクエストを処理する関数
delay(1000);
}
上記スケッチを温度湿度センサーを接続したM5StackにUploadしてみましょう。
Uploadが終わったら、M5Stackの画面にIPアドレスが表示されるので、PCやスマホのブラウザにhttp://表示されたIPアドレス を打ち込んでみてください。すると以下のような画面が表示されるはずです。だいぶ寂しい感じですね。
私は普段使いのブラウザはSafariなので、それ以外のブラウザを使用している方は若干見え方が違うかもしれません。
M5Stackと同じWi-Fiに接続されているPCやスマホでないと、上記画面が出てこないのでご注意ください。
またArduinoIDEのSerial Monitorを確認すると下の画像のように温度と湿度が繰り返し表示されるはずです。
文字化け等、うまく表示されない場合は通信速度がスケッチで設定した値と合っているか確認してみてください。今回はスケッチで115200としたので、Serial Monitorの右上にある通信速度の設定も115200 baudにしています。
最後に
いかがでしたか?徐々にIoT開発らしくなってきたのでは?と思ってみたり・・・
今後も学んだことを組み合わせて、IoTの個人開発を発信していけたら良いですね。
それでは今日はこの辺で終わりにします。
おすすめの書籍
もっと詳しくM5Stackについて知りたい!という方はこちらの書籍がおすすめです。とても詳しく載っていてわかりやすいです。
とりあえず何か作ってみたい!という方にはこちらの書籍がおすすめです。書いてある通りにやるだけでお手軽にIoTデバイスを作ることができます。
※Amazonのアソシエイトとして、当メディア(Nラボ備忘録)は適格販売により収入を得ています。
他記事のご紹介
当ブログではさまざまな記事を投稿しています。特に資格取得に関する記事はとても人気です。
一読の価値はあると思いますので、ぜひご覧ください!