Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-02-13

#はじめに
新潟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]

⇒(参考)ウフルハッカソン公式 [使い方集::アナログセンサー] (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);
}
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?