2021年9月23日木曜日

BluetoothLE デバイスを作る

BluetoothLE デバイスを作る

自分のアプリ用の 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 件のコメント:

コメントを投稿