今回は、スマホからUDPでメッセージを送信して、M5Stackがこのメッセージを受信する実験をしたので記事にしてみました。
この記事はこんな人におすすめ!
- M5Stackを使い始めた人
- M5StackのUDP受信方法が分からない人
- スマホなど外部デバイスからM5Stackを制御したい人
概要
▼ 完成形はこちら
スマホからUDP通信で1から9までを順にM5Stackへ送信した例です。M5Stack画面にスマホから送信したデータが表示されます。
以下では、この方法について解説していきます。
UDP通信とは
UDPとは、TCPと同じトランスポート層のプロトコルです。TCPとは異なり、相手にメッセージが届いたか管理を行わないコネクション型通信です。データ落ちが発生した場合の再送など行わないので、高速な分、信頼性は低いです。対象サービスやプロトコルを指定するために、ポート番号設定が必要です。
M5Stack側のプログラム
UDPメッセージを受信するための、サンプルプログラムです。
プログラムは、Wi-Fi接続→UDPメッセージ受信待ちといった流れです。
#include <M5Stack.h>
#include <WiFi.h>
#include <WiFiUdp.h>
void WiFiConnect();
const char* ssid = "**************";
const char* password = "*************";
WiFiUDP wifiUdp;
const int myPort = *****; // 1024~60253を設定
void setup() {
M5.begin();
M5.Lcd.setTextColor(WHITE);
M5.Lcd.setTextSize(2);
WiFiConnect();
wifiUdp.begin(myPort);
}
void loop() {
if(wifiUdp.parsePacket()){
char s;
s = (char)wifiUdp.read();
M5.Lcd.println(s);
}
}
void WiFiConnect(){
WiFi.begin(ssid,password);
while(WiFi.status() != WL_CONNECTED){
delay(500);
M5.Lcd.print('.');
}
M5.Lcd.print("\r\nWiFi connected\r\nIP address: ");
M5.Lcd.println(WiFi.localIP());
}
Wi-Fi接続
M5StackをWi-Fi接続するには、WiFiライブラリを使用します。begin関数の引数にWi-Fi機器のSSID、パスワードを設定し、begin関数を呼び出せば簡単にM5StackをWi-Fi接続出来ます。
M5StackのWi-Fi接続方法はこちらの記事で詳しく解説していますので、参照して下さい。
UDPパケットを受信
UDPパケットを受信するには、WiFiUdpライブラリを使用します。
#include <WiFiUdp.h>
WiFiUDP wifiUdp;
const int myPort = *****; // 1024~60253を設定
void setup() {
wifiUdp.begin(myPort);
}
void loop() {
if(wifiUdp.parsePacket()){
char s;
s = (char)wifiUdp.read();
M5.Lcd.println(s);
}
}
まずbegin関数を呼び出すことで、引数で指定したポートを開放し、UDPメッセージを受信する準備をします。
parsePacket関数でパケットを受け取ったことを確認したら、read関数でデータを読み取り、ディスプレイに表示させるようにしました。
スマホからUDPパケットを送信
WiFi TCP/UDP Controllerというアプリを使えば、簡単にUDPパケットを送信することができます。
▼のリンクからアプリをダウンロードしましょう。
アプリを起動して、右上のスパナボタンをクリックし、UDP送信の設定をしましょう。
設定項目はたくさんありますが、以下の項目を設定しておけばOKです。
項目 | 設定 |
---|---|
IP or Domain Name | M5 StackのIPアドレス |
Port | M5Stackプログラムで指定したポート番号 |
TCP/UDP | UDP |
BUTTON Name | 自分が使いやすいようボタンのラベル名を設定 |
BUTTON Command | ボタンを押したときに送信するメッセージ |
まとめ
以上、スマホからUDPでメッセージを送信して、M5Stackがこのメッセージを受信する方法の解説でした。
みなさんの参考になりましたら幸いです。