![](https://unagidojyou.com/wp-content/uploads/2023/05/ms-101_esp8285_arduino-ide-eye-660x497.jpg)
きっかけ
AliExpressで270円程度で買ったスマートスイッチ(MS-101)にESP8256が搭載されていてArduinoで書き込みができそうなので試してみました。これだけじゃなくて、SONOFF 5V RE5V1Cにも搭載されています。
解析
今回、書き込むターゲットにしたスマートスイッチはTuyaに対応したSmart Switch ModuleのMS-101というモデルです。
![AliExpressで買ったスマートスイッチ(ESP8285)にArduino IDEのスケッチを書き込む
MS-101
Smart Switch Module](https://unagidojyou.com/wp-content/uploads/2023/05/ms-101_esp8285_arduino-ide-1-1024x771.jpg)
ボタンが1つ、青色のLEDが1つ、リレーが1つ付いてます。どのピンに接続されているのか解析しました。調べた感じこんなでした。
![AliExpressで買ったスマートスイッチ(ESP8285)にArduino IDEのスケッチを書き込む
MS-101
TDQ-101-V1.7
BP2525
ESP8285N08
解析 分解 改造](https://unagidojyou.com/wp-content/uploads/2023/05/ms-101_esp8285_arduino-ide-2-1024x516.jpg)
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
解析 改造 分解](https://unagidojyou.com/wp-content/uploads/2023/05/ms-101_esp8285_arduino-ide-5-1024x771.jpg)
バックアップ
もしかしたら元々入っていたファームウェアに戻したくなるかもしれないので、バックアップを取ります。東京お気楽カメラ-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
解析 改造 分解](https://unagidojyou.com/wp-content/uploads/2023/05/ms-101_esp8285_arduino-ide-3-1-1024x437.png)
![AliExpressで買ったスマートスイッチ(ESP8285)にArduino IDEのスケッチを書き込む
esptool.exe フラッシュ
吸い出し バックアップ 保存](https://unagidojyou.com/wp-content/uploads/2023/05/ms-101_esp8285_arduino-ide-4-1024x757.png)
作業の様子
友人宅にて pic.twitter.com/f6U2YLvAEe
— Unagi Dojyou (@Unagi_Dojyou) May 19, 2023
フラッシュの削除
このままArduinoで書き込みしても、何故か元々のファームウェアが動作してしまったので、一度フラッシュを消去します。ESPRESSIFの公式ページから、Flash Download Toolsをダウンロードして、実行します。COMポートを選択してERASEを押します。その後は、再びGPIO0をGNDにショートさせた状態でRSTピンをGNDに一瞬ショートさせます。そうすると、FINISHとなって、ERASEできます。
ちなみに、先程バックアップしたbinファイルはここから焼き直せます。
![AliExpressで買ったスマートスイッチ(ESP8285)にArduino IDEのスケッチを書き込む
Flash Download Tools ERASE 削除 フラッシュ](https://unagidojyou.com/wp-content/uploads/2023/05/ms-101_esp8285_arduino-ide-6.png)
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](https://unagidojyou.com/wp-content/uploads/2023/05/ms-101_esp8285_arduino-ide-7-1024x640.jpg)
実行した結果はこんな感じです。
Lチカできた pic.twitter.com/QUVAWtXC3m
— Unagi Dojyou (@Unagi_Dojyou) May 20, 2023
おわりに
IPAのセキュリティ・キャンプの課題の一環でやってみました。大学の中間試験と期間が重なっててかなり雑に書いてます。ご了承ください。今回はLチカまでしか行なっていませんが、スイッチの使用、リレーの使用、WiFiの使用もしてみたいです。