ラズパイからのUDPメッセージをM5Stackで受信して、そのデータを画面に表示する方法

M5Stack

ラズパイからのUDPメッセージをM5Stackで受信して、そのデータを画面に表示される方法を紹介します。

スポンサーリンク

前提

・Raspberry Pi4

・M5Stack

ラズパイとM5Stackは、同じWi-Fiを使います。

UDPで通信する方法

ArduinoIDEを起動して、以下のサンプルコードをコピーしてください。

サンプルコード

// https://cpp-learning.com/m5stack_udp/

#include <WiFi.h>
#include <WiFiUdp.h>
#include <M5Stack.h>

#define N 1024

/////////////////////////////////////////////////
 
const char* ssid     = "*******"; // Wi-Fiのssid
const char* password = "*******"; // Wi-Fiのパスワード
const int port = 5000;

WiFiUDP udp;

/////////////////////////////////////////////////
 
void setup_wifi(){

  // Wi-Fi接続開始を画面表示
  M5.Lcd.fillScreen(TFT_OLIVE);
  M5.Lcd.setCursor(3, 10);
  M5.Lcd.print("Connecting to ");
  M5.Lcd.println(ssid);

  // WiFi接続性改善のため、いったん切断
  WiFi.disconnect( true, true ); //WiFi OFF, eraseAP=true
  delay(500);
 
  // Wi-Fiモジュールの開始
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
 
  // 通信相手との接続待ち
  while (WiFi.status() != WL_CONNECTED) {
      delay(100);
      M5.Lcd.print(".");
  }
 
  // Wi-Fi接続完了時の画面表示
  M5.Lcd.fillScreen(TFT_OLIVE);
  M5.Lcd.setCursor(3, 3);
  M5.Lcd.println("");
  M5.Lcd.println("WiFi connected.");

  // M5StackのIPアドレスを表示
  M5.Lcd.print("IP address: ");
  M5.Lcd.println(WiFi.localIP());
  M5.Lcd.print("Port: ");
  M5.Lcd.println(port);

  // UDP開始   
  udp.begin(port);
}
 
void setup() {
  
  M5.begin();

  // 起動画面設定
  M5.Lcd.fillScreen(TFT_NAVY);
  M5.Lcd.setTextSize(2);
  M5.Lcd.printf("START");

  setup_wifi();

}
 
void loop() {
  
  char packetBuffer[N];
  int packetSize = udp.parsePacket();
 
  // UDPパケットの受信処理
  if (packetSize){
    int len = udp.read(packetBuffer, packetSize);
    if (len > 0){
      packetBuffer[len] = '
// https://cpp-learning.com/m5stack_udp/
#include <WiFi.h>
#include <WiFiUdp.h>
#include <M5Stack.h>
#define N 1024
/////////////////////////////////////////////////
const char* ssid     = "*******"; // Wi-Fiのssid
const char* password = "*******"; // Wi-Fiのパスワード
const int port = 5000;
WiFiUDP udp;
/////////////////////////////////////////////////
void setup_wifi(){
// Wi-Fi接続開始を画面表示
M5.Lcd.fillScreen(TFT_OLIVE);
M5.Lcd.setCursor(3, 10);
M5.Lcd.print("Connecting to ");
M5.Lcd.println(ssid);
// WiFi接続性改善のため、いったん切断
WiFi.disconnect( true, true ); //WiFi OFF, eraseAP=true
delay(500);
// Wi-Fiモジュールの開始
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
// 通信相手との接続待ち
while (WiFi.status() != WL_CONNECTED) {
delay(100);
M5.Lcd.print(".");
}
// Wi-Fi接続完了時の画面表示
M5.Lcd.fillScreen(TFT_OLIVE);
M5.Lcd.setCursor(3, 3);
M5.Lcd.println("");
M5.Lcd.println("WiFi connected.");
// M5StackのIPアドレスを表示
M5.Lcd.print("IP address: ");
M5.Lcd.println(WiFi.localIP());
M5.Lcd.print("Port: ");
M5.Lcd.println(port);
// UDP開始   
udp.begin(port);
}
void setup() {
M5.begin();
// 起動画面設定
M5.Lcd.fillScreen(TFT_NAVY);
M5.Lcd.setTextSize(2);
M5.Lcd.printf("START");
setup_wifi();
}
void loop() {
char packetBuffer[N];
int packetSize = udp.parsePacket();
// UDPパケットの受信処理
if (packetSize){
int len = udp.read(packetBuffer, packetSize);
if (len > 0){
packetBuffer[len] = '\0'; // end
}
// UDPパケット受信時の画面表示
M5.Lcd.fillScreen(TFT_NAVY);
M5.Lcd.setCursor(3, 3);
M5.Lcd.println(packetBuffer);
}
}
'; // end } // UDPパケット受信時の画面表示 M5.Lcd.fillScreen(TFT_NAVY); M5.Lcd.setCursor(3, 3); M5.Lcd.println(packetBuffer); } }

上記サンプルコードを動かすと、Wi-Fiを探しに行きます。

Connecting to (ssid) .......

Wi-Fiと接続できれば、以下の文言が表示されます。

WiFi connected.
IP address:(自分のM5StackのIPアドレス)
Port:5000

ラズパイでUDPメッセージを送信する

次に、ラズパイのコンソールを開いて、以下のコードを動かします。

サンプルコード

from socket import socket, AF_INET, SOCK_DGRAM

ADDRESS = "***.***.***.***" # M5Stack IP address
PORT = 5000

s = socket(AF_INET, SOCK_DGRAM)

while True:
    msg = input("> ")
    s.sendto(msg.encode(), (ADDRESS, PORT))

s.close()

上記ソースコード内のADDRESSは、M5Stackでサンプルコードを起動させたときに画面に表示されるIPアドレスを記入してください。

> python3 app.py

正しく起動できると、ラズパイのコンソール上に、以下の文言が出てきますので、送りたいメッセージを入力してください。英数字のみです。

> python3 app.py
>   ←ここに好きなメッセージを入力して、ENTERを押す

ここで入力したメッセージが、M5Stackの画面に、そのメッセージが表示されます。

まとめ

今回は、ラズパイからのUDPメッセージをM5Stackで受信して、そのデータを画面に表示される方法を紹介しました。

参考

M5Stack(Arduino)とPC(Python)でUDP通信する方法 -雛形ソースコードあり-
こんにちは。 現役エンジニアの”はやぶさ”@Cpp_Learningです。 前回、M5StackとスマホをUD…

コメント

タイトルとURLをコピーしました