👋

ESP32 Lチカ遠隔動作確認(WiFi接続)

2025/03/02に公開

ESP32 FREENOVA ピン配置

(参考)https://github.com/Freenove/Freenove_ESP32_S3_WROOM_Board/tree/main?tab=readme-ov-file

GPIO01にLED(+)接続

curl GETで確認

curl <IPアドレス>

(参考)https://apidog.com/jp/blog/curl-get-post-put-delete/

Arduinoコード

//ライブラリを準備
#include <WiFiManager.h>
#include <WiFiClientSecure.h>
#include <ESPmDNS.h>
//#include <SPI.h>
//#include "Adafruit_MAX31855.h"

//#define DEBUG

WiFiClientSecure client;
WiFiManager wifiManager;
WiFiServer server(80);

//#define MAXDO   19
//#define MAXCS   5
//#define MAXCLK  18
//Adafruit_MAX31855 thermocouple(MAXCLK, MAXCS, MAXDO);

void setup() {
  Serial.begin(115200);

  pinMode(1, OUTPUT);  //LED
  digitalWrite(1, LOW); //LED

  //不揮発性メモリを読みに行って設定があればそのままWiFiに接続する。
  //なければアクセスポイントが立ち上がり,設定をしなければならない。
  Serial.println(wifiManager.autoConnect());

  IPAddress ipadr = WiFi.localIP();
  Serial.println(WiFi.SSID());

  if (!MDNS.begin("ESP32Temp")) {
    while (1) {
      delay(500);
    }
  }
  server.begin();
  MDNS.addService("http", "tcp", 80);

  Serial.println("End Setup");
}

void loop() {
  bool flag = 0;
  String buff = "";
  char c;

  //Serial.print("STAND BY");
  //Serial.println(thermocouple.readInternal());
  //double temperature = thermocouple.readCelsius();

#ifdef  DEBUG
  if (isnan(temp)) {
    Serial.println("Something wrong!");
  } else {
    Serial.print("C = ");
    Serial.println(temp);
  }
#endif

  WiFiClient client = server.available();
  if (client) {
    while (client.connected()) {
      //アクセスがあった場合リクエスト内容を1文字ずつ読む
      if (client.available()) {
        while (1) {
          c = client.read();
          buff += c;
          if (c == '\n') break;
        }
        //HTTPのバージョンは気にしないので空白で置き換えて削除
        buff.replace("HTTP/1.1", "");
        buff.trim();

        //メソッドがGETorPOSTのときだけ"200 OK"ないし現在の状態を返す
        //それ以外のメソッドは405を返す
        if (buff.startsWith("GET") or buff.startsWith("POST")) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: application/json");
          client.println();
          //client.println("{\"Temp\":" + (String)temperature + "}");
          digitalWrite(1, HIGH);   //LED ON
          delay(3000);
          digitalWrite(1, LOW);
          client.println();

          buff = "";
          break;
        } else {
          client.println("HTTP/1.1 405 Method Not Allowed");
          buff = "";
          break;
        }
      }
    }
    client.stop();
  }
  delay(1);
}

Discussion