Skip to content

Instantly share code, notes, and snippets.

@shunkino
Last active May 25, 2018 08:04
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shunkino/d8408497570deca4cfe0 to your computer and use it in GitHub Desktop.
Save shunkino/d8408497570deca4cfe0 to your computer and use it in GitHub Desktop.
ESP8266 memo

ESP8266

概要

ESP8266を利用するにあたりめちゃくちゃたくさん困ったので、これから取り組む人が苦労することのないようにその過程で得られた知識を書きます。フォーラムが中心となっていることも有り特に日本語では情報収集が困難だったのでまとめます。最近では優れたなESP8266関連の記事もあるので、そちらの内容も是非参考にしてください。

この記事の環境

  • Mac OS X Yosemite 10.10.5
  • Python 2.7.10

ESP8266とは

無線経由でインターネットに接続するための機能が一式詰まったSoC。プロトコル・スタックが全て載っているため、プログラマは一番面倒くさいところを書かなくて済む。最近日本でも技適を取得したバージョンESP-WROOM-02が発売されブレイク中。海外ではフォーラムで情報交換や開発が進んでいる。

サーバーにも, クライアントにもなり、安価なため、マイコンをインターネットに接続したいと考えている人にはとても良いチップである。

同一SoC(ESP8266)を搭載したモジュールで、GPIOピンの数や, Flashメモリのサイズ違うバリエーションが多く存在する。ESP01~ESP12 + α。

ESP-01

(たぶん)一番最初にESP8266が乗り、おそらく最も数が出回っているもの。日本からでもかなり入手しやすい。今回の記事の内容は全てこのモジュールでのみ検証した結果となる。

GPIOが2本しか無いため、あまり高度なことをするには物足りないかもしれない。

実はESP-01にはボードが青いものと黒いもので2つバージョンが有り、Flashの容量が異なる。青い方が512kBで、黒い方が1MBとなる。ちなみに前述のESP-WROOM-02は4MB。特に理由がない限りは黒い方を購入すれば良い。と言ってもFlashが1MBのバージョンと512kBのバージョンでできる事の違いは、主にOTAファームウェアアップデート機能なので、そこまで気にする必要はないかもしれない。

基本的な使い方

  • USBシリアル変換器なりArduinoを経由させて、TX, RXを適切に配線する。
  • CooltermATコマンドを利用する。
  • 上手く通信できない時は電圧の過不足/GNDを適切に取れてないことがあるので頑張る。

ATコマンドについての解説は他の記事を。

ファームウェア更新

自由なファームウェアをビルドしてFlashすることができるのが魅力なので書き換えましょう

  • GPIO0をGNDに接続する。再起動後esptool等でファームウェアを焼き変える

  • esptoolの使い方はこちらを参考に。

  • 基本的には

     git clone https://github.com/themadinventor/esptool/
     sudo python setup.py install
    

    をすればesptoolは導入できると思う。

  • その後 esptool.py -p [ESP8266のつながっているポート] -b [指定したボーレート(主に115200か9600。指定したい場合。)] write_flash [オフセット] [書き込むファイル] を実行することでESP-01にファームを書き込めます。

  • 書き込んであるプログラムを抽出するには、esptoolのread_flash機能を利用する。

2015/7/31

!!注意!! ファームウェアをesptoolでやくときは、オフセットが大きな方から書き込むこと。そうしないとバグる。

Latest AT Firmware for ESP8266 with 512k flash

But somehow (for me at least) that results in the first 0x5000 bytes being erased (all FF’s). Through some experimentation, it was established that the order of files in the flash command matters. See here for a discussion.

2015/9/4 追記 上記のように思っていたけど、ツールを更新して改めて実行してみたら問題なく書き込み, 読み込みできた。

ボーレートの変更

esp_iot_sdk_1.2だとボーレートが115200に最初設定されている。 特にArduinoを利用して通信を行おうとする場合、そのままだと単純に実装したArduinoプログラムで処理できる速度を超えてしまう時があるので、9600に設定し直すことをおすすめ。

 AT+UART_DEF=9600,8,1,0,0

みたいにすることで設定できる。Flashに書き込まれていまうから最初は

 AT+UART_CUR=9600,8,1,0,0

とかでテストしてみると良い。

コマンドの中身はこんな感じ UARTコマンド

STATUS:5は再接続中?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment