I get Bluetooth connection but can't send/receive data

I have a Windows 7 computer and a Uno. The Uno has a Sparkfun Blue SMiRF Gold modem connected Tx to Uno Rx and vice versa, plus 5V connection. The PC has the Sparkfun Class 1 Bluetooth dongle. I am achieving connection as evidenced by a solid green LED. However I can't send/receive characters using the Arduino Terminal on port USB0 or USB1. I'm using the Blink example in the Terminal menu, and everything works fine with the Uno cable; the Uno LED turns on/off on command and I get the return messages on the Terminal. I have tried 9600, 115200, and other baud rates in the sketch and Terminal.

Any suggestions?

The Uno has a Sparkfun Blue SMiRF Gold modem connected Tx to Uno Rx and vice versa, plus 5V connection.

That's 3 of the 4 required connections. Hopefully, you just overlooked mentioning that ground is connected.

Sorry, forgot to mention that ground was connected, but thanks for the reminder.

I also tried an FTDI USB-to-TTL Serial Cable on port USB0. This also works fine. So the USB serial port to Uno Tx/Rx link works.

I have had Arduino operating on Ubuntu, including the FTDI cable, so it's not just a Windows problem.

The Bluetooth dongle and modem work OK in my EZ-Robot system on the same PC, and it has to be the same Bluetooth driver in Arduino and EZ-Robot.

I'm stuck and need help. I would also like to hear from someone who is successfully using the same dongle and modem.

Well I finally got Bluetooth going with Uno! I achieved this by reverting to my EZ-Robot Bluetooth modem and dongle. I didn't do this earlier because I had also experienced problems there and I wanted to get the higher power Sparkfun Class1 devices going. I have now learned a lot more and that made the difference.

However, I still can't get the Sparkfun Blue Smirf Gold sending and receiving. I am using a Tera Term terminal to communicate with Uno at the 9600 baud setting of the sketch. My port assignments are:

COM5 EZ-Robot Class 2 Modem COM6 Sparkfun Class 1 Dongle COM7 Sparkfun Class 1 Modem

I tested these combinations in EZ-Robot and everything works. In other words all I'm doing is replacing the EZ-Robot modem with the Sparkfun modem and selecting the proper COM port.

I am going to contact Sparkfun and see if what they say about my problem. If I learn anything I'll document it here.

i hope it’s ok to answer and have a few suggestions :slight_smile:

it’s always hard to follow any ones hardware connection descriptions including my own once i re-read it.

this is a list of steps i take for about 30 years now

serial port issues … if u have a scope … use it on TxD and RxD … if u don’t, get one …

http://www.hantek.com/english/produce_list.asp?unid=62

about US $ 150.-- worth every penny … can’t afford it … that’s hard … talk to a friend … get a used one … anything 20 MHz and up will do … 115 kBd has a pulse width of a bit less than 10 usec.

1st step … hook it up to a well known good communications device … like a USB to serial dongle from FTDI (FTDI … very good choice … a prolific based one a few years ago took 90% kernel time at 115kBd in win xp).

if you have 2 of them have them talk to each other with 2 different assigned com ports and same baud rate.

if you do RS232 level … the Tx pin has a neg voltage (-10V or so) when idle … The Rx pin usually floats at gnd level. so finally … both TxD and RxD pins should have a neg voltage on them once connected correctly as of TxD on one device goes to the RxD on the other device and vice versa. both connections have now each one a TxD pin producing the neg voltage.

now type an uppercase “U” and look at it at the scope you should see about 4 pulses of equal on and off times cause a “U” is ascii 0x55 → 01010101.

this gives u a good indication about the correctness of your desired baudrate setup on your embedded uart.

1000 baud is high times and low times are 1 / 1000 of a sec.

so back to your bluetooth issue … we still have them … so don’t feel too bad about it :slight_smile:

hook your bluetooth serial device to a usb to serial adapter with a matching signal voltage level. FTDI sells 5 V and 3.3 V cables with the dongle part in the usb connector for about 25 bucks.

i’m not too thrilled about them, cause i blew the 2nd one i hooked up probably wrong in an embedded testing situation … now you have a brand new cable where you thought it’s gonna be ok and you trust it … wrong … sorry

i was so ticked that i revamped an old opto based usb to serial design i did years ago and made it 3.3 V and 5 V configurable … in the past i had to hand solder change 2 resistors 805 SMT to make the switch.

now i made it a product, but i’m not ready to sell it for another month or so … sorry again.

i have a few brand new pilot-run series devices … so if you really feel u need one, talk to me at efiHacks.com … but they peg out at 57600 bd.

http://wiki.efihacks.com/index.php?title=EfiMini_Opto-Coupled_3.3_V_Serial

2nd step … try to communicate with the bt module through a known good usb to serial adapter or another as good known source of ascii communication.

verify that these chars come out of your com source and arrive at the bt module … scope time

3rd step … do not have the bt module paired and try to see if you get an “OK” back after you sent “AT” …
once just send the “AT” and no and wait for 2 secs … that’s how the slave comm is on some bt modules

4th step … do the same with and or … now you should have gotten your "OK"s … if not … either your com baudrate is not the same as your bt module.

5th step … make sure the bt module get’s the "AT"s at the bt modules RxD pin … if not … hardware issue with your test setup.

… so now you sent your "AT"s and got your "OK"s … so we’re happy for now … but we’re not done yet

6th step … pair your bt module and make sure the os you use to communicate over bluetooth, “xp”, “win7” or whatever you use got all the way to identifying or assigning 2 com ports at the end … one outgoing and one incoming. use the outgoing one … with bluesoleil you have to wait to have one assigned at the end of the pairing process … do not use the 2 which get assigned upon installing bluesoleil … this was our experiences.

use a terminal emulator which works with the bluetooth … br@y++ did not properly

“termite” or hyperterminal did work fine … set the baudrate … “no handshake”, right from step one on.

connect with the terminal (select connect in the terminal app) and a flashing led on your bt module might get steady on or so … don’t know your bt module

only once you have a visual indication on your bt module, if it provides one, you can continue typing on both ends … the terminal connected to the bluetooth assigned com port and the other one connected to your ftdi usb to serial port.

you should hopefully get your typed messages across.

7th step … you should be able to see the serial chars on your scope on the RxD and TxD connection on your bt module

hope this helped

check out my 3 part blog related to “using bluetooth serial experiences” at http://www.efihacks.com/news/

good luck … i was hopefully not too detail-oriented and confusing

cheers, blue2u

Thanks for the detailed reply giving your serial communication test procedure.

I don't have a scope or access to one. I do appreciate your recommended one and the cost is reasonable. The availability of "USB Oscilloscopes" has certainly made them more affordable. It's just that my need for one is minuscule and my Scotch heritage has made me reluctant to invest! My logic probe at least makes it possible to verify presence of pulses.

I have the one FTDI cable that I recently bought for troubleshooting, but not two as your procedure requires.

However, after studying your procedure I decided to jump to the end and try using a loopback through the Bluetooth link to the PC. I had the FTDI cable on PC COM4 using the puTTY terminal, and the cable output connected to the modem. Then I had the modem Bluetooth-talking to the PC Tera Term terminal on COM5and6 (EZ-Robot modem) or COM7and8 (Sparkfun modem). The terminals talked back and forth using the EZ-Robot modem but did not communicate at all using the Sparkfun modem.

So after multiple tests something certainly seems amiss in the Sparkfun modem. I have requested a replacement. If I get one I'll report the test result.

i have not worked a lot with PuTTY, except over TcpIP

i can’t get PuTTY to work over any serial line, but it’s not so important for me

i mentioned in post 4 on my blog efiHacks.com/news that i have problems with the bt radio in xp32 sp3 … a reset of the vm hosting xp32 fixed it. but this might not apply to you.

i will update my blogs in the next few days, just discovered a serious issue with argument swaps on a few arm aeabi calls

void *__aeabi_memset(void pd, unsigned int len, int dat) / aeabi p1 <-> p2 */
//void * memset(void *pd, int dat, unsigned int len)
{
void *ret = pd ;
while (len–) *((char *)pd)++ = dat ;
return ret ;
}

good luck, blue2u

After communicating with Sparkfun I finally solved my problem. The BlueSMiRF Gold (and other) modems have to be commanded to the baud rate set in the Uno sketch, in my case 9600 baud. Set your terminal baud rate to 115200, the BlueSMiRF default. Now type the following:

$$$ Type this within 60 sec of turning modem on. You get a "CMD" response. + This turns on echo so you see what you are typing. SU,96 This sets 9600 baud to Uno. ST,255 This disables that pesky 60 sec timer. --- This ends the command session.

You then need to cycle power to the modem, and you're ready to go.

These settings remain in non-volatile (permanent) memory unless you desire to change the baud rate.

Sparkfun says to keep your terminal at 115200 baud.