Antenna Problem - Only transmits when touching antenna

Added by hack-o-holic over 4 years ago

I’m stumped. I have a working project that includes a Jeenode V6 and a Bluetooth Audio adapter to run some small speakers. Jeenode works and can TX/Rx no problem until I turn on the Bluetooth module. Once that turns on, my jeenode will still Rx no problem. But I’ve found it will not TX with the BT module on UNLESS I hold the antenna between two fingers. I really need the jeenode to work while playing BT audio so I was hoping someone here who is more knowledgeable about radios could tell me what a possible solution is to my problem. I assume the fact that it works properly by coupling myself to the antenna is a clue to an expert as to what is lacking in my design and/or my antenna.

Can anyone suggest any solutions or enlighten me as to what is fundamentally wrong with my current setup?

Any help would be GREATLY appreciated. I’m hoping to use this project this weekend but it really isn’t of much use if I can’t use the BT with the jeenode at the same time.

Oh, ya, I have two jeenodes and have already swapped them out and they both act the same way, so that eliminates any specific problem with one of the jeenodes. I am also using the 433Mhz version.



Replies (6)

Antenna Problem - Only transmits when touching antenna - Added by martynj over 4 years ago

The Bluetooth signal is leaking into the RFM12B receiver section - possibly spurious fuzz outside of its designated band, possibly gross overload of the front end section, or both.   In the RFM12 driver code, before a transmission starts, there is a brief “listen” to reduced the chance of sending on an already occupied channel.  The BT pickup may well continuously exceed this threshold - hence locking out the transmission.
Holding the antenna detunes and damps in some unpredictable way, presumably reducing the junk pickup enough that the “quiet before transmission test” now succeeds.
One fix is to make the antenna more selective and reject the 2.1GHz hash, provided that is the main path of the pickup, rather than directly into the RF module. 

A picture of the build would help - inverse square law is your friend…. ;-)

RE: Antenna Problem - Only transmits when touching antenna - Added by hack-o-holic over 4 years ago

Thanks for the response! Seems like you might be on to something with the “listening” section of the code, I never thought of that. Here is the most recent picture I have of the project. This picture is out of date and some changes have been made since it was taken. Namely, as part of this troubleshooting, I separated the power and ground circuits of the Jeenode section from the Bluetooth audio section.

In the picture, I drew a box around the Bluetooth/Audio Amplifier section. I also drew in a red line representing where I’ve been routing the Jeenode antenna. Hope this helps!



My most recent build picture

WP_20140326_20_22_54_Pro.jpg (1.57 MB) WP_20140326_20_22_54_Pro.jpg My most recent build picture

RE: Antenna Problem - Only transmits when touching antenna - Added by martynj over 4 years ago

The design is putting the two antenna at opposite corners of the enclosure.  This helps reduce direct ANT to ANT pick up, but they are still in the same plane - have you tried the JeeNode ANT at right angles to the plane of the PCB?
With open-style construction, each module is swimming in the sea of radiation from the other, so pickup can easily bypass the ANT pin and get in at trace/component level and/or up the supply/ground lines (split or not).  Sprinkling effective decoupling caps around (say 22pf NPO) would probably help the direct pickup.

For further diagnosis, replace the RFM12B ANT by an 47Ω to GND (preferably an SMT).  If the transmitter bursts into life (only visible by your code getting past the transmit request since you are dumping the transmit power into a dummy load), then most of the problem is hash pickup through the ANT wire.

The RFM12B receiver has an LNA front end - this can be desensitised with a register setting which would effectively lower the noise floor - if the desired received signal is strong enough, the lack of front end gain will not matter.

If it is the ANT pickup of the 2.1GHz signals driving the RFM12B front end crazy, rather than sub harmonics and/or some high order harmonic of the BT module crystal, then this band can be filtered out quite simply at the ANT pin.


On Monday, July 14, 2014 8:40 PM, “ wrote:

RE: Antenna Problem - Only transmits when touching antenna - Added by hack-o-holic over 4 years ago

I did try the antenna at 90 degrees to the perf board. I realized it actually worked but only when holding it. If I let go it didn’t work, even at 90 deg..

I’m thinking what you said in the last sentence is going to be the answer. Can you elaborate on how this filtering could be accomplished?

RE: Antenna Problem - Only transmits when touching antenna - Added by martynj over 4 years ago

The idea is to shunt away the 2.1GHz signals at the RFM12B ANT pin - the assumption is that interference here is confusing the LNA front end into raising the noise floor.
This will need some moderate construction skills, so it is perhaps better to check the hypothesis with the two methods described above before starting.

A bandstop/bandpass filter can be made with an appropriate SAW filter (some of the later Hope RF modules incorporate these to meet FCC emissions rules). An alternative is to use tuned stubs made from coaxial cable - easier to source quickly I suspect. For example, obtain a “rubber duck” style antenna for the band of interest with a good length of integral coax feed cable (typically this will be 50Ω impedance which matches nicely what the RFM12B ANT pin expects). Try attaching this first - it already has better frequency selectivity than the simple wire antenna and may just be enough to solve the problem.

If not, a short piece of the coax gets sacrificed to make the stub filter. One end gets soldered at the same ANT/GND pins, in parallel with the flying coax to the regular antenna. The other end is left open i.e. the sheath surrounds the inner conductor all the way to the end of the stub cable, but without a connection. So how is that going to help? Transmission lines have the effect of transforming impedances - in the special case of a quarter wavelength, an open circuit is transformed into a short at that frequency. Tuning the transmission line by adjusting the length can put this RF “short” directly across the ANT pin, effectively shunting away signals around this critical frequency.

For practical cables, the Q is not infinite, so the shunt effect will work across a significant band of frequencies around the ideal - this is good, since the BT signal spreads across a considerable band. The stub length needed is not exactly the calculated quarter wavelength at 2.1 GHZ, it is shortened by the velocity factor of the particular co-ax used (~0.8 is typical for solid PTFE minature coax). This provides a useful method for tuning - start with the full theoretical length and snip off small pieces to reduce. If you have some figure of merit such as number of lost received packets or bad CRC, this should improve as the length is reduced. Mr. Murphy usually steps in and you cut at least one too far, so be ready to stop snipping! You can safely cut with the RFM12B active - a temporary DC short there is ok.

If the ~3 cm length of coax proves too difficult to work with, the same effect also occurs at 3*lambda/4 (~9 cm).

RE: Antenna Problem - Only transmits when touching antenna - Added by hack-o-holic over 4 years ago

Thank you for the detailed response. It looks like I have some work to do! Sadly with a busy work week and the weekend coming up quickly, I might not be able to properly diagnose and work up a proper solution before I need to use my project.

This project is a set of scoreboards for a game similar to horse shoes. One of the two scoreboards has the BT audio to play music while you play the game. There is a score board at both ends of the playing field such that each time a round is played, the score can be tallied up at that end and transmitted to the scoreboard at the other end of the field in order to keep the scores in sync. As such, in reality, there will probably NEVER be a time when two jeenodes are trying to transmit at the same time. As a quick fix, could I simply alter the code to transmit every time I press the transmit button and forget about listening for the “all clear” signal first?

My transmit code starts like this:

if (rf12_canSend())
    rf12_sendStart(0, &rfScores, sizeof rfScores);

Could I simply remove the “if” statement and do the rf12_sendstart() without first checking if rf12_cansend()? I’d prefer to do this right and keep the checks in properly but I need a quick and dirty solution! Do you think I could alter the software for this weekend and then dig into the hardware next week?