Help us understand the problem. What is going on with this article?

ESP32でUDP通信やってみた(ESP32インストール手順解説あり)

まずはじめに

完全な思いつきなのです。すごく初歩からやっていって、これからesp人口が増えればいいなと。
とりあえず一番簡単な「数値を送る」だけを目標にやります。
ちなみにかなり丁寧にインストール編をやってしまったのでもうインストールしてある人は、ばばっと飛ばしてください。

必要な環境

Arduinoのエディターくらいです。

エディターをインストールしよう

Arduino IDE 1.8.8をインストールしていこうと思います。
esp32ですとバージョンが新しくないと、ボードのインストールが面倒なのでとりあえず最新(2018/12/10現在)でやっていきます。

レッツトライ!!

まずここ にアクセス。
arduino_firststep_qiita.png
でWindows AIP file のやつをダウンロード→解凍→アプリ起動まで行きましょう。

ちなみになぜわざわざzipのほうでインストールしたのかというと、いくつか整理しないといけないディレクトリがあって(記事書くのもインストールするのも)面倒だからです。

ここまで来たら次のステップです。
ファイルから環境設定を開いてください。
arduino_second_step_qiita.png

そこで追加ボードのマネージャのURLとあります。

arduino_third_step_qiita.png

その部分にESPのサイトからとってきたURLを張ります。
以下手順。
ar.png

ar2.png

ここでコピーしたのを追加のボードマネージャのURLに貼り付けます。

ar3.png

ツール→ボード: からボードマネージャを選択してください。
(筆者のは先にインストールしてあるけど気にしないで(;^ω^))
ar4.png

ボードマネージャを開いたらうえの検索バーにespと打ち込んで出てきたのをインストール。
teisei.png

とりあえずこれでおkなはずです。
いやー長かった…

UDP通信をやってみよう

僕一人では力不足だったので
ESP8266 > UDPで送信できた / esp8266_151219_udpSender
さんの記事を参考に送信側を書きました。

UDP送信側(ESP32)

以下コード(責任は負いかねます)

udp_send.ino
#include <WiFi.h>
#include <WiFiUDP.h>

const char ssid[] = "************"; // SSID
const char pass[] = "************";  // password

static WiFiUDP wifiUdp; 
static const char *kRemoteIpadr = "***.***.***.**";
static const int kRmoteUdpPort = 9000; //送信先のポート

static void WiFi_setup()
{
  static const int kLocalPort = 7000;  //自身のポート

  WiFi.begin(ssid, pass);
  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('1');
  wifiUdp.endPacket();  

  delay(3000);
}

ここで使われているportですが任意なので好きな数字にしていいと思います。
ただ、4桁台後半6000~9000くらいにしとくとセンスいいらしいです。

UDP受け取りPythonコード

こっちは適当に書きましたので許してください。

udp_receive.py
import socket
import struct
import contextlib import closing

UDP_IP=""
UDP_PORT=9000

sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.bind((UDP_IP,UDP_PORT))

with closing(sock):
    while True:
        data,addr = sock.recvfrom(1024)
        print("Send from ESP",data)

こんな感じです。。。

これで通信できました。

今後の開発目処

今後はセンサーと組み合わせて外の気温とか見てもいいかもなーとか思ってます。
寒い時期は外に出るのが地獄ですからね(笑)。
それ以外にも割といろいろできそうなので、次はesp間通信をやっていきたいなと思います。
それではさようなら。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした