Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 1 year has passed since last update.

M5Stackでカレンダータイマー制御

0
Last updated at Posted at 2023-04-27

image.png
https://youtu.be/2mpj9W_0QJ8
https://youtu.be/cZc49YqLtic

M5StickCPlusをスマホから遠隔操作したい話(Webサーバ)

M5Stick SD読み込み M5Stack+M5Unified

M5Unified入門 その1 概要確認

Core2でも動きます

image.png

image.png
image.png
image.png

M5Stick Bluetooth相互通信

Wi-Fi接続とBluetooth接続トラブル

Wi-Fi接続とBluetooth接続は独立した通信プロトコルですが、
ESP32(M5Stackの基盤)では、
Wi-FiとBluetoothの両方が同じ無線チップを共有しています。
このため、以下の理由でWi-Fi接続ができないとBluetooth接続が影響を受けることがあります。

  1. 無線チップのリソースの競合
    ESP32の無線チップは、Wi-FiとBluetoothの両方をサポートしていますが、リソースを共有しているため、片方の通信が正しく動作しないと、もう片方も影響を受ける可能性があります。例えば、Wi-Fiが不安定だったり、接続が失敗すると、Bluetoothの通信が失敗する可能性があります。
  2. 電力供給の問題
    Wi-Fi接続に失敗した場合、ESP32が再試行を繰り返すことで電力消費が増加し、その結果、Bluetoothの接続に必要なリソースが不足する場合があります。これは特にバッテリー駆動の環境で顕著です。
  3. ESP32の動作モードの影響
    ESP32には「デュアルモード」があり、Wi-FiとBluetoothが同時に動作するモードです。このモードが正しく機能しない場合、Wi-Fi接続に失敗するとBluetoothの機能も正しく動作しないことがあります。
  4. ソフトウェアのバグや設定の問題
    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

image.png

M5Stack dmx512シリアル入力?

image.png

image.png

# ソケットモジュールをインポート
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日間

image.png

ケース安価で出来ました

image.png

参考資料

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?