https://www.switch-science.com/products/9350 より引用
M5StickC PlusをWiFiに繋いで、ButtonA(M5と書いてあるボタン)を押した際に、同一WiFi上にあるサーバに対して押されたことを通知するコードを書いてみました。
ボタンを押したときに1、離したときに0を送るだけのシンプルな通信なので、WiFiUDPを使ってみました。
M5StickC側のコード
#include <M5StickCPlus.h> #include <WiFi.h> #include <WiFiUDP.h> const char* ssid = ""; // WiFiのSSID const char* password = ""; // WiFiのパスワード WiFiUDP wifiUdp; const char *ip = ""; // サーバのIP const int port = 3000; void setup() { M5.begin(); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } wifiUdp.begin(port + 1); } void loop() { if (WiFi.status() == WL_CONNECTED) { M5.Lcd.setCursor(0, 0); M5.Lcd.print("connected"); } if (M5.BtnA.wasPressed()) { wifiUdp.beginPacket(ip, port); wifiUdp.write('1'); wifiUdp.endPacket(); } if (M5.BtnA.wasReleased()) { wifiUdp.beginPacket(ip, port); wifiUdp.write('0'); wifiUdp.endPacket(); } M5.update(); delay(100); }
サーバ側のコード
Node.jsでサーバを立てました。
const dgram = require('node:dgram'); const server = dgram.createSocket('udp4'); server.on('message', (msg, rinfo) => { console.log(`${ msg } from ${ rinfo.address }:${ rinfo.port }`); }); server.bind(3000);
これだけで、M5StickC PlusのButtonAの押し・離しをサーバに伝えることができます。
M5StickC Plusは充電式なので、リモコンのように使うことができますね。