忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

M5stackでのセンサー値をAWSのWebサーバで表示する方法

最近ようやくM5Stackも使い慣れてきました。ここいらでちょっとIoT機器として応用させたいと思います。



m5stackからAWSのEC2へデータを飛ばしてブラウザで確認できるようにします。


まずはM5stack側ですが、温湿度、気圧センサーを取り付けます。

https://www.switch-science.com/catalog/6344/

m5stackのスケッチはこちら。設定は下記参照してください。
https://www.conect.plus/post/20210122
#define M5STACK_MPU6886
#include <M5Stack.h>
#include <Wire.h>
#include "Adafruit_Sensor.h"
#include <Adafruit_BMP280.h>
#include "SHT3X.h"
#include <WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
char *ssid = "*******";// Wi-FiのSSID
char *password = "*******";// Wi-Fiのパスワード
const char *endpoint = "*******";// MQTTの接続先のIP
const int port = 1883;// MQTTのポート ※サーバー側で解放してください
char *deviceID = "M5Stack";// デバイスID デバイスIDは機器ごとにユニークにします
char *pubTopic = "sanmple";// メッセージを知らせるトピック
char *subTopic = "sample";// メッセージを待つトピック
SHT3X sht30;
Adafruit_BMP280 bme;
float tmp = 0.0;
float hum = 0.0;
float pressure = 0.0;
float pres = 0.0;
WiFiClient httpsClient;
PubSubClient mqttClient(httpsClient);
void setup_serial(){
Serial.begin(115200);
while (!Serial) continue;
}
void setup_wifi(){
Serial.println("Connecting to ");
Serial.print(ssid);
WiFi.disconnect( true, true );
delay(500);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
M5.Lcd.print(".");
}
Serial.println("\nWiFi Connected.");
M5.Lcd.setCursor(10, 40);
M5.Lcd.setTextSize(2);
M5.Lcd.println("WiFi Connected.");
M5.Lcd.print("IP address: ");
M5.Lcd.println(WiFi.localIP());
}
void setup() {
M5.begin();
Wire.begin();
M5.Power.begin();
M5.IMU.Init();
setup_serial();
setup_wifi();
mqttClient.setServer(endpoint, port);
connectMQTT();
String f32 = "genshin-regular-32pt";
M5.Lcd.loadFont(f32, SD);
M5.Lcd.setBrightness(10);
M5.Lcd.setTextSize(3);
Serial.println(F("ENV Unit(SHT30 and BMP280) test..."));
while (!bme.begin(0x76)){
Serial.println("Could not find a valid BMP280 sensor, check wiring!");
// M5.Lcd.println("Could not find a valid BMP280 sensor, check wiring!");
}
M5.Lcd.clear(BLACK);
//M5.Lcd.println("ENV Unit test...");
}
void connectMQTT(){
while (!mqttClient.connected()) {
if (mqttClient.connect(deviceID)) {
Serial.println("Connected.");
int qos = 0;
mqttClient.subscribe(subTopic, qos);
Serial.println("Subscribed.");
} else {
Serial.print("Failed. Error state=");
Serial.print(mqttClient.state());
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void mqttLoop(){
if (!mqttClient.connected()) {
connectMQTT();
}
mqttClient.loop();
}
void loop() { M5.Lcd.clear(BLACK);
pressure = bme.readPressure();
if(sht30.get()==0){
tmp = sht30.cTemp;
hum = sht30.humidity;
}
pres = pressure*0.01;
Serial.printf("Temperatura: %2.2f*C Humedad: %0.2f%% Pressure: %0.2fPa\r\n", tmp, hum, pres,0);
M5.Lcd.setTextColor(WHITE, BLACK);
M5.Lcd.setCursor(0, 120);
M5.Lcd.setTextSize(7);
M5.Lcd.printf("%2.1f %2.0f %2.0f", tmp, hum, pres);
M5.Lcd.setTextSize(3);
M5.Lcd.setCursor(0, 80);
M5.Lcd.printf("温度");
M5.Lcd.setCursor(100, 80);
M5.Lcd.printf("湿度");
M5.Lcd.setCursor(200, 80);
M5.Lcd.printf("気圧");
M5.Lcd.setCursor(0, 150);
M5.Lcd.printf("[゜C]");
M5.Lcd.setCursor(100, 150);
M5.Lcd.printf("[%]");
M5.Lcd.setCursor(200, 150);
M5.Lcd.printf("[hPa]");
char pubMessage[128];
mqttLoop();
sprintf(pubMessage, "温度:%.1f,湿度:%2f,気圧:%4f", tmp, hum, pres);
//sprintf(pubMessage, "{\"temperature\":\"%.1f\",\"humidity\":\"%2f\",\"barometricpressure\": \"%4f\"}", tmp, hum, pres);
mqttClient.publish(pubTopic, pubMessage);
Serial.println("Published.");
delay(10000);
}
これでセンサー値を任意のアドレスへMQTT送信できるようになりました。

webサーバー側の開発です。下記を参考に開発しました。
https://hikoleaf.hatenablog.jp/entry/2019/05/18/165038?fbclid=IwAR1S5pqvV9YN1MH-pGN2-WsZpl_aIIiNvcDVfxfzQC0FuRCL0jg1hDA6GnM




うまくいくとこのようにブラウザでセンサー値が確認できます。
※必ずポートの解放を行ってください。

ざっくりの説明ですが、m5stackとwebサーバーでIoT開発ができました。
慣れればラズパイより使い勝手がいいかもしれません。
今後も精進したいと思います!!







share

  • 新築の建売住宅買ったよ
    1新築の建売住宅買ったよあけましておめでとうございます。今年もよろしくお願いします。 年末バタバタと住宅を購入してました。 最近はプログラミングの記事ばかりでしたが、一応自分の設備を手に入れた!というところで 建売住宅の記...2025-01-04 00:55
  •  ATOMS3R カメラキットで簡単無線webカメラ
    2 ATOMS3R カメラキットで簡単無線webカメラ先日M5stackコンテストに参加しました。スイッチサイエンスさん主催で作った作品をProtoPediaに応募しました。 →応募作品について 入賞はできませんでしたが、毎回豪華な参加賞がもらえます。...2024-09-29 05:16
  • ENS160+AHT21基板で二酸化炭素濃度計をつくった話
    3ENS160+AHT21基板で二酸化炭素濃度計をつくった話ラズパイでさまざまなセンサーを取り扱ってきましたが、CO2センサーはやってていなかったので買ってみました。 CCS811が主流みたいですが、後続版?のENS160の基板を購入しています。 https...2024-07-15 03:41
  • chatgptのapiをラズパイで叩く
    4chatgptのapiをラズパイで叩く最近gpt4oが出たみたいで今までやってなかったchatgptのapiを叩いてみることにしました。 ラズパイだと簡単に… てわけでもなかったです。 まずはopenAIのアカウントを作成し、APIキー...2024-05-19 08:44
  • ラズパイ5でスケボー少年を検知する
    5ラズパイ5でスケボー少年を検知するラズパイ5用のケースと電源をやっと買いました。 ケース  電源 ↑Amazonリンクなんですが、最近は画像が貼れません… ケースはファンがついていてかっこいいですね… 起動時とCPU温度が高いときに...2024-04-06 01:39
  • ラズパイ5が5V5Aじゃなくても動いた話
    6ラズパイ5が5V5Aじゃなくても動いた話ラズパイ5やっと手に入れました。4GBバージョン。スイッチサイエンスで11,770円でした。 久々のセットアップですがいままでと変わりませんでした。 マイクロSDカードをPCにつなぎにラズパイOSを...2024-02-23 14:03
  • AIでゴルフスコア100切りがいつになるか予測する。
    7AIでゴルフスコア100切りがいつになるか予測する。そろそろラズパイ5が出るというのに最近ゴルフばっかりやってあまり電子工作はやっていませんでした。 すごい下手だったのですが最近ようやく普通にまわれるようになってきました。 そこでいままでの経緯をちょ...2023-10-01 11:30
  • Tiktokライブのギフトといいねでラズパイを操作する
    8Tiktokライブのギフトといいねでラズパイを操作するTwitterやslackのAPIはよく叩くのですが、TiktokのAPIはまだだったのでやってみました。 ライブ中にいいねやギフトがきたらLEDを光らせます。 @ultimatemasashi #...2023-08-10 14:09
  • arduino uno r4でゴルフボール押し出し機を作った話
    9arduino uno r4でゴルフボール押し出し機を作った話arduino uno r4でまた何かつくってみました。   @ultimatemasashi #ヒカキンボイス #arduino #ゴルフ #パター #golftiktok ♬ オリジナル楽曲 -...2023-07-29 01:47
  • arduino uno r4で時間になったら自動でキーボード入力する
    10arduino uno r4で時間になったら自動でキーボード入力するarduino uno r4買ってみたのですが、やっぱりwi-fi繋ぎたいなぁということで、イーサネットシールドとWi-Fiルーターつけてみました r3で使ってたものなんですが問題なく接続、動作しま...2023-07-08 06:50

拍手[0回]

PR

コメント

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30