AliExpressで買ったスマートスイッチ(ESP8285)にArduino IDEのスケッチを書き込む

投稿者: | 5月 21, 2023

きっかけ

AliExpressで270円程度で買ったスマートスイッチ(MS-101)にESP8256が搭載されていてArduinoで書き込みができそうなので試してみました。これだけじゃなくて、SONOFF 5V RE5V1Cにも搭載されています。

解析

今回、書き込むターゲットにしたスマートスイッチはTuyaに対応したSmart Switch ModuleのMS-101というモデルです。

AliExpressで買ったスマートスイッチ(ESP8285)にArduino IDEのスケッチを書き込む
MS-101
Smart Switch Module
MS-101の外観

ボタンが1つ、青色のLEDが1つ、リレーが1つ付いてます。どのピンに接続されているのか解析しました。調べた感じこんなでした。

AliExpressで買ったスマートスイッチ(ESP8285)にArduino IDEのスケッチを書き込む
MS-101
TDQ-101-V1.7
BP2525
ESP8285N08
解析 分解 改造
解析

ESP8285自体はN08といいうモデルで、フラッシュが1MBのもののようです。ボタンはGPIO13、LEDはGPIO5、リレーはGPIO12に接続されていました。また、UARTのRX・TX、RST、3.3V、GNDは基板上のパッドのシルク通りでした。電源周りですが、以前に両切りスイッチに改造したスマートスイッチにも入っていたBP2525でした。今回は3.3V出力となっています。それにともなって、リレーは3V動作のものでした。

ピンを生やす

UARTを接続したり、電源を接続したりするために、パットからピン付きのコードを生やしました。

AliExpressで買ったスマートスイッチ(ESP8285)にArduino IDEのスケッチを書き込む
MS-101
解析 改造 分解

バックアップ

もしかしたら元々入っていたファームウェアに戻したくなるかもしれないので、バックアップを取ります。東京お気楽カメラ-ESP-WROOM-32を使ってみる このサイトを参考にしました。Windowsにて実行しました。

Arduino IDEにESP32のボードをインストールすると、Arduinoのボードファイル(C:\Users\ユ-ザ名\AppData\Local\Arduino15\packages\)内にesptool.exe(C:\Users\ユーザ名\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\バージョン\esptool.exe)があるようです。これを利用して吸い出しをします。

UARTとUSB変換をWindowsに接続して(もちろん電源3.3Vも供給)、コマンドプロンプトで、C:\Users\ユーザ名\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\バージョン\に移動して、

esptool --port COM6 --baud 921600 read_flash 0 0x100000 test.bin

を実行しました。COMの番号は自分で確認してください。0x10000は今回のESP8285N08が1MBだからです。実行すると、Connecting……………となると思うので、GPIO0をGNDにショートさせた状態でRSTピンをGNDに一瞬ショートさせます。そうすると、書き込みモードとなるので、吸い出しが始まります。吸い出し中は、GPIO0は離しておいて大丈夫です。吸い出しが終わると、esptool.exeのあるところにtest.binができてると思います。これで吸い出しは完了です。

AliExpressで買ったスマートスイッチ(ESP8285)にArduino IDEのスケッチを書き込む
esptool.exe フラッシュ
吸い出し バックアップ 保存
MS-101
解析 改造 分解
吸い出したときのコマンドプロンプト
AliExpressで買ったスマートスイッチ(ESP8285)にArduino IDEのスケッチを書き込む
esptool.exe フラッシュ
吸い出し バックアップ 保存
できたファイル

作業の様子

フラッシュの削除

このままArduinoで書き込みしても、何故か元々のファームウェアが動作してしまったので、一度フラッシュを消去します。ESPRESSIFの公式ページから、Flash Download Toolsをダウンロードして、実行します。COMポートを選択してERASEを押します。その後は、再びGPIO0をGNDにショートさせた状態でRSTピンをGNDに一瞬ショートさせます。そうすると、FINISHとなって、ERASEできます。
ちなみに、先程バックアップしたbinファイルはここから焼き直せます。

AliExpressで買ったスマートスイッチ(ESP8285)にArduino IDEのスケッチを書き込む
Flash Download Tools ERASE 削除 フラッシュ
ERASEを押して削除

Arduinoでの書き込み

ESP8252はESP8266用のボードに含まれているようなので、このサイトを参考にインストールしました。環境設定のところに、http://arduino.esp8266.com/stable/package_esp8266com_index.jsonを追加して、ボードマネージャからインストールするだけです。試しにLチカのプログラムを書いて実行してみました。ボードの設定は適当に写真のようにしてみました。Erase Flashはonly sketchだけ良い気がします。
Arduino IDEから書き込みするときも、GPIO0をGNDにショートさせた状態でRSTピンをGNDに一瞬ショートさせてダウンロードモードに入る必要があります。

AliExpressで買ったスマートスイッチ(ESP8285)にArduino IDEのスケッチを書き込む
Lチカ
MS-101
Arduino IDEの設定とプログラム

実行した結果はこんな感じです。

おわりに

IPAのセキュリティ・キャンプの課題の一環でやってみました。大学の中間試験と期間が重なっててかなり雑に書いてます。ご了承ください。今回はLチカまでしか行なっていませんが、スイッチの使用、リレーの使用、WiFiの使用もしてみたいです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)