Raspberry Pi Pico W で WiFi UDP通信するサンプルプログラムを作成しました。
EarlePhilhower版 Arduino環境です。
バイナリデータを受信して、そのまま送信します。
// Pico WでWIFI(UDP)
// ※バイナリデータを送受信
#include <WiFi.h>
#include <WiFiUdp.h>
const char *SSID = "xxxxxxxxxx"; // WiFi環境に合わせて書き換える
const char *SSID_PASS = "xxxxxxxxx"; // 同上
// IPを指定する場合
const IPAddress LOCAL_IP(192, 168, 0, 2);
const IPAddress SUBNET(255, 255, 255, 0);
const IPAddress GATEWAY(192, 168, 0, 1); // 不要な場合はLOCAL_IPと同じにする
const IPAddress DNS(192, 168, 0, 1);
const unsigned int LOCAL_PORT = 56789; // 受信ポート
//IPAddress DEST_IP(255, 255, 255, 255); // 送信先IP(ブロードキャスト)
const IPAddress DEST_IP(192, 168, 0, 3); // 送信先IP
const unsigned int DEST_PORT = 56789; // 送信先ポート
#define BUF_SIZE 1400 // 1400バイト以上は分割して送信すること
WiFiUDP udp;
void setup() {
Serial.begin(115200);
while (!Serial){};
pinMode(LED_BUILTIN, OUTPUT);
// IPを指定する (DHCPで割り当てられる場合は不要)
WiFi.config(LOCAL_IP, DNS, GATEWAY, SUBNET);
WiFi.begin(SSID, SSID_PASS);
while (WiFi.status() != WL_CONNECTED) {
Serial.print('.');
delay(500);
}
Serial.print("Connected! local IP: ");
Serial.println(WiFi.localIP());
udp.begin(LOCAL_PORT);
}
uint16_t count = 0;
void loop() {
// UDP受信
int packetSize = udp.parsePacket();
if (packetSize > 0) {
//Serial.printf("Received packet size:%d from:%s:%d to %s:%d\n",
// packetSize,
// udp.remoteIP().toString().c_str(), udp.remotePort(),
// udp.destinationIP().toString().c_str(), udp.localPort());
uint8_t recvBuffer[BUF_SIZE];
int recvSize = udp.read(recvBuffer, BUF_SIZE);
for (int i = 0; i < recvSize; i++) {
Serial.print(recvBuffer[i]);
Serial.print(',');
}
Serial.println();
// UDP送信用データ準備
char sendBuffer[BUF_SIZE];
for (int i = 0; i < recvSize; i++) {
sendBuffer[i] = recvBuffer[i];
}
// UDP送信
udp.beginPacket(DEST_IP, DEST_PORT);
udp.write(sendBuffer, recvSize);
udp.endPacket();
count++;
}
digitalWrite(LED_BUILTIN, count % 2);
}
■Raspberry Pi Picoの関連記事
【Raspberry Pi Pico W】WiFi UDP通信 サンプルプログラム
Raspberry Pi Pico+Arduinoでサーボをたくさん動かしたい
会話ができる「ぴよロボ」作りました! (Raspberry Pi + Pico + ChatGPT)
Raspberry Pi Pico W でPCとBluetooth(シリアル)接続する
Raspberry Pi Pico/Pico WをArduino開発環境で使うためのメモ
超音波距離センサー + Raspberry Pi Picoで潜水艦ソナー風
コップの水がこぼれない台 MPU6050 + Raspberry Pi Pico(Arduino)
MPU6050 + Raspberry Pi Pico(Arduino) -> PCで3Dのキューブを回転表示