SWDesk/Firmware
[Nano 33 IoT] BLE Peripheral Example(2) - ScanResp
Bilient
2021. 11. 11. 15:58
To add manufactererdata
Change manufacturerdata every 2 second
![]() |
![]() |
#include <WiFiNINA.h>
#include <time.h>
#include <WiFiUdp.h>
#include <NTPClient.h>
#include <ArduinoBLE.h>
#include "BConstants.h"
#define PIN_Tx0 0
#define PIN_Rx0 1
#define PIN_UARTCONTROL 2
#define PIN_LED 2
#define PIN_IRRx0 3
#define PIN_IRTx0 4
#define PIN_SWITCHIN 5
#define PIN_RELAYCONTROL 6
#define PIN_DRIVER1 7
#define PIN_DRIVER2 8
#define PIN_DRIVER3 9
#define PIN_DRIVER5 10
#define PIN_Rx1 11
#define PIN_Tx1 12
#define PIN_ADC0 A0
#define PIN_ADC1 A1
#define PIN_ADC2 A2
#define NTP_PACKET_SIZE 48
const char WiFi_SSID[] = SECRET_SSID;
const char WiFi_PW[] = SECRET_WIFIPW;
const int TimeZone = 3;
int status = WL_IDLE_STATUS;
byte NTPPacketBuffer[NTP_PACKET_SIZE];
int Count1 = 0;
WiFiClient client;
int ServerStatus = WL_IDLE_STATUS;
WiFiServer server(80);
BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214");
BLEByteCharacteristic switchCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);
uint8_t manufacturerData[14] = {0x00, 0xD0, 0x44, 0x65, 0x78, 0x63, 0x6f, 0x6d, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e};
void setup(){
Serial.begin(9600);
while(!Serial);
pinMode(PIN_LED, OUTPUT);
if(!BLE.begin()){
Serial.print("[?] BLE failed");
while(1);
}
BLE.setLocalName("B-LED");
BLE.setManufacturerData(manufacturerData, sizeof(manufacturerData));
BLE.setConnectable(true);
BLE.setAdvertisedService(ledService);
ledService.addCharacteristic(switchCharacteristic);
BLE.addService(ledService);
switchCharacteristic.writeValue(0);
BLE.advertise();
Serial.println("Started BLE LED Peripheral");
}
void loop(){
BLEDevice central = BLE.central();
if(millis()%2000 == 0){
manufacturerData[3] += 2;
BLE.stopAdvertise();
BLE.setManufacturerData(manufacturerData, sizeof(manufacturerData));
BLE.advertise();
Serial.println(".");
delay(2);
}
if(central){
Serial.print("Connected to central: ");
Serial.println(central.address());
while(central.connected()){
if(switchCharacteristic.written()){
int val = switchCharacteristic.value();
Serial.println(val);
if(val>0){
Serial.println("LED ON");
digitalWrite(PIN_LED, HIGH);
}else{
Serial.println("LED OFF");
digitalWrite(PIN_LED, LOW);
}
}
}
Serial.print(F("Disconnected from central : "));
Serial.println(central.address());
}
}
반응형