Bluetooth環境モニター¶
このプロジェクトでは、MITアップインベンターで作成されたAndroidアプリを使用して、Arduinoボードからの環境データを受信し表示します。ArduinoボードはDHT11センサーから温度と湿度のデータを取得します。データが収集されると、Bluetoothを介して送信されます。アプリはデータを受信すると、画面上に表示します。
Androidアプリケーションは、 MIT App Inventor という無料のWebベースプラットフォームを利用して構築されます。このプロジェクトは、Arduinoとスマートフォンのインターフェースに慣れる絶好の機会を提供します。
必要なコンポーネント
このプロジェクトでは、以下のコンポーネントが必要です。
全てのキットを一括購入するのが便利です。こちらがリンクです:
名称 |
このキットのアイテム数 |
リンク |
---|---|---|
Elite Explorer Kit |
300+ |
また、以下のリンクから個別に購入することもできます。
コンポーネント紹介 |
購入リンク |
---|---|
- |
|
1. 回路を組む
2. Androidアプリを作成する
Androidアプリケーションは、 MIT App Inventor という無料のウェブアプリケーションを使用して開発されます。 MITアップインベンターは、直感的なドラッグアンドドロップ機能により、簡易なアプリケーションを作成するための優れたスタートポイントとして機能します。
さあ、始めましょう。
Get Started with MIT App Inventor にアクセスし、「オンラインツール」をクリックしてログインします。MITアップインベンターに登録するためにはGoogleアカウントが必要です。
ログインしたら、 Projects -> Import project (.aia) from my computer に進みます。その後、
elite-explorer-kit-main\iot_project\08-bluetooth_environmental_monitor
のパスにあるble_environmental_monitor.aia
ファイルをアップロードします。また、こちらから直接ダウンロードもできます:
ble_environmental_monitor.aia
.aia
ファイルをアップロードすると、MITアップインベンターソフトウェア上にアプリケーションが表示されます。これは事前に設定されたテンプレートです。MITアップインベンターに慣れた後、このテンプレートを変更することができます。MITアップインベンターには、主に Designer と Blocks の2つのセクションがあります。ページの右上隅でこれらのセクション間を切り替えることができます。
Designer では、ボタン、テキスト、スクリーンを追加したり、アプリケーションの全体的な見た目を変更したりすることができます。
次に、 Blocks セクションがあります。このセクションでは、アプリのGUI上の各コンポーネントにカスタム機能を作成し、望ましい機能を実現することができます。
スマートフォンにアプリケーションをインストールするには、 Build タブに移動します。
.apk
ファイルを生成できます。このオプションを選択すると、.apk
ファイルをダウンロードするか、QRコードをスキャンしてインストールするかを選択するページが表示されます。インストールガイドに従ってアプリケーションのインストールを完了してください。こちらから事前にコンパイルされたAPKもダウンロードできます:
ble_environmental_monitor.apk
このアプリをGoogle Playや他のアプリマーケットにアップロードしたい場合は、
.aab
ファイルを生成できます。
3. コードをアップロードする
elite-explorer-kit-main\iot_project\08-bluetooth_environmental_monitor
のパスにある08-bluetooth_environmental_monitor.ino
ファイルを開くか、このコードを Arduino IDE にコピーします。注釈
ライブラリをインストールするには、Arduinoライブラリマネージャーを使用して、 「DHT sensor library」 と 「ArduinoBLE」 を検索し、インストールします。
正しいボードとポートを選択したら、 Upload ボタンをクリックします。
シリアルモニター(ボーレートは 9600 に設定)を開き、デバッグメッセージを確認します。
4. アプリとBluetoothモジュールの接続
先に作成したアプリケーションがスマートフォンにインストールされていることを確認します。
まず、スマートフォンで Bluetooth をオンにします。
次に、新しくインストールされた Environmental Monitor アプリを開きます。
このアプリを初めて開くと、Bluetoothの使用に必要な許可を求める2つのプロンプトが連続して表示されます。
アプリ内で Connect ボタンをクリックし、アプリとBluetoothモジュール間の接続を確立します。
このページには、すべてのペアリングされたBluetoothデバイスのリストが表示されます。リストから
xx.xx.xx.xx.xx.xx UNO R4 Home
オプションを選択します。各デバイスの名前はMACアドレスの隣にリストされています。上記のページにデバイスが表示されない場合は、デバイスの位置情報スイッチをオンにしてみてください(一部のAndroidシステムバージョンでは、Bluetooth機能と位置情報スイッチが統合されています)。
接続が成功すると、メインページにリダイレクトされ、そこで温度と湿度が表示されます。
5. コードの説明
ライブラリのインポートと定数の定義
必要なライブラリをインポートし、DHTセンサーピンとタイプに関する定数を定義します。
注釈
ライブラリをインストールするには、Arduinoライブラリマネージャーを使用して、 「DHT sensor library」 と 「ArduinoBLE」 を検索し、インストールします。
#include <DHT.h> #include <ArduinoBLE.h> #define DHTPIN 11 #define DHTTYPE DHT11
BLEサービスと特性の初期化
BLE環境センシングサービスと特性のUUIDを定義します。 Bluetooth SIG によって提供された事前定義されたUUIDを使用しています。 environmentalSensingService には
0x181A
が割り当てられ、それぞれ0x2A6E
と0x2A6F
は temperature and humidity 用に予約されています。
BLEService environmentalSensingService("181A"); BLEShortCharacteristic temperatureCharacteristic("2A6E", BLERead | BLENotify); BLEUnsignedShortCharacteristic humidityCharacteristic("2A6F", BLERead | BLENotify);
Setup関数
シリアル通信、DHTセンサー、BLEを初期化します。
void setup() { Serial.begin(9600); dht.begin(); if (!BLE.begin()) { Serial.println("starting Bluetooth® Low Energy module failed!"); while (1) ; } setupBle(); }
メインループ
BLEイベントをポーリングし、定期的にセンサーデータを更新します。
millis() - lastUpdateTime > updateInterval
の行は、センサーデータがupdateIntervalミリ秒ごとに更新されることを保証します。
void loop() { BLE.poll(); if (millis() - lastUpdateTime > updateInterval) { // Read sensor data and update BLE characteristics } }
BLEおよびデバッグ関数
BLEを設定し、デバッグ情報を出力し、BLEイベントを管理するための関数。
void printDHT(float h, float t) { /* ... */ } void setupBle() { /* ... */ } void blePeripheralConnectHandler(BLEDevice central) { /* ... */ } void blePeripheralDisconnectHandler(BLEDevice central) { /* ... */ }
printDHT(float h, float t)
: DHT11によって読み取られた温度と湿度のデータをシリアルモニターに出力するために使用されます。この関数はデバッグ目的のためです。setupBle()
: ブロードキャスト名、特性、およびサービスを設定を含むBluetoothを初期化します。blePeripheralConnectHandler(BLEDevice central)
およびblePeripheralDisconnectHandler(BLEDevice central)
: これらの関数は、Bluetoothが接続または切断されたときのイベントを処理します。デバイスがUNO R4とBluetooth経由で正常に接続すると、オンボードLEDが点灯します。デバイスが切断されると、LEDが消灯します。