
ESP8266 を搭載した基板の中でもミニマム構成でコンパクトな ESP-01S を載せて使う、WiFi リレーモジュール がとても安価なのでいくつか買って比較の上、 ESP Easy を使って制御してみました。
LC Technology ESP8266 RELAY
何かのついでに買ったもののずっとジャンク箱の中で熟成されていた本品、間違って12V版を買ってしまったのもあり、私にとっては電源調達が面倒なのも、放置していた遠因でしょう。
以前記事にした、PCをWiFi経由で遠隔起動させるPCIeカードと同じメーカー、LC Technology社のこの製品、製品一覧からはこのリレーモジュールを見つけることが出来ませんが、検索すると必要な情報は簡単に入手することが出来ます。基板の表裏はこのようになっていて、リレーの他に随分と構成部品が多いのが想像に反する印象です。
入手したSchematicによると、12V版と5V版のリレー以外の差異は電源入力前段の12→5Vレギュレータ78M05の有無なようで、ここをバイパスしてリレーを5V用に載せ替えれば、5V電源でも使えるようです。また、基板上の謎のICは、STCマイクロ社のマイコン、STC15F104Wでした。
この手のリレーモジュールはESP-01Sとセット売りになっているのを選べますが(セットでRMB16.88+送料)、このESP-01Sには何も入っていないので、自分で焼く必要が有ります。
今まで使ったことのあるESP-01Sとは微妙に基板上の様子が異なり、SPIフラッシュには容量は同じ8Mbit (=1MByte)ながら、 Paragon社のPN25F08が使われています。esptool.py の検証結果は次の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
$ sudo esptool.py --port /dev/ttyUSB0 --baud 115200 chip_id esptool.py v2.8 Serial port /dev/ttyUSB0 Connecting.... Detecting chip type... ESP8266 Chip is ESP8266EX Features: WiFi Crystal is 26MHz MAC: 5c:cf:7f:##:##:## Uploading stub... Running stub... Stub running... Chip ID: 0x008eefb8 Hard resetting via RTS pin... $ sudo esptool.py --port /dev/ttyUSB0 --baud 115200 flash_id esptool.py v2.8 Serial port /dev/ttyUSB0 Connecting.... Detecting chip type... ESP8266 Chip is ESP8266EX Features: WiFi Crystal is 26MHz MAC: 5c:cf:7f:##:##:## Uploading stub... Running stub... Stub running... Manufacturer: e0 Device: 4014 Detected flash size: 1MB Hard resetting via RTS pin... |
ESP-01S Relay V1.0
5V品を書い直そうとしてた時に見つけたのが、製造元不明のこのESP-01S Relay V1.0でした。これまたこの名前で検索すると多くの情報が得られる定番品です。ESP-01Sとセット価格はRMB9.10、単品ならRMB3.50でした(共に別途送料)。
基板実装品はリレーの他、5→3.3V変換のレギュレータ AMS1117にサージ保護のダイオード、GPIO信号からリレー駆動するためのMOSFET 2N7002という構成で、基板横向きに顔を出しているのはESP-01S用のRSTボタンです。
このリレーモジュールに附属のESP-01Sもまた搭載しているSPIフラッシュが異なり、今度はBright Moon社のT25S80でした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
$ sudo esptool.py --port /dev/ttyUSB0 --baud 115200 chip_id esptool.py v2.8 Serial port /dev/ttyUSB0 Connecting.... Detecting chip type... ESP8266 Chip is ESP8266EX Features: WiFi Crystal is 26MHz MAC: e8:db:84:##:##:## Uploading stub... Running stub... Stub running... Chip ID: 0x00996f0e Hard resetting via RTS pin... $ sudo esptool.py --port /dev/ttyUSB0 --baud 115200 flash_id esptool.py v2.8 Serial port /dev/ttyUSB0 Connecting.... Detecting chip type... ESP8266 Chip is ESP8266EXFeatures: WiFi Crystal is 26MHz MAC: e8:db:84:##:##:## Uploading stub... Running stub... Stub running... Manufacturer: 20 Device: 4014 Detected flash size: 1MB Hard resetting via RTS pin... |
以前、4MBフラッシュへ載せ替え時に使ったwinbond社W25Q80と、これらのSPIフラッシュの間には互換性があるようで、フラッシュメモリの4MB化も問題なさそうです。
上図中のPN25F08とT25S80の4番ピンVssは、データシートの凡例にはGNDと記載されていたので、W25Q80と同じです。
WeMos D1 mini Relay Shield
ちょっと変わり種ですが、ESP8266搭載のWeMos D1 mini 向けにラインナップされているのがこのリレーシールド。搭載部品はリレーの他にサージ保護のダイオードと、GPIO信号からリレー駆動するためのパワートランジスタ J3Yのみと言うミニマル構成。
購入した2016年当時でRMB13もしましたが、現在ではRMB3.50程度で入手可能です(共に送料別)。
ESP Easy 1MB版を焼いて試用
以前の要領に沿って、ESP-01Sに1MB版のESP Easyを焼きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$ ls -l ESP_*.bin -rw-rw-r-- 861568 Feb 23 19:37 ESP_Easy_mega_20210223_normal_ESP8266_1M_VCC.bin $ sudo esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash -fm dio -fs 1MB 0x00000 ./ESP_Easy_mega_20210223_normal_ESP8266_1M_VCC.bin esptool.py v2.8 Serial port /dev/ttyUSB0 Connecting.... Detecting chip type... ESP8266 Chip is ESP8266EX Features: WiFi Crystal is 26MHz MAC: e8:db:84:99:6f:0e Uploading stub... Running stub... Stub running... Configuring flash size... Flash params set to 0x0220 Compressed 861568 bytes to 574870... Wrote 861568 bytes (574870 compressed) at 0x00000000 in 50.6 seconds (effective 136.1 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin... |
焼き終わったらESP-01SをESP-01S Relay V1.0に戻し、適当な5Vを供給して起動させると、初回は自身がAPになっているのでスマホなどのWiFiで「ESP-Easy」と言うSSIDを探して接続。パスワードは今回「configesp」でした(以前は「espconfig」だった記憶が)。ブラウザで、
1 |
http://192.168.4.1/ |
を開き(最近のブラウザはIPアドレスのみの場合、勝手にその前方に「https://」を追加してしまうので注意)、振り向けたいWiFi SSIDの情報を設定すると機器再起動して以降は、WiFiクライアントとして振る舞うはずです。
図07回路図によると、GPIO0でリレーを制御するようなので、ESP Easyより早速制御してみました。
- コマンドの送出: Tools → Command
- 現在の状態確認: Tools → Pin state buffer
この動作はCLIベースで行うことも可能です。curlを使ってESP Easyに対してhttp経由でコマンドを送出すると、JSON形式で結果の戻り値を受け取ることが出来ます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# ON curl http://IP_ADDRESS/control?cmd=GPIO%2c0%2c1 { "log": ": port#0: set to 1", "plugin": 1, "pin": 0, "mode": "output", "state": 1 } # Get Status curl http://IP_ADDRESS/control?cmd=Status%2cGPIO%2c0 { "log": "", "plugin": 1, "pin": 0, "mode": "output", "state": 1 } # OFF curl http://IP_ADDRESS/control?cmd=GPIO%2c0%2c0 { "log": ": port#0: set to 0", "plugin": 1, "pin": 0, "mode": "output", "state": 0 } |
ESP Easyのコマンドリファレンスはこちらの公式ページに。
そして起動時のこのGPIOピンの状態を正しく設定しておかないと、思わぬ誤動作に繋がる恐れがあるので忘れずに。
今回はここまで。やはりスマートコンセントにあるGUIが無いと不便なので、次回はその辺りを調べてみたいと思います。