M5Stack Python RaspberryPi UDP

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

更新日:

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

スポンサードサーチ

前提

・Raspberry Pi4

・M5Stack

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

私は、M5GOを使ってます。M5Stack本体に加え、様々なセンサがセットになっていますので、まずはこのセットで十分かと思います。

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] = '\0'; // 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, Python, RaspberryPi, UDP
-,

Copyright© ラズパイの実 , 2020 All Rights Reserved Powered by STINGER.