Slow communication with Bluetooth Mate Silver

Dear Sparkfun Team,

I have established a connection between a Mate Silver and a Bluetooth Usb Adapter at the default 115.2 kbps data rate in order to transfer data to a desktop PC. Unfortunately the connection is quite slow in comparison with the connection with a cable with the same data rate. Could you please advise me what is the maximum transfer rate that can be achieved with the Silver Mate?

Thanks in advance.

Best,

George

Hello again. I would like to let you know that the correct model is the BlueSMiRF Silver. Thanks!

Hi gchristod,

The data transfer rate on the Bluetooth SMiRF and Mate boards are capped at 115200bps due to the level shifting circuit. The RN-42 module can technically transfer at much higher transfer rates but because the level shifting is done through transistors, those can only reliably switch at 115200bps and that data transfer is capped. It might be possible to go beyond that but you will probably see some weird behavior and packet loss.

If you are looking for a faster serial Bluetooth module, the [SparkX Bluetooth Mate 4.0 will have much higher data rates. Since that is a SparkX product and it is out of stock, we may not be building more but we do regularly transfer popular SparkX products to our regular catalog so that breakout may eventually switch to a SparkFun product but there is no estimate on when or if that will be available.

I hope this helps explain the slow transfer rates you are seeing with the BlueSMiRF Silver.](Bluetooth Mate 4.0 - HM-13 - SPX-14839 - SparkFun Electronics)

Hi Mark,

Thank you very much for your reply.

Best,

George

Mark I’ve also got a SparkFun nRF52832 Breakout. Does it support serial communication with a usb adapter? If positive, perhaps I should give a try.

Best,

George

Hello again Mark,

I am still trying to find a solution to this problem.

First of all I would like to let you know that I am sending the following string from the Arduino to the PC … “(a138b137c139d138e138f138g138h139i137j140k138l137m139n139o138p137)” which is composed by the analog readings of 16 sensors.

I have implemented the communication in two ways at the baud rate of 115200 bps:

  1. Through a USB cable the PC receives the data at 148 Hz smoothly

  2. Through the Bluetooth communication the PC can only receive more than 100 Hz only for 2-3 seconds and then the communication stops. Hence, I changed the code so that the Arduino sends data to the PC as soon as it receives the “OK” from the PC when it receives the data. In this way, via the “handshake”, the communication works smoothly but at the slower rate of 35 Hz.

I also came across the following article … http://christopherpeplin.com/2013/07/26 … w-control/.

I read your tutorial but you do not use the flow-control pins. Should I use them as well?

I am looking forward to hearing from you.

Best,

George

Hi again George,

The SparkFun nRF52832 Breakout does have the ability to print serial data over the programming header on the bottom of the board so you could use that with a USB to Serial bridge like the [SparkFun Beefy 3 or another, similar board.

We do not use the flow control pins in our example since it’s just a basic serial communication demonstration but for your project, those will almost certainly help with the lock-up issue. The module comes default with flow control disabled so you will need to configure the RN-42 to enable that. The [AT Command Set Guide will go over how to enable that in more detail. You can use the example from the [Hookup Guide to configure your RN-42 with an Arduino.

I hope this helps you get more reliable data streams at acceptable speeds for your project with the RN-42.](Using the BlueSMiRF - SparkFun Learn)](https://cdn.sparkfun.com/datasheets/Wireless/Bluetooth/bluetooth_cr_UG-v1.0r.pdf)](https://www.sparkfun.com/products/13746)

Hi Mark,

Thank you for your reply. Regarding my question with nRF52832 perhaps I did not explained it well. Could you please advise me if I could replace the BlueSMiRF Silver with the nRF52832 and use it again as a serial (RX/TX) pipe and send data wireless to a Bluetooth USB adapter?

Best,

George

Hi again George,

Technically, yes, you could use it as a serial pipe with some simple code to set it up to act as one, but it might work better for your project to have it act as both the microcontroller and the Bluetooth device. You will probably need to adjust some things on the software end if you are using an Arduino that has a different architecture (eg. AVR). Our [Hookup Guide for the nRF52832 goes over some basic examples but to go beyond those, I would recommend taking a look at Sandeep Mistry’s [Arduino-nRF5 GitHub Repository as well as the [BLEPeripheral Arduino Library Repository.](GitHub - sandeepmistry/arduino-BLEPeripheral: An Arduino library for creating custom BLE peripherals with Nordic Semiconductor's nRF8001 or nR51822.)](GitHub - sandeepmistry/arduino-nRF5: Arduino Core for Nordic Semiconductor nRF5 based boards)](https://learn.sparkfun.com/tutorials/nrf52832-breakout-board-hookup-guide)

Thanks Mark!

Best,

George

Hello again Mark,

Could you please advise me if the “MDM SPP” profile is the correct one to enable hardware flow control?

If positive, is the following code correct to implement that?

//-------------------------------------------------------------------------

Serial.print(“$”); // Print three times individually

Serial.print(“$”);

Serial.print(“$”); // Enter command mode

delay(100); // Short delay, wait for the Mate to send back CMD

Serial.println(“S~,3”);

//-------------------------------------------------------------------------

Best,

George

Hi George,

Are you referring to enabling flow control on the Bluetooth Mate or the nRF52832?

Hi Mark,

Thank you again. I am referring to enable flow control on the BlueSMiRF Silver.

George

Thanks for clarifying. I am not sure if that will work for having a remote host read the DTR/CTS signals since, according to the [User’s Guide, in MDM SPP mode, GPIO 11 is used by default for CTS. That pin is not broken out on the BlueSMiRF Silver so it will just be floating. That said, it may be worth a try to see if that works. You can always switch it back to the default mode using the proper commands.

Otherwise, you should be able to control the RTS and CTS pins broken out manually on either end of your Bluetooth connection by driving the RTS/CTS pins HIGH if you have it connected to a microcontroller. Driving RTS HIGH will disable the host transfer and driving CTS HIGH will disable the transmitter.](https://cdn.sparkfun.com/datasheets/Wireless/Bluetooth/bluetooth_cr_UG-v1.0r.pdf)

Thanks Mark!

Best,

George