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


◆Wiiリモコンには、4つのLEDがあります。
 これをESP32とBluetoothで接続してLチカしてみました。 

w-1
 
 動作確認環境(2020/02/23時点)
  ①Windoes11 Pro x64
  ②Arduino IDE V1.8.19
  ➂ESP32ライブラリV2.0.2
  ④下記Wiimoteライブラリ

1.まずライブラリを、下記よりZIPファイルをダウンロードして、
   Arduino IDEのライブラリフォルダに解凍します。
   私は、「Arduino-ESP32Wiimote-master」から「Arduino-ESP32Wiimote」にリネームしました。
   bigw00d/Arduino-ESP32Wiimote

   これで、付属のサンプルプログラムでWiiリモコンの各ボタンのテストが出来ます。
   しかし、このままでは、4つのLEDが制御出来ません。

2.4つのLEDを制御するために、先ほど解凍した「Arduino-ESP32Wiimote」フォルダの
  中の次の4つのライブラリを追記修正します。
  ①ESP32Wiimote.cpp
  ②ESP32Wiimote.h
  ➂TinyWiimote.cpp
  ④TinyWiimote.h

  ここで使っているファイル比較ソフト「WinMerge」は、下記でダウンロード出来ます。
  「WinMerge」2つのテキストの異なる点を色分け表示 - 窓の杜

 ◆左側が追加修正部分、右側が原本です。画像をクリックすると拡大されます。
 ①「ESP32Wiimote.cpp」の修正箇所
w-11

w-12

 ②「ESP32Wiimote.h」の修正箇所
w-13

 ➂「TinyWiimote.cpp」の修正箇所
w-14

w-15

w-16

w-17

w-18

w-20

  ④「TinyWiimote.h」の修正箇所
w-21

3.修正したら下記の「ESP32WiimoteLED.ino」ファイルをコンパイルしESP32に書き込みます。
 動作は、
 ①Wiiリモコンの「A」釦を押す毎に、ESP32の青色LEDがON/OFFします。
 ②「+」釦を押す毎に4つのLEDが二進表示で増えて点灯します。
 ➂「-」釦を押す毎に4つのLEDが二進表示で減って点灯します。
 ④「ホーム」釦を押すと4つのLEDが全部消灯します。

#include "ESP32Wiimote.h"
#define LED 2
ESP32Wiimote wiimote;
int i=1;
void setup(){
    Serial.begin(115200);
    Serial.println("Wiimote Start");
    pinMode(LED, OUTPUT);
    wiimote.init();
    wiimote.addFilter(ACTION_IGNORE, FILTER_NUNCHUK_ACCEL);
}

void loop(){
  wiimote.task();
  if (wiimote.available() > 0) {
      uint16_t button = wiimote.getButtonState();
      Serial.printf("%04x\n", button);
      if (button == ESP32Wiimote::BUTTON_A) {
        Serial.println("A button ON");
        if (digitalRead(LED)) {
          digitalWrite(LED, LOW); 
        } else {
          digitalWrite(LED, HIGH); 
        }
      } else if (button == ESP32Wiimote::BUTTON_PLUS) {
        Serial.println("PLUS button ON");
        i++;if (i>15) i=0;
        wiimote.setLEDs(i);

      } else if (button == ESP32Wiimote::BUTTON_MINUS) {
        Serial.println("MINUS button ON");
        i--;if (i<0) i=15;
        wiimote.setLEDs(i);

      } else if (button == ESP32Wiimote::BUTTON_HOME) {
        Serial.println("HOME button ON");
        wiimote.setLEDs(0);
        i=0;
       }

/*    ヌンチャクを試験する時は、コメントを取る 
      NunchukState nunchuk = wiimote.getNunchukState();
      Serial.printf("nunchuk:");
      Serial.printf(" X-Stick: %d", nunchuk.xStick);
      Serial.printf(" Y-Stick: %d", nunchuk.yStick);
      Serial.printf(" X-Axis: %d", nunchuk.xAxis);
      Serial.printf(" Y-Axis: %d", nunchuk.yAxis);
      Serial.printf(" Z-Axis: %d", nunchuk.zAxis);
      Serial.printf(" C-Button: %02x", nunchuk.cBtn);
      Serial.printf(" Z-Button: %02x", nunchuk.zBtn);
      Serial.printf("\n");
*/      
  }
  delay(10);
}


4.ESP32をリセット後、Wiiリモコンの①②を同時に押し、4つのLEDを点滅させます。
 しばらくすると、左の1個だけ点灯に代わりコネクトできます。
 途中でコネクトする前に消灯したらまた①②を同時に押してコネクトするのを待ちます。

 下記は、コネクト時のWiiリモコンの状態(左の1個だけ点灯)
w-3

 下記は、リセット、コネクト後、「+」「-」など操作時のシリアルモニタの画面です。
w-8

5.次にあとヌンチャクを接続した時に有用なライブラリです。
 先ほどのライブラリにヌンチャクに関して強化したものです。
 hrgraf/ESP32Wiimote

w-5

6.下記は、Wiiリモコンに関連が有りそうな参考URLです。

 ①bluetooth-HID応用例(wiiリモコン)
 ②HCIプロトコル
 ➂HCIプロトコルによる接続
 ④Bluetooth
 ⑤L2CAP(プロトコル)によるチャンネルの確保
 ⑥HCI (Bluetooth)
 ⑦L2CAP
 ⑧PIC24FJ64GB002

以上


ブログトップへ

今日2/22は2が3つで「猫の日」だそうですが、年も入れると今年は800年ぶりに
2が6つになるそうです。2が7つになるのは200年後のようです。
以前ESP32で作っていた天気予報表示で2が並んだ瞬間の写真撮りました。
秒まで入れると見事に12個並びました。

S__48119843

◆興味ある方は、下記ブログ内リンクを参照してシステム構築してください。  ・ESP32 で Yahooニュース 天気予報他 をビデオ出力してみた
 ・ESP32 で 天気予報/温湿度 などを ビデオ 出力してみた(その二)
 ・ESP32 で 温湿度気圧 などを ビデオ 出力してみた(その一)


ブログトップへ

◆以前からの天気予報に追加してYahooニュースもビデオ出力してみました。

 ①yahooニュース(主要)を表示しているところ
y-1

 ②天気予報を文字にて表示しているところ
y-2

 ➂天気予報を天気マークで表示しているところ
y-3

 ④yahooニュース(国内)を表示しているところ
y-4

 ⑤起動時の画面
y-5

1.まずは、下記ブログ内リンクを参照して天気予報システムを構築します。
  ・ESP32 で 天気予報/温湿度 などを ビデオ 出力してみた(その二)



2.下記を参照して、「Yahoo! Japan RSSニュース、ルート証明書」を取得し、
  プログラムを修正します。先人に感謝します。
  Arduino – ESP32 WiFiClientSecure ライブラリで、安定して https ( SSL )記事をGETする方法

  あと、WiFiのSSID,パスワード、天気予報用のAPIキーを修正します。

3.次に下記をコンパイルしESP32へ書き込みます。
  (保障無しの自己責任で)  esp32tenkinews.ino

4.プログラム解読用の参考として

 ①10秒間隔で、天気予報(文字表示)-> 天気予報(マーク表示) -> Yahooニュース 
                    ↑                             ↓
          ------------------------------------------------------------------------------------------
  を繰り返し表示します。

 ②yahooニュースは、「主要」「国内」「国際」「経済」「エンタメ」
   「スポーツ」「IT」「科学」「地域」を繰り返し表示します。

 ➂温度、湿度、気圧センサーは、10秒毎に取得します。

 ④yahooニュースは、10分毎に取得します。

 ⑤6時間毎の天気予報は、1時間毎に取得します。この時、esp32をリスタートさせています。
  理由は、ビデオ出力用にRAM領域を多く使用しているので、天気予報用のワークエリアが
  足らずに、CPUがパニックを起こしリセットされ為にあえてリスタートさせています。

以上


ブログトップへ

◆ダイソーでテトリスゲームほか(全23ゲーム)が330円で売っていましたので、
 つい買ってしまいました。LCDはモノクロでした。
 なにか部品取り出来ないか分解してみました。
t-1

t-2

t-3

t-4

以上

ブログトップへ

◆ESP32を使っていて不具合が発生した時のために、新しく購入した時の状態を複製しておけば
 すんなり元の状態に戻すことが出来ます。
 又は、同じスケッチを複数台に書き込むとき、わざわざコンパイルしなくても複製できます。
 今回ESP_8_bitを書き込んた後に、不具合が出ましたので元の状態に戻しました。
 
 その方法をメモしておきます。
  OSは、windows11 Pro x64です。
 ◆pythonは、先にインストールしておいてください。
esp32

1.下記より「esptool」のzipファイルをダウンロードし、適当なフォルダ(例:「c:\esptool」)
  に解凍します。
   https://github.com/espressif/esptool

2.コマンドブロンプトを開き、「c:\esptool」へ移動します。
  2022/07/06 追記
 フラッシュROMの消去コマンドを下記に示します。
c:\esptool>esptool.py --chip esp32 --port COM3 --baud 115200 erase_flash 

 ①下記コマンドを実行します。

c:\esptool>esptool.py --chip esp32 --port COM3 --baud 115200 read_flash 0 0x400000 ESP32_20220211.bin
Pyserial is not installed for C:\Users\yoshito\AppData\Local\Programs\Python\Python39\python.exe. Check the README for installation instructions.
Traceback (most recent call last):
  File "C:\esptool\esptool.py", line 27, in <module>
    import serial
ModuleNotFoundError: No module named 'serial'

 ②ここで、上記エラーが出た場合、下記コマンドで「pyserial」をインストールします。

c:\esptool>pip install pyserial
Collecting pyserial
  Using cached pyserial-3.5-py2.py3-none-any.whl (90 kB)
Installing collected packages: pyserial
Successfully installed pyserial-3.5
WARNING: You are using pip version 21.2.4; however, version 22.0.3 is available.
You should consider upgrading via the 'c:\users\yoshito\appdata\local\programs\python\python39\python.exe -m pip install --upgrade pip' command.


 ➂再度、初めのコマンドを実行します。

c:\esptool>esptool.py --chip esp32 --port COM3 --baud 115200 read_flash 0 0x400000 ESP32_20220211.bin
esptool.py v3.3-dev
Serial port COM3
Connecting.....
Chip is ESP32-D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 78:e3:6d:18:53:e8
Uploading stub...
Running stub...
Stub running...
4194304 (100 %)
4194304 (100 %)
Read 4194304 bytes at 0x0 in 378.8 seconds (88.6 kbit/s)...
Hard resetting via RTS pin...

めでたく、ファームウェアのバックアップファイルが出来ました。

c:\esptool>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 59E1-6080 です

 c:\esptool のディレクトリ

2022/02/11  17:13    <DIR>          .
2022/02/08  18:34    <DIR>          .github
2022/02/08  18:34               112 .gitignore
2022/02/08  18:34             9,750 .gitlab-ci.yml
2022/02/08  18:34    <DIR>          build_tools
2022/02/08  18:34             5,208 CONTRIBUTING.rst
2022/02/08  18:34    <DIR>          docs
2022/02/08  18:34             5,978 espefuse.py
2022/02/08  18:34    <DIR>          espressif
2022/02/08  18:34            44,231 espsecure.py
2022/02/08  18:34           267,341 esptool.py
2022/02/08  18:34             9,902 esp_rfc2217_server.py
2022/02/08  18:34    <DIR>          flasher_stub
2022/02/08  18:34            18,092 LICENSE
2022/02/08  18:34               246 MANIFEST.in
2022/02/11  17:13         4,194,304 ESP32_20220211.bin
2022/02/08  18:34             1,371 README.md
2022/02/08  18:34             1,070 setup.cfg
2022/02/08  18:34             4,609 setup.py
2022/02/08  18:34    <DIR>          test
              13 個のファイル           4,562,214 バイト
               7 個のディレクトリ  280,938,508,288 バイトの空き領域

④次に不具合のあるESP32へ下記コマンドで書き込みます。又は複数台に複製する時。

c:\esptool>esptool.py --chip esp32 --port COM3 --baud 115200 write_flash 0 ESP32_20220211.bin
esptool.py v3.3-dev
Serial port COM3
Connecting.....
Chip is ESP32-D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 78:e3:6d:18:de:cc
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Flash will be erased from 0x00000000 to 0x003fffff...
Compressed 4194304 bytes to 601146...
Wrote 4194304 bytes (601146 compressed) at 0x00000000 in 66.1 seconds (effective 507.7 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

c:\esptool>

めでたく、不具合のあるESP32へファームウェアの書き込みがが出来ました。

書き込み後の、リセット時の画面表示(購入時と同じものになっています。)
esp32rnew


以上


ブログトップへ



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

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