2015年7月12日日曜日

技適マーク付きESP8266モジュール入手

早く技適マーク付きESP8266モジュール欲しいな〜、と思ってググっていたら、スイッチサイエンスESP-WROOM-02の技適マーク付きの扱いがあることを発見。さっそくポチってしまいました。7/10に注文して、今日7/11には入手。速くて便利。
いま改めて気づいたのですが、スイッチサイエンスのプレスリリースが出たのも7/10だったんですねぇ。そちらにはピッチ変換済みモジュールに関する記載もありました。
モジュールは1.5mmピッチのSMD実装前提の形状ですので、慣れてない人はピッチ変換済みモジュールのほうがお手軽でしょう。
ESP-WROOM-02
よくみると、ESP-WROOM-02って、ESP-12にあった青色LEDがなくなってます。まあ、消費電力追い込む場合にはLEDも邪魔ですから、それはそれで良しかと思いますが、デバッグ中は不便そうです。
一方で、CerevoからもESP-WROOM-02とピッチ変換基板が発売されています。Cerevoって聞き覚えあるけど何だっけ、と一瞬考えてしまいましたが、ustreamなどの機器で結構名前が出ていた会社です。Cerevoの中の人もきっとESP8266の可能性が気になっちゃったんでしょうねぇ。ブログの記事にまでなっちゃってます。
話をESP-WROOM-02に戻します。さて、こいつならシールド環境などという面倒くさいことを言わずにあれこれできます。これからいろんな人が懐に暖めていたアイデアが花咲くことと思います。自分もアイデアだけはある(あ、部品もある)んですが、なかなか時間が・・・というのと、体調崩してしまっているのでどうなることでしょう。

2015年7月11日土曜日

ESP-8266用ArduinoIDEでサンプルを動かす

環境構築とサンプルを動かす話を一つの記事にしたら長くて読みにくくなってしまったので、2つに分割します。この記事は環境構築の続きです。
ESP8266自身で動かすWebサーバーサンプルのテストと、ESP8266をNTPクライアントにするサンプルのテストです。

サンプルのコンパイルと書き込み

以下の手順でサンプルの動作を確認しました。
  1. 「ファイル」⇒「スケッチの例」⇒「ESP8266mDNS」⇒「mDNS_Web_Server」を選択してみます。
  2. 23行目にSSIDを、24行目にパスワードを設定する箇所がありますので、そこにそれぞれの環境に応じた設定をします。
  3. 「ファイル」⇒「名前をつけて保存」で適当なディレクトリを作って保存します。
    (あたり前といえばあたり前ですが、保存しないとうまく動作しません)
  4. ESP8266ボード側はブートローダの起動状態にしておきます。(GPIO0をGNDに落とした状態でリセットをかけて、リセット解除しておきます。リセット解除後はGPIO0はGNDに落ちていても落ちていなくても構いません。なお、ESP8266のファームウェアバージョンはv0.9.5のものを使用しています。)
  5. 「ツール」⇒「シリアルモニタ」でシリアルモニタを起動しておきます。速度は115200bpsです。
  6. 「スケッチ」⇒「マイコンボードに書き込む」でコンパイルと書き込みを行います。
  7. 書き込みが終わると自動的に実行されます。
    screen8
  8. シリアルモニタ側にIPアドレスなどの情報が表示されます。
  9. ブラウザからそのIPアドレスにアクセスすると、ESP8266上で動作するWebサーバからのメッセージ(「Hello from ESP8266 at 192.168.xxx.xxx」)が取得できます。
    下記はAndroid上のブラウザからIPアドレス指定でアクセスした後のシリアルコンソールの表示内容です。
    screen9
同様にNTPClientなども動作しました。
Windowsだけではなく、Linuxでもこれだけお手軽に動かせるようになってきています。かなりお手軽にESP8266を動かす環境が整ってきていることを感じますね。
※上記の動作確認は接続先のアクセスポイントを含め、シールドルーム内で実施しています。早く技適対応済みのモジュールが入手できるようになって欲しいものです。

2015年7月10日金曜日

Linux版ESP-8266用ArduinoIDEのインストール

Linux版のESP8266対応のArduinoIDEのインストールが簡単になっていましたので、その方法でLinux32bit環境(LinuxMint17環境)にインストールしてみました。
ArduinoIDEの1.6.4からボードマネージャ(Boards Manager)を使ってサードパーティのプラットフォームパッケージのインストールができるようになったようです。そこで、ESP8266用のプラットフォームパッケージが準備された、ということみたいです。
このプラットフォームパッケージを使うと、超簡単にArduinoIDEからESP8266を使うことができます。現時点ではWindows,MacOS、Linux(32bit/64bit)のパッケージが準備されているようです。
このプラットフォームパッケージの特筆すべき点は「AVRマイコンなど他のマイコンを必要とせず、ESP8266モジュール単体でArduinoとして動作しつつ無線LANでの通信ができる」ということです。
大事なこと(すごいこと)なのでもう一度書きます。Arduinoとして動作させるのに、(書き込み時は別として)ESP8266モジュールと電源以外の部品は必要ありません
たぶん、ArduinoIDE自体で依存するモジュールがあると思います。build-essentialやdefault-jdkなどは事前にインストールしておくほうが良いかと思います。

ArduinoIDEのインストール

arduino.ccからLinux32bit版のArudino IDEをダウンロードしてきます。ダウンロードが完了したら、アーカイブを展開します。
$ xzcat ダウンロード/arduino-1.6.5-linux32.tar.xz | tar -xv
$ ./arduino-1.6.5/arduino
として、開発環境を起動します。
screen1
「ファイル」⇒「環境設定」にて、環境設定の画面を開きます。開いたら、「Additional Boards Managers URLs:」に「http://arduino.esp8266.com/package_esp8266com_index.json」と入力し、OKを押します。
「ツール」⇒「ボード」⇒「Board Manager ...」を選択します。
screen3
一番下に、「esp8266 by ESP8266 Community」というのがありますので、その右下の「Install」ボタンを押します。
screen4
すると、40MBくらいダウンロードした後、Installedになります。
screen6
確認したら、「閉じる」でインストールは完了です。
ESP-8266が使えるかどうかを「ツール」⇒「ボード」で確認します。
screen7
メニューに「Generic ESP8266 Module」「Olimex MOD-WIFI-ESP8266(-DEV)」「NodeMCU(ESP8266 ESP-12 Module)」が増えているのが確認できました。
今回は「Generic ESP8266 Module」で動作させてみます。
選択すると、「ツール」の下に「CPU Frequency」「Flash Size」「Upload Speed」「ポート」などの設定ができるようになっていました。今回はそれぞれ「80MHz」「512K(64K SPIFFS)」「115200」「/dev/ttyUSB0」としています。

 

ESP8266のファームウェア更新

さらにESP8266のファームウェア更新をしてみました。

1.接続

接続は先に紹介した以下の配線でOKです。
IMG_0413s

2.書き換えツールのダウンロード

Pythonで動作するesptool.pyを使います。
$ mkdir ESP8266UPDATE
$ cd ESP8266UPDATE
$ git clone https://github.com/themadinventor/esptool/

3.更新ファームウェアのダウンロード

更新ファームウェア(v0.9.5)をダウンロードします。
$ wget --content-disposition "http://bbs.espressif.com/download/file.php?id=189"
これより新しいバージョンのファームウェアもリリースされていますが、新しいバージョンのものはどうやらボード上のフラッシュメモリのサイズが1MB(8Mbit)必要なようです。ESP-01〜ESP-12として出回っているモジュールはほとんど512KB(4Mbit)のようなので、ATコマンドで使う場合にはこれでダウンロードされる v0.9.5 が最新ということになるのだと思います。それ以降のファームウェアを使う場合には、ESP-WROOM-02などの(おそらく)1MBのフラッシュメモリが搭載されたものが必要になるのでしょう。

4.ファームウェアの書き換え

タクトスイッチ(これでGPIO0をGNDに落とす)を押した状態でUSBケーブルを挿入し、挿入後タクトスイッチを離す(押したままでもOK)。これで書き換えモードになりますので、この状態でesptool.pyを使ってファームウェアの書き換えを行います。
$ cd esp_iot_sdk_v0.9.5/bin/
$ ../../esptool/esptool.py write_flash 0x00000 boot_v1.2.bin 0x01000 at/user1.512.new.bin 0x3e000 blank.bin 0x7e000 blank.bin
Connecting...
Erasing flash...
Writing at 0x00000400... (100 %)
Erasing flash...
Writing at 0x00034800... (100 %)
Erasing flash...
Writing at 0x0003ec00... (100 %)
Erasing flash...
Writing at 0x0007ec00... (100 %)
Leaving...
$
これでUSBケーブルを挿し直すと(直さなくてもいけるのかも?)動き出します。
GtkTermで見てみると、最初文字化けします。バージョンアップすると、ATコマンド通信時の速度が9600bpsから115200bpsに変わるようですので、設定をしなおして見てみると、
AT+GMR
AT version:0.21.0.0
SDK version:0.9.5
OK
となっていました。
ちなみに更新前は、
AT+RST

OK
c_��RS��FjS�fJ[��
[Vendor:www.ai-thinker.com Version:0.9.2.4]
ready
AT+GMR
0018000902-AI03
OK
で 0.9.2.4 でした。
※作業はAPを含めてシールドルーム内で行っています。