Top
esp32 - 2024年8月12日更新

Arduino(espressif/arduino-esp32)を使って開発しています。
ここでは作成したコードを公開しています。
※最新情報や一部のソースはX(twitter) @inunyannBluesky @inunyannで公開しています
Amazonのほしいものリスト🎁お願いします!!

https(ssl) webserver
小ネタ集


●https(ssl) webserver(必要最小限だと以下で動きます、証明書・秘密鍵はご自身でご用意いただくか、idfのsampleにあるもので動作確認可能です x.509(pem)のlengthに+1しないといけないのは仕様らしいです)

#include "esp_https_server.h"
#include "esp_tls.h"
#include "cert.h"

static esp_err_t root_get_handler(httpd_req_t *req) {
  httpd_resp_set_type(req, "text/html");
  httpd_resp_send(req, "

Hello Secure World!

", HTTPD_RESP_USE_STRLEN); return ESP_OK; } static const httpd_uri_t root = { .uri = "/", .method = HTTP_GET, .handler = root_get_handler }; class WebServerSecure { public: WebServerSecure(): conf(HTTPD_SSL_CONFIG_DEFAULT()) { } ~WebServerSecure() { close(); } void begin() { //conf.cacert_pem = caCert; //conf.cacert_len = sizeof(caCert) + 1; conf.servercert = serverCert; conf.servercert_len = sizeof(serverCert) + 1; conf.prvtkey_pem = serverKey; conf.prvtkey_len = sizeof(serverKey) + 1; esp_err_t ret = httpd_ssl_start(&server, &conf); if (ESP_OK != ret) Serial.println("Error starting server!"); } void RegisterHandler(const httpd_uri_t *uri_handler) { httpd_register_uri_handler(this->server, uri_handler); } void close() { httpd_ssl_stop(server); server = nullptr; } httpd_handle_t server = nullptr; httpd_ssl_config_t conf; }; WebServerSecure sslServer; void setup() { Serial.begin(115200); WiFi.begin(); // ... sslServer.begin(); sslServer.RegisterHandler(&root); } void loop() { delay(100); }
●小ネタ集(思い出したら追記していきます)

・esp32-s2はデフォルトがWiFi.setSleep(WIFI_PS_MIN_MODEM)されて「いない」ので、s2を使う場合は左記コマンドを入れると消費電流を下げられます(STAモード時など、idfだけを使っている方には関係ない話です)
・esp32-s3など一部のボードで無線のつかみが悪いのはtxpowerを下げることで改善されるものがあります、WiFi.setTxPower()コマンドです デフォルトは最大値になってる気がします
・WiFiのsetTxPower()やmacアドレス変更esp_wifi_set_mac()はWiFi.begin()後じゃないと設定できないようです
・partitions.csvをスケッチと同じフォルダに置くと、partitions.csvの設定で書き込んでくれるようです(OTA使いたいけど、スケッチサイズが大きくなりすぎたときとかに使っています)
・コンパイルオプションも同様に決まったファイル名があった気がしますが忘れてしまったので、思い出したら追記します
・arduinoには(たぶんフォルダ名ごとに)ボード定義やオプションを覚えててくれる便利機能があるのですが、これがボード定義を上げ下げしたときに悪影響が出る場合があります フォルダ名などが同じまま下げたときにオプションが無くなっていても便利機能がオプション渡すみたいで、コンパイルができなくなるときがあります そんなときはスケッチのフォルダをコピー(別の名前にする)してボードやオプションを選び直してあげれば、何事もなかったかのようにコンパイルしてくれます


ibunyan.com