Bluetooth connection interfering with 315MHz RF reception

I am in the process of building a home wireless sensor network. I have so far built a simple wireless temperature sensor and a base station for logging temperature readings. My base station is built from the following hardware.

  • 5V 16MHz Arduino Pro Mini on the left inserted into a small breadboard.
  • USB mini breakout board for power on the bottom.
  • SD card breakout board with 2GB card in middle.
  • 315MHz RF receiver on the right.
  • Bluesmirf silver Bluetooth module in the bottom right.

(see attached for photo)

The issue which I have is that my base station correctly receives temperature readings until I connect over Bluetooth to interact with it. While connected I can correctly interact with the base station but no readings are received. When I disconnect again the base station begins to receive readings again.

I wouldn't expect the 2.4GHz Bluetooth radio signal to interfere with the 315MHz signal used for my temperature readings. Is there any other reason why I wouldn't be able to receive readings while connected over Bluetooth?


The code for the manchester encoding library which I am using for my RF link is available here: GitHub - mchr3k/arduino-libs-manchester

The code for my base station is available here: arduino/wsn_arduino.ino at master · mchr3k/arduino · GitHub

My blog with more details about my wireless sensors is here: http://mchr3k-arduino.blogspot.co.uk/

I think I should clarify the exact circumstances where the base station doesn't receive RF temperature readings.

Firstly, it should be noted that the Manchester encoding library which I am using receives messages in the background with the aid of a regular Timer 2 based interrupt. This should mean that I can receive readings even when the Arduino is receiving/processing/sending serial data.

My wireless temperature sensor broadcasts a reading every 5 minutes. My test case is therefore to do the following.

  1. Connect over Bluetooth
  2. Send "data" command to view the current readings
  3. Wait 6 minutes to allow time for at least 1 reading to be sent
  4. Send "data" command - no new reading
  5. Disconnect the Bluetooth connection
  6. Wait 6 minutes
  7. Reconnect over Bluetooth
  8. Send "data" - new reading has been received

I have also tested with a Serial connection over a USB serial cable instead of over Bluetooth. In this configuration the base station is able to receive readings while connected over the Serial cable to my PC.

This suggests to me that there is something about an active Bluetooth connection which is interfering with the reception of sensor readings.

Firstly, it should be noted that the Manchester encoding library which I am using receives messages in the background with the aid of a regular Timer 2 based interrupt. This should mean that I can receive readings even when the Arduino is receiving/processing/sending serial data.

No, it does not mean that. Serial data processing requires interrupts, too. It is possible that the interrupts are interfering with each other.

This suggests to me that there is something about an active Bluetooth connection which is interfering with the reception of sensor readings.

You mean that one radio interferes with the other? Quite possible.

PaulS:

Firstly, it should be noted that the Manchester encoding library which I am using receives messages in the background with the aid of a regular Timer 2 based interrupt. This should mean that I can receive readings even when the Arduino is receiving/processing/sending serial data.

No, it does not mean that. Serial data processing requires interrupts, too. It is possible that the interrupts are interfering with each other.

I am aware that Serial interrupts could interfere with my own interrupts. However, when I was using a Serial over USB connection this didn't seem to cause any issues.

This suggests to me that there is something about an active Bluetooth connection which is interfering with the reception of sensor readings.

You mean that one radio interferes with the other? Quite possible.

It is possible but is it normal/expected? I am assuming that the whole point of the circuit on my 315MHz RF RX module is to only receive data at 315MHz and to filter out other frequencies.

I fixed it!

It turned out that simply positioning the Bluetooth module further away from the 315MHz module was sufficient to make it work.