スクーミーIoTボード同士の連携(Bluetooth)

手順1、受信側のBluetoothのMACアドレスを調べる

このプログラムを受信側のスクーミーIoTボードに書き込みます

コード

void setup(void) {
Serial.begin(115200);
Serial.println("-----------------");
uint8_t macBT[6];
esp_read_mac(macBT, ESP_MAC_BT);
Serial.printf("%02X:%02X:%02X:%02X:%02X:%02X\r\n", macBT[0], macBT[1], macBT[2], macBT[3], macBT[4], macBT[5]);
}

void loop() {
delay(1000);
}

ここでシリアルモニターを見るとこのような画面になります。
ここの赤枠の部分が、MACアドレスになります。

今回は、仮に、

A1:A2:A3:A4:A5:A6

だったとします。

手順2、送信側のスクーミーIoTボードにプログラムを入れる

先ほど示した、受信側のMACアドレスをプログラムに入れる作業をまず行います

コード

#include "BluetoothSerial.h"

BluetoothSerial SerialBT;

//ここの設定を変更します
String MACadd = "A1:A2:A3:A4:A5:A6"; //先ほどの受信側のMACアドレス
uint8_t address[6]  = {0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6}; //ここにもサンプルのように入れていく0X以下に先ほどのMACアドレスが1つずつくるイメージ
//


bool connected;

void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32test", true); 
  Serial.println("The device started in master mode, make sure remote BT device is on!");
  
  // connect(address) is fast (upto 10 secs max), connect(name) is slow (upto 30 secs max) as it needs
  // to resolve name to address first, but it allows to connect to different devices with the same name.
  // Set CoreDebugLevel to Info to view devices bluetooth address and device names
  connected = SerialBT.connect(address);
  
  if(connected) {
    Serial.println("Connected Succesfully!");
  } else {
    while(!SerialBT.connected(10000)) {
      Serial.println("Failed to connect. Make sure remote device is available and in range, then restart app."); 
    }
  }
  // disconnect() may take upto 10 secs max
  if (SerialBT.disconnect()) {
    Serial.println("Disconnected Succesfully!");
  }
  // this would reconnect to the name(will use address, if resolved) or address used with connect(name/address).
  SerialBT.connect();

  pinMode(32, OUTPUT);
  pinMode(33, INPUT_PULLUP);

  // Sign for the end of bluetooth setup.
  for (int i=0; i<3; i++) {
    digitalWrite(32, HIGH);
    delay(50);
    digitalWrite(32, LOW);
    delay(50);
  }
}

void loop() {
  if (digitalRead(33) == LOW) {
    Serial.println("LED is ON.");
    SerialBT.write('T');
  }
  delay(20);
}

 

手順3、受信側のスクーミーIoTボードにプログラムを入れる

コード

#include "BluetoothSerial.h"

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif

BluetoothSerial SerialBT;

void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32test"); //Bluetooth device name
  Serial.println("The device started, now you can pair it with bluetooth!");
  pinMode(32, OUTPUT);
  pinMode(33, OUTPUT);

  // Sign for the end of bluetooth setup.
  for (int i=0; i<3; i++) {
    digitalWrite(32, HIGH);
    delay(50);
    digitalWrite(32, LOW);
    delay(50);
  }
}

void loop() {
  if (SerialBT.available()) {
    if (SerialBT.read() == 'T') {
        digitalWrite(33, HIGH);
    }
  }
  delay(20);
  digitalWrite(33, LOW);
}

 

手順4、インプット、アウトプットを設定して完成!

送信側の右上にタッチセンサー、受信側の右上にLEDをつけます。
また、送信側でBluetoothが繋がった時、シリアルモニターとLEDに変化があれば成功です!


 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です