RN-42-SM Bluetooth Transmitter with Arduino Nano

Does anyone have any experience with the RN-42-SM with an Arduino? I am considering to purchase one for my Arduino Nano, but I haven't received any feedback yet from them to see if it would be compatible with an Arduino. If anyone can let me know if they have something comparable to this device I would greatly appreciate it.


What do you mean by “compatible?” That device won’t just plug on to an Arduino, but I just read through the data sheet. It requires 3.3V, which is good. You talk to it using serial/TTL which is also good for most uses. It has an SPI bus but that is used only to flash new firmware into it.

So yes, I would call it compatible in that you can power and control it from an Arduino, but its not a shield. It would not be hard to build a shield to host this module, and I would bet someone already has.

What I really wanted to know was if there was a specific library that was needed for the Arduino to talk with the RN-42-SM? From what I read from the manual was that the command set was different from any of the regular libraries out there. Has there been anyone that has been able to use one of Roving Network's Bluetooth transceivers to work with an Arduino and how?

I was able to get the Arduino to talk to the RN-42! What was really needed was to reduce the baud rate on the module from 115200 to 9600 and short the RTS&CTS pins. To do this I had to do the following:

  1. Connect the module to a female RS232 and connect the cable to a computer.
  2. Open Putty (or any form of Hyperterminal).
  3. Select the port that the cable is connected to and type 115200 for the speed.
  4. At this point the user should be able to type in the commands to access the command mode by entering “$$$”, and after changing the baud rate all that is needed to exit is “—”.

By doing this I was able to properly communicate with the Arduino and develop this sample code:

/*  Created 03/01/2013 
    Jordan Shelter 
    Bluetooth Adapter Test
 This is sketch is based on the software serial example.
 -  Roving Networks RN42-SM
 -  Arduino Nano 3.0 
 The circuit: 
 * RX(18) is digital pin 10 
 * TX(19) is digital pin 11 
 * RTS & CTS shorted on RN42
 Not all pins on the Mega and Mega 2560 support change interrupts, 
 so only the following can be used for RX: 
 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
 Not all pins on the Leonardo support change interrupts, 
 so only the following can be used for RX: 
 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup()  
  // Open serial communications and wait for port to open:
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only

  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port

void loop() // run over and over
  mySerial.write("Fred was here");
  while (mySerial.available()!=0)