自分のアプリ用の BLE デバイスが無いということに気がついたので作りました
BLE モジュールは手元にあった BLESerial2 を使いました
環境
- macOS 11.6
- arduino IDE 1.8.16
- Arduino Pro mini
- BLESerial2
コンセプト
BLE デバイスと接続だけできてもダメなので Notify でデータを飛ばせるようにします
データを飛ばすには Serial.write するだけなのでタクトスイッチを押したらシリアル通信するような構成にします
送信するデータは何でも OK ですが今回はテストなので「0」を飛ばします
あとは通電や動作確認用に LED を設置します
とりあえずプロトタイプを作成する
ブレッドボード上にそれっぽく配置していきます
写真の上で BLESerial2 の制御をしています
Arduino の TX ピント BLESerial2 の TX ピンをつないでいます
写真の下でタクトスイッチと LED の制御をしています
適当なピンを使って digitalRead と digitalWrite をしているだけです
スケッチ
Arduino Pro mini に書き込むスケッチは以下の通りです
PULLUP なのでタクトスイッチが押された場合にはピンの情報は「0」になります
「0」になったら LED を光らせるために degitalWrite しています
また Serial.write もし BLESerial2 に信号を送信しています
連打できないように delay を 1.5 秒入れています
const int SWITCH_PIN = 7;
const int LED_PIN = 4;
void setup(){
pinMode(SWITCH_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
}
void loop(){
int value;
value = digitalRead(SWITCH_PIN);
if (value == 0) {
digitalWrite(LED_PIN, HIGH);
Serial.write(0);
delay(1000);
}
digitalWrite(LED_PIN, LOW);
delay(500);
}
ユニバーサル基板上に実装する
ブレッドボードだとかっこ悪いのでユニバーサル基板にはんだして回路を実装していきます
かなり適当な回路なので保護回路などはありません
みなさんはマイコンやモジュールを破壊しないようにちゃんと保護回路を組んであげてください
で、できたのが以下です
さすがに Arduino と BLESerial2 は他でも使う可能性があるのでピンヘッダをつけて取り外せるようにしています
Arduino Pro mini の部分は面倒だったのでそのまま使っているので電源の供給は FTDI のシリアル変換器を使って 5V をコンセントなどから取ります
たぶんこの部分もシリアルピンがあるマイコンで代用できるので ATTiny などを使えばさらに小型化できると思います
モジュールの配置とジャンパ線の配線がキレイにできるようになると上級者な気がします
自分は下手くそなので妥協して絶縁テープでまかればジャンパ線を使ってずるしています
動作確認
自分の Bluetooth アプリ「IoT Gateway for BLE」をスマホにインストールしてためします
チャンネルは CloudMQTT を使っています
BLE デバイスを登録してチャンネルと紐付けて Gateway を作成しスタートすれば OK です
今回は写真だけです
SensorTag を使ったデモ動画を過去にあげているので実際に動いている様子はそちらを御覧ください
費用
たぶん 3,500 円くらいです
だいぶ昔に購入したのであまり記憶にないです
- BLESerial2・・・2,000円
- Arduino Pro mini・・・1,000円
- その他 (抵抗やジャンパ、基盤など)・・・500円
最近だとラズパイ4や ESP32 などすでに開発ボードに BLE モジュールが搭載されているケースがあるのでそれを購入したほうが回路も作成する必要もないし安く済むと思うのでそちらを購入したほうがいいかなと思います
作成時間
プロトタイプからユニバーサル基板上への実装までで 4 時間くらいかかりました
ブレッドボードで 1時間30分でユニバーサル基板上への実装で 2時間30分くらいの内訳です
久しぶりに電子工作した割にはスムーズにできたかなと思います
最後に
はんだしているときは無心になれるのでオススメです
メモ
- BLESerial2 は 3.3v 動作なのだがなぜか分圧した 3.3v だと動作しなかったので Arduion の VCC (5V) から取っている
- もしかするとそのうち BLESerial2 が壊れるかもしれない
0 件のコメント:
コメントを投稿