
https://youtu.be/2mpj9W_0QJ8
https://youtu.be/cZc49YqLtic
M5StickCPlusをスマホから遠隔操作したい話(Webサーバ)
M5Stick SD読み込み M5Stack+M5Unified
M5Unified入門 その1 概要確認
Core2でも動きます
M5Stick Bluetooth相互通信
Wi-Fi接続とBluetooth接続トラブル
Wi-Fi接続とBluetooth接続は独立した通信プロトコルですが、
ESP32(M5Stackの基盤)では、
Wi-FiとBluetoothの両方が同じ無線チップを共有しています。
このため、以下の理由でWi-Fi接続ができないとBluetooth接続が影響を受けることがあります。
- 無線チップのリソースの競合
ESP32の無線チップは、Wi-FiとBluetoothの両方をサポートしていますが、リソースを共有しているため、片方の通信が正しく動作しないと、もう片方も影響を受ける可能性があります。例えば、Wi-Fiが不安定だったり、接続が失敗すると、Bluetoothの通信が失敗する可能性があります。 - 電力供給の問題
Wi-Fi接続に失敗した場合、ESP32が再試行を繰り返すことで電力消費が増加し、その結果、Bluetoothの接続に必要なリソースが不足する場合があります。これは特にバッテリー駆動の環境で顕著です。 - ESP32の動作モードの影響
ESP32には「デュアルモード」があり、Wi-FiとBluetoothが同時に動作するモードです。このモードが正しく機能しない場合、Wi-Fi接続に失敗するとBluetoothの機能も正しく動作しないことがあります。 - ソフトウェアのバグや設定の問題
Wi-FiとBluetoothを同時に使用する場合、正しい初期化と設定が必要です。Wi-Fi接続の失敗が、何らかのソフトウェアバグや設定ミスによってBluetooth機能に影響を与えることも考えられます。
解決策
Wi-FiとBluetoothの初期化順序を見直す
Wi-Fiの初期化が失敗した場合でも、Bluetoothが影響を受けないように、Bluetoothを先に初期化するか、両者の初期化が競合しないように注意する。
デバッグログの確認
Wi-Fi接続が不要な場合、Wi-Fiを無効にするか、Bluetoothを優先的に使用する設定を検討する
設定例
Wi-Fi接続が不要な場合、ESP32でWi-Fiを無効にし、
Bluetoothを優先的に使用する設定を行う方法について説明します。
これにより、Bluetooth通信の安定性が向上することが期待できます。
Wi-Fiを無効にする方法
ESP32でWi-Fiを無効にしてBluetoothを使用する設定は簡単です。Wi-Fi機能を無効にするには、WiFi.mode(WIFI_OFF); を使用します。
以下は、Wi-Fiを無効にしてBluetooth通信のみを行う例です。
例: Wi-Fiを無効にしてBluetoothを使用する
#include <M5Stack.h>
#include <BluetoothSerial.h>
#include <WiFi.h> // Wi-Fi制御のためのライブラリ
BluetoothSerial SerialBT;
void setup() {
M5.begin();
Serial.begin(115200);
// Wi-Fiを無効にする
WiFi.mode(WIFI_OFF);
btStop(); // BLEを無効にする(もしBLEを使用していない場合)
// Bluetoothを初期化
SerialBT.begin("M5Stack_BT"); // Bluetoothデバイス名を設定
M5.Lcd.println("Bluetooth Started. Wi-Fi is off.");
}
void loop() {
M5.update();
if (M5.BtnA.wasPressed()) {
String message = "Hello from M5Stack!";
SerialBT.println(message);
M5.Lcd.println("Sent: " + message);
}
// Bluetooth接続待機
if (SerialBT.available()) {
String incomingMessage = SerialBT.readString();
M5.Lcd.println("Received: " + incomingMessage);
}
delay(100);
}
コードの説明
Wi-Fiの無効化 (WiFi.mode(WIFI_OFF);):
この行で、ESP32のWi-Fi機能を完全にオフにします。これにより、Wi-Fi関連のリソースが解放され、Bluetoothにリソースを割り当てることができます。
Bluetoothの初期化 (SerialBT.begin("M5Stack_BT");):
Wi-Fiを無効にした後、Bluetooth通信を開始します。
Bluetooth通信のみを行うループ処理:
ボタンAが押されたときに、Bluetooth経由でメッセージを送信します。
受信したメッセージはLCDに表示されます。
BLE(Bluetooth Low Energy)を無効にする
もしBLE機能も使っていない場合は、btStop() を使用してBLEも無効にすることができます。これにより、さらにリソースが節約されます。
btStop(); // BLEを無効にする
これを WiFi.mode(WIFI_OFF); の後に追加することで、BLEも無効にすることができます。
結論
Wi-Fi接続が不要な場合にWi-Fiを無効にすることで、ESP32のリソースを効率的に使用し、Bluetooth通信の安定性を高めることができます。この設定は、Bluetooth通信を優先的に使用したい場合に特に有効です。
WebブラウザによるM5StickCの設定機能の実装 テストプログラム
M5Module-LAN
ESP32 において NTP の時刻同期を捕まえて RTC を更新する < 4. SNTP >
NTP クライアント(装置本体の時刻を合わせる)の設定は、関数 configTZtime() で行います。ネットワークに関するなんらかの処理が事前に必要な模様で、例えば WiFi.begin() を実行しておかないと実行時にエラーとなりリブートを繰り返すことになりました。WiFi.begin() 相当の処理を一度実行すれば、その後 WiFi.disconnect(true, true) として Wi-Fi インタフェースが見えなくなった状態でも、configTZTime() はエラーになりません。(※その後、改善されたかは未確認です。)
WIZnet ioLibrary NTPの不具合
https://x.com/lonely_somen/status/1774774465337167969
手乗りロボット「スタックチャン」
またまた 新規格 いいね!
M5Stack 数年ぶりに再開してらすっかり忘れてました。再学習覚書します
M5Stack Basic 「Stack-4MB」を選択
M5Burner/LovyanLauncher
M5Core RTC UIFlow
UIFlow Block Maker カスタム・ブロック
UIFlow UDP
M5Stack dmx512シリアル入力?
# ソケットモジュールをインポート
import socket
# ソケットオブジェクトを作成
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 送信先のIPアドレスとポート番号を指定
host = "192.168.0.1" # Art-netデバイスのIPアドレス
port = 6454 # Art-netのポート番号
# Art-netパケットの構造に従ってデータを作成
data = b"Art-Net\x00\x00\x50" # ヘッダー部分(ID + OpCode)
data += b"\x00\x0e" # プロトコルバージョン(14)
data += b"\x00\x00" # シーケンス番号 + フィジカルポート
data += b"\x00\x01" # Subnet + Universe
data += b"\x02\x00" # DMXデータ長(512)
data += bytes(range(256)) * 2 # DMXデータ(0~255の値を繰り返す)
# データを送信
s.sendto(data, (host, port))
# ソケットを閉じる
s.close()
最安値購入 送料込み 3/19注文 到着 3/25 6日間
ケース安価で出来ました
参考資料








