いま界隈で熱い?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

LinuxのPCを構築して、そこから書き込みしてみる。
Linux Lite 7.2をインストール
Thinkapd X220 i5-2540M MEM16GB
そこにArduinoIDEを入れてみた
sudo apt install arduino
バージョンは1.8.19

まずはここまで
今まで使っていたArduino開発用PCが、もたつく・・・
漢字変換すら遅くなってしまい、息継ぎ状態・・・
Thinkpad X-280のi3モデルなので
メモリも4GBがそもそものボトルネックか・・・
Windows11にしてから、よけいに動きがにすい
そこで、別のPCに引っ越しすることにした。
Thinkpad X380 Yogaが空いていたので
そこに最新のArduino IDE2.3.4をインストール
今までのソースたちの移動も今後のことを考えて
Googleドライブで共有することにした。
GdrivePC版をインストールして、Gドライブが割り当てられるので
そこにArduinoフォルダーをおいて、そこに見に行くように設定を変える。
G:\マイドライブ\Arduino\arduino

しばらく、様子見てみる・・・
Arduinoの開発環境を別のPCに移行しようと四苦八苦・・・
今までの環境が性能不足で、もたついているので
別のPCへ引っ越しすることを決定
IDEをダウンロードして、インストール
20250104時点:Ver2.3.4
Prefarenceを開いて
言語を日本語にする。
スケッチブックの場所(c:\Arduino)

追加にボードマネージャのURLに以下を追加
http://drazzy.com/package_drazzy.com_index.json
http://drazzy.com/package_drazzy.com_index.json
https://github.com/Leafony/BoardManagerFiles/raw/master/Leafony_STM32/package_leafony_stm_index.json
https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
https://raw.githubusercontent.com/dbuezas/lgt8fx/master/package_lgt8fx_index.json
https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
https://raw.githubusercontent.com/nulllaborg/arduino_nulllab/master/package_nulllab_boards_index.json
https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json
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で参照する
サンプルがあるので、いろいろ遊べそう
目標は防犯カメラというか、野良猫監視カメラ的な・・・
レフレックスAMラジオのキットを組み立ててみた。
キットは1石で、5Pラグ版で作成します。
そこをあえて、基板で作ってみたが、見事に失敗・・・
詰め込みすぎて、隣の線とくっついてしまいショートしている
基本通りにラグ版で作るべきでした。
部品を調達してリベンジしたい。
なんぞや
母がテレビの音がよく聞こえないと・・・
いつもテレビの音を大きくして聞いていた。
で、手元にスピーカーを置いてみた。
LM386のアンプ回路を組み込んで、手元で音量を調整できるように
ボリュームをつけてみた。
自分の座っているところで音が出るので、聞きやすくなったと・・・


・ケースは100均のペン立てを利用。
・アンプはどこかで購入したLM386のアンプキット
・SPはダイソーアンプの1つ(もしかしたら、秋月電子で買ったやつかも)
・ボリューム、ジャック、LED等は手持ちの部品を利用
・ACアダプタは、なんかのトランス式を利用(5V)※HARDOFFで見つけた
トラス式のACアダプタなので、ノイズも無く、良い感じに鳴ってくれる。
※ちなみに、100均とかのスイッチング式だと、ノイズ乗りまくりです。
ブ~ン・・・
コスト的は100均のアダプタを利用できるようにしたい。
ノイズを除去できればね。
このネタは半年くらい前のものです。
ノイズ対策で、以前テストしたのが、LCフィルターとか、いろいろやってみたが
まったく解決できなかった。
以前、入手した「7MHzダイレクト受信機」のケースが
基板で作成されていて、先人の技術に感動したのを思い出した。
いつかは、自分も作ってみたくて、材料をコツコツと集めてます。
基板は、随分前に購入済み
150mmX100mmの1mmの生基板(ガラスエポキシ片面)
簡単に作ろうと、まずは、150mmX100mmX30mmの箱で・・・
上下の蓋と底の部分は生基板そのままで、周辺を切り出していく・・・
30mmの高さに・・・(この高さは、切り出しに使用した木材がこのサイズ)
この木材(30mmX30mmXnmm)の角材
(100均か、ホームセターの端材かな)
これで基板にそえて、カッターで切れ目を入れる。
カッターで5回、アクリルカッターで5回ほど切れ目を入れて
裏面からも同様にカッターで切れ目を入れて、割る感じで切断する。
周囲部分は、100mmX30mmを2枚、150mmX30mmを2枚必要。
切り出したら、一応、やすりでバリを落としておく。
周囲部分を銅面を内側にして、角をはんだで固定していく。
今日はここまで・・・
部品待ち・・・真鍮ナットM3
蓋を固定するのにM3のナットを使用したい
はんだで固定したい
で、真鍮のを取り寄せ中・・・ステンレスナットはむずい・・・
あと、ドリル歯も(硬いやつ2.5mm)
つづく・・・
あ、で、なんのケースにするか?
ん~未定・・・