M5Stamp C3+Arduinoで書き込みができない

M5Stamp C3+Arduinoで久しぶりにプログラムを作成し書き込みをしようとしたところ

Property 'upload.tool.serial' is undefined

とエラーが出て書き込みができません。

Arduinoをアンイストールしたりといろいろを試みましたが、現時点解決方法が見つかりませんでした。
Arduino 1.8.19、2..0.0共に同じ現象です。

他のマイコンでこのエラーが出たことがあること、
arduino-cli.exe が関係していそうなこと、
まではわかりました。

使用しているPC環境固有なのかどうかわかりませんが、記録として残しておきます。

ATOM Liteでは問題は起きていません。

カテゴリー: Arduino関連, Micon関連 | コメントする

Arduino ide 2.0.0 リリース

Arduino ide 2.0.0 の正式版がリリースされました。

モダンな画面になり、使いやすくなりました。

Arduino ide 2.0.0 はVisual Studio Codeが元にTypeScriptで実装された、フリーでオープンソースの統合開発環境フレームワークのEclipse Theiaを用いて開発されているとのことです。

どことなく、Visual Studio Codeの香りが残っている感じです。

Arduino ide 1.x はProcessingをベースとしたJavaアプリケーションでした。

カテゴリー: Android | コメントする

Xiaomi 120W 充電器 MDY-13-EG

Xiaomi 120W 充電器 MDY-13-EG。
この充電器はUSB Type-A ポートを1つ持ち、専用のケーブルでスマホとはUSB Type-C ポートで接続します。

この充電器は本体に刻印で
出力: 5V3A、9V3A、11V6A、20V6A
と表示されています。

Xiaomiの対応スマートフォンに接続すると120W充電できますが、Quick Charge 2.0、Quick Charge 3.0、USB PD 3.0にも対応します。
USB PDでは5V 3A、9V 3A、15V 3A、20V 3.25A 出力となり、最大でも65Wです。

このMDY-13-EGはXiaomiスマートフォン専用の充電器ではなく、汎用的なQuick Charge 2.0、Quick Charge 3.0、USB PD 3.0対応充電器として使用できます。

カテゴリー: その他 | コメントする

ATOM ECHOでESP8266Audio

ブログ等でESP8266Audioの記事を書かれている方は、普通に開発できている様ですが、試したところ簡単にはうまくいかない状況だったので、共有のためにメモとしてこちらに書いておきます。

コンパイル出来ない組み合わせ

  • Arduino 1.8.19
  • ボード : M5Stack 2.0.3
  • ESP8266Audio 1.9.7

この組み合わせでは、コンパイルが終わらなくなってしまいます。
30分ほど放置しましたがCPU負荷がかかったまま完了しませんでした。

コンパイルが出来る組み合わせ

  • Arduino IDE 2.0.0-rc8
  • ボード : M5Stack 2.0.3
  • ESP8266Audio 1.9.7

この組み合わせでは、コンパイルが完了出来ます。

コンパイルには時間がかかり、5分ほどです。
いろいろと試すための再コンパイルに時間がかかるので、この組み合わせでの開発は進みが遅くなります。

カテゴリー: Arduino関連, ESP32 | コメントする

M5Stamp C3+ArduinoのWi-Fi接続不具合3

同じコードでも、バージョン2.0.1で動いていて、バージョン2.0.2以降でコンパイルした場合に接続できなくなる現象を自宅環境では問題解決する事ができましたのでこちらに書いておきます。

以下、Core debug levelをveboseでコンパイルした場合のログです。

[   124][V][WiFiGeneric.cpp:283] _arduino_event_cb(): STA Started
[   124][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 2 - STA_START
[   245][V][WiFiGeneric.cpp:96] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0
[  2297][V][WiFiGeneric.cpp:300] _arduino_event_cb(): STA Disconnected: SSID: xxxxx, BSSID: 00:00:00:00:00:00, Reason: 201
[  2298][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED
[  2306][W][WiFiGeneric.cpp:873] _eventCallback(): Reason: 201 - NO_AP_FOUND
[  2313][D][WiFiGeneric.cpp:889] _eventCallback(): WiFi Reconnect Running
[  2374][V][WiFiGeneric.cpp:96] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0
[  4425][V][WiFiGeneric.cpp:300] _arduino_event_cb(): STA Disconnected: SSID: xxxxx, BSSID: 00:00:00:00:00:00, Reason: 201
[  4426][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 5 - STA_DISCONNECTED
[  4434][W][WiFiGeneric.cpp:873] _eventCallback(): Reason: 201 - NO_AP_FOUND
[  4441][D][WiFiGeneric.cpp:898] _eventCallback(): WiFi AutoReconnect Running
[  4449][V][WiFiGeneric.cpp:96] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0

「Reason: 201 – NO_AP_FOUND」が返ってきて接続できません。
延々と繰り返していきます。

対処方法は

  WiFi.mode(WIFI_STA);

の前に

  WiFi.setMinSecurity(WIFI_AUTH_WPA_PSK);

を入れることにより無線LANの暗号化方式のレベルを下げる指定ができ、この方法でバージョン2.0.3でも接続できる様になりました。
MinSecurityのデフォルト値がバージョン2.0.2以降、WIFI_AUTH_WPA_PSKからWIFI_AUTH_WPA2_PSKに変更になった様です。

[    37][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 0 - WIFI_READY
[   123][V][WiFiGeneric.cpp:283] _arduino_event_cb(): STA Started
[   124][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 2 - STA_START
[   225][V][WiFiGeneric.cpp:96] set_esp_interface_ip(): Configuring Station static IP: 0.0.0.0, MASK: 0.0.0.0, GW: 0.0.0.0
[   432][V][WiFiGeneric.cpp:295] _arduino_event_cb(): STA Connected: SSID: xxxxx, BSSID: 08:10:86:15:f4:de, Channel: 1, Auth: PSK
[   434][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 4 - STA_CONNECTED
[   999][V][WiFiGeneric.cpp:305] _arduino_event_cb(): STA Got New IP:192.168.1.2
[   999][D][WiFiGeneric.cpp:852] _eventCallback(): Arduino Event: 7 - STA_GOT_IP
[  1002][D][WiFiGeneric.cpp:914] _eventCallback(): STA IP: 192.168.1.2, MASK: 255.255.255.0, GW: 192.168.1.1

自宅環境の無線LANアクセスポイントはWPA/WPA2対応の機器、設定ですが、なぜかデフォルトの「WPA_WPA2_PSK」設定では接続が出来ませんでした。

WiFi.setMinSecurity() で指定できる値は、「esp_wifi_types.h」にあります。

typedef enum {
    WIFI_AUTH_OPEN = 0,         /**< authenticate mode : open */
    WIFI_AUTH_WEP,              /**< authenticate mode : WEP */
    WIFI_AUTH_WPA_PSK,          /**< authenticate mode : WPA_PSK */
    WIFI_AUTH_WPA2_PSK,         /**< authenticate mode : WPA2_PSK */
    WIFI_AUTH_WPA_WPA2_PSK,     /**< authenticate mode : WPA_WPA2_PSK */
    WIFI_AUTH_WPA2_ENTERPRISE,  /**< authenticate mode : WPA2_ENTERPRISE */
    WIFI_AUTH_WPA3_PSK,         /**< authenticate mode : WPA3_PSK */
    WIFI_AUTH_WPA2_WPA3_PSK,    /**< authenticate mode : WPA2_WPA3_PSK */
    WIFI_AUTH_WAPI_PSK,         /**< authenticate mode : WAPI_PSK */
    WIFI_AUTH_MAX
} wifi_auth_mode_t;

暗号化種類の中にWAPI_PSK (WLAN Authentication and Privacy Infrastructure (WAPI))もあります。興味深いですね。

カテゴリー: Arduino関連, ESP32 | コメントする

WordPressをバージョンアップ (Version6.0へ)

WordPressをWordPress 6.0にバージョンアップしました。

カテゴリー: WordPress, このサイト全般 | コメントする

ESP32+Arduino+HttpsClient

ESP32+Arduino+HttpsClientで状況がよくわからずハマった事象を書いておきます。

WiFiClientSecure *client = new WiFiClientSecure;
if(client) {
    client -> setCACert(rootCACertificate);
    {
        // Add a scoping block for HTTPClient https to make sure it is destroyed before WiFiClientSecure *client is 
        HTTPClient https;
        Serial.print("[HTTPS] begin...\n");
        if (https.begin(*client, "https://jigsaw.w3.org/HTTP/connection.html")) {  // HTTPS
            Serial.print("[HTTPS] GET...\n");
            // start connection and send HTTP header
            int httpCode = https.GET();
            // httpCode will be negative on error
            if (httpCode > 0) {
                // HTTP header has been send and Server response header has been handled
                Serial.printf("[HTTPS] GET... code: %d\n", httpCode);
                // file found at server
                if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
                    String payload = https.getString();
                    Serial.println(payload);
                }
            } 
            else {
                Serial.printf("[HTTPS] GET... failed, error: %s\n", https.errorToString(httpCode).c_str());
            }

            https.end();
        } 
        else {
            Serial.printf("[HTTPS] Unable to connect\n");
        }
    }
    delete client;
} 
else {
    Serial.println("Unable to create client");
}

元コードはこちら

こんなコードでhttps通信を行おうとしましたが、その時にエラーとして
「[HTTPS] GET… failed, error: connection refused」
が出ました。
root Certificateに問題があるのかと思いましたが、他のスケッチでは動いていたので原因となるのはおかしいと思い、Core debug levelをveboseで実行してみると、原因がわかりました。
エラーメッセージは「connection refused」ですが、ヒープメモリ不足でこのエラーになっていました。

接続先やroot Certificateでも差があると思いますが、https通信を行う直前で

ESP.getFreeHeap()

で、
約60,000ではエラー
約90,000では正常
でした。

HttpsClientはヒープメモリを十分に確保して使いましょう。

カテゴリー: Arduino関連, ESP32 | コメントする

M5Stamp C3+ArduinoのWi-Fi接続不具合2

前回(M5Stamp C3+ArduinoのWi-Fi接続不具合)の続きです。

Arduino ボードマネージャで「M5Stack」のバージョン2.0.2で不具合が発生していました。
最近、2.0.3がリリースされていましたが、このバージョンでも不具合は解消していません。

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, pass);
  Serial.print("\nconnecting...");
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }

こんなコードでも接続が完了出来ません。
何か記述の仕方が変わったのでしょうか…

引き続き2.0.1を使い続けています。

カテゴリー: Arduino関連, ESP32 | コメントする

M5Stamp C3とM5Stamp C3U

M5Stamp C3とM5Stamp C3UはESPRESSIF ESP32-C3 RISC-Vマイコンを搭載するモジュールです。
ESP32-C3はシングルコア、動作クロックも160MHzで、ESP8266の後継の色が濃い様なマイコンです。

M5Stamp C3とM5Stamp C3Uの違いは以下の表の通りです。

モデルマイコンIO数ボタンIOUSBチップUSBインターフェース機能価格
M5STAMP-C3ESP32-C313G3CH9102Download / SerialUS$5.78
M5STAMP-C3UESP32-C314G9Download / JTAG / CDC SerialUS$5.50

価格は5個売りの1個単価としています。

どちらを選ぶかですが、価格差はほぼ無いので、無難なのはUSBチップの乗っている「STAMP-C3」方だと思います。

M5STAMP-C3U でプログラムダウンロードモードに入る方法

  1. M5STAMP-C3Uの電源を切ります
  2. センターボタン(G9)を押したままPCに接続します
  3. USBポートとして認識されればプログラムダウンロードができます

または

センターボタン(G9)を押したままリセットボタンを押すことでもUSBポートとして認識されます

M5Stamp C3U でUSB CDCを有効にする方法

デフォルトではUSB CDC(Universal Serial Bus Communications Device Class)は有効になっていません。C3UのシリアルポートをUSB経由でUART0としてスタートさせるには、IDEを使用してプログラムオプションをダウンロードする前にオプションを有効にしてUSB CDCにしてください。
(Arduinoユーザーはツールメニュー>USB CDC on Boot-Enabledで有効にできます。IDFユーザーはESP IDFオフィシャルドキュメントを参照してください)

カテゴリー: ESP32 | コメントする

日本と世界の日の出日の入り時間(検索式版)の検索不具合

日本と世界の日の出日の入り時間(検索式版)の検索はGoogleのGeocoding APIを使用していますが、利用の方法が変わっており、いつからかわかりませんが、ページとしてうまく機能しない状態になっていました。
ご不便をおかけしていました。

修正を行ったので現在は検索機能も使用できます。

https://www.motohasi.net/SunriseSunset/WorldSunJC.php

カテゴリー: このサイト全般, 更新記録 | コメントする