M5AtomS3にIRが付いている。
M5StickCにも付いていたが、試したことがなかった。
この記事を頼りに進める。
送信するにもコードがわからないことには始まらない。
手元にセンサーキットがあったのでそれを利用する。
使ったことがないのでピン割がまず分からない。
シルク印刷から大体予想はつくがヘタをすると故障してしまうので、ちゃんと確認しないと。
センサーはVS1838Bを使っていて
基板のパターンと照らし合わせるとこのようになる。
M5AtomS3の繋ぐ場所も記載した。
| 基盤シルク | - | S | |
|---|---|---|---|
| 信号名 | GND | VCC | OUT |
| M5AtomS3 | GND | 3V3 | G5 |
Lang-shipにあった様にIRremoteESP8266ライブラリーを使用し、IRrecvDumpV2を元にする。
いつもの様にPlatformioを使用。
platformio.iniは前回のM5AtomS3の例そのままでこの様にした。
[env:ATOMS3]
platform = espressif32@5.2.0
framework = arduino
platform_packages = platformio/framework-arduinoespressif32@^3.20005.220925
board = esp32-s3-devkitc-1
lib_ldf_mode = deep
monitor_speed = 115200
upload_speed = 1500000
board_build.f_cpu = 240000000L
board_build.f_flash = 80000000L
board_build.flash_mode = dio
build_flags =
-DCORE_DEBUG_LEVEL=3
-Iinclude
lib_deps =
crankyoldgit/IRremoteESP8266@^2.8.4
使用する IO を 5 番にする。
const uint16_t kRecvPin = 5;
これでコンパイルができて書き込みができた。
実行してみるとM5Stamp S3の時と同じくシリアル出力がない。
でも大丈夫、M5AtomS3の例に答えがあった。
Serialの代わりにUSBSerialを使用する。

こんな感じで出力される。
IRrecvDump is now running and waiting for IR input on Pin 5
Timestamp : 000007.008
Library : v2.8.4
Protocol : SONY
Code : 0xA90 (12 Bits)
uint16_t rawData[103] = {2438, 552, 1246, 552, 620, 554, 1246, 552, 620, 554, 1246, 554, 622, 554, 620, 552, 1246, 552, 622, 554, 620, 554, 622, 554, 620, 25776, 2446, 552, 1246, 554, 620, 554, 1246, 554, 620, 554, 1244, 554, 620, 554, 620, 554, 1246, 554, 620, 554, 620, 554, 620, 554, 620, 25792, 2446, 554, 1246, 554, 620, 554, 1246, 554, 622, 552, 1246, 552, 620, 554, 620, 554, 1246, 554, 620, 554, 620, 552, 622, 554, 620, 25786, 2446, 552, 1246, 554, 620, 554, 1246, 552, 620, 554, 1246, 554, 620, 554, 622, 552, 1246, 552, 620, 554, 620, 554, 618, 554, 620}; // SONY A90
uint32_t address = 0x1;
uint32_t command = 0x15;
uint64_t data = 0xA90;
下の3行が重要で、その上はパルスの長さを数値にしたものと思われる。
| key | address | command | data |
|---|---|---|---|
| Power | 0x1 | 0x15 | 0xA90 |
| 画面表示 | 0x1 | 0x3A | 0x5D0 |
| 入力切換 | 0x1 | 0x25 | 0xA50 |
| 青 | 0x97 | 0x24 | 0x12E9 |
| 赤 | 0x97 | 0x25 | 0x52E9 |
| 緑 | 0x97 | 0x26 | 0x32E9 |
| 黄 | 0x97 | 0x27 | 0x72E9 |
| 番組表 | 0xA4 | 0x5B | 0x6D25 |
| d | 0x97 | 0x15 | 0x54E9 |
| 戻る | 0x97 | 0x23 | 0x62E9 |
| オプション | 0x97 | 0x36 | 0x36E9 |
| デジタル | 0x97 | 0x32 | 0x26E9 |
| BS | 0x97 | 0x2C | 0x1AE9 |
| 1 | 0x01 | 0x00 | 0x10 |
| 2 | 0x01 | 0x01 | 0x810 |
| 3 | 0x01 | 0x02 | 0x410 |
| 4 | 0x01 | 0x03 | 0xC10 |
| 5 | 0x01 | 0x04 | 0x210 |
| 6 | 0x01 | 0x05 | 0xA10 |
| 7 | 0x01 | 0x06 | 0x610 |
| 8 | 0x01 | 0x07 | 0xE10 |
| 9 | 0x01 | 0x08 | 0x110 |
| 10 | 0x01 | 0x09 | 0x910 |
| 11 | 0x01 | 0x0a | 0x510 |
| 12 | 0x01 | 0x0b | 0xD10 |
| 音量+ | 0x01 | 0x12 | 0x490 |
| 音量- | 0x01 | 0x13 | 0xC90 |
| チャンネル+ | 0x01 | 0x10 | 0x90 |
| チャンネル- | 0x01 | 0x11 | 0x890 |
| 消音 | 0x01 | 0x14 | 0x290 |
とここまで受信ができる様になった。
せっかく画面があるので結果を表示する様にした。

M5AtomS3でIR受信データを確認。IRremoteESP8266のサンプルIRrecvDumpV2を変更していく · GitHub