月刊I/O 2022年5月号『Raspberry Piで作る電子工作』に記事を掲載して頂きました!

【Arduino】小型Wi-FiモジュールESP8266(ESP-01)のファームウェアを更新する!初期状態に戻しATコマンドを使えるようにする!

Arduinoは電子工作初心者の方でも比較的簡単に扱えるように作られた便利なマイコンボードです。
しかし、ESP32のようにWi-FiやBluetoothといった無線機能が標準では搭載されていません。
そのためArduinoで無線通信を使ったデータのやり取りを行いたい場合、それに対応したモジュールやシールドを接続して使う必要が出てきます。

例えばBluetoothでのやり取りをしたい場合、HC-05などのBluetoothモジュールを接続すれば可能となります。

Arduinoを使いBluetooth通信をやってみる!HC-05/HC-06 Bluetoothモジュールの使い方!

また、nRF24L01無線モジュールは複数のデバイスやArduino間でのデータのやり取りを行うこともでき便利な無線モジュールとなります。

【電子工作】無線モジュールnRF24L01を使いArduino間で無線通信をやってみる!

そしてWi-Fiを使ったやり取りでも同様となり、Wi-FiモジュールやWi-Fi機能が搭載されたシールドを使う必要が出てきます。
その中でArduinoで便利に使える小型Wi-FiモジュールとしてESP8266(ESP-01)があります。

ESP-01は非常に小型(約24.8mm×14.3mm)で、Espressif System社のESP8266が搭載されたWi-Fiモジュールとなり開発元AI-Thinker社の製品となります。
Wi-Fi機能を標準で持たないArduinoなどのマイコンボードと接続してシリアルでのやり取りでその機能を持たせる用途で使えます。

しかし技適が取得されていないモジュールなのでその使用には注意も必要です。
Arduinoで使える無線モジュールは多数ありますが、技適が取得された製品があまりないのが残念なところですね!

そしてESP-01が面白いのは、スケッチを書き込みこのモジュール単体で動かすことも出来ます。
こうなるともうWi-Fi機能を持ったミニArduinoって感じですね!
そして開発環境もArduino IDEがそのまま使うことが出来るので手軽に試すことが出来ます。

先述のように技適が取得されていないモジュールとなるのでその使用には注意が必要ですが、Arduinoの学習用としては安価で(200円ほどのモジュールです)手軽に試せる便利なWi-Fiモジュールとなります。

ESP-01の主な使用用途はこの2つに別れます。

そして今回は、ESP8266(ESP-01)のファームウェアの更新(書き換え)をやってみます。

ESP-01は、無線機能を持たないArduinoなどのマイコンボードと接続してWi-Fi機能を持たせるためのモジュールとして使う以外に、ESP-01自体にArduinoのスケッチを書き込む事が出来るので、これ単体でWi-Fi機能を持ったマイコンのように動かすことも出来ます。

前回、ESP-01に簡単なスケッチを書き込み単体で動かすテストをしてみました。(上記①です)
これはESP-01に初期状態で書き込まれているファームウェア(ATコマンドに対応したもの)にスケッチを上書きする形で行います。
そのためESP-01にスケッチを書き込んでしまうと、②の用途では使えなくなってしまいます。
スケッチを書き込んだ時点でESP-01は単体で動いてしまいますからね!

そしてArduinoと接続してWi-Fiモジュールとして使いたい場合(②の用途)も出てきます。
これには初期状態で書き込まれているファームウェア(ATコマンドが使えるもの)に戻す必要があります。

そこで今回は、既にスケッチを書き込んで単体で動く状態にあるESP-01に初期状態で入っていたファームウェアに戻す(書き換える)作業をやってみたいと思います。

ESP8266(ESP-01)に初期状態で入っているファームウェア(ATコマンドが使えるもの)に更新する手順!

ESP8266(ESP-01)について!

冒頭でご紹介したように、ESP8266(ESP-01)は非常に小型なWi-Fiモジュールです。
このようにArduinoなど無線機能を持たないマイコンボードと接続してWi-Fi機能をもたせることが出来ます。

またEspressif System社のESP8266EXチップが搭載され、メモリやパターンアンテナ、クロック用のクリスタルが搭載されているのでArduinoのスケッチを書き込むことによりESP-01単体で動かすことも出来ます。

小型モジュールですが4本のGPIO端子が使えるので、センサーなどの情報を取得しWi-Fi経由でスマホやPCでモニターしたり操作するといったことで使えます。
まさにWi-Fi機能が搭載されたミニArduinoって感じですね!

ESP-01は「ESP-WROOM-02」の小型版みたいな感じですが、技適が取得されていないのは残念です!

それでは既に何かしらのスケッチを書き込んだESP-01を初期状態のファームウェア(ATコマンドを受け付けるもの)に戻す作業をやっていきます。
ファームウェアの更新には、書き込むファームウェア本体とそれを書き込むためのツール(ソフト)が必要となってきます。

書き込みツールの準備

まずファームウェアを書き込むためのツールをダウンロードします。

書き込みツールにはESP8266チップの開発元であるEspressif System社の『Flash Download Tools』が使えるのですが、細かな設定が面倒だったので今回は『ESP8266 Flash Downloader』というシンプルな書き込みツールを使います。

ESP-01のファームウェア書き換えには一番簡単だったので今回このツールを使って行っていきます。

以下サイトからダウンロードが出来ます。(Windowsのみ対応)

参考 ESP8266 -01 MODULESaravana electronics

ダウンロードしたファイルを解凍しソフトを立ち上げます。

起動画面がこちらとなります。
非常にシンプルですがESP-01へのファームウェアの書き換えを簡単に行うことが出来ます。

次に書き込むファームウェアファイルのダウンロードです。

ファームウェアのダウンロード

次にファームウェアのダウンロードです。
こちらもEspressif Systemのサイトからダウンロード可能ですが、今回はESP-01の開発元Ai-Thinkerのサイトからダウンロードしました。

以下ページからダウンロードできます。

参考 factory default AT firmwareAi-Thinker Technology

『⑤工場出荷時のデフォルトATファームウェア(日本語訳)』の項目にあるダウンロードリンクをクリックするとファームウェアをダウンロードできます。

ダウンロードしたファイルはRARファイル形式の圧縮ファイルとなっています。

ファイルを解凍後、フォルダを開くと2種類のメモリに対応したフォルダがあります。
ESP-01のメモリサイズは8Mbitなのでこれを選択します。

フォルダ内にある拡張子が[.bin](バイナリファイル)、これが書き込みで使うファームウェアファイルとなります。

確認ができたら先程のESP8266 Flash Downloaderに戻り、[Bin]ボタンをクリックしてこのファイルを選択します。

以上でESP-01にファームウェアを書き込む準備ができました。
次にPCとの接続です。

①USB−シリアル変換モジュールを使った接続&書き込み

それではファームウェアの書き込みを行います。
PCとの接続ですが、USB−シリアル変換モジュールをお持ちなら簡単です!
またArduinoを経由して行うこともできます。
この2通りの接続方法でのファームウェアの書き換えを見ていきます。

まずUSB−シリアル変換モジュールを使った接続です。
電子工作用途で持っている方多いと思うので、こちらのFTDI USB-シリアル変換モジュールを使いました。

また、ESP-01専用のブレークアウトボードを使えばブレッドボードに固定する事ができ接続ピンがプリントされているので便利です。

接続はこのようになります。
シリアルでのやり取りで書き込むので、TX-RX/RX-TXの通常のシリアルでの接続となります。
駆動電源としてVCC/GNDに接続し、CH_PDピンは基本HIGH(3.3V)に常に接続した状態で使います。
また、ESP-01を[プログラム書き込みモード]にするためGPIO0ピンをGNDに接続しています。

ESP-01は3.3Vロジックレベルでの動作をするモジュールなので、USB-シリアル変換モジュールは3.3V側にジャンパーピンを接続するのをお忘れなく!

ESP-01の起動モードや詳しい接続に関してはこちらの記事も参考にして下さい。

【Arduino】小型Wi-FiモジュールESP8266(ESP-01)の基本的な使い方!スケッチの書き込み&モジュール単体で動かす基本的な方法!
ESP-01FTDI USB-シリアルモジュール
VCC(3.3V)VCC
GNDGND
TXRX
RXTX
CH_PDVCC
GPIO0GND

上記接続が完了したらPCと接続し、接続されているCOMポートの確認です。
デバイスマネージャーから確認できると思います。

書き込みツールの[COMポート]を接続されているものに変更し、問題がなければ[Download]ボタンをクリックすればファームウェアの書き込みが開始されます。

ファームウェアの書き込みには数分かかります。
以上で初期状態で入っているファームウェアに戻すことが出来ます!

②Arduinoを使った接続&書き込み

USB−シリアル変換モジュールがない場合、Arduinoを経由して書き込むことも出来ます。
必要ない方は次の項目に進んで下さい!

今回Arduino Unoを使いますが、USB−シリアル変換器が搭載された他のArduino(NanoやMegaなど)でも同様の手順となります。

接続の前にArduinoに空スケッチを書き込んでおきます。
Arduinoにシリアルでのやり取りを行うものが書かれていると書き込みエラーとなるためです!

そして接続はこのようになります。
USB−シリアル変換モジュールを使ったものとほぼ同じですが、シリアルでの接続部分が異なっています。
TX-TX/RX-RXという接続になります。

ESP-01Arduino
VCC3.3V
GNDGND
TXTX(D1)
RXRX(D0)
CH_PD3.3V
GPIO0GND

接続が完了したらArduinoとPCを接続します。
あとは先ほどの手順と同様に書き込みツールの[COMポート]を選択し[Download]をクリックするとファームウェアの書き込みが開始されます。

確認

ファームウェアの書き込みが完了しました。
一応ATコマンドを受け付けるか簡単に確認しておきます。

一旦電源を切り(USBケーブルを外す)、先程の接続のGPIO0の接続のみを外し再度通電します。(USB-シリアル変換モジュール/Arduinoを使った場合どちらも同様です)

MEMO
ESP-01は起動時(電源投入時)のGPIO0ピンの状態で起動モードが変わります。
詳しくはこちらの記事をご覧下さい!

Arduino IDEを立ち上げ、[ボード]の設定は[Generic ESP8266 Module]を選択し、[シリアルポート]は接続しているUSB−シリアル変換モジュールのポートを選択します。

またArduinoを経由して行う場合、[シリアルポート]は今回Arduino Unoを使っているのでこれを選択します。

シリアルモニタを立ち上げます。
ESP-01のデフォルトのボーレート(通信速度)は115200bpsとなっています。

[115200bps]と[CRおよびLF]に変更します。

[AT]と入力してリターンキーを押すと[OK]と返ってくればATコマンドでのやり取りが行えています。
また、[AT+GMR]と入力するとファームウェアのバージョンを確認することができます。

無事ESP-01を初期状態のファームウェアに戻すことが出来ました。
お疲れさまです!(ATコマンドでの設定変更等は今回割愛します)

最後に!

ESP-01は小型なWi-Fiモジュールですが、これ単体でArduinoとして動作させることもでき4本のGPIOピンを使うことが出来ます。

このように温湿度センサーやLEDなどを取り付け完全にスタンドアロンで動作させWi-Fi経由でスマホやPCから操作するなんて事が出来ます。

また、ArduinoやRaspberry Pi Picoといった無線機能を持たないマイコンボードに接続してWi-Fi機能を持たせる用途でも使えます。
こちらの用途で使いたい場合はESP-01にスケッチが書き込まれた状態だと使えないので、今回行った初期状態のファームウェアに戻す作業が必要となってきます。

技適の取得がされていないモジュールなので日本国内で合法的に使うことが出来ないためその使用には注意が必要となり「ESP-WROOM-02」などを使う手もありますが・・・

Arduinoの学習用としては安価でいろいろと試せる便利なWi-Fiモジュールになるかと思います。

コメントを残す