きっかけ
AliExpressで270円程度で買ったスマートスイッチ(MS-101)にESP8256が搭載されていてArduinoで書き込みができそうなので試してみました。これだけじゃなくて、SONOFF 5V RE5V1Cにも搭載されています。
解析
今回、書き込むターゲットにしたスマートスイッチはTuyaに対応したSmart Switch ModuleのMS-101というモデルです。
ボタンが1つ、青色のLEDが1つ、リレーが1つ付いてます。どのピンに接続されているのか解析しました。調べた感じこんなでした。
ESP8285自体はN08といいうモデルで、フラッシュが1MBのもののようです。ボタンはGPIO13、LEDはGPIO5、リレーはGPIO12に接続されていました。また、UARTのRX・TX、RST、3.3V、GNDは基板上のパッドのシルク通りでした。電源周りですが、以前に両切りスイッチに改造したスマートスイッチにも入っていたBP2525でした。今回は3.3V出力となっています。それにともなって、リレーは3V動作のものでした。
ピンを生やす
UARTを接続したり、電源を接続したりするために、パットからピン付きのコードを生やしました。
バックアップ
もしかしたら元々入っていたファームウェアに戻したくなるかもしれないので、バックアップを取ります。東京お気楽カメラ-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ができてると思います。これで吸い出しは完了です。
作業の様子
友人宅にて 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ファイルはここから焼き直せます。
Arduinoでの書き込み
ESP8252はESP8266用のボードに含まれているようなので、このサイトを参考にインストールしました。環境設定のところに、http://arduino.esp8266.com/stable/package_esp8266com_index.jsonを追加して、ボードマネージャからインストールするだけです。試しにLチカのプログラムを書いて実行してみました。ボードの設定は適当に写真のようにしてみました。Erase Flashはonly sketchだけ良い気がします。
Arduino IDEから書き込みするときも、GPIO0をGNDにショートさせた状態でRSTピンをGNDに一瞬ショートさせてダウンロードモードに入る必要があります。
実行した結果はこんな感じです。
Lチカできた pic.twitter.com/QUVAWtXC3m
— Unagi Dojyou (@Unagi_Dojyou) May 20, 2023
おわりに
IPAのセキュリティ・キャンプの課題の一環でやってみました。大学の中間試験と期間が重なっててかなり雑に書いてます。ご了承ください。今回はLチカまでしか行なっていませんが、スイッチの使用、リレーの使用、WiFiの使用もしてみたいです。