D2000のZephyrのサンプルにGrove LCDのプログラムが含まれています。
今回はこのLCDを使用してみました。
Grove RGBバックライト液晶モジュール
http://akizukidenshi.com/catalog/g/gP-09283/
LCDとBase Shield V2は、セットに含まれているものを使用しました。
Grove-Arduinoスターターキット
http://akizukidenshi.com/catalog/g/gK-09167/
http://wiki.seeed.cc/Base_Shield_V2/
LCDの電源は、5VなのでシールドのVCC設定を5Vに設定します。
LCDはI2Cコネクタに接続します。
起動すると簡単に表示が確認できます。
このLCDは、バックライトがカラーLEDになっており、設定により色が変化します。サンプルプログラムは、色の設定を100msec毎に変化させ、設定値をLCDに表示します。
Groveのサンプルは、LCDしかありませんがライブラリ側に対応センサがいくつかあるようです。
BOSCH社製6軸センサ(3軸加速度、3軸磁気)BMC150を搭載しています。
https://www.bosch-sensortec.com/bst/products/all_products/bmc150
今回は磁気センサにアクセスします。
QMSIのサンプルMagnetometerと
mbedのBMC150サンプルを参考にしました。
https://os.mbed.com/users/Dautor/code/BMC150/file/1d1123b3df76/bmc150.cpp/
ありがとうございます。
加速度計のアドレスは、0x12です。
#define BMC150_I2C_MAG_ADDR 0x12
磁気センサの初期化でレジスタ0x4Cで0x38を設定しています。出力データレートを30Hz、操作モードをノーマルにしています。
磁気データは、0x42レジスタから2バイトづつXYZ軸の順に入っています。6バイトを一度に読み込んでいます。
温度と加速度と磁気値を500ms毎に取得し、シリアル経由でパソコンに表示しました。
以下にサンプルプログラムがあります。
https://github.com/jendo1969/d2000/tree/master/Bmc150_MAG
BOSCH社製6軸センサ(3軸加速度、3軸磁気)BMC150を搭載しています。
https://www.bosch-sensortec.com/bst/products/all_products/bmc150
今回は加速度計にアクセスします。
#define BMC150_I2C_ADDR 0x10
温度センサとI2Cのアドレスは同じです。
加速度の取得の前にレンジとフィルターの設定を行っています。フィルターは更新時間64ms、レンジは、±2gに設定しました。
加速度データは、0x02レジスタから2バイトづつXYZ軸の順に入っています。6バイトを一度に読み込んでいます。
温度と加速度を500ms毎に取得し、シリアル経由でパソコンに表示しました。
以下にサンプルプログラムがあります。
https://github.com/jendo1969/d2000/tree/master/Bmc150_ACC
Google AIY VOICE KITを購入しました。
Google AIY Voice Kit
http://akizukidenshi.com/catalog/g/gK-12835/
Raspberry PI3も必要なので同時に購入しました。
RaspberryPi3 Model B (ラズベリーパイスリーモデルビー) element14版
http://akizukidenshi.com/catalog/g/gM-11425
電源も同時に購入しています。
スイッチングACアダプター (USB ACアダプター) 5V3A
http://akizukidenshi.com/catalog/g/gM-12001/
KITには、カラー冊子のマニュアルが付属しており、詳しい説明があります。段ボールケース、拡張ボード、マイクボード、スピーカ、ケーブル、ボタンが付属しています。
SDカードは付属していません。OSイメージは、AIYのホームページからダウンロードできます。
https://aiyprojects.withgoogle.com/voice/#project-overview
まずは組み立てて行こうと思います。
BOSCH社製6軸センサ(3軸加速度、3軸磁気)BMC150には、加速度センサ側に温度測定を搭載しています。
https://www.bosch-sensortec.com/bst/products/all_products/bmc150
#define BMC150_I2C_ADDR 0x10
#define ACCD_TEMP_REG 0x08
I2Cアドレスが0x10 、温度値のレジスタが0x08です。
温度は、取得した数値が0の時、23℃です。数値1が0.5℃に対応しています。下が変換式はです。
temp_val = ((float)data) / 2 + 23;
1秒ごとに温度を取得し、シリアル通信USART_Aでパソコンに送りました。
数℃実際の室温より高いので校正が必要です。
BMC150 ICを触ると温度が上がるので計測はできているようです。
以下にサンプルプログラムがあります。
https://github.com/jendo1969/d2000/tree/master/Bmc150_Temp
© 2014 Spineedge Corporation.
組込み技術向上のため、エンベデッドに関する話題中心のブログです。