13
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Wio Node を Arduino として使うときのメモ

Last updated at Posted at 2016-11-06

MobileHackerzのmiroさんがWio Node便利だと言っていた気がしたので試しに使ってみたときのメモ.

Wio Nodeとは

Wio NodeはSeeed StudioのGroveシステムに対応したWiFiモジュールです.バッテリーの充電回路まで搭載してるのでつなぐだけで簡単にバッテリー駆動もできます(すごい).

今回は,Wio Nodeらしい使い方はしないのでWio Node自体の説明は省きます.

Groveシステムはシリアルのコネクタにセンサなどのモジュールを接続するだけで簡単に使える便利なシリーズですが,色々なモジュールやキットが手軽に入手できるので,Groveシステムに興味がない場合も知っておいて損は無いです.

Wio NodeをArduinoとして使う

Wio NodeのWiFiは,安価て技適通っててArduino IDEも使えることで有名なESP-WROOM-02を使っています.つまりファームウェアを書き換えればArduinoとして使えます.

書き込み

事前にArduinoの開発環境と,ESP-WROOM-02をArduinoとして使うための環境を整えておきます.

まず,Wio NodeのPORT0 にシリアルでPCと接続します(TX,RX,GNDをつなぐ).適当なコネクタが無かったので2mmピッチのピンソケットで代用しました.電源は通信用のコネクタからは取れないので別途USB等で供給する必要があります.

wionode.jpg

FUNCボタンを押しながらリセットすることで,書き込みモードになります.以下のページを参考にしました.

ファームウェアはOSSとして開発されているようなので,元の状態に戻すことも可能です(試してはいません)

IOピン等

回路図も公開されているので,どこに何が繋がってるのか確認しました.

wionodeport.png

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として使わなくても標準で対応してたのは後から気づきましたが...)

Wio Nodeは外に出ているIOピンが少ないのでちょっと物足りない気もしましたが,コンパクトで電源周りの回路もついてて楽なので,次からは積極的にこちらを使おうと思いました.

13
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?