In this example I'm using a BLE shield to broadcast the state of a connected button.
The byte is sent as part of the advertising data so there is no need for a connection. Any device that scans for BLE peripherals will be able to detect it.
The HM 10 module is connected as a serial device to pins 2 and 3. I'm using the new rSoftwareSerial library.
The HM 10 module allows us to set the value of a single byte that will be sent as part of the advertising data. This is done with the AT+FLAG command.
The B4R code is very simple:
Sub Process_Globals Public Serial1 As Serial Private astream As AsyncStreams Private softserial As SoftwareSerial Private btn As Pin End Sub Private Sub AppStart Serial1.Initialize(115200) Log("appstart") softserial.Initialize(9600, 2, 3) astream.Initialize(softserial.Stream, "astream_newdata", Null) btn.Initialize(btn.A0, btn.MODE_INPUT_PULLUP) btn.AddListener("btn_StateChanged") End Sub Sub Btn_StateChanged (State As Boolean) Dim b As Byte If State Then b = 0 Else b = 1 astream.Write("AT+FLAG".GetBytes) astream.Write(Array As Byte(b)) End Sub Sub astream_NewData (Buffer() As Byte) Log("recieve: ", Buffer) End Sub
The relevant advertising record starts with B000 and its type is 22 (this is the service data type).
7.9 KB Views: 739
2.9 KB Views: 356