#はじめに
新潟IoTハッカソン向けにソフトバンクから貸出を行うGroveセンサー/アクチュエーターの使い方についてのTips集になります。Wio LTE M1/NB1(BG96) での利用を前提としています。
##ウフルハッカソン(公式)
弊社から貸出を行うセンサー/アクチュエーターのうち、下記2点についてはウフル様がサンプルコードを提供しています。
- Grove - LED Bar v2.0
- Grove - IMU 10DOF v2.0
ウフルハッカソン公式(@uhuru-hackathon)の下記ポストを参照してください。
⇒ 【ウフル貸出分】Groveセンサー/アクチュエーター使い方集 〜Wio LTE Cat M1/NB1〜
また、Wio LTE Cat M1/NB1全般に関してのチュートリアルはこちらになります。
⇒ IoT ハッカソン デバイスプログラム手順 〜 Wio LTE M1/NB1(BG96) 〜
#Wio LTE M1/NB1(BG96)全般
- Seeed社 Arduinoライブラリ(Wio cell lib for Arduino)
- Seeed社 リファレンスマニュアル
- Wio LTE M1/NB1(BG96) ハードウェア
- Wio LTE M1/NB1(BG96) 回路図
##(重要)リチウムイオン電池関連
Wio LTE CatM1/NB1 (BG96)はリチウムイオン電池で動作させることもできます。また電源制御ICも内蔵されているため本体経由で充電することも可能です。JST PH型コネクタに対応しています。
本キットを電池で動作させる場合、690mAh以上のリチウムイオン電池を使用してください(容量の小さいものは使わないでください)。充電中は決して放置せず、絶えず目を離さないようにしてください。
リチウムイオン電池の取り扱いには、十分な注意を要します。ご使用による機器の破壊や事故、これらに伴う被害・損害については一切の責任を負いかねます。
##はまりがちなポイント
- ピン番号は
WIO_D38
,WIO_A6
,WIO_I2C_D24
のように頭にWIO_
がつく - D38以外のコネクタを使う場合、
Wio.PowerSupplyGrove(true);
を呼び出さないと通電しない - BG96モデムを使う場合は、
Wio.PowerSupplyCellular(true);
- 内蔵のRGB LEDを使う場合は、
Wio.PowerSupplyLed(true);
- コンソール出力は
Serial.print
ではなく、SerialUSB.print
に変更する。 - 【既存Wioユーザー向け】 Wio cell lib for Arduino(ライブラリマネジャー)、SeeedJP_STM32F4(ボードマネジャー)は最新バージョンにしておく。
#SB貸出センサー/アクチュエーター 一覧
- Grove - LED Bar v2.0(LEDバー)
- Grove - IMU 10DOF v2.0(加速度+ジャイロ+地磁気+気圧)
- Grove - 4-Digit Display(7セグディスプレイ)
- Grove - OLED Display 0.96''(OLEDディスプレイ)
- Grove - Digital Light Sensor(デジタル光センサー)
- Grove - UV Sensor(UVセンサー)
- Grove - Luminance Sensor(照度センサー)
- Grove - Round Force Sensor FSR402(力学/感圧センサー)
- Grove - GSR sensor(皮膚の電気伝導度センサー)
- Grove - Blue/Red/Yellow LED Button(ボタンとして)
- Grove - Digital Distance Interrupter(赤外線遮断センサー)
- Grove - Touch Sensor(タッチセンサー)
- Grove - Blue/Red/Yellow LED Button(LEDとして)
- Grove - Multi Color Flash LED (5mm)
- Grove - Vibration Motor(振動モーター)
- Grove - Relay(リレー)
- Grove - Sunlight Sensor(デジタル太陽光センサー)
- Grove - 3-Axis Digital Gyro(3軸デジタルジャイロ)
- Grove - OLED Display 1.12'' V2(OLEDディスプレイ)
- Grove - 16 x 2 LCD(LCDディスプレイ)
- Grove - I2C Hub(I2Cハブ)
##MJGrove対応センサー
@matsujirushiさんがWio LTE/3Gシリーズで使える**MjGroveライブラリ**を作成されていらっしゃいます。これを使えばWioLTEで下記センサーが使えるようになります。
- Grove - 4-Digit Display [Seeed Wiki]
- Grove - OLED Display 0.96'' [Seeed Wiki]
- Grove - Digital Light Sensor(デジタル光センサー) [Seeed Wiki]
Arduinoのライブラリマネジャーから「MjGrove」で検索してインストールしてください。
サンプルコードが同時にインストールされます。(ファイル>スケッチ例>MjGrove)
##アナログ系センサー
下記センサーはアナログ値が取得できます。
analogRead()
を利用する際は pinMode(sensorPin, INPUT_ANALOG);
を指定してください。
- Grove - UV Sensor(UVセンサー) [Seeed Wiki]
- Grove - Luminance Sensor(照度センサー) [Seeed Wiki]
- Grove - Round Force Sensor FSR402(力学/感圧センサー) [Seeed Wiki]
- Grove - GSR sensor(皮膚の電気伝導度センサー) [Seeed Wiki]
⇒(参考)ウフルハッカソン公式 [使い方集::アナログセンサー] (https://qiita.com/uhuru-hackathon/private/8559e94843203f04e086#%E3%82%A2%E3%83%8A%E3%83%AD%E3%82%B0%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC)
##デジタル(ON/OFF)系センサー
下記センサーはデジタル値でON/OFFが取得できます。
digitalRead()
を利用する際は pinMode(sensorPin, INPUT);
を指定してください。
- Grove - Blue/Red/Yellow LED Button(ボタン) [Seeed Wiki]
- Grove - Digital Distance Interrupter(赤外線遮断センサー) [Seeed Wiki]
- Grove - Touch Sensor(タッチセンサー) [Seeed Wiki]
⇒(参考)ウフルハッカソン公式 [使い方集::デジタル(スイッチ系)センサー] (https://qiita.com/uhuru-hackathon/private/8559e94843203f04e086#%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%E7%B3%BB%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC)
##デジタル(ON/OFF)系アクチュエーター
下記アクチュエーターはデジタル値のON/OFFで制御できます。
digitalWrite()
を利用する際は pinMode(actuatorPin, OUTPUT);
を指定してください。
- Grove - Blue/Red/Yellow LED Button(LEDとして) [Seeed Wiki]
- Grove - Multi Color Flash LED (5mm)
- Grove - Vibration Motor(振動モーター) [Seeed Wiki]
- Grove - Relay(リレー) [Seeed Wiki]
##Grove - Sunlight Sensor(デジタル太陽光センサー)
SI1145搭載。可視光、UV指数、赤外線が測定できます。I2Cインタフェースを使います。
[Seeed Wiki]
Seeed社のGitHubから下記ライブラリをダウンロードして、
スケッチ>ライブラリをインクルード>.zip形式のライブラリをインストール
からファイルを指定します。
https://github.com/SeeedDocument/Grove-Sunlight_Sensor/raw/master/res/Grove_Sunlight_Sensor-master.zip
以下、サンプルコードの手直し例になります。
#include <WioCellLibforArduino.h>
#include <Wire.h>
#include "Arduino.h"
#include "SI114X.h"
SI114X SI1145 = SI114X();
WioCellular Wio;
void setup() {
Wio.Init();
Wio.PowerSupplyGrove(true);
delay(500);
SerialUSB.begin(115200);
SerialUSB.println("Beginning Si1145!");
while (!SI1145.Begin()) {
SerialUSB.println("Si1145 is not ready!");
delay(1000);
}
SerialUSB.println("Si1145 is ready!");
}
void loop() {
SerialUSB.print("//--------------------------------------//\r\n");
SerialUSB.print("Vis: "); SerialUSB.println(SI1145.ReadVisible());
SerialUSB.print("IR: "); SerialUSB.println(SI1145.ReadIR());
//the real UV value must be div 100 from the reg value , datasheet for more information.
SerialUSB.print("UV: "); SerialUSB.println((float)SI1145.ReadUV()/100);
delay(1000);
}
##Grove - 3-Axis Digital Gyro(3軸デジタルジャイロ)
ITG3200搭載、3軸ジャイロセンサーモジュールです。I2Cインタフェース対応。
[Seeed Wiki]
Seeed社のGitHubから下記ライブラリをダウンロードして、
スケッチ>ライブラリをインクルード>.zip形式のライブラリをインストール
からファイルを指定します。
https://github.com/Seeed-Studio/Grove_3_Axis_Digital_Gyro/archive/master.zip
以下、サンプルコードの手直し例になります。
#include <WioCellLibforArduino.h>
#include <Wire.h>
#include "ITG3200.h"
ITG3200 gyro;
WioCellular Wio;
void setup()
{
Wio.Init();
Wio.PowerSupplyGrove(true);
delay(500);
SerialUSB.begin(9600);
gyro.init();
gyro.zeroCalibrate(200,10);//sample 200 times to calibrate and it will take 200*10ms
}
void loop()
{
SerialUSB.print("Temperature = ");
SerialUSB.print(gyro.getTemperature());
SerialUSB.println(" C");
int16_t x,y,z;
gyro.getXYZ(&x,&y,&z);
SerialUSB.print("values of X , Y , Z: ");
SerialUSB.print(x);
SerialUSB.print(" , ");
SerialUSB.print(y);
SerialUSB.print(" , ");
SerialUSB.println(z);
float ax,ay,az;
gyro.getAngularVelocity(&ax,&ay,&az);
SerialUSB.print("Angular Velocity of X , Y , Z: ");
SerialUSB.print(ax);
SerialUSB.print(" , ");
SerialUSB.print(ay);
SerialUSB.print(" , ");
SerialUSB.print(az);
SerialUSB.println(" degrees per second");
SerialUSB.println("*************");
delay(1000);
}
##Grove - OLED Display 1.12'' V2(OLEDディスプレイ)
96ドット x 96ドットのOLEDディスプレイです。I2Cインタフェースを使います。
[Seeed Wiki]
Seeed社のGitHubから下記ライブラリをダウンロードして、
スケッチ>ライブラリをインクルード>.zip形式のライブラリをインストール
からファイルを指定します。
https://github.com/Seeed-Studio/OLED_Display_96X96/archive/master.zip
以下、サンプルコードの手直し例になります。
#include <WioCellLibforArduino.h>
#include <Wire.h>
#include <SeeedGrayOLED.h>
#include <avr/pgmspace.h>
WioCellular Wio;
void setup()
{
Wio.Init();
Wio.PowerSupplyGrove(true);
delay(500);
SerialUSB.begin(9600); //Begin serial communication
Wire.begin();
SeeedGrayOled.init(SH1107G); //initialize SEEED OLED display
SeeedGrayOled.clearDisplay(); //Clear Display.
SeeedGrayOled.setNormalDisplay(); //Set Normal Display Mode
SeeedGrayOled.setVerticalMode(); // Set to vertical mode for displaying text
for(char i=0; i < 16 ; i++)
{
SeeedGrayOled.setTextXY(i,0); //set Cursor to ith line, 0th column
SeeedGrayOled.setGrayLevel(i); //Set Grayscale level. Any number between 0 - 15.
SeeedGrayOled.putString("Hello World OLED"); //Print Hello World
}
}
void loop()
{
}
##Grove - 16 x 2 LCD
3.3Vでも5Vでも駆動する16文字✕2行のLCDディスプレイの新製品です。
従来の5V駆動の製品と異なり、バックライト色は制御できません(=setRGB()
は使えません)が、それ以外の機能はすべて利用可能です。
[Seeed Wiki]
Seeed社のGitHubから下記ライブラリをダウンロードして、
スケッチ>ライブラリをインクルード>.zip形式のライブラリをインストール
からファイルを指定します。
https://github.com/Seeed-Studio/Grove_LCD_RGB_Backlight/archive/master.zip
以下、サンプルコードの手直し例になります。
#include <WioCellLibforArduino.h>
#include <Wire.h>
#include "rgb_lcd.h"
WioCellular Wio;
rgb_lcd lcd;
/*
const int colorR = 255;
const int colorG = 0;
const int colorB = 0;
*/
void setup()
{
Wio.Init();
Wio.PowerSupplyGrove(true);
delay(500);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// lcd.setRGB(colorR, colorG, colorB);
// Print a message to the LCD.
lcd.print("hello, world!");
delay(1000);
}
void loop()
{
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
delay(100);
}