RN 42 Bluetooth

This module provides a very simple way to replace a serial cable connection with a Bluetooth Serial Port Profile (SPP) connection.

As well has having a good set of features accessible via an AT-style command set, one great feature is that out of the box, it is configured to be a serial port host listening for an incoming serial port request. This means that immediately, without any configuration, you can pair the RN42 with a Bluetooth enabled computer, and have a 115200-8-N-1 serial connection

/media/uploads/simon/_scaled_rn42bluetooth.jpg /media/uploads/chris/rn42.png

Hello World!

Import program

00001 #include "mbed.h"
00002 
00003 Serial rn42(p9,p10);
00004 DigitalOut myled(LED1);
00005 
00006 int main() {
00007 
00008     rn42.baud(115200);
00009 
00010     // echo back characters, toggle the LED
00011     while (1) {
00012         if (rn42.readable()) {
00013             rn42.putc(rn42.getc());
00014             myled = !myled;
00015         }
00016     }
00017 }

Connectivity

RN42 Pinmbed Pin
1 - GNDGND
11 - VDDVout
12 - GNDGND
13 - RXp9
14 - TXp10
28 - GNDGND
29 - GNDGND

Tech Specs

  • Single 3.3v supply
  • Good power consumption figure (typical)
  • 26uA in standby
  • 25mA - Idle Connection
  • 40mA - Active connection
  • Simple interface for serial cable replacement
  • Power, Ground, Tx, Rx
  • Defaults :
  • SPP, 115,200-8-N-1
  • Bluetooth passkey "1234"

RN42 Breakout board




5 related questions:


48 comments:

30 Mar 2011

The RN41 or RN42 by it self is not easy to setup, because the internal application of Roving Networks has very poor performance and based on old 2007 firmware of CSR BlueCore4-Ext. I am also specialist in wireless bluetooth of CSR product.

So: If you want simple solution then I have product with simple control for Bluetooth. I am developed for RN42 and RN41 internal C application, which run on BlueCore4-Ext and it simplify the whole process. It based on the new 2009 firmware, where many bugs of Bluetooth was fixed. I am in process to develop simple PCBs. What I mean: You just need to send data to UART and enable one pin for data transmission. For incoming data you do not need to press anything, whatever Bluetooth receive it come to UART directly. There are others few pins: For pairing, baudrate setup and reset, as also indicator.

Regards, Stas

30 Mar 2011

Hi,

is this comparable to the bluesmirf module from sparkfun. I've been "fighting" with it, for some time, but i can not get any serial communication. Although the blue-tooth pairing works, and i can get in de command mode.

greets,

Marcel

30 Mar 2011

Hi Marcel,

I never used Bluesmirf could you describe it operation please?

Kind Regards, Stas

30 Mar 2011

Also it is possible to create some other requirements for this product ,just let me know what are you need and I can say if it is possible to add to my design.

Kind Regards, Stas

31 Mar 2011

In my solution you do not need to send any AT commands and the total buffer for data transmission is 512 bytes. I am interesting to see what user will prefare the AT solution or simple UART communication solution. Also I am sure the throughput in my solution is much better than in AT. Please vote what you prefer! :)))

02 Apr 2011

The PCB for my Bluetooth project is ready. Now I am in process of order the PCBs.

The 3D view of PCB is below:

/media/uploads/electronix79/rn41_project_pcb_3d.gif

And the 2D is below:

/media/uploads/electronix79/rn41_project_pcb.gif

03 Apr 2011

Ooh, cool. Let me know if you're planning on selling those :)

03 Apr 2011

I will! :) Regards, Stas

05 May 2011

Hi Matthew,

Just receive today 1000 PCB. Hope soon start selling.

/media/uploads/electronix79/i.jpg /media/uploads/electronix79/ii.jpg

For some one who looking just PCB the price will be just 3 pounds. :)

Regards, Stas

07 May 2011

Great :) When you're ready I'll take 4. It might be worth mentioning this on the arduino forums as well, a few people there use the RN modules.

Matt

13 Jun 2011

I am looking for 2 to 3 beta tester before anounce the final products. My bluetooth products will also support firmware upgrades. If you are interesting to be beta tester please contact with me. Thanks.

28 Jun 2011

HI,

Are you still looking for beta-testers? I'm interested! gr,

Marcel

28 Jun 2011

Hi Marcel, Thank you for your interest. Check your PM and contact with me by email.

Many things was happen from the last post.

It seem RN42 is not the cheapest Bluetooth module so this project is extend to support some other Bluetooth modules with exactly the same functionalities which applied on RN41 and RN42.

The RN42 will not be used any more only the RN41 which cover up to 100m.

Instead of RN42 for 10 to 20m coverage I found cheaper solution which will work exactly as RN42.

So one more new PCB was constracted.

And new specification was set for all modules.

Most important the module is now with name BX10 and it support both modes: Slave and Master.

Look at the below image.

The price for this new Bluetooth module is estimated to be under 17pound as final cost, which mean unbitable solution comparing to competitors.

As it will be sold in that price including presoldered breakout board.

/media/uploads/electronix79/project_bx10_new.gif

29 Jun 2011

Hi Anastasios,

Do let me know if you're planning on just offering an RN41 compatible breakout board at any point.

Cheers,

Matt

29 Jun 2011

Hi Matthew,

The firmware is now under reconstraction, so not yet final product. I am estimate August - September the first realease. The RN41 with our firmware and breakout PCB will be estimated to cost 20 to 22 pounds as final price and it will be constracted in limited quantities until price reduced and depand will be higher for them.

Usually the Bluetooth Class2 modules for 10 to 20m in most case are prefered and for this reason BX10 will be the our main focus.

Kind Regards, Stas

29 Jun 2011

Hi Matthew again,

Do you mean plain breakout board for RN41 and RN42? Yes it available for 3 pound each final cost. For 100pcs the price is 2,20 each. I will accept only PayPal payment. If you or any one interesting send me email and I will inform the process.

Kind Regards, Stas

15 Jul 2011

Hello,

Good news, The first part of test finished. And here is the demo, please visit this website for youtube video http://www.uelectronix.com/products.html

Here is the schematic: /media/uploads/electronix79/bx100_mbed.gif

Here are all supported AT commands at the momment:

Quote:

AT For test it. Return OK

AT+PIN=1234 Set password 1234

AT+BRc Set Baud Rate 1200

AT+BRd Set Baud Rate 2400

AT+BRe Set Baud Rate 4800

AT+BR1 Set Baud Rate 9600

AT+BR2 Set Baud Rate 19200

AT+BR3 Set Baud Rate 38400

AT+BR4 Set Baud Rate 57600

AT+BR5 Set Baud Rate 115200

AT+BR6 Set Baud Rate 230400

AT+BR7 Set Baud Rate 460800

AT+BR8 Set Baud Rate 921600

AT+INQ Start SPP Inquire process in order to detect other Bluetooth devices and their RSSI signal if available

AT+SIN Stop Inquire process which can run up to 60seconds. This command will be executed only if Inquire is in process

AT+ADR Show the personal/local Bluetooth address

AT+RSSI? Get RSSI of connected Bluetooth Slave device. This command will be executed only if it connect to Bluetooth Slave device and it is in ConnectedAT state

AT+DIS Disconnect from connected Bluetooth Slave device. This command will be executed only if it connect to Bluetooth Slave device and it is in ConnectedAT state

AT+CON=000000000000,x Connect to the xth Bluetooth device on the list which created after Inquire process. The AT+INQ should be executed before this command

AT+CON=000000000000,1 Connect to the 1st Bluetooth device on the list which created after Inquire process. The AT+INQ should be executed before this command

AT+CON=000000000000,0 Connect to the previous connected Bluetooth device

AT+GBS Get bluetooth state: Initialising, Ready, Inquiring, Connecting, ConnectedAT (Control state), Disconnecting.

AT+RNR Remote Name Read (if Connected). This is Bluetooth friendly name of remote device

AT+LNR Local Name Read. This is Bluetooth friendly name of local module.

AT+DAA Delete All Authenticated Devices from the Paired device list.

15 Jul 2011

// Date: 14/July/2011
// Bluetooth module BX100 in Master mode for mbed v1.01
// by electronix79

#include "mbed.h"

Serial pc(USBTX,USBRX);
Serial target(p9,p10);

DigitalOut led1(LED1), led4(LED4);
DigitalInOut btRESET(p11), btBaudRate(p12),  btDisconnect(p13), btMODE(p14), btSDP_SPP_Pair(p15);
InterruptIn bnSDP_SPP_Pair(p16), bnDisconnect(p17);

void pcRx_interrupt()
{
    if (pc.readable())
    {
        target.putc(pc.getc());
        led1 = !led1;
    }
    return;
}

void targetRx_interrupt()
{
    if (target.readable())
    {
        pc.putc(target.getc());
        led4 = !led4;
    }
    return;
}

void RunSDP_SPP_Pair()
{
    btSDP_SPP_Pair = 1;
    wait_ms(10);
    btSDP_SPP_Pair = 0;
}

void RunDisconnect()
{
    btDisconnect = 1;
    wait_ms(10);
    btDisconnect = 0;
}

int main()
{
    btRESET.mode(PullUp);           // If Low then RESET the module
    btBaudRate.mode(PullUp);        // Set Baud Rate to 115200bps
    btDisconnect.mode(PullDown);    // Set low, if High then required event will happen (this is control input)
    btMODE.mode(PullUp);            // Set high for Master mode, low for Slave
    btSDP_SPP_Pair.mode(PullDown);  // Set low, if High then required event will happen (this is control input)

    btRESET.output();               // Set all below 5 pins as outputs
    btBaudRate.output();
    btDisconnect.output();
    btMODE.output();
    btSDP_SPP_Pair.output();
    
    btRESET = 0;                    // Keep module in RESET state
    btBaudRate = 1;                 // Set Baud Rate to 115200bps
    btDisconnect = 0;               // No event at the moment
    btMODE = 1;                     // Bluetooth will run in Master mode
    btSDP_SPP_Pair = 0;             // No event at the moment

    bnSDP_SPP_Pair.mode(PullUp);    // External button for trigger the Interrupt event for RunSDP_SPP_Pair()
    bnDisconnect.mode(PullUp);      // External button for trigger the Interrupt event for RunDisconnect()
    
    bnSDP_SPP_Pair.fall(&RunSDP_SPP_Pair);  // attach the address of the BTrunSDP_SPP_Pair function to the falling edge
    bnDisconnect.fall(&RunDisconnect);      // attach the address of the BTrunDis function to the falling edge

    target.baud(115200);
    target.format(8, Serial::None, 1);      // Setup UART
    pc.baud(115200);
    pc.printf("\r\nBluetooth module BX100/BX10 in Master mode for mbed v1.01\r\n");
   
    pc.attach(&pcRx_interrupt, Serial::RxIrq);
    target.attach(&targetRx_interrupt, Serial::RxIrq);

    wait(1.0);                      // Wait 1 sec
    btRESET = 1;                    // Remove Reset from Bluetooth

    while(true)
    {

    }
    
    return 0;
}
26 Jul 2011

Hello,

After receiving few emails about how this Bluetooth modules works in Slave mode and if they can work with mobile phones, I decide to make the second video. Please visit this website and scroll down for all youtube videos http://www.uelectronix.com/products.html

Thanks, Stas

01 Aug 2011

Hello there,

I would like to hear if some of you want to create 2 Bluetooth connection through one module? I am thinking if this is need and I can do that then i will push all the available bluetooth modules on the market behind mine. So please left a comments if you would like to connect to 2 different Slave Bluetooth modules simulataneusly.

Regards, Stas