Radio Interfering with Serial Output?

Hi All,
I am building a packet radio station / APRS tracker with an arduino and a TinyPack AX.25 Terminal Node Controller (which feeds audio data to a Baofeng BF-F8 HAM radio). Right now I am feeding the TTL output on my Arduino Mega into the Serial In pin on the TinyPack, and have the ground pin on the TinyPack attached the the Mega's GND pin. For the most part, my messages come through fine, but when I turn the radio from low power (1W transmission power) to high power (4W transmission power), I end up with additional characters before, after, or within my serial data messages, and sometimes the messages are corrupted altogether. I have the arduino Mega and the TinyPack wrapped in aluminum mesh (crude attempt at a Faraday cage), and the signal wire on the Serial TX0 is in a twisted pair with the GND wire. I also coiled the signal wire through a ferrite toroid core in hopes of cutting down on RF noise, but I'm not sure if it helped. Any ideas for cleaning up the output? I'm pretty sure the interference is taking place between the TX0 port on the arduino and the Serial In port on the TinyPack, as plugging into the Mega with a USB cord shows clean data on the serial monitor.

Thanks,
John

One method would be using RS485.

What frequency is the RF? 4W is enough to burn out other circuitry so you should be
routing the RF in coax well away from any other circuit boards.

Unused inputs on the Arduino should be pulled high or low or if possible configured as outputs. Also, RFI sheilded enclosures are available.

nilton61:
One method would be using RS485.

I was initially using an RS232 shifter from sparkfun, but it was having some big-time problems with the RF and was truncating a lot of my data in strange ways. After almost a week of confusion and frustration, I found that things work much better when I just send TTL data directly into the TinyPack (it is capable of accepting both RS232 and TTL).

MarkT:
What frequency is the RF? 4W is enough to burn out other circuitry so you should be
routing the RF in coax well away from any other circuit boards.

I am transmitting on 144.390 MHz. Unfortunately I cant use a different frequency, as this is the national APRS frequency and I need to use it if I want to show up on the network. The radio is right next to the rest of the circuitry, but the antenna is outside the payload (the whole setup is for a weather balloon).

dlloyd:
Unused inputs on the Arduino should be pulled high or low or if possible configured as outputs. Also, RFI sheilded enclosures are available.

I don't think the problem is with inputs on the Arduino receiving interference...the data prints beautifully to the serial monitor, it's just that between the Arduino and the TinyPack additional characters seem to pop up during the time between / during transmissions. Right now my RFI shield is some aluminum mesh wrapped around the circuit...do I need this to be grounded to the arduino or anything?

Thanks for the helpful replies, everyone!

I don't think the problem is with inputs on the Arduino receiving interference...the data prints beautifully to the serial monitor, it's just that between the Arduino and the TinyPack additional characters seem to pop up during the time between / during transmissions.

To reduce "ringing" on the serial RX and TX lines, you could try using a series connected 27Ω to 100Ω resistors.

JulietKiloMike:
I am transmitting on 144.390 MHz. Unfortunately I cant use a different frequency, as this is the national APRS frequency and I need to use it if I want to show up on the network. The radio is right next to the rest of the circuitry, but the antenna is outside the payload (the whole setup is for a weather balloon).

2m, right, that's easy then, just add 1nF ceramic caps(*) across each serial line to GND at
each end of the line(s) to stop the 144MHz signal in its tracks, and that idea for series
resistance can't hurt either (can also try small ferrite beads on just the serial signal
wires).
Shielded pair is possibly a good idea for the series lines too.

144MHz is well above the frequencies of a serial line so simple capacitive filter
should do well.

(*) feedthroughs if you can get them, usually used when faraday-cage style shielding needed.

Since the Mega 2560 has 16 Mhz CPU speed, check the 16 Mhz table here to get the %error for the baudrate you're using. Perhaps, if possible, you could try a baudrate with lower error.

Thanks for the great suggestions, guys! I will definitely look into these. Unfortunately, the launch is bright and early tomorrow morning, so it looks like I will be transmitting on 1 watt for the time being (should be enough for a weather balloon).

Fingers crossed!
http://aprs.fi/#!mt=roadmap&z=11&call=a%2FKK6NQK-11&timerange=3600&tail=3600

-John KK6NQK

No mention of SWR, have you checked it?
High SWR can cause splatter over large bandwidth.