趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。
RSS icon
  • Linux版ESP-8266用ArduinoIDEのインストール

    投稿日 2015年 7月 10日 1つのコメント

    Linux版のESP8266対応のArduinoIDEのインストールが簡単になっていましたので、その方法でLinux32bit環境(LinuxMint17環境)にインストールしてみました。
    ArduinoIDEの1.6.4からボードマネージャ(Boards Manager)を使ってサードパーティのプラットフォームパッケージのインストールができるようになったようです。そこで、ESP8266用のプラットフォームパッケージが準備された、ということみたいです。
    このプラットフォームパッケージを使うと、超簡単にArduinoIDEからESP8266を使うことができます。現時点ではWindows,MacOS、Linux(32bit/64bit)のパッケージが準備されているようです。

    (7/15に64bit版Linuxでもサンプルのコンパイルまで確認してみました。手順は概ね同じですが、若干の記載漏れを加筆しました。また、64bit版ではファイル名などで32になっているところが64になったりします。)

    このプラットフォームパッケージの特筆すべき点は「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

    として、開発環境を起動します。
    (ダウンロード場所はディストリビューションなどに応じた場所を指定してください。上記ではホームディレクトリ直下にarduino-1.6.5というディレクトリができて、そこに展開します。)

    screen1

    「ファイル」⇒「環境設定」にて、環境設定の画面を開きます。開いたら、「Additional Boards Managers URLs:」に「http://arduino.esp8266.com/package_esp8266com_index.json」と入力し、OKを押します。

    ※追伸:安定版と開発版のバージョンができているようです。
    安定版は「http://arduino.esp8266.com/stable/package_esp8266com_index.json」、開発版は「http://arduino.esp8266.com/staging/package_esp8266com_index.json」を入力してください。
    どちらを選べばいいかわからない場合は当然安定版の方を選びましょう。

    「ツール」⇒「ボード」⇒「Board Manager …」を選択します。

    screen3

    一番下に、「esp8266 by ESP8266 Community」というのがありますので、ここをクリック(選択)すると、右下に「Install」ボタンが現れますので、「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のファームウェア更新

    投稿日 2015年 7月 10日 コメントはありません

    さらに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を含めてシールドルーム内で行っています。


  • ESP8266を操作してみる

    投稿日 2015年 7月 10日 コメントはありません

    秋月のAE-UM232Rと三端子レギュレータを接続してブレッドボード上でESP8266を動かしてみました。使用したモジュールは手持ちのESP-12でプリント基板パターンアンテナを使用したFCC認証済みのモデルです。

    IMG_0413s

    接続回路図はHack a Dayの記事のままです。真ん中下がピッチ変換基板に載せたESP-12モジュール、左上がAE-UM232R、右上に3.3Vを生成する三端子レギュレータを配置しています。真ん中には電解コンデンサとフィルムコンデンサが付いているのですが、これは後述のとおりなかなか動作しなかったので、電源系の不安定さを疑って追加したものです。その右側にはF/W書き込みのためのスイッチもつけてあります。USBで接続する先のPCはLinuxMint17.1 MATE edition 64bit版です。

    USBケーブルを接続すると、ESP-12に搭載されている青いLEDが一瞬点滅します。購入直後であればこの状態でスマートフォンなどにWiFiの状態をみるツールを入れてやるとアクセスポイントとして見えます。

    次にPC側でターミナルプログラムとしてGtkTermを起動して、シリアルポートに/dev/ttyUSB0を選択し、通信速度を9600bpsに設定すると、入力した文字がエコーバックされるのがわかります。
    この状態ではATコマンドを受け付けるはずなので、

    AT[Enter]

    と入力してやると「OK」と返ってくるはずなのですが、返って来ません。
    グーグル先生に聞いてみると、電源不安定だと起きるのではないかとか、そんな話が見つかります。それで電解コンやらフィルムコンやら追加したりしたのですが、状況が変わる気配はありません。

    さらに調べてみると、「改行コードは”\r\n”でないと動作しない」という情報が出てきました。そこで、[Enter]の代わりにCTRL+M、CTRL+Jと入力したのですが動作しません。代わりに日本語入力モードになってしまいました。

    そこで、一時的にIBus+Anthyの動作を止めてやりATの後にCTRL+M、CTRL+Jと入力してやると無事にOKが返ってきました。同様にいくつかコマンドを打ってみました。

    AT+RST
    
    
    OK
    c_��RS��FjS�fJ[��
    [Vendor:www.ai-thinker.com Version:0.9.2.4]
    
    ready
    AT+GMR
    
    0018000902-AI03
    
    OK
    AT+CWLAP
    
    +CWLAP:(4,"aterm-xxxxxx-gw",-54,"xx:xx:xx:xx:xx:xx",10)
    +CWLAP:(4,"aterm-xxxxxx-g",-55,"xx:xx:xx:xx:xx:xx",10)
    
    OK

    というような感じで無事にアクセスができました。上記の例を見てもわかるとおり、アクセスポイントの検出もできていました。

    ※上記の動作確認は接続先のアクセスポイントを含め、シールドルーム内で実施しています。早く技適対応済みのモジュールが入手できるようになって欲しいものです。