概要
今回は Arduino Pro mini で浅草ギ研さんの BLESerial2 を使ってペアリングしたスマホに Pro mini のピンで拾った情報を送信してみました
回路は過去に紹介した Pro mini + Mux の回路を使って、スイッチの押した情報を BLE で送信します
環境
- BLESerial2
- Arduino Pro Mini 328 3.3V 8MHz
- Arduino IDE 1.6.7
- BLEモジュール BLESerial2
配線
今回の全体的な配線は以下の通り
ほぼ、前回の配線と同じで、これに BLESerial2 を追加で配線しています
- BLESerial2 3v3 -> ブレッドボード [+]
- BLESerial2 GND -> ブレッドボード [-]
- BLESerial2 TX -> Arduino Pro mini TX0
RX ピンは今回は使わないので配線しないで OK です
スケッチ
スケッチを書き込む際は Pro mini の TX0 ピンと BLESerial2 と TX ピンはまだ接続しないようにしてください
接続していると IDE からうまくスケッチを書き込めません
//Mux control pins
int s0 = 9;
int s1 = 8;
int s2 = 7;
int s3 = 6;
//Mux in "SIG" pin
int SIG_pin = 0;
int muxChannel[16][4] = {
{0, 0, 0, 0}, //channel 0
{1, 0, 0, 0}, //channel 1
{0, 1, 0, 0}, //channel 2
{1, 1, 0, 0}, //channel 3
{0, 0, 1, 0}, //channel 4
{1, 0, 1, 0}, //channel 5
{0, 1, 1, 0}, //channel 6
{1, 1, 1, 0}, //channel 7
{0, 0, 0, 1}, //channel 8
{1, 0, 0, 1}, //channel 9
{0, 1, 0, 1}, //channel 10
{1, 1, 0, 1}, //channel 11
{0, 0, 1, 1}, //channel 12
{1, 0, 1, 1}, //channel 13
{0, 1, 1, 1}, //channel 14
{1, 1, 1, 1} //channel 15
};
void setup() {
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
digitalWrite(s0, LOW);
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
Serial.begin(9600);
}
void loop() {
int ch_count = 2;
for (int i = 0; i < ch_count; i ++) {
int val = readMux(i);
if (val > 1000) {
Serial.write(i);
}
delay(200);
}
}
int readMux(int channel) {
int controlPin[] = {s0, s1, s2, s3};
//loop through the 4 sig
for (int i = 0; i < 4; i ++) {
digitalWrite(controlPin[i], muxChannel[channel][i]);
}
//read the value at the SIG pin
int val = analogRead(SIG_pin);
//return the value
return val;
}
Mux から読み込んだ値が 1000 以上だった場合に Serial.write(i);
でデータを送信します
これで BLESerial でペアリングしたスマホにデータを送信することができます
動作確認
スマホアプリを使って動作確認してみましょう
LightBlue で BLESerial2 にコネクトしましょう
Notify 用のサービスを確認する画面で「Listen for notifications」をタップします
この状態で回路側のスイッチを押すと、押されたスイッチの番号がスマホ側で受信できると思います
こんな感じで受信できれば成功です
BLESerial2 にコネクトできると BLESerial2 上の LED が赤 -> 緑になるので、まずコネクトできているかを確認してください
最後に
紹介は以上です
Arduino Pro mini でも問題なく BLESerial2 が動きました
単純な情報であればこれだけでスマホ連携できるので非常に簡単です
今回は出力電圧が 3.3v マイコンだったので TX ピンはそのまま接続しましたが、マイコンが 5v マイコンの場合は BLESerial2 の TX ピンに 5v の電圧がかかるとまずいのその場合はちゃんと分圧してください
0 件のコメント:
コメントを投稿