App Inventorの使い方 その2(自作アプリでBluetooth経由でLEDをON/OFFしてみよう~デバイス編~)
こんにちは、Ideagearの鈴木陽介です。
App Inventorというブラウザだけでスマホアプリを製作できるとても便利なソフトがあるのですが、ここではソフトの紹介ではなく、デバイス側のセッティングについてご説明します。
ソフトの使い方やApp Inventorとは何ぞや?という基本的なことについては、下記の前回記事をご覧ください。
まえがき
前回と今回の記事は、下記ワークショップ開催にあたり、そのテキストとするべく作成しました。
で、ワークショップ当日の朝にようやくこの記事を書いているとんでもない講師ですがw、前回記事を書いてからの一週間は、3年ぶりに香港へ行ったり、月末月初だったり、昨日の交流会に合わせて下記のようなデジタルペットをつくったりと大忙しだったため仕方ないです。
下記の通り、アプリから音声を選択し、Bluetooth経由で指示することにより同じタッチセンサーでも選択する音を変えることができます。
参考記事
今回の実施にあたり、下記記事を参考にさせていただきました。
なお、記事にも書かれていますが、今回ご紹介するBluetoothモジュール(HC-05/HC-06)は技適が取れていないため、日本で使う際にはご注意ください。
先程ご紹介したデジタルペットは、スマホからの指示を受けるだけですのでHC-06を使用しました。
WindowsとArduinoとBluetoothモジュール(HC-05/HC-06)の接続方法
Arduinoを使いBluetooth通信をやってみる!HC-05/HC-06 Bluetoothモジュールの使い方!
Arduinoを簡単にBluetooth無線化するHC-05/HC-06
ArduinoにBluetoothモジュールを配線
使用デバイス及び電子部品
・Arduino Uno
・HC-05(Bluetoothモジュール)
・発光ダイオード(LED)
・抵抗(2.2kΩ×1+1kΩ×1+LED用の適当なもの)
・電子工作用のジャンパーピン
(・圧電ブザー)
今回使うのはこれだけです。
Arduinoの使い方がわからない方は、以前の下記記事を参考にしてください。
配線図
下記を参考に配線してください。
Arduino | HC-05/06 | LED | ブザー |
---|---|---|---|
5V | VCC | - | - |
GND | GND | カソード(足短)+抵抗 | - |
6番ピン | - | アノード(足長) | + |
10番ピン | TX | - | |
11番ピン | RX※ | - |
※RXと11番ピンとの間は、2.2kΩと1kΩの抵抗で挟み込み、一方をGNDにつなげる。
下記写真は私が実際に配線したものです。
(1kΩの抵抗がなかったため、約0.5kΩの抵抗を2つ使用して代用)
やりたいことは、アプリを使ったLチカですが、LEDだけだとわかりにくいため、圧電ブザーもつけました。ちなみに、LEDのカソード側に付ける抵抗は何でもいいですが、2.2kΩと1kΩの抵抗を何個入りかのセットで購入する場合は、余った1kΩの抵抗を使えばいいです。
また、細かいですが、LEDとブザーはどうせ6番ピンで一緒にコントロールするからと、横着してアノードと+、カソードと-を同じ列に挿しこむと、ほとんどの場合、抵抗が入っていることによりブザーの音が出なくなります。よって、ブザーのマイナス側は単独でGNDにつなげた方がいいです。
なお、今回はHC-05を使っていますが、これもスマホからの指示を受けるだけなのでHC-06でも大丈夫です。また、HC-05も06もAmazonジャパンやAliexpressなどで検索するといくらでも出てきますので、適当なものを買ってください。
ソースコード
Arduinoに書き込むソースコードは下記を参考にしてください。
ポイントは3つ:
- void setup()にBluetooth.begin()を入れてBluetoothを使えるようにする。
- void loop()にBluetooth.available()を入れてスマホとの接続を確認する。
- Bluetooth.read()を使い、スマホから送られてきた数字やテキストを読み取り、変数に代入するなどして活用する。
#include<SoftwareSerial.h>
SoftwareSerial Bluetooth(10,11); //RX | TX
const int ledPin = 6;
void setup() {
Bluetooth.begin(9600); //opens serial port, sets data rate to 9600 bps
Serial.begin(9600); //opens serial port, sets data rate to 9600 bps
Serial.println("Connect your device with 1234 as Paring Key\n");
pinMode(ledPin, OUTPUT);
}
void loop() {
if(Bluetooth.available()){
int input = Bluetooth.read(); //スマホから来たデータを読み取る
if(input == 0){
digitalWrite(ledPin, LOW); //スマホから来た番号が0だったらLEDをOFFする
}
else if(input == 1){
digitalWrite(ledPin, HIGH); //スマホから来た番号が1だったらLEDをONする
}
}
}
結果
配線及びソース書き込み後の結果は下記動画の通りです。
まとめ
いかがでしたでしょうか?
Bluetoothと聞くと、「無線通信って難しそう」と思われるかもしれませんが、今回のようなアプリ製作ツールやBluetoothモジュールを使えばカンタンにできることがおわかりいただけたのではないでしょうか?
余談ですが、今回のワークショップでは、遠隔参加組はほぼBluetoothモジュールを購入しておらずとてもショックでしたがw、オンラインで気軽に参加しようとしている方々に事前に部品を購入してもらうというのはなかなか難しいのかもしれません。
ただ、その辺の対策も含めて、今回の経験は次回に活かしたいと思います。
それではまたお会いしましょう!
Discussion