MobileHackerzのmiroさんがWio Node便利だと言っていた気がしたので試しに使ってみたときのメモ.
Wio Nodeとは
Wio NodeはSeeed StudioのGroveシステムに対応したWiFiモジュールです.バッテリーの充電回路まで搭載してるのでつなぐだけで簡単にバッテリー駆動もできます(すごい).
- 秋月 1100円 http://akizukidenshi.com/catalog/g/gM-10631/
- Amazon(スイッチサイエンス) 1231円 https://www.amazon.co.jp/dp/B01HT253O4
今回は,Wio Nodeらしい使い方はしないのでWio Node自体の説明は省きます.
Groveシステムはシリアルのコネクタにセンサなどのモジュールを接続するだけで簡単に使える便利なシリーズですが,色々なモジュールやキットが手軽に入手できるので,Groveシステムに興味がない場合も知っておいて損は無いです.
Wio NodeをArduinoとして使う
Wio NodeのWiFiは,安価て技適通っててArduino IDEも使えることで有名なESP-WROOM-02を使っています.つまりファームウェアを書き換えればArduinoとして使えます.
書き込み
事前にArduinoの開発環境と,ESP-WROOM-02をArduinoとして使うための環境を整えておきます.
- Arduino IDE+ESP-WROOM-02でLチカ http://qiita.com/hnw/items/df6f62584909f426df55
まず,Wio NodeのPORT0 にシリアルでPCと接続します(TX,RX,GNDをつなぐ).適当なコネクタが無かったので2mmピッチのピンソケットで代用しました.電源は通信用のコネクタからは取れないので別途USB等で供給する必要があります.
FUNCボタンを押しながらリセットすることで,書き込みモードになります.以下のページを参考にしました.
- http://dev-moyashi.hatenablog.com/entry/2016/09/08/185933
- http://blog.mobilehackerz.jp/2016/09/pclanwol.html
ファームウェアはOSSとして開発されているようなので,元の状態に戻すことも可能です(試してはいません)
IOピン等
回路図も公開されているので,どこに何が繋がってるのか確認しました.
Arduinoのスケッチには以下のように書いておくと良さそうです.
const uint8_t PORT0A = 1;
const uint8_t PORT0B = 3;
const uint8_t PORT1A = 4;
const uint8_t PORT1B = 5;
const uint8_t PORT_POWER = 15; // (common with RED_LED)
const uint8_t FUNC_BTN = 0;
const uint8_t BLUE_LED = 2;
const uint8_t RED_LED = PORT_POWER;
const uint8_t UART_TX = PORT0A;
const uint8_t UART_RX = PORT0B;
const uint8_t I2C_SDA = PORT1A;
const uint8_t I2C_SCL = PORT1B;
- 自由に使えるGPIOは4本(IO1,3,4,5)
- ※PORT_POWER(IO15) を HIGH にしないと,Groveコネクタのポートに電源3.3Vが供給されない(消費電力が気になる場合はON/OFFしろってことなのだと思う)
- 赤色のLEDはPORT_POWERにつながってるので,コネクタに電力供給が必要な場合は単体でON/OFFはできない(ちなみに緑色のLEDは電源の状態を表しているので制御できない)
- I2C も Wireライブラリで簡単に使える
たとえば,Wio Node の PORT0 を UART, PORT1 を I2C として使う場合のsetup関数は以下のようになります.
#include <Wire.h>
void setup() {
pinMode(FUNC_BTN, INPUT);
pinMode(BLUE_LED, OUTPUT);
pinMode(PORT_POWER, OUTPUT);
digitalWrite(PORT_POWER, HIGH);
Serial.begin(115200);
Wire.begin(I2C_SDA,I2C_SCL);
// ...
}
色々
HDC1000(I2Cでつながる温度・湿度センサー) を使って温度と湿度を定期的にサーバに送信するようにしたりしました.
(BME280を使えばArduinoとして使わなくても標準で対応してたのは後から気づきましたが...)
- HDC1000 http://akizukidenshi.com/catalog/g/gM-08775/
- BME280 http://akizukidenshi.com/catalog/g/gK-09421/
Wio Nodeは外に出ているIOピンが少ないのでちょっと物足りない気もしましたが,コンパクトで電源周りの回路もついてて楽なので,次からは積極的にこちらを使おうと思いました.