以下の内容はhttps://gijin77.blog.jp/archives/2025-04.htmlより取得しました。


◆追記2025/04/29
 他のPCで確認しましたら問題有りませんでした。
 よって、私のメインPCの問題みたいです。

◆追記2025/04/30
 python3をアンインストール後にArduinoIDE2.3.6にバージョンアップしたら
 あっさり直りました。
 以上 めでたしめでたし


◆追記2025/04/30
 ところが、python3を再インストールした所、同じ症状がでました。
 なんかpython3とIDEが相性悪いみたいです。
 そのような、環境では下記のツールが有効です。

 
◆私の環境だけかもですが「Windows11 X64 24H2」「ArduinoIDE2.3.5」「python3」の
 環境でArduinoIDEを終了した後、使用していたフォルダを「削除」「移動」「リネーム」
 を実行すると下記のエラーが発生しますので開放するツールを作りました。

削除エラーFF
 今まで対処方法が分からず再起動していました。
 今回、この問題を調べてみました。

1.フォルダを掴みんでいるプロセスを教えてくれるアプリ「Handle.exe」が有ることを
  知りました。Microsoft公式から無料で配布されています

 ①下記からダウンロードして下さい。
  Handle v5.0

 handle_サイト

 ②ダウンロードしたら解凍します。
  三つファイルが有りますが、自分の環境にあったものを任意のフォルダにコピペします。
  私の場合、「handle64.exe」を「c:\00yh\tools」へコピペしました。
 ➂コマンドプロンプトを管理者として実行します。そして、先のフォルダへ「cd」します。
 ④試しに「handle64.exe」を実行してみます。
  すると「tools」を掴んでいるプロセスが表示されます。
 handle実行

2.では、ArduinoIDEを実行して様子をみてみます。
 ①実行中
 ②IDE終了後(まだ二つ掴んだまま)
 IDE_B_A

 ➂このようにIDEを終了させてもプロセスが掴んだままの為、「削除」「移動」「リネーム」が
   出来ないで、エラーとなります。

3.2を踏まえて、悪さしているプロセスを自動で「kill」するツールを作りました。
  下記のバッチファイル「ff.bat」です。(Folder Freeの略)
  バッチファイルを保存する時は、漢字コードを「Shift-JIS」で保存します。
  「UTF-8」だと、文字化けします。

********************ここから**************************************
:: ff.bat
:: V2025/04/29 by JK1VCK
:: blog URL:https://gijin77.blog.jp/archives/41005740.html

@echo off
setlocal enabledelayedexpansion

:: handle.exeのパス(自分の環境に合わせてね)
set "HANDLE_EXE=c:\00YH\tools\handle64.exe"

:: 削除対象のフォルダパス受け取り
if "%~1"=="" (
    echo 使用方法: %~nx0 "削除対象フォルダパス"
    pause
    exit /b
)

set "TARGET_FOLDER=%~1"

:: フォルダ存在確認
if not exist "%TARGET_FOLDER%" (
    echo [エラー] フォルダが存在しません: "%TARGET_FOLDER%"
    pause
    exit /b
)

echo 削除対象フォルダ: "%TARGET_FOLDER%"
echo.
echo フォルダを掴んでいるプロセスを検索中...

:: 一時ファイル削除
if exist temp_handle_result.txt del temp_handle_result.txt

:: handle.exeで対象フォルダを検索
"%HANDLE_EXE%" "%TARGET_FOLDER%" > temp_handle_result.txt 2>nul

:: 掴んでいるかチェック
findstr /i "pid:" temp_handle_result.txt >nul
if %errorlevel%==0 (
    echo [警告] 誰かがフォルダを掴んでいます!
    echo 掴んでいるプロセス一覧:

    set "KILL_LIST="

    for /f "tokens=*" %%A in (temp_handle_result.txt) do (
        set "LINE=%%A"
        echo !LINE! | findstr /i "pid:" >nul
        if !errorlevel! == 0 (
            rem LINEから"pid:"の位置を探す
            set "TMP_LINE=!LINE:*pid:=!"
            rem TMP_LINEの先頭からスペースまでを取り出す
            for /f "tokens=1 delims= " %%P in ("!TMP_LINE!") do (
                set "PID=%%P"
                rem プロセス名も表示
                for /f "tokens=1" %%N in ("!LINE!") do (
                    set "PNAME=%%N"
                )
                echo !PNAME! - PID: !PID!
                set "KILL_LIST=!KILL_LIST! !PID!"
            )
        )
    )

    echo:
    set /p USER_KILL="これらのプロセスを終了しますか? (y/n) [n]: "
    if /i "!USER_KILL!"=="y" (
        for %%P in (!KILL_LIST!) do (
            if not "%%P"=="" (
                echo PID %%P を強制終了中...
                taskkill /PID %%P /F
            )
       )
    ) else (
        echo プロセス終了をスキップしました。
    )

) else (
    echo 誰も掴んでいません!
)

:: 少し待つ
timeout /t 1 >nul

echo.
set /p USER_CONFIRM=このフォルダを削除しますか? (y/n) [n]: 
if /i "%USER_CONFIRM%"=="y" (
    echo フォルダを削除します...
    rmdir /s /q "%TARGET_FOLDER%"
    echo 削除完了!
) else (
    echo 削除をキャンセルしました。
)

:: 一時ファイル削除
if exist temp_handle_result.txt del temp_handle_result.txt

pause
exit /b
********************ここまで**************************************

 ◆使い方(実行例)
  ①コマンドプロンプトを管理者として実行します。
  ②ff.batのフォルダに「cd」します。
  ➂ff フォルダ名
  ④キャンセルする場合は、「n」を入力します。
   「explorer.exe - PID: xxxxx」が表示されたらキャンセルして下さい
   そうしないと画面が真っ暗になり、再起動かサインアウト/サインインすることに
   なります。
   その時は、対象のフォルダを表示しているエクスポーラを閉じてから実行してください。
  ⑥再度実行
  ⑦プロセスを終了する場合は、「y」を入力します。
  ⑧削除する場合は、「y」を入力します。
   「フォルダ移動」や「リネーム」の場合は、「n」を入力します。
 コマンドプロンプト_FF実行

以上で、再起動しなくても「削除」「移動」「リネーム」が出来るようになりました。


ブログトップへ

◆ESP32S3で「FFat」システムで辞書ファイルを使用する必要にせままれて、「SDカード」
 から「FFat」へファイルをコピーするツールを作ってみました。
 (下記のアプリで必要)
 AquesTalk ESP32
 「AquesTalk-ESP32 Ver.2.4」を使う

 フラッシュメモリに転送する為に、ArduinoIDE1.8.19へ戻って転送用のプラグインを入れて
 試しましたがうまく出来ませんでした。
 さらにArduinoIDE2.3.5では、調べた範囲では出来なさそうだったので代替としてSDの
 ツールに「FFat」を追加してみました。意外と簡単に動作しました。
 操作は、シリアルでのやり取りです。

 *起動画面
 正常起動画面

1.今回、サブディレクトリと7MBの辞書を扱うため「FATFS」を採用しました。
 *SPIFFSとFATFSの違いについては下記のようです。
 ①SPIFFS (SPI Flash File System)
 **特徴**:
  - 軽量なファイルシステムでフラッシュメモリ向けに設計
  - ファイル名の長さに制限あり(通常31文字まで)
  - ディレクトリ構造をサポートしない(フラットなファイルシステム)
  - 書き込みサイクルが限られているフラッシュメモリに最適化
  - 主に設定ファイルや小さなデータファイルの保存に使用

 ②FATFS(Fat File System)
 **特徴**:
  - 伝統的なFATファイルシステムの実装
  - ディレクトリ構造をサポート
  - 長いファイル名をサポート(LFN)
  - より大きなファイルサイズを扱える
  - PCとの互換性が高い(SDカードなどでよく使用される形式)
  - メモリ使用量がSPIFFSより多い
  
2.ESP32s3で初めて「FFat」ファイルシステムを構築する場合は、下記の設定をして
  コンパイル、書き込みをします。
 1.ボード設定
  ①ボード: "ESP32S3 Dev Module"
  ②USB CDC On Boot: "Enabled" <--シリアル出力に必要
  ➂Erase All Flash Before Sketch Upload: "Enabled"
  ④Flash Size "16MB(128Mb)"
  ⑤Partition Scheme: "16M Flash (3MB APP/9.9MB FATFS)"
  ⑥ PSRAM: "OPI PSRAM"
  
  ◆Partition Scheme:は、辞書サイズが約7MBの為、 アプリにも
   余裕を持たせ、(3MB APP/9.9MB FATFS)としました。
  
 初めてFFat構築時

 2.スケッチの65行目で強制フォーマットさせます。

 63://FFat************************************************************  
 64:  Serial.println(F("FFatを初期化しています..."));
 65:  if (!FFat.begin(true)) {   //<---初期化失敗の場合、trueにして強制フォーマットし、・・・
 66:    error("FFatのマウントに失敗しました"); //マウントされたら、trueを取り、Erase Al・・・
 67:  }
 68:  Serial.println(F("FFatがマウントされました。"));
 69:  listDir(FFat, "/", 0);
 70:  Serial.println(F("----------------------------------------")); 
 
3.正常に"FFatがマウントされました。"と表示されたら下記の設定にします。
 2-1-➂ "Disabled"
 2-2-65行目 if (!FFat.begin()) {  <--trueを取る
 通常時設定
 
 ◆それでも下記のようにエラーが表示されたら「2」の項目を見直します。
 SD不良
 FFat不良

4.実際にSDカードの辞書ファイル他を「FFat」へコピーした時の抜粋です様子です。
 *毎回表示されるコマンドライン文字を削除しています。

 SD Card / FFat TOOL By JK1VCK
 FFatの場合 コマンドの前にfを付加 例「fdir」 n1=name1 n2=name2
 dir,rd /path,md /path,del /name,ren /n1 /n2,cp /n1 /n2,add /name msg,cat /name,new /name msg,cpsf /n1 /n2,cpfs /n1 /n2,help

 >dir                                     <---SDカードのディレクトリ表示
 リストディレクトリ: /
   DIR : System Volume Information
   DIR : aq_dic
   FILE: foo.txt  SIZE: 9
 
 >fdir                                      <---「FFat」のディレクトリ表示
 リストディレクトリ: /
 
 >fmd /aq_dic                         <---「FFat」にサブディレクトリ作成
 ディレクトリの作成: /aq_dic
 ディレクトリが作成されました
 
 >fdir                                       <---「FFat」のサブディレクトリの確認
 リストディレクトリ: /
  DIR : aq_dic

 >dir /aq_dic                            <---SDカードのサブディレクトリ表示
 リストディレクトリ: /aq_dic
   FILE: aqdic_m.bin  SIZE: 7385048
   FILE: CREDITS  SIZE: 1831
   
 >cpsf /aq_dic/aqdic_m.bin /aq_dic/aqdic_m.bin <---SDカードから「FFat」へコピー
 ファイルをコピー中 /aq_dic/aqdic_m.bin から /aq_dic/aqdic_m.bin <--かなり時間がかかる。
 ファイルが正常にコピーされました
 
 >cpsf /aq_dic/CREDITS /aq_dic/CREDITS  <---SDカードから「FFat」へコピー
 ファイルをコピー中 /aq_dic/CREDITS から /aq_dic/CREDITS
 ファイルが正常にコピーされました
 
 >fdir /aq_dic                                                     <---「FFat」のサブディレクトリの確認
 リストディレクトリ: /aq_dic
   FILE: aqdic_m.bin  SIZE: 7385048
   FILE: CREDITS  SIZE: 1831

 以上でSDカード内の2つのファイルを「FFat」へコピーできました。
 
5.スケッチは、下記に示します。
  (保障無しの自己責任で)  esp32_SD_FFat.zip

 以上 「FFat」ファイルシステムが使えるようになりました。
 

ブログトップへ

◆JC1060P470CボードでArduinoIDE環境でWiFiが、使えるようになりましたので
 NHKのRSSニュースを読み込み表示してみました。
 jc1060p470_News-1

 下記の9種類のカテゴリーを読み込み順次表示しています。
 ひとつのカテゴリで項目がたくさんある場合、最初の8項目を表示しています。
 ①**NHKニュース トップニュース**
 ②**主要ニュース**
 ➂**社会ニュース**
 ④**政治ニュース**
 ⑤**経済ニュース**
 ⑥**国際ニュース**
 ⑦**スポーツニュース**
 ⑧**科学・文化ニュース**
 ⑨**最新15項目ニュース**

◆ボードなどの情報は、下記ブログ内記事を参照して下さい。
 ①・JC1060P470C(ESP32P4 ESP32C6 搭載) を使ってみた
 ②・JC1060P470C(ESP32P4 ESP32C6 搭載) ArduinoIDE環境でWiFiが使えるようになった
 ➂・ESP32でRSSニュースサイト(Yahoo,NHKetc)を読み出してみた
 *NHK以外のサイトは、上記を参照して修正すれば簡単に出来ます。

1.開発環境 2025/04/21時点
  ①Windows11 X64 Pro 24H2 
  ②Arduino IDE 2.3.5
  ➂ESP32ボードバージョンV3.2.0
  ④Arduino_GFX_Library(GFX Library for Arduino) v1.5.6
  ⑤efont ライブラリ v1.0.9

2.スケッチ
 ①このスケッチは、画面サイズの違うボードにも対応しています。
  最初の13行~19行で指定します。

 13://ボート選択 使用するボードのコメントを取る
 14:#define JC1060P470      // esp32p4 Flash Size:"16MB" Partition Scheme:16M ・・・・ 
    15:                           // PSRAM : en UPload Mode : USB-OTG...
 16://#define ESP32_1732S019  // esp32s3 psram=dis Partition Scheme:Huge APP(・・・
 17://#define JC2432W328      // esp32   Partition Scheme:Huge APP(3MB NoOTA)
 18://#define JC3248W535      // esp32s3 psram=OPIPSRAM Scheme:Huge APP(・・・
 19://#define ESP32_3248S035  // esp32 Partition Scheme:Huge APP(3MB NoOTA)

 ②このスケッチでは、個人利用の為、証明書なしで読み出しています。
 160:  https_client.setInsecure();  // 証明書チェックを無効化

 (保障無しの自己責任で)  esp32p4_Efont_NHK_News.zip

3.実行の様子
 jc1060p470_News-2

 jc1060p470_News-3

 jc1060p470_News-4

 jc1060p470_News-5

 jc1060p470_News-6

 jc1060p470_News-7

 jc1060p470_News-8

 jc1060p470_News-9

以上


ブログトップへ

◆ついにJC1060P470CボードでArduinoIDE環境でWiFiが、使えるようになりました。
 今まで、ちょっと不便でしたが、ESP32のボードバージョンが3.2.0にバージョンアップ
 されて、ESP32P4でWiFiのライブラリが使えるようになりました。
 ESP32C6とSDIO制御することなく、ESP32単体と同じに普通に使えました。感激。
 jc1060p470_wifi-1

 JC1060P470ボードについて、詳しくは下記ブログ内記事を参照して下さい。
 ・JC1060P470C(ESP32P4 ESP32C6 搭載) を使ってみた


1.開発環境 2025/04/18時点
  ①Windows11 X64 Pro 24H2 
  ②Arduino IDE 2.3.5
  ➂ESP32ボードバージョンV3.2.0
  ④Arduino_GFX_Library(GFX Library for Arduino) v1.5.6

2.普通にサンプルプログラム「WiFiScan」を「Arduino_GFX_Library」を使い
  LCDに表示するよう修正して表示してみました。

//esp32p4_GXF_wifi_Scan.ino
//V1 /2025/04/18 By JK1VCK <Arduino_GFX_Library.h>使用
//blog URL:https://gijin77.blog.jp/archives/44343378.html
//JC1060P470 esp32p4 Flash Size:"16MB" Partition Scheme:16M Flash(2MB APP..) 
//           PSRAM : en UPload Mode : USB-OTG...

#include <WiFi.h>
#include <Arduino_GFX_Library.h>

//***************************************************************************
#define GFX_DEV_DEVICE JC1060P470
#define LED      26
#define LEDON    LOW
#define LEDOFF   HIGH
#define GFX_BL 23 // default backlight pin, you may replace DF_GFX_BL to actual backlight pin
#define DSI_PANEL
Arduino_ESP32DSIPanel *dsipanel = new Arduino_ESP32DSIPanel(
    40 /* hsync_pulse_width */, 160 /* hsync_back_porch */, 160 /* hsync_front_porch */,
    10 /* vsync_pulse_width */, 23 /*vsync_back_porch  */, 12 /* vsync_front_porch */,
    48000000 /* prefer_speed */);
Arduino_DSI_Display *gfx = new Arduino_DSI_Display(
    1024 /* width */, 600 /* height */, dsipanel, 0 /* rotation */, true /* auto_flush */,
    27 /* RST */, jd9165_init_operations, sizeof(jd9165_init_operations) / sizeof(lcd_init_cmd_t));
#define C6_RESET  54  // ESP32-C6のリセットピン
//***************************************************************************

void setup() {
  Serial.begin(115200);
  delay(1000);
  // ESP32-C6をリセット
  pinMode(C6_RESET, OUTPUT);
  digitalWrite(C6_RESET, LOW);
  delay(100);
  digitalWrite(C6_RESET, HIGH);
  delay(2000);  // ESP32-C6の起動待機

  pinMode(GFX_BL, OUTPUT);digitalWrite(GFX_BL, HIGH); //バックライトON  
  gfx->begin();
  gfx->setRotation(0);gfx->fillScreen(BLACK);
  gfx->setCursor(0,2);gfx->setTextColor(GREEN);gfx->setTextSize(3);
  gfx->drawRect(0,0,gfx->width()-1,gfx->height()-1,YELLOW);//枠表示
  //digitalWrite(GFX_BL, HIGH); //バックライトON  
  Serial.println("WiFi Scan / Arduino_GFX_Library Start");  
  gfx->println("WiFi Scan / Arduino_GFX_Library Start");  
  // Set WiFi to station mode and disconnect from an AP if it was previously connected.
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);
  Serial.println("Setup done");
  gfx->println("Setup done");
}

void loop() {
  gfx->setTextSize(3);gfx->setTextColor(GREEN);
  Serial.println("WiFi Scan start");gfx->println("WiFi Scan start");
  // WiFi.scanNetworks will return the number of networks found.
  int n = WiFi.scanNetworks();
  Serial.println("WiFi Scan done");gfx->println("WiFi Scan done");
  if (n == 0) {
    Serial.println("no networks found");gfx->println("no networks found");
  } else {
    Serial.printf("\n %d networks found\n",n);gfx->printf("\n %d networks found\n",n);
    gfx->setTextSize(2);gfx->setTextColor(CYAN);
    Serial.println(" No| SSID                             | MAC アドレス       | RSSI | CH | Encryption");
    gfx->println(" No| SSID                             | MAC address        | RSSI | CH | Encryption");
    for (int i = 0; i < n; ++i) {
      // Print SSID and RSSI for each network found
      gfx->setTextColor(ORANGE);
      Serial.printf("%2d | %-32.32s | %-18.18s | %4ld | %2ld | ", i + 1,WiFi.SSID(i).c_str(),WiFi.BSSIDstr(i).c_str(),WiFi.RSSI(i),WiFi.channel(i));
      gfx->printf("%2d | %-32.32s | %-18.18s | %4ld | %2ld | ", i + 1,WiFi.SSID(i).c_str(),WiFi.BSSIDstr(i).c_str(),WiFi.RSSI(i),WiFi.channel(i));      switch (WiFi.encryptionType(i)) {
        case WIFI_AUTH_OPEN:            Serial.print("open");     gfx->print("open"); break;
        case WIFI_AUTH_WEP:             Serial.print("WEP");      gfx->print("WEP");break;
        case WIFI_AUTH_WPA_PSK:         Serial.print("WPA");      gfx->print("WPA"); break;
        case WIFI_AUTH_WPA2_PSK:        Serial.print("WPA2");     gfx->print("WPA2"); break;
        case WIFI_AUTH_WPA_WPA2_PSK:    Serial.print("WPA+WPA2"); gfx->print("WPA+WPA2"); break;
        case WIFI_AUTH_WPA2_ENTERPRISE: Serial.print("WPA2-EAP"); gfx->print("WPA2-EAP"); break;
        case WIFI_AUTH_WPA3_PSK:        Serial.print("WPA3");     gfx->print("WPA3"); break;
        case WIFI_AUTH_WPA2_WPA3_PSK:   Serial.print("WPA2+WPA3");gfx->print("WPA2+WPA3"); break;;
        case WIFI_AUTH_WAPI_PSK:        Serial.print("WAPI");     gfx->print("WAPI"); break;
        default:                        Serial.print("unknown");  gfx->print("unknown");
      }                                                                 
      Serial.println();gfx->println();
      delay(10);
    }
  }
  Serial.println("");gfx->println("");
  // Delete the scan result to free memory for code below.
  WiFi.scanDelete();
  // Wait a bit before scanning again.
  delay(20000);
  gfx->fillScreen(BLACK);gfx->setCursor(0,2);
  gfx->drawRect(0,0,gfx->width()-1,gfx->height()-1,YELLOW);//枠表示
}



3.実行中の様子
  20秒毎にスキャンを繰り返します。
 jc1060p470_wifi-2

4.アクセスポイントへの接続試験用スケッチ
 ①ssidとpasswordを自分用に修正して下さい。
//esp32p4_wifi.ino

#include <WiFi.h>

#define C6_RESET  54  // ESP32-C6のリセットピン
// Wi-Fi設定
const char* ssid = "IO_Net_2G";
const char* password = "1234567890";

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

  // ESP32-C6をリセット
  pinMode(C6_RESET, OUTPUT);
  digitalWrite(C6_RESET, LOW);
  delay(100);
  digitalWrite(C6_RESET, HIGH);
  delay(2000);  // ESP32-C6の起動待機

  // Wi-Fi接続開始
  WiFi.begin(ssid, password);
  Serial.print("Wi-Fi接続中...");

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nWi-Fi接続成功!");
  Serial.print("IPアドレス: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  // 例: HTTPリクエスト送信
  if (WiFi.status() == WL_CONNECTED) {
    Serial.println("Wi-Fi接続済み");
  } else {
    Serial.println("Wi-Fi切断中");
  }
  delay(5000);
}

 ②実行中のシリアル出力
 jc1060p470_wifi-3

5.WiFi事例でNHKのニュース表示してみました。
 下記ブログ内記事を参照して下さい。
・JC1060P470C(ESP32P4 ESP32C6 搭載) ArduinoIDE環境でNHK RSSニュース表示してみた


以上


ブログトップへ

◆ESP32でRSSニュースサイト(Yahoo,NHK,ITmedia,livedoor)を読み出し、シリアル出力して
 みました。

 試しに下記の4サイトのURLを実行してみました。
 今回は、個人利用の為証明書なしで読み出しています。

 ①Yahooニュース    : https://news.yahoo.co.jp/rss/topics/top-picks.xml
 ②NHKニュース         : https://www.nhk.or.jp/rss/news/cat0.xml
 ➂ITmediaニュース      : https://rss.itmedia.co.jp/rss/2.0/news_bursts.xml
 ④ライブドアニュース : http://news.livedoor.com/topics/rss/top.xml

 yahoo_news_rss


1.スケッチ保障なしの自己責任で参考までに)
 ①開発環境 2025/04/15時点
  1.Windows11 X64 Pro 24H2 
  2.Arduino IDE 2.3.5
  3.ESP32ボードバージョンV3.2.0

 ②使い方
  1.//ニュースサイトを選択するの所で
   表示させるニュースサイトの//#defineのコメントを取ります。
  2.WiFiのSSIDとPASSWORDをご利用のものに修正します。
  3.esp32でコンパイル&書き込みします。
  4.シリアルモニタを表示させます。

//get_news.ino
//V2025/04/15 by JK1VCK
//blog URL:https://gijin77.blog.jp/archives/44314639.html

#include <WiFi.h>
#include <WiFiClientSecure.h>

//Yahooニュース: https://news.yahoo.co.jp/rss/topics/top-picks.xml
//NHKニュース: https://www3.nhk.or.jp/rss/news/cat0.xml
//ITmedia: https://rss.itmedia.co.jp/rss/2.0/news_bursts.xml
//livedoor: http://news.livedoor.com/topics/rss/top.xml

//ニュースサイトを選択する
#define    yahoo    //Yahooニュース:
//#define    nhk      //NHKニュース
//#define    itmedia  //ITmedia
//#define    livedoor //livedoor:

#if defined(yahoo)
  const char* host = "news.yahoo.co.jp";
  const char* path = "/rss/topics/top-picks.xml";
#elif defined(nhk)
  const char* host = "www3.nhk.or.jp";
  const char* path = "/rss/news/cat0.xml";
#elif defined(itmedia)
  const char* host = "rss.itmedia.co.jp";
  const char* path = "/rss/2.0/news_bursts.xml";
#elif defined(livedoor)
  const char* host = "news.livedoor.com";
  const char* path = "/topics/rss/top.xml";
#endif
const int httpsPort = 443;

const char* ssid = "IO_Net_2G";  //Your SSID
const char* password = "1234567890";  //Your PASSWORD

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

  WiFi.begin(ssid, password);
  Serial.print("WiFi connecting");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(" connected!");
  Serial.println(WiFi.localIP());

  WiFiClientSecure client;
  client.setInsecure();  // 一時的に証明書チェックを無効化

  Serial.printf("Connecting to %s...\n", host);
  if (!client.connect(host, httpsPort)) {
    Serial.println("Connection failed!");
    return;
  }

  client.printf("GET %s HTTP/1.1\r\n", path);
  client.printf("Host: %s\r\n", host);
  client.println("User-Agent: ESP32RSSClient");
  //client.println("Connection: close\r\n"); //これを書くとNHKがすぐに切断する
  client.println();
  Serial.println("=== RSS Feed Start ===");
 
bool isBody = false;
unsigned long timeout = millis();

  while ((millis() - timeout) < 2000) {  // タイムアウトを2秒にする
    while (client.available()) {
      String line = client.readStringUntil('\n');
      line.trim();
      if (!isBody && line.length() == 0) {
        isBody = true;
        continue;
      }
      if (isBody) {
        Serial.println(line);
      }
      timeout = millis();  // データが来たらタイムアウトリセット
    }
    if (!client.connected()) break;
  }
  client.stop();  // ←ここで明示的に切るのはOK
  Serial.println("=== RSS Feed End ===");
}

void loop() {
}


2.実行時のシリアル出力の抜粋

①Yahooニュース ***************************************************************************************

WiFi connecting..... connected!
192.168.1.147
Connecting to news.yahoo.co.jp...
=== RSS Feed Start ===
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rss version="2.0">
  <channel>
    <language>ja</language>
    <copyright>© LY Corporation</copyright>
    <pubDate>Mon, 14 Apr 2025 02:17:43 GMT</pubDate>
    <title>Yahoo!ニュース・トピックス - 主要</title>
    <link>https://news.yahoo.co.jp/topics/top-picks?source=rss</link>
    <description>Yahoo! JAPANのニュース・トピックスで取り上げている最新の見出しを提供しています。</description>
    <item>
      <title>ミャンマー地震 邦人死亡を初確認</title>
      <link>https://news.yahoo.co.jp/pickup/6535430?source=rss</link>
      <pubDate>Mon, 14 Apr 2025 01:31:10 GMT</pubDate>
      <comments>https://news.yahoo.co.jp/articles/650463466ab1cf0dd82841135c6798769ca1990d/comments</comments>
    </item>
    <item>
      <title>東証が大幅反発 一時700円超高</title>
      <link>https://news.yahoo.co.jp/pickup/6535428?source=rss</link>
      <pubDate>Mon, 14 Apr 2025 01:06:58 GMT</pubDate>
      <comments>https://news.yahoo.co.jp/articles/898d31b616b1ad47373d11e775128a89d553f6eb/comments</comments>
    </item>

..... 省略

</channel>
</rss>
=== RSS Feed End ===


②NHKニュース *****************************************************************************************

WiFi connecting...... connected!
192.168.1.147
Connecting to www3.nhk.or.jp...
=== RSS Feed Start ===
<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:nhknews="http://www.nhk.or.jp/rss/rss2.0/modules/nhknews/" version="2.0">
<channel>
<title>NHKニュース</title>
<description>日本放送協会 NHKニュース</description>
<link>http://www3.nhk.or.jp/news/</link>
<lastBuildDate>Mon, 14 Apr 2025 22:01:45 +0900</lastBuildDate>
<item>
<title>15日は東日本でも荒れた天気のおそれ 落雷など注意を</title>
<link>http://www3.nhk.or.jp/news/html/20250414/k10014778541000.html</link>
<guid isPermaLink="true">http://www3.nhk.or.jp/news/html/20250414/k10014778541000.html</guid>
<pubDate>Mon, 14 Apr 2025 21:01:24 +0900</pubDate>
<description>上空の強い寒気の影響で、西日本を中心に大気の状態が非常に不安定になり局地的に雷雨となっています。15日は東日本でも荒れた天気になるおそれがあり、気象庁は落雷や竜巻などの激しい突風、急な激しい雨、ひょうに注意するよう呼びかけています。</description>
<nhknews:new>false</nhknews:new>
</item>
<item>
<title>トランプ大統領 導入予定の半導体関税措置 “来週中にも発表”</title>
<link>http://www3.nhk.or.jp/news/html/20250414/k10014778551000.html</link>
<guid isPermaLink="true">http://www3.nhk.or.jp/news/html/20250414/k10014778551000.html</guid>
<pubDate>Mon, 14 Apr 2025 17:37:06 +0900</pubDate>
<description>アメリカのトランプ大統領は、今後導入する予定の半導体を対象にした関税措置について、「来週中にも発表するつもりだ」と述べ、近く関税率を表明する考えを示しました。また、スマートフォンなどの電子機器への関税措置については大手メーカーなどと協議したうえで内容を発表するとしています。</description>
<nhknews:new>false</nhknews:new>
</item>

..... 省略

</channel>
</rss>
=== RSS Feed End ===


➂ITmediaニュース *************************************************************************************

WiFi connecting...... connected!
192.168.1.147
Connecting to rss.itmedia.co.jp...
=== RSS Feed Start ===
<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
<channel>
<title>ITmedia NEWS 最新記事一覧</title>
<link>https://www.itmedia.co.jp/news/</link>
<description>ITmedia NEWS の最新記事一覧です。</description>
<language>ja</language>
<copyright>Copyright (c) 2025 ITmedia, Inc. All Rights Reserved.</copyright>
<pubDate>Mon, 14 Apr 2025 11:25:00 +0900</pubDate>
<item>
<title>大阪・関西万博、東ゲートにWi-Fiを準備 QRコード表示用に 携帯キャリアにも協力要請</title>
<link>https://www.itmedia.co.jp/news/articles/2504/14/news083.html</link>
<description>大阪・関西万博を運営する2025年日本国際博覧会協会は13日、会場の東ゲートに入場に必要なチケットのQRコードを表示するためにWi-Fiを準備すると発表した。</description>
<pubDate>Mon, 14 Apr 2025 11:02:00 +0900</pubDate>
</item>
<item>
<title>世界量子デーのGoogleロゴは「量子重ね合わせ」理解を助けるGIF動画</title>
<link>https://www.itmedia.co.jp/news/articles/2504/14/news077.html</link>
<description>Googleロゴが記念日に変わる「Doodle」。4月14日は「世界量子デー」を記念し、ソーマトロープでGoogleロゴを表現したGIF動画が公開された。</description>
<pubDate>Mon, 14 Apr 2025 09:50:00 +0900</pubDate>
</item>

..... 省略

</channel>
</rss>
=== RSS Feed End ===


④ライブドアニュース **********************************************************************************

WiFi connecting..... connected!
192.168.1.147
Connecting to news.livedoor.com...
=== RSS Feed Start ===
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<atom:link href="https://news.livedoor.com/rss/topics/top.xml" rel="self" type="application/rss+xml" />
<language>ja</language>
<title>ライブドアニュース - 主要トピックス</title>
<link>https://news.livedoor.com</link>
<generator>https://news.livedoor.com</generator>
<description>ライブドアニュース - 主要トピックス</description>
<lastBuildDate>Mon, 14 Apr 2025 14:53:27 +0900</lastBuildDate>
<item>
<title><![CDATA[男性が女性の人命救助でAED使用に批判…現役アイドルが悲嘆の声]]></title>
<link>https://news.livedoor.com/article/detail/28553668/</link>
<description><![CDATA[
<a href="https://news.livedoor.com/article/detail/28553668/">記事を読む</a>]]>
</description>
<mobile>1</mobile>
<pubDate>Mon, 14 Apr 2025 14:17:01 +0900</pubDate>
<guid>https://news.livedoor.com/article/detail/28553668/</guid>
<enclosure url="https://image.news.livedoor.com/newsimage/stf/7/7/77bfd_1399_0996c268_31141a52.jpg" type="image/jpeg" length="0" />
</item>
<item>
<title><![CDATA[「ビックリするくらい酒強いやん」千鳥・大悟が井桁弘恵の酒豪っぷり明かす]]></title>
<link>https://news.livedoor.com/article/detail/28550408/</link>
<description><![CDATA[
<a href="https://news.livedoor.com/article/detail/28550408/">記事を読む</a>]]>
</description>
<mobile>1</mobile>
<pubDate>Mon, 14 Apr 2025 00:00:00 +0900</pubDate>
<guid>https://news.livedoor.com/article/detail/28550408/</guid>
<enclosure url="https://image.news.livedoor.com/newsimage/stf/8/c/8cbe6_1585_664b9399cd232f6565b585f33c76d8d2.jpg" type="image/jpeg" length="0" />
</item>

..... 省略

</channel>
</rss>
=== RSS Feed End ===


3.各サイト、主要なカテゴリごとに分かれていますので、必要に応じてご利用ください。
  サイト利用については、個人利用の範囲で自己責任で参考にして下さい。

①Yahooニュース ***************************************************************************************
 Yahoo!ニュースのRSSフィードは、以下のURLで提供されています。 

### **Yahoo!ニュース 主要RSSフィード**  
- **トップニュース(主要ヘッドライン)**  /rss/topics/
  `https://news.yahoo.co.jp/rss/topics/top-picks.xml`  

- **国内ニュース**  
  `https://news.yahoo.co.jp/rss/topics/domestic.xml`  

- **国際ニュース**  
  `https://news.yahoo.co.jp/rss/topics/world.xml`  

- **経済ニュース**  
  `https://news.yahoo.co.jp/rss/topics/business.xml`  

- **エンタメ・芸能ニュース**  
  `https://news.yahoo.co.jp/rss/topics/entertainment.xml`  

- **スポーツニュース**  
  `https://news.yahoo.co.jp/rss/topics/sports.xml`  

- **IT・科学ニュース**  
  `https://news.yahoo.co.jp/rss/topics/it.xml`  

- **地域ニュース**  
  `https://news.yahoo.co.jp/rss/topics/local.xml`  

### **注意点**  
- 最新情報は[Yahoo!ニュース公式サイト](https://news.yahoo.co.jp/)で確認してください。 


②NHKニュース *****************************************************************************************
 NHKニュースのRSSフィードは以下のURLで提供されています。

### NHKニュース主要RSSフィード
- **NHKニュース トップニュース**
  `https://www.nhk.or.jp/rss/news/cat0.xml`

- **主要ニュース**
  `https://www.nhk.or.jp/rss/news/cat1.xml`

- **社会ニュース**
  `https://www.nhk.or.jp/rss/news/cat2.xml`

- **政治ニュース**
  `https://www.nhk.or.jp/rss/news/cat3.xml`

- **経済ニュース**
  `https://www.nhk.or.jp/rss/news/cat4.xml`

- **国際ニュース**
  `https://www.nhk.or.jp/rss/news/cat5.xml`

- **スポーツニュース**
  `https://www.nhk.or.jp/rss/news/cat6.xml`

- **科学・文化ニュース**
  `https://www.nhk.or.jp/rss/news/cat7.xml`

- **最新15項目ニュース**
  `https://www.nhk.or.jp/rss/news/cat8.xml`

- **最新15項目ニュース**
  `https://www.nhk.or.jp/rss/news/cat9.xml`
  
### 注意点
- NHKのRSSフィードは無料で利用可能ですが、コンテンツの著作権はNHKに帰属します。
最新情報は[NHKニュース公式サイト](https://www3.nhk.or.jp/news/)でご確認ください。

NHKは信頼性の高いニュースソースとして知られており、
これらのRSSフィードを活用することで最新情報を効率的に取得できます。


➂ITmediaニュース *************************************************************************************
 ITmediaの主要なRSSフィードは以下の通りです。
### ITmedia 主要RSSフィード一覧

#### 【主要カテゴリ】
- **ITmedia 総合トップ**  
  `https://rss.itmedia.co.jp/rss/2.0/itmedia_all.xml`

- **ITmedia NEWS(総合ITニュース)**  
  `https://rss.itmedia.co.jp/rss/2.0/news_bursts.xml`

- **エンタープライズ(企業IT)**  
  `https://rss.itmedia.co.jp/rss/2.0/enterprise.xml`

- **ビジネス(ITビジネス)**  
  `https://rss.itmedia.co.jp/rss/2.0/business.xml`

#### 【技術系カテゴリ】
- **モバイル(スマホ/通信)**  
  `https://rss.itmedia.co.jp/rss/2.0/mobile.xml`

#### 【セキュリティ/ネットワーク】
- **Security(セキュリティ)**  
  `https://rss.itmedia.co.jp/rss/2.0/security.xml`

#### 【その他専門分野】
- **ゲーム/エンタメ**  
  `https://rss.itmedia.co.jp/rss/2.0/games.xml`

### 注意事項
1. 最新情報は[ITmedia公式サイト](https://www.itmedia.co.jp/)で確認してください
2. 記事全文を表示するにはサイト訪問が必要な場合があります
3. 商用利用の際は利用規約を確認してください

ITmediaは日本を代表するIT専門メディアで、特に技術者やITプロフェッショナル向けの深い内容が特徴です。
RSSリーダーに登録すれば、効率的に最新情報を追跡できます。


④ライブドアニュース **********************************************************************************
 ライブドアニュース(livedoor NEWS)のRSSフィードは、以下のURLで提供されています。  

### **ライブドアニュース 主要RSSフィード**  
- **トップニュース**  
  `http://news.livedoor.com/topics/rss/top.xml`  

- **国内ニュース**  
  `http://news.livedoor.com/topics/rss/dom.xml`  

- **国際ニュース**  
  `http://news.livedoor.com/topics/rss/int.xml`  

- **IT・経済ニュース**  
  `http://news.livedoor.com/topics/rss/eco.xml`  

- **エンタメ・芸能ニュース**  
  `http://news.livedoor.com/topics/rss/ent.xml`  

- **スポーツニュース**  
  `http://news.livedoor.com/topics/rss/spo.xml`  

### **その他のカテゴリ**  
- **科学・医療**  
  `http://news.livedoor.com/topics/rss/sci.xml`  

- **地域ニュース**  
  `http://news.livedoor.com/topics/rss/loc.xml`  

### **注意点**  
 最新の情報は[ライブドアニュース公式サイト](https://news.livedoor.com/)で確認してください。  


*******************************************************************************************************

4.下記は、RSS feedの中からタイトルだけを抽出するスケッチです。
  (保障なしの自己責任で参考までに)
//get_news_v2.ino
//V2025/04/21 by JK1VCK
//blog URL:https://gijin77.blog.jp/archives/44314639.html

#include <WiFi.h>
#include <WiFiClientSecure.h>

//Yahooニュース: https://news.yahoo.co.jp/rss/topics/top-picks.xml
//NHKニュース: https://www3.nhk.or.jp/rss/news/cat0.xml
//ITmedia: https://rss.itmedia.co.jp/rss/2.0/news_bursts.xml
//livedoor: http://news.livedoor.com/topics/rss/top.xml

//ニュースサイトを選択する
//#define    yahoo    //Yahooニュース:
#define    nhk      //NHKニュース
//#define    itmedia  //ITmedia
//#define    livedoor //livedoor:

#if defined(yahoo)
  const char* host = "news.yahoo.co.jp";
  const char* path = "/rss/topics/top-picks.xml";
#elif defined(nhk)
  const char* host = "www3.nhk.or.jp";
  const char* path = "/rss/news/cat0.xml";
#elif defined(itmedia)
  const char* host = "rss.itmedia.co.jp";
  const char* path = "/rss/2.0/news_bursts.xml";
#elif defined(livedoor)
  const char* host = "news.livedoor.com";
  const char* path = "/topics/rss/top.xml";
#endif
const int httpsPort = 443;

const char* ssid = "IO_Net_2G";
const char* password = "1234567890";

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

  WiFi.begin(ssid, password);
  Serial.print("WiFi connecting");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(" connected!");
  Serial.println(WiFi.localIP());

  WiFiClientSecure client;
  client.setInsecure();  // 一時的に証明書チェックを無効化

  Serial.printf("Connecting to %s...\n", host);
  if (!client.connect(host, httpsPort)) {
    Serial.println("Connection failed!");
    return;
  }

  client.printf("GET %s HTTP/1.1\r\n", path);
  client.printf("Host: %s\r\n", host);
  client.println("User-Agent: ESP32RSSClient");
  //client.println("Connection: close\r\n"); //これを書くとNHKがすぐに切断する
  client.println();
  Serial.println("=== RSS Feed Start ===");
 
bool isBody = false;
unsigned long timeout = millis();
String titleTag = "<title>";
String titleEnd = "</title>";

  while ((millis() - timeout) < 2000) {  // タイムアウトを2秒にする
    while (client.available()) {
      String line = client.readStringUntil('\n');
      line.trim();
      if (!isBody && line.length() == 0) {
        isBody = true;
        continue;
      }
      if (isBody) {
        if (line.startsWith(titleTag)) {
          String title = line.substring(titleTag.length(), line.indexOf(titleEnd));
          Serial.println("Title: " + title);
           // LCDに表示したい処理へ
        }
        //Serial.println(line);
      }
      timeout = millis();  // データが来たらタイムアウトリセット
    }
    if (!client.connected()) break;
  }
  client.stop();  // ←ここで明示的に切るのはOK
  Serial.println("=== RSS Feed End ===");
}

void loop() {
}

 ②実行時のシリアル出力

 nhk_news_title

5.上記の中でNHKを液晶画面へ表示してみました。
 詳しくは、下記ブログ内記事を参照して下さい。
・JC1060P470C(ESP32P4 ESP32C6 搭載) ArduinoIDE環境でNHK RSSニュース表示してみた

 jc1060p470_News-1


以上


ブログトップへ

◆1.9 インチ IPS TFT ディスプレイ画面(170x320)6個を使ってニキシー管時計もどきを
 作ってみました。
 以前「ニキシー管時計もどき」を数種のLCD付ESP32ボードで表示させていました。
 下記ブログ内記事参照
 ・「ニキシー管時計もどき」を数種のLCD付ESP32ボードで表示させてみた

 今回もっとニキシー管時計に近づけようと一桁ずつ表示させるLCDをビンの中に組み入れて
 みました。
 なかなかかっこいいなと自己満足しています。
 

 nixie-00

1.材料
 ① ニキシー管用ビン
  まずは、かっこ良さそうなビンを100均で探しましたが、中々見つかりませんでした。
  色々探していて、見つけたのが「CHOYA 本格梅酒50ml」です。試しに一本買ってみました。
  値段も税込106円で100均より安いでした。
  これが、調度1.9インチのLCDがぴったり入り最適でした。
 choya
  
 ②TFT ディスプレイ画面
  当初11.9inch_ESP32-1732S019を使おうと考えていたのですが、6個必要なので高額に
 なる為、LCDだけの1.9インチパネルを採用しました。下記で購入
  Estardyn 1.9 インチ IPS フルアングル TFT ディスプレイ画面 LCD スクリーンカラー
  ディスプレイモジュール SPI シリアルポート高精細 170x320


 ➂台座の木材等等(100均で購入)
 台座部品

 ④使用のESP32S3は、下記ブログ内記事を参照して下さい。
 ・ESP32-S3 Super Mini でLチカしてみた

 ⑤WS2812B ネオピクセルLEDテープ(15個使用)
  手持ちの物を使用

2.接続図
 ①最初2個、別々に配線してテストしました。リセットも含め上手く動作しました。
  しかし、6個となると配線本数が多く大変そうでしたし、GPIOも足らなくなりますので
  出来るだけ本数を減らすようにパラ接続としました。CSを除いて全てパラ接続としてい
  ます。
 ②リセットもパラの為、うまく初期化出来ません。色々試して初期化を2回実施することで
  解決出来ました。
 nixie_tube_clock_6t回路図

2.製作途中の様子
 ①実験中
 nixie-01
 
 ②台座製作(ボンド接着)
 nixie-10
 
 ➂接着後上面
 nixie-11
 
 ④接着後裏面
 nixie-12
 
 ⑤ニス塗後
 nixie-13
 
 ⑥ビンの仮配置
 nixie-14
 
 ⑦液晶の仮配置1
 nixie-15
 
 ⑧液晶の仮配置2
 nixie-16
 
 ⑨完成後の裏面
 nixie-17
 
 ➉完成後
 nixie-00

3.開発環境 2025/04/10時点
  ①Windows11 X64 Pro 24H2 
  ②Arduino IDE 2.3.5
  ➂ESP32ボードバージョンV3.1.3
  ④Arduino_GFX_Library(GFX Library for Arduino v1.5.6)

4.スケッチ
 ①初音ミクのイメージ(img_miku.h)
 ②ニキシー管イメージのデータ(img_nixie_tube.h)
 ➂Skyzooロゴイメージ(img_skyzoo.h)
 ④本体スケッチ(nixie_tube_clock_6t.ino)

 下記よりzipファイルをダウンロード出来ます。↓↓
  (保障無しの自己責任で)  nixie_tube_clock_6t.zip

5.動作の様子
 


以上 ニキシー管もどきの時計ができました。


ブログトップへ



以上の内容はhttps://gijin77.blog.jp/archives/2025-04.htmlより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14