UDP通信のメッセージをM5Stackで受信する実験をしてみた

今回は、スマホからUDPでメッセージを送信して、M5Stackがこのメッセージを受信する実験をしたので記事にしてみました。

この記事はこんな人におすすめ!

  • M5Stackを使い始めた人
  • M5StackのUDP受信方法が分からない人
  • スマホなど外部デバイスからM5Stackを制御したい人
今回の記事では、M5StackのUDP送信方法は扱いません。
目次

概要

▼ 完成形はこちら

スマホからUDP通信で1から9までを順にM5Stackへ送信した例です。M5Stack画面にスマホから送信したデータが表示されます。

以下では、この方法について解説していきます。

UDP通信とは

UDPとは、TCPと同じトランスポート層のプロトコルです。TCPとは異なり、相手メッセージが届いたか管理を行わないコネクション型通信です。データ落ちが発生した場合の再送など行わないので、高速な分、信頼性は低いです。対象サービスやプロトコルを指定するために、ポート番号設定が必要です。

ポート番号は、著名なサービスやプロトコルが使用しているWell-Knownポート 0~1023を避けた1024~65535を使いましょう。

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接続方法はこちらの記事で詳しく解説していますので、参照して下さい。

あわせて読みたい
M5Stackの計測データをWiFiを使ってPCやスマホで確認 以前の記事でM5Stackと温度センサを使った気温計の作り方を紹介しました。 この気温計はM5Stackのディスプレイに表示するシンプルなものでした。M5StackにはWiFiが備わ...

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パケットを送信することができます。

▼のリンクからアプリをダウンロードしましょう。

Google Play で手に入れよう

アプリを起動して、右上のスパナボタンをクリックし、UDP送信の設定をしましょう。

設定項目はたくさんありますが、以下の項目を設定しておけばOKです。

項目設定
IP or Domain NameM5 StackのIPアドレス
PortM5Stackプログラムで指定したポート番号
TCP/UDPUDP
BUTTON Name自分が使いやすいようボタンのラベル名を設定
BUTTON Commandボタンを押したときに送信するメッセージ

まとめ

以上、スマホからUDPでメッセージを送信して、M5Stackがこのメッセージを受信する方法の解説でした。

みなさんの参考になりましたら幸いです。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

大学で機械工学を学んだ後、製造業で働く40代の会社員です。
IT系、電気系を学んでこなかった機械系人間が、ゲーム制作、電子工作に奮闘してます。
極力低コストでものづくりを楽しむのがモットー。

目次