ESP32をWi-Fiアクセスポイント化してProcessingと連携させる

ProcessingとArduinoを連携させようとした時にシリアル通信を採用しがちですが、
Processingに標準で入っているNetwork Libraryを触る機会があったので、
ESP32をWi-Fiアクセスポイント化してProcessingと連携させてみました。

環境

  • Processing
    • Network Library
  • ESP32-WROOM
    • Wi-Fi

ソースコード

以下のコードをESP-32に書き込むと、ESP32AP-WiFi というWi-Fiのアクセスポイントが見つかると思います。

ESP-32

#include <WiFi.h>

const char *ssid = "ESP32AP-WiFi";
const char *pass = "esp32apwifi";
const IPAddress ip(192, 168, 30, 3);
const IPAddress subnet(255, 255, 255, 0);
const int port = 10002;
WiFiServer server(port);

void setup() {
  Serial.begin(115200);
  WiFi.softAP(ssid, pass);
  WiFi.softAPConfig(ip, ip, subnet);
  server.begin();
}

void loop() {
  WiFiClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        String message = client.readStringUntil('\n');
        Serial.println(message);
        client.write("pong\n");
      }
    }
  }
}

Processing

マシンを ESP32AP-WiFi に接続した状態で以下のコードを実行します。 その状態でどこかキーを押せば ping というメッセージをESP-32に送信して、 pong というメッセージが返ってきます。

import processing.net.*;

int port = 10002;
Client client;

void setup()
{
  size(400, 400);
  textFont(createFont("SansSerif", 16));
  client = new Client(this, "192.168.30.3", port);
  background(0);
}

void draw()
{
  if (client.available() > 0) {
    String message = client.readStringUntil('\n');
    println(message);
  }
}

void keyPressed() {
  client.write("ping\n");
}

まとめ

インターネットに接続しない作品制作なら、 無線LANルータもいらないし手軽でありなんじゃないかな?と思いました。 そのうちセンサやアクチュエータを使った例もあげるかもしれません。


ESP32をWi-Fiアクセスポイント化してProcessingと連携させる

By Katsuya Endoh, 2023-11-12