This post is Private. Only a writer or those who know its URL can access this post.

【SB貸出分】Groveセンサー/アクチュエーターの使い方集〜Wio LTE Cat M1/NB1〜

はじめに

新潟IoTハッカソン向けにソフトバンクから貸出を行うGroveセンサー/アクチュエーターの使い方についてのTips集になります。Wio LTE M1/NB1(BG96) での利用を前提としています。

SB貸出センサー/アクチュエーター 一覧

ウフルハッカソン(公式)

弊社から貸出を行うセンサー/アクチュエーターのうち、下記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)全般

(重要)リチウムイオン電池関連

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貸出センサー/アクチュエーター 一覧

MJGrove対応センサー

@matsujirushiさんがWio LTE/3Gシリーズで使えるMjGroveライブラリを作成されていらっしゃいます。これを使えばWioLTEで下記センサーが使えるようになります。

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]

⇒(参考)ウフルハッカソン公式 使い方集::アナログセンサー

デジタル(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]

⇒(参考)ウフルハッカソン公式 使い方集::デジタル(スイッチ系)センサー

デジタル(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);
}
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.