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 connector | Grove component |
D38 | LED Socket kit |
A6 | Rotary Angle Sensor |
A4 | Temperature Sensor |
D20 | Button |
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.