Ina-hack Wio 3G resources

ここでは、Wio 3GでGrove - Starter Kitを使用する方法やその他のサンプルコードを説明します。Wio 3Gのプラットフォームページはこちらです。

説明資料

技術説明セッションで使用した資料はこちらです。 https://www.dropbox.com/s/adpeoljs0mhcg5e/inahack-mbed_201808.pdf?dl=0

複数のセンサーを制御するサンプルコード

こちらにGroveコネクタで使用可能な複数のセンサーを使ったサンプルコードを登録しました。オレンジのボタン(Import program)をクリックして、オンラインコンパイラにプログラムをコピーすることが出来ます。

Import programWio_3G_example

Grove sensor component example for Seeed Wio 3G

GroveセンサーとWio 3Gを以下のように接続します。

Grove connectorGrove component
D38LED Socket kit
A6Rotary Angle Sensor
A4Temperature Sensor
D20Button

TeraTermやCoolTermなどのターミナルソフトウェアで接続(115200-8N1)すると、各種センサーから取得したデータが表示されます。Windows 環境の場合はシリアルドライバをインストールして下さい。

以下のサンプルコードはセンサーモジュールをそれぞれ単体で使う場合の例です。

単体のコードの例

Grove - Button or Touch Sensor

ボタンもタッチセンサーも制御方法は同じです。InterruptInクラスを使い、割り込みでボタン押下の状態を取得できます。DigitalInクラスを使って、ポーリングすることも可能です。Grove Digitalコネクタに接続します。

#include "mbed.h"

Serial pc(USBTX, USBRX, 115200);
DigitalOut GrovePower(PB_10, 1);

#define D20 (PB_4)
InterruptIn btn(D20); // button or touch sensor
uint32_t button = 0;

void push()
{
    button++;
}

// main() runs in its own thread in the OS
int main()
{
    btn.mode(PullUp);
    btn.fall(push); // set interrupt handler

    while (true) {
        pc.printf("button = %d\n", button);
        wait(0.5);
    }
}

Grove - LED

DigitalOutクラスを使い、LEDの点灯を制御します(1で点灯、0で消灯)。Grove Digitalコネクタに接続します。LEDはアノード(足の長い方)を+(プラス)に接続します。可変抵抗で輝度を調整することが可能です。

#include "mbed.h"

DigitalOut GrovePower(PB_10, 1);

DigitalOut led1(D38);

// main() runs in its own thread in the OS
int main()
{

    while (true) {
        led1 = !led1;
        wait(0.5);
    }
}

Grove - Buzzer

DigitalOutクラスを使い、ブザーから音を発生させます。Grove Digitalコネクタに接続します。

#include "mbed.h"

DigitalOut GrovePower(PB_10, 1);

DigitalOut buzzer(D38);

// main() runs in its own thread in the OS
int main()
{

    while (true) {
        buzzer = !buzzer;
        wait(0.5);
    }
}

Grove - Rotary Angle, Light or Sound Sensor

ロータリーアングルセンサー(ボリューム:可変抵抗)、ライトセンサーもサウンドセンサーも制御方法は同じです。AnalogInクラスを使い、0〜1.0までのアナログ値を取得できます。Grove Analogコネクタに接続します。

#include "mbed.h"

Serial pc(USBTX, USBRX, 115200);
DigitalOut GrovePower(PB_10, 1);

AnalogIn ain(A6); // angle, light  or sound sensor

// main() runs in its own thread in the OS
int main()
{
    while (true) {
        pc.printf("analog = %2.2f\n", ain.read());
        wait(0.5);
    }
}

Grove - Temperature Sensor

温度センサーは専用のライブラリ Grove_temperatureを用意しました。AnalogInクラスを使い、0〜1.0までのアナログ値を取得し温度に変換します。Grove Analogコネクタに接続します。

#include "mbed.h"
#include "Grove_temperature.h"

Serial pc(USBTX, USBRX, 115200);
DigitalOut GrovePower(PB_10, 1);

Grove_temperature temp(A4);

// main() runs in its own thread in the OS
int main()
{
    while (true) {
        pc.printf("temperature = %2.2f\n", temp.getTemperature());
        wait(0.5);
    }
}

このプログラムは、以下のライブラリをインポートしてビルドします。

Import libraryGrove_temperature

Seeed Grove Temperature sensor component library

Grove - Relay

DigitalOutクラスを使い、リレーを制御します。Grove Digitalコネクタに接続します。

#include "mbed.h"

DigitalOut GrovePower(PB_10, 1);

DigitalOut relay(D38);

// main() runs in its own thread in the OS
int main()
{

    while (true) {
        relay = !relay;
        wait(0.5);
    }
}

Grove - Servo

Servoクラスライブラリを使用します。サーボーモータを使用する場合は、サーボ側に+4.8〜6Vの別電源を供給する必要があります(Wio 3G側の3.3V電源では動作しません)。詳細はハッカソンのArm Mbedサポートスタッフにお問い合わせ下さい。PwmOutとして使用可能なGrove Digitalコネクタに接続します。

サーボモータ接続先
茶色GND
+4.8〜6V DC電源
オレンジ制御信号(PwmOut)

#include "mbed.h"
#include "Servo.h"

// on-board resources
DigitalOut GrovePower(PB_10, 1);

// Grove sensors
Servo myservo(D38);


// main() runs in its own thread in the OS
int main()
{
    while (true) {
        for(float p = 0.0f; p < 1.0f; p += 0.1f) {
            myservo = p;
            wait(0.2);
        }
        wait(0.5);
    }
}

このプログラムは、以下のライブラリをインポートしてビルドします。

Import libraryServo

A class to control a model R/C servo, using a PwmOut

Grove - RGB Backlight LCD

Grove_LCD_RGB_Backlight ライブラリを使用します。このLCDモジュールは、5V電源が必要です。Wio 3GのGroveコネクタは、3.3V動作なのでそのままでは使用できません。Wio 3GとLCDモジュール間に変換回路が必要になります。詳細はハッカソンのArm Mbedサポートスタッフにお問い合わせ下さい。

#include "mbed.h"
#include "Grove_LCD_RGB_Backlight.h"

DigitalOut GrovePower(PB_10, 1);

// Grove sensors
Grove_LCD_RGB_Backlight lcd(I2C_SDA, I2C_SCL);

// main() runs in its own thread in the OS
int main()
{
    char buf[20];

    lcd.clear();
    lcd.setRGB(0xff, 0x00, 0x00);
    lcd.locate(0, 0);
    lcd.print("Hello World!");

    int cnt = 0;
    
    while (true) {
        sprintf(buf, "count = %d", cnt++);
        lcd.locate(0, 1);
        lcd.print(buf);
        wait(0.5);
    }
}

このプログラムは、以下のライブラリをインポートしてビルドします。

Import libraryGrove_LCD_RGB_Backlight

Code used to connect the Grove RGB LCD display to an mbed microcontroller.

セルラー接続用サンプルコード

Wio 3Gのセルラーモジュールを使って、ネットワークに接続するサンプルコードです。ソラコムのAPNを使い、テスト用のサーバ(echo.mbedcloudtesting.com)に接続し、4バイトの送受信を行います。シリアルターミナルで以下のログが出力されれば成功です。

Connection Established.
TCP: connected with echo.mbedcloudtesting.com server
TCP: Sent 4 Bytes to echo.mbedcloudtesting.com
Received from echo server 4 Bytes


Success. Exiting 

Import programWio_3G-example-cellular

Cellular example code for Seeed Wio 3G

SDカードのサンプルコード

Wio 3GでマイクロSDカードを使用するサンプルコードです。

Import programWio_3G-example-sd-driver

SD card example code for Seeed Wio 3G

kintone との接続

HTTP GET で kintone からデータを取得するサンプルコード

Grove センサーデバイスの接続

Wio 3G コネクタGrove センサ
D38ブザー
D20プッシュボタン

ターミナルソフトを接続するとログが表示されます(115200-8N1)。 プッシュボタンを押すとID(レコード番号)がインクリメントされます。HTTP GET リクエスト10秒間隔で送信し、一致したレコード番号があると、ブザー音と共にログに取得したjson形式のデータが表示されます。

Import programWio_3G_HTTP-GET-example

part of the preparation works for Ina-city Hackerthon

HTTP POST で kintone にデータを送信するサンプルコード

Grove センサーデバイスの接続

Wio 3G コネクタGrove センサ
A4温度センサ

ターミナルソフトを接続するとログが表示されます(115200-8N1)。 温度センサーで測定した温度をHTTP POST リクエスト10秒間隔で送信します。

Import programWio_3G_HTTP-POST-example

part of the preparation works for Ina-city Hackerthon

注意事項

  • プログラム書き込み後の状態
    プログラム書き込み後(ファイルコピー後)にマスストレージドライブに書き込んだファイルは残りませんが、これは正常動作です。
  • 書き込みが行われていない
    プログラム書き込み後(ファイルコピー後)にマスストレージドライブに「FAIL.txt」ファイルが作成される場合は、書き込みに失敗しています。ボード上のリセットボタンを押しながら erase.act というファイルを書き込み、エラーから復帰させることが出来ます。詳細はハッカソンのArm Mbedサポートスタッフにお問い合わせ下さい。


Please log in to post comments.