はじめに
今回は前回セットアップしたM5Stackの中にある加速度センサの情報をMQTTでNode-RED(Windows)にデータを送っていきます
セットアップ編

M5StackをArduino IDEで動かす
目次
・はじめに
・使用デバイス
・Arduino IDEのインストール
・BOARDS MANAGERの設定
...
準備
・Arduino
ライブラリマネージャーで「PubSubClient」を検索&ダウンロード

・Node-RED
- Mqtt INノード
- デバックノード

トピックは/m5stack/dataにします

今回はlocal環境で受けるのでサーバはlocalhost

・MQTT(windows側)
管理者権限でCMDを立ち上げてmoquittoを立ち上げます
・立ち上げコマンド
net start mosquitto

・1883portが開いているかを確認するコマンド
これで1883がLISTENされているかを確認
netstat -an | find "1883"
M5Stackに書き込んでいく
・書き込むコード
(一秒に一回データを送る)
#include <M5Stack.h>
#include <WiFi.h>
#include <PubSubClient.h>
// WiFi設定
const char* ssid = "**********"; // WiFiのSSID
const char* password = "********"; // WiFiのパスワード
// MQTTブローカーの設定
const char* mqtt_server = "***********"; // ホストマシンのIPアドレス
const char* mqtt_topic = "/m5stack/data"; // MQTTトピック
WiFiClient espClient;
PubSubClient client(espClient);
void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void reconnect() {
// 再接続ループ
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// 接続を試みる
if (client.connect("M5StackClient")) {
Serial.println("connected");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// 再試行まで5秒待機
delay(5000);
}
}
}
void setup() {
M5.begin();
Serial.begin(9600);
setup_wifi();
client.setServer(mqtt_server, 1883);
// MPU6886の初期化
if (M5.IMU.Init() != 0) {
Serial.println("MPU6886 initialization failed!");
while (1) {
delay(10);
}
}
Serial.println("MPU6886 initialized successfully!");
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
float accX, accY, accZ;
// 加速度データを取得
M5.IMU.getAccelData(&accX, &accY, &accZ);
// JSONペイロードの生成
String jsonPayload = "{\"accX\": " + String(accX) + ", \"accY\": " + String(accY) + ", \"accZ\": " + String(accZ) + "}";
char payload[100];
jsonPayload.toCharArray(payload, 100);
// MQTTメッセージの送信
client.publish(mqtt_topic, payload);
delay(1000); // 1秒待機
}
・SSIDを確認する時はネットワーク・インターネットで接続しているネットワークのSSIDを見る事が出来ます

MQTTでしっかりと送れました
