ESP8266でIoT その1 Blink
■2015年に突然現れたWi-Fiモジュール
インターネットと接続するにはTCP/IPというプロトコルを使いますが、8ビット・マイコンのスペックでは重くて動かすには無理がありました。電子工作で使われるArduinoはATMega328という8ビット・マイコンです。TCP/IPを利用するにはイーサネット・シールド(有線LANで接続)と呼ばれるボードが別途必要でした。
その後DIGIから発売されたXBeeを利用すると無線LANでインターネットにつなげられるので、利用者が増えました。
Wi-Fiは現在IEEE 802.11ac規格が最新です。スタートは2.4GHzを使うIEEE 802.11bでした。
2015年夏、IEEE 802.11bとgが使えるESP8266をモジュールにし、日本でも使えるように技適マークの付いたESP-WROOM-02が約500円で発売されました。ESP8266はMIPSの32ビットCPUとIEEE 802.11bとg対応のRFコアを一つにしたデバイスです。
●ESP8266はArduino対応
インテルのArduino 101は同社のCurieという86系のCPUを搭載しています。このCPUに対応して、Arduinoは86系のCPUのコードをコンパイルできるような仕組みを導入しました。
ESP8266はライセンス料金が割安だといわれているMIPSアーキテクチャのCPUを搭載しています。ArduinoはこのCPUのコンパイラにも対応しました。
C:\Users\yoshidawin\AppData\Local\Arduino15\packages\ |
には、Arduino、esp8266、intelの三つのディレクトリができています。Arduinoの下には、
C:\Users\yoshidawin\AppData\Local\Arduino15\packages\arduino\hardware |
avrとsamdの二つのディレクトリがあり、ARMのCortex-Mシリーズのヘッダ類が入っています。このように、Arduinoは様々なマイコンに対応しています。
●ESP8266単独ではPCとつなげられない
実行時はESP8266単体で動作しますが、Arduinoで開発するときは、シリアル-USB変換でPCとつなぎます。
シリアル-USB変換が搭載されているモデルもあります。ここでは、ESP8266のモジュールESP-WROOM-02を搭載したスイッチサイエンスのESPr Oneを利用します(購入時の名称はSSCI-026208 ESP-WROOM-02 Arduino互換ボード)。Arduino のシールドが使えるI/Oが備わっていますが、コンパクトなモデルもあります。
●ESP8266をArduinoとして利用する手順
ArduinoIDEは1.8.0を使います。ESP8266は、ボードマネージャのところで追加ができません。メニューのファイルから環境設定を開きます。追加のボードマネージャのURLに下記のアドレスを入れます。
http://arduino.esp8266.com/stable/package_esp8266com_index.json |
OKを押します。メニューのツールから、ボードを選び、ボードマネージャの画面を出します。検索欄にespと入れます。
「esp8266 by ESP8266 Community」のMore InfoをクリックするとINSTALLボタンが出てくるので、インストールします。次の画面は、インストールが終了した状態です。特にArduino IDEの再起動は必要ありません。
●開発手順は従来通り
Arduinoでは、ボードとポートを適切に変更して、プログラムを作成し、書き込みます。ESP8266では、いくつかの変更点があります。
ファイル->スケッチの例->0.Basics->Blinkを選びます。これは、ほかのボードと同じです。
メニューのツールから、ボード->Generic ESP8266 Moduleを選びます。下記の部分だけを変更します。
|
「マイコンボードに書き込む」ボタンをクリックするとプログラムがコンパイルされ、実行プログラムはマイコン・ボードに転送、リセットされてLEDが点滅します。
コラム ESP8266でArduinoとして利用する条件
Arduino IDEを利用するとき、シリアル・インターフェースからプログラムをマイコンに書き込みます。ESP8266は、このとき、端子は、「GPIO15=Low、GPIO0=Low、GPIO2=High」という条件で対応します。
seeedのWio-NodeはUSBのコネクタを装備していますが、電源供給だけに使われています。同ボードUARTコネクタにUSB-シリアル変換インターフェースをつないでも利用できません。これは、「GPIO15=Low、GPIO0=High、GPIO2=High」という内部のプログラムを実行するフラッシュ・ブート・モードに固定されているからです。
バックグラウンド
シリアル-USB変換;マイコンには、UARTと呼ばれる非同期シリアル・インターフェースがほぼすべてに実装されています。10年ほど前まで、PCにはRS-232Cと呼ばれるUARTと通信するコネクタがありましたが、現在は省略されています。
したがって、PCで一般的なUSBインターフェースをUARTと通信できるようにするのがFTDIを代表とする変換ICです。FTDI以外にCP2101、CH340、PC-PL2303などがあります。FTDIが一番ポピュラですが、Mac OS Xでは使えないことが多いです。
ラズパイでは、マイコン・ボードとUSBケーブルをつなぎ、/dev/ttyACM0にアクセスすると、変換ICがなくてもシリアルで通信できます。