ESP8266 > UDPで送信できた / esp8266_151219_udpSender


UDP送信プログラム

  1. WiFi接続の参考
    http://qiita.com/ie4/items/ae850cdb2c617f3fd6af

  2. UDP送信の参考
    http://www.sunspot.co.uk/Projects/Arduino/ESP8266/ESP8266.html

  • UDP送信先
    • IPアドレス: 192.168.10.4
    • ポート: 9000
  • UDP送信元 (ESP8266)
    • ポート: 7000

上記の設定にして以下を実装した。
Serial_setup()はチェック用だが、実際セットアップしかしてない。

v0.1 @ github
にファイルを置いたが、wifiConfig.hの取り扱いには注意。間違ってgitなどにプッシュしないように。

151219udpSend.c
#include <ESP8266WiFi.h>
#include <WiFiUDP.h>

#include "wifiConfig.h"
/*
 * wifiConfig.hにおいて kWifiSsid, kWifiPass を char *[]型で定義。使用WiFiの設定を記載すること
 */

static WiFiUDP wifiUdp; 
static const char *kRemoteIpadr = "192.168.10.4";
static const int kRmoteUdpPort = 9000;

static void WiFi_setup()
{
  static const int kLocalPort = 7000;

  WiFi.begin(kWifiSsid, kWifiPass);
  while( WiFi.status() != WL_CONNECTED) {
    delay(500);  
  }  
  wifiUdp.begin(kLocalPort);
}

static void Serial_setup()
{
  Serial.begin(115200);
  Serial.println(""); // to separate line  
}

void setup() {
  Serial_setup();
  WiFi_setup();
}

void loop() 
{
  wifiUdp.beginPacket(kRemoteIpadr, kRmoteUdpPort);
  wifiUdp.write("from ESP8266\r\n");
  wifiUdp.endPacket();  

  delay(3000);
}

wifiConfig.hは自分のWiFi接続環境に合わせてSSIDとパスワード文字列を設定する。
例としては以下。
ファイルを分けたのは、gitなどにチェックインしないようにするため。

wifiConfig.h
#ifndef WIFICONFIG_H
#define WIFICONFIG_H

static const char *kWifiSsid = "aterm-314ed7-g";
static const char *kWifiPass = "314jfdsk1io";

#endif

受信側プログラム

http://qiita.com/7of9/items/e916a0168fde295bbbc6
に記載の以下のソフトを使う
- unity-151117-linemonitor-UI : androidスマホで動かすUIソフト (Mac, Winでも動く)

実行結果

最初の6行程度はTimチェックをオフにしているため、左に[秒+ミリ秒]がない。
後ろの5行程度はTimチェックをオンにしていて、左に[秒+ミリ秒]がある。
ESP8266のloop()処理において3秒のdelayにしているが、微妙に短い(2.9秒?)ようだ。