いま界隈で熱い?MiniRadio(ESP32-S3 + Si4732)
New ファームが出たとYoutubeで発見したので、早速実行だ!
手順に従い、進める・・・
自分のは
ESP32-S3 WROOM-1 MCN8R2 を一覧から、対象のBINを調べておく
Githibから対象のBINをDownloadして
ESP Toolでアップロード開始!
うまくいきました!

Version 2.28

いま界隈で熱い?MiniRadio(ESP32-S3 + Si4732)
New ファームが出たとYoutubeで発見したので、早速実行だ!
手順に従い、進める・・・
自分のは
ESP32-S3 WROOM-1 MCN8R2 を一覧から、対象のBINを調べておく
Githibから対象のBINをDownloadして
ESP Toolでアップロード開始!
うまくいきました!

Version 2.28

LILYGOのxT-embedのRADIOバージョンを入手
SI4732が実装されていて、ラジオが受信できます。
短波・中波・VHF・・・
オリジナルのファームは、他でも目にするRADIO Miniの画面と同じなので
同じファームなのかな?
じつは、そのRADIO Miniは持っている。
今回はLILYGOの製品ですが、ファームをいれてみたが、いまいち?
VOLOSというところで、FMラジオ専用のファームを公開している。
しかもオープンソースで・・・すごい
早速、ダウンロードしてビルドしてみたが、いろいろエラーがでるでるでる・・・
いろいろとアドバイスをもらいながら、なんとかビルドでききた。
アップロードして見事FMラジオの完成!

LILYGO T-Embed SI4732 – LILYGO Wiki
(1577) Volos Projects – YouTube
詳細はまた今度・・・

ちなみにAmzonでも購入できます。
Amazon.co.jp: LILYGO T-Embed SI4732 ESP32-S3 マイクスピーカー TTGO 開発ボード 1.9インチ ST7789V IPS TFT LCD付き : パソコン・周辺機器
自分はLilygoで購入しました。
しばらく遊べそう・・・
MyDnsでDDNSを登録して取得しているが、IPの更新が手間なので
M5StickCPlusを使った更新装置の記事を見た・・・どこだっけ?
今使っているソース(自前用に改修したやつ)
XXXXXXなどWifiやMyDns.jpの情報を変更して使用できます。

#include <M5StickCPlus.h>
#include <HTTPClient.h>
#include <NTPClient.h>
#include <Time.h>
#include <TimeLib.h>
#include <FS.h>
#include <WiFi.h>
#include <WiFiClient.h>
#define SERIAL_SPEED 115200
// wifiの設定(my)
const char* ssid = "XXXXXXXXXXX"; // WiFiのSSID
const char* password = "XXXXXXXXXXX"; // WiFiのパスワード
// mydns info.(xxxxx.mydns.jp)
const char* id="mydnsXXXXXX"; //マスターID
const char* pw="XXXXXXXXXXX"; //パスワード
// NTP用
WiFiUDP ntpUDP;
const char *NTP_SERVER = "ntp.nict.jp";
const int TIME_OFFSET = 32400; // UTC+9h (JST)
NTPClient timeClient(ntpUDP, NTP_SERVER, TIME_OFFSET);
const unsigned long NTP_INTERVAL_TIME = 86000000; // 24h毎に更新1000 24h=86400000
unsigned long ntp_interval = 0;
unsigned long pasttime = 0;
String getmsg = "";
void setup() {
pinMode(M5_BUTTON_HOME, INPUT);
Serial.begin(SERIAL_SPEED);
Serial.println("");
M5.begin();
M5.Lcd.setRotation(3);
M5.Axp.ScreenBreath(100);
M5.Lcd.fillScreen(BLACK);
// connect to WiFi
M5.Lcd.setCursor(0, 0, 1);
M5.Lcd.setTextColor(WHITE);
M5.Lcd.setTextSize(2);
M5.Lcd.print("WiFi connecting");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { // 1秒おきに接続状態を確認
delay(1000);
M5.Lcd.print(".");
}
M5.Lcd.println("\nconnected");
M5.Lcd.print("");
//M5.Lcd.print("WiFi Connected.");
M5.Lcd.print("SSID:");
M5.Lcd.print(WiFi.SSID());
M5.Lcd.print("\n");
M5.Lcd.print("IP:");
M5.Lcd.print(WiFi.localIP());
M5.Lcd.print("\n");
// NTP
timeClient.begin();
timeClient.update();
setTime(timeClient.getEpochTime());
M5.Lcd.print("NTP st.");
ntp_interval = millis();
M5.Lcd.print(timeClient.getFormattedTime());
M5.Lcd.print("\n");
delay(3000);
M5.Lcd.print("First Req");
M5.Lcd.print("\n");
notice();
}
void loop() {
//M5ボタンでモード切替
if(digitalRead(M5_BUTTON_HOME) == LOW){
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setCursor(0, 0, 1);
M5.Lcd.setTextFont(4);
M5.Lcd.setTextSize(1);
M5.Lcd.print("\n");
M5.Lcd.print(" Update Now!\n");
M5.Lcd.print("\n");
M5.Lcd.print("\n");
notice();
delay(5000);
}
// MDNS.update();
// 定期的に時刻を合わせて、IPを通知。
pasttime = millis() - ntp_interval;
if (pasttime > NTP_INTERVAL_TIME) {
//M5.Lcd.fillScreen(BLACK);
M5.Lcd.fillRect(0,0,300,70,BLACK); // 塗りつぶし left, top, witdh, height
M5.Lcd.setCursor(0, 0, 1);
M5.Lcd.setTextFont(4);
M5.Lcd.setTextSize(1);
M5.Lcd.print("\n");
M5.Lcd.print(" Update Now!\n");
M5.Lcd.print("\n");
M5.Lcd.print("\n");
delay(5000);
timeClient.update();
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setCursor(0, 0, 1);
M5.Lcd.setTextColor(GREEN);
M5.Lcd.setTextFont(7);
M5.Lcd.setTextSize(1);
M5.Lcd.print(timeClient.getFormattedTime());
M5.Lcd.print("\n");
M5.Lcd.print("\n");
notice();
ntp_interval = millis();
}else{
if(getmsg="200"){
M5.Lcd.fillRect(0,0,300,70,BLACK); // 塗りつぶし left, top, witdh, height
}else{
M5.Lcd.fillScreen(RED);
}
M5.Lcd.setCursor(0, 0, 1);
M5.Lcd.setTextColor(GREEN);
M5.Lcd.setTextFont(7);
M5.Lcd.setTextSize(1);
M5.Lcd.print(timeClient.getFormattedTime());
M5.Lcd.print("\n");
M5.Lcd.setTextFont(4);
M5.Lcd.setTextSize(1);
M5.Lcd.print(NTP_INTERVAL_TIME / 1000);
M5.Lcd.print(" > ");
M5.Lcd.print(pasttime / 1000);
M5.Lcd.print("\n");
M5.Lcd.print("http GET= ");
M5.Lcd.print(getmsg);
M5.Lcd.print("\n");
M5.Lcd.print("Push M5:update");
M5.Lcd.print("\n");
delay(1000);
}
}
void notice() {
timeClient.update();
// 通知
WiFiClient client;
HTTPClient http;
http.begin(client, "http://ipv4.mydns.jp/login.html");
http.setAuthorization(id, pw);
M5.Lcd.setTextFont(4);
M5.Lcd.setTextSize(1);
M5.Lcd.print("http GET= ");
getmsg = http.GET();
M5.Lcd.print(getmsg);
M5.Lcd.print("\n");
timeClient.update();
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setCursor(0, 0, 1);
M5.Lcd.setTextColor(GREEN);
M5.Lcd.setTextFont(7);
M5.Lcd.setTextSize(1);
M5.Lcd.print(timeClient.getFormattedTime());
M5.Lcd.print("\n");
M5.Lcd.print("\n");
ntp_interval = millis();
}
Arduino IDE 2.3.6

FREENOVE.COMのESP32-WROVER-CAMを購入した。

バージョンはv3.0でSdカードスロット付きでUSB-Cでした。
2480円でした。
ESP32-WROVER-Eでした。
技適:201-20403
模範品もでているらしい。(もちろん技適なし)
「たまねぎブログ」さんが纏めてくださっているサイト
「あろしーど」さんが纏めてくださっているサイト
サンプルをいくつか試してみた
・ESP_Mail_Client
起動時にカメラ画像をGmailで送信するサンプル
準備:Googleアカウント作成、アプリパスワード取得、Wifi(SSID、パスワード)
送信先メールアドレス、Tutorialからサンプルソース等(ESP-Mail-Client)※最新版

//追加コード
camCfg.grab_mode = CAMERA_GRAB_LATEST;
//画質設定
sensor_t *sensor = esp_camera_sensor_get();
if (!sensor) {
Serial.println(“Failed to get camera sensor!”);
return;
}
sensor->set_contrast(sensor, 1); // コントラスト
sensor->set_brightness(sensor, 0); // 明るさ
sensor->set_saturation(sensor, -1); // 彩度

ん?画像がミラー?設定を調べないとね・・・
追加コード
// 画像の水平反転を無効にする
sensor->set_hmirror(sensor, 1); // 鏡像(0: 無効, 1: 有効)
・
・
・
・ESP_WebCamera
カメラ画像をWebで参照する
サンプルがあるので、いろいろ遊べそう
目標は防犯カメラというか、野良猫監視カメラ的な・・・