GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
がじぇるね岡宮です。
GR-ROSEのESP8266を使って、UDP送受信するサンプルを掲載します。
確認にはiPhoneの「UDP terminal」というアプリを使いました。送信間隔を早くするとアプリが固まるので、遅めに1秒間隔で送信するようにしています。
少し余談ですが、ESP8266はアクセスポイント(AP)にもなれるため、GR-ROSEが2台ある場合は1台をAPにするとGR-ROSE同士でUDP送受信ができ、およそ20ms~30ms程度で通信できることは確認しています。この辺は工学社 IO 9月号の記事に書いたので、発刊後にRulzにも記載しようかなと思います。
(iPhone UDP terminal) (GR-ROSE シリアルモニタ)
#include <Arduino.h>#include <WiFiEsp.h>#include <WiFiEspUdp.h>#include "FreeRTOS.h"#include "task.h"char ssid[] = "elecom2g01-45ea1e"; // your network SSID (name)char pass[] = "renerene"; // your network passwordint status = WL_IDLE_STATUS; // the Wifi radio's statusunsigned int localPort = 10003; // local port to listen onunsigned int remotePort = 10002; // remote port to listen onIPAddress remoteIP(192,168,35,255);WiFiEspUDP Udp;void sendPacket(void *pvParameters){ pinMode(PIN_LED1, OUTPUT); while(1){ Udp.beginPacket(remoteIP, remotePort); Udp.println(millis()); Udp.endPacket(); digitalWrite(PIN_LED1, !digitalRead(PIN_LED1)); delay(1000); }}void recvPacket(void *pvParameters){ pinMode(PIN_LED2, OUTPUT); char packetBuffer[255]; while(1){ int packetSize = Udp.parsePacket(); if (packetSize) { int len = Udp.read(packetBuffer, 255); if (len > 0) { packetBuffer[len] = 0; } Serial.write(packetBuffer); } delay(10); // to switch task }}void setup() { // initialize serial for debugging Serial.begin(115200); // initialize serial for ESP module Serial6.begin(115200); // initialize ESP module WiFi.init(&Serial6); // check for the presence of the shield: if (WiFi.status() == WL_NO_SHIELD) { Serial.println("WiFi shield not present"); // don't continue: while (true); } // attempt to connect to WiFi network while ( status != WL_CONNECTED) { Serial.print("Attempting to connect to WPA SSID: "); Serial.println(ssid); // Connect to WPA/WPA2 network status = WiFi.begin(ssid, pass); } Udp.begin(localPort); Serial.print("IP Address: "); Serial.println(WiFi.localIP()); Serial.print("Listening on port "); Serial.println(localPort); xTaskCreate( sendPacket, "UDP_SEND", 512, NULL, 1, NULL ); xTaskCreate( recvPacket, "UDP_RECV", 512, NULL, 1, NULL );}void loop() { delay(100);}