Jump to content

Component: Bluetooth (ESP32 SPP) (Wireless): Difference between revisions

From Flowcode Help
No edit summary
m Text replacement - "style="background-color:#EAE1EA;"" to "class="mtx-class-propfolder""
 
(10 intermediate revisions by 3 users not shown)
Line 22: Line 22:


==Detailed description==
==Detailed description==


''No detailed description exists yet for this component''
''No detailed description exists yet for this component''
Line 51: Line 27:
==Examples==
==Examples==


A simple example file showing how to send and receive data using the ESP32 Bluetooth Serial Port Profile.


{{Fcfile|ESP_BT.fcfx|ESP_BT}}




The SPP legacy bluetooth mode must be enabled in the ESP32 config file to allow SSP to work. For details please see this [https://www.flowcode.co.uk/forums/viewtopic.php?p=12324#p12324 forum topic].




For problems sending strings or missing data bytes, please see this [https://www.flowcode.co.uk/forums/viewtopic.php?p=4466#p4466 forum topic].




==Macro reference==


===CheckConnectionStatus===
{| class="mtx-class-macrotable wikitable"
|-
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" class="mtx-class-macrohead" | '''CheckConnectionStatus'''
|-
| colspan="2" | Checks to see if the Bluetooth device is connected. Returns 1 if connected. 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-bool-icon.png]] - BOOL
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}




===Initialise===
{| class="mtx-class-macrotable wikitable"
|-
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" class="mtx-class-macrohead" | '''Initialise'''
|-
| colspan="2" | Starts up the Bluetooth communications SPP service. 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}




===ReceiveArray===
{| class="mtx-class-macrotable wikitable"
|-
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" class="mtx-class-macrohead" | '''ReceiveArray'''
|-
| colspan="2" | Attempts to receive an array of bytes from the bluetooth serial port. Returns the number of bytes received. 
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Data
|-
| colspan="2" | Buffer to place received data into 
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | MaxBytes
|-
| colspan="2" | Max number of bytes to try and read within the time 
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Timeout
|-
| colspan="2" | Number of ms to wait for incoming data 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}


A simple example file showing how to send and receive data using the ESP32 Bluetooth Serial Port Profile.
{{Fcfile|ESP_BT.fcfx|ESP_BT}}
The SPP legacy bluetooth mode must be enabled in the ESP32 config file to allow SSP to work. For details please see this [https://www.flowcode.co.uk/forums/viewtopic.php?p=3832#p3832 forum topic].
For problems sending strings or missing data bytes, please see this [https://www.flowcode.co.uk/forums/viewtopic.php?p=4466#p4466 forum topic].
==Macro reference==


===ReceiveByte===
===ReceiveByte===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReceiveByte'''
| width="90%" class="mtx-class-macrohead" | '''ReceiveByte'''
|-
|-
| colspan="2" | Attempts to receive a byte from the bluetooth serial port. 0-255 = a valid received value 256 = a timeout has occured 
| colspan="2" | Attempts to receive a byte from the bluetooth serial port. 0-255 = a valid received value 256 = a timeout has occured 
Line 104: Line 116:




===SendString===
===ReceiveCount===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SendString'''
| width="90%" class="mtx-class-macrohead" | '''ReceiveCount'''
|-
|-
| colspan="2" | Sends a string to the Bluetooth serial connection 
| colspan="2" | Collects the number of bytes currently stored in the receive buffer. 
|-
|-
|-
|-
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Data
|-
| colspan="2" | Data Array to send 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
|}
Line 124: Line 131:


===ReceiveINTArray===
===ReceiveINTArray===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReceiveINTArray'''
| width="90%" class="mtx-class-macrohead" | '''ReceiveINTArray'''
|-
|-
| colspan="2" | Receives an array of 16-bit INT/UINT values and returns the number of values received. 
| colspan="2" | Receives an array of 16-bit INT/UINT values and returns the number of values received. 
Line 157: Line 164:




===SendINTArray===
===ReceiveString===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SendINTArray'''
| width="90%" class="mtx-class-macrohead" | '''ReceiveString'''
|-
|-
| colspan="2" | Transmits an array of 16-bit INT/UINT values via the Bluetooth peripheral 
| colspan="2" |  
|-
|-
|-
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Data
| width="90%" | MaxBytes
|-
|-
| colspan="2" | Data Array to send 
| colspan="2" | Max number of bytes to try and read within the time 
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | NumValues
| width="90%" | Timeout
|-
|-
| colspan="2" | Number of 16-bit values to send from the array 
| colspan="2" | Number of ms to wait for incoming data 
|-
|-
| width="10%" align="center" | [[File:Fc9-bool-icon.png]] - BOOL
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-string-icon.png]] - STRING
| width="90%" | MSBfirst
|-
| colspan="2" | 0=Least significant byte first, 1=Most significant byte first 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
|}




===CheckConnectionStatus===
===SendArray===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''CheckConnectionStatus'''
| width="90%" class="mtx-class-macrohead" | '''SendArray'''
|-
|-
| colspan="2" | Checks to see if the Bluetooth device is connected. Returns 1 if connected. 
| colspan="2" | Sends a byte to the Bluetooth serial connection 
|-
|-
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-bool-icon.png]] - BOOL
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
| width="90%" | Data
|}
 
 
===ReceiveCount===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| colspan="2" | Data Array to send 
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReceiveCount'''
|-
|-
| colspan="2" | Collects the number of bytes currently stored in the receive buffer. 
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | NumBytes
|-
|-
| colspan="2" | Number of bytes to send 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
|}




===ReceiveArray===
===SendByte===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReceiveArray'''
| width="90%" class="mtx-class-macrohead" | '''SendByte'''
|-
|-
| colspan="2" | Attempts to receive an array of bytes from the bluetooth serial port. Returns the number of bytes received. 
| colspan="2" | Sends a byte to the Bluetooth serial connection 
|-
|-
|-
|-
Line 226: Line 224:
| width="90%" | Data
| width="90%" | Data
|-
|-
| colspan="2" | Buffer to place received data into 
| colspan="2" |  
|-
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" | MaxBytes
|-
| colspan="2" | Max number of bytes to try and read within the time 
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Timeout
|-
| colspan="2" | Number of ms to wait for incoming data 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" style="border-top: 2px solid #000;" | ''Return''
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
|}




===SendArray===
===SendINTArray===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SendArray'''
| width="90%" class="mtx-class-macrohead" | '''SendINTArray'''
|-
|-
| colspan="2" | Sends a byte to the Bluetooth serial connection 
| colspan="2" | Transmits an array of 16-bit INT/UINT values via the Bluetooth peripheral 
|-
|-
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Data
| width="90%" | Data
|-
|-
| colspan="2" | Data Array to send 
| colspan="2" | Data Array to send 
|-
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | NumBytes
| width="90%" | NumValues
|-
| colspan="2" | Number of 16-bit values to send from the array 
|-
| width="10%" align="center" | [[File:Fc9-bool-icon.png]] - BOOL
| width="90%" | MSBfirst
|-
|-
| colspan="2" | Number of bytes to send 
| colspan="2" | 0=Least significant byte first, 1=Most significant byte first 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
Line 267: Line 260:




===SendByte===
===SendString===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SendByte'''
| width="90%" class="mtx-class-macrohead" | '''SendString'''
|-
|-
| colspan="2" | Sends a byte to the Bluetooth serial connection 
| colspan="2" | Sends a string to the Bluetooth serial connection 
|-
|-
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
| width="90%" | Data
| width="90%" | Data
|-
|-
| colspan="2" |  
| colspan="2" | Data Array to send 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
Line 286: Line 279:




===ReceiveString===
===SetBTName===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReceiveString'''
| width="90%" class="mtx-class-macrohead" | '''SetBTName'''
|-
|-
| colspan="2" |  
| colspan="2" | Overrides the current friendly name 
|-
|-
|-
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING
| width="90%" | MaxBytes
| width="90%" | Name
|-
|-
| colspan="2" | Max number of bytes to try and read within the time 
| colspan="2" | Name you want to use 
|-
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" | Timeout
|-
| colspan="2" | Number of ms to wait for incoming data 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-string-icon.png]] - STRING
| width="90%" style="border-top: 2px solid #000;" | ''Return''
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
|}




===Initialise===
===Uninitialise===
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise'''
| width="90%" class="mtx-class-macrohead" | '''Uninitialise'''
|-
|-
| colspan="2" | Starts up the Bluetooth communications SPP service. 
| colspan="2" | Shots down the Bluetooth communications SPP service. 
|-
|-
|-
|-
Line 322: Line 310:
| width="90%" style="border-top: 2px solid #000;" | ''Return''
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
|}




==Property reference==
==Property reference==


{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-prop-icon.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-prop-icon.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Properties'''  
| width="90%" class="mtx-class-macrohead" | '''Properties'''  
|-
|-
|-
|-
Line 354: Line 340:
| colspan="2" | When enabled debug messages will be placed onto UART CH1 which is generally connected to  via a Serial to USB IC to pipe messages back to the host PC. 
| colspan="2" | When enabled debug messages will be placed onto UART CH1 which is generally connected to  via a Serial to USB IC to pipe messages back to the host PC. 
|-
|-
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
| width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]]
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Simulation
| width="90%" class="mtx-class-propfolder" | Simulation
|-
|-
|-
|-

Latest revision as of 14:36, 13 July 2026

Author Matrix TSL
Version 1.0
Category Wireless


Bluetooth (ESP32 SPP) component

Bluetooth slave component designed to run on a ESP32 providing legacy SPP functionality. BT Legacy functionality must be switched on via the sdkconfig file.

Component Source Code

Please click here to download the component source project: FC_Comp_Source_Bluetooth_ESP32_SPP.fcfx

Please click here to view the component source code (Beta): FC_Comp_Source_Bluetooth_ESP32_SPP.fcfx

Detailed description

No detailed description exists yet for this component

Examples

A simple example file showing how to send and receive data using the ESP32 Bluetooth Serial Port Profile.

ESP_BT


The SPP legacy bluetooth mode must be enabled in the ESP32 config file to allow SSP to work. For details please see this forum topic.


For problems sending strings or missing data bytes, please see this forum topic.


Macro reference

CheckConnectionStatus

CheckConnectionStatus
Checks to see if the Bluetooth device is connected. Returns 1 if connected. 
- BOOL Return


Initialise

Initialise
Starts up the Bluetooth communications SPP service. 
- VOID Return


ReceiveArray

ReceiveArray
Attempts to receive an array of bytes from the bluetooth serial port. Returns the number of bytes received. 
- BYTE Data
Buffer to place received data into 
- UINT MaxBytes
Max number of bytes to try and read within the time 
- UINT Timeout
Number of ms to wait for incoming data 
- UINT Return


ReceiveByte

ReceiveByte
Attempts to receive a byte from the bluetooth serial port. 0-255 = a valid received value 256 = a timeout has occured 
- UINT Timeout
Number of ms to wait for incoming data 
- UINT Return


ReceiveCount

ReceiveCount
Collects the number of bytes currently stored in the receive buffer. 
- UINT Return


ReceiveINTArray

ReceiveINTArray
Receives an array of 16-bit INT/UINT values and returns the number of values received. 
- UINT Data
Array to store the incoming data 
- BYTE NumValues
Maximum number of values to try and receive 
- BOOL MSBfirst
0=Least significant byte first, 1=Most significant byte first 
- BYTE Timeout
Max amount of time in ms to wait between bytes 
- BYTE Return


ReceiveString

ReceiveString
 
- UINT MaxBytes
Max number of bytes to try and read within the time 
- UINT Timeout
Number of ms to wait for incoming data 
- STRING Return


SendArray

SendArray
Sends a byte to the Bluetooth serial connection 
- BYTE Data
Data Array to send 
- UINT NumBytes
Number of bytes to send 
- VOID Return


SendByte

SendByte
Sends a byte to the Bluetooth serial connection 
- BYTE Data
 
- VOID Return


SendINTArray

SendINTArray
Transmits an array of 16-bit INT/UINT values via the Bluetooth peripheral 
- UINT Data
Data Array to send 
- BYTE NumValues
Number of 16-bit values to send from the array 
- BOOL MSBfirst
0=Least significant byte first, 1=Most significant byte first 
- VOID Return


SendString

SendString
Sends a string to the Bluetooth serial connection 
- STRING Data
Data Array to send 
- VOID Return


SetBTName

SetBTName
Overrides the current friendly name 
- STRING Name
Name you want to use 
- VOID Return


Uninitialise

Uninitialise
Shots down the Bluetooth communications SPP service. 
- VOID Return


Property reference

Properties
Device Name
Sets the Bluetooth device friendly name 
Receive Buffer
Configures the size of the receive buffer in bytes to store incoming data until we are ready to receive it. 
Data Receive Interrupt
 
Verbose Debug
When enabled debug messages will be placed onto UART CH1 which is generally connected to via a Serial to USB IC to pipe messages back to the host PC. 
Simulation
COM Port
Selects which port to communicate with, only lists ports which are currently available.  
Refresh COM Ports
When set to yes the COM port list is rescanned for newly connected or available ports. Note that refreshing the ports list may take a few seconds depending on the number of connected ports. 
Baud
Baud rate passed to the COM port to control the rate of data. 
Console Data