Sending data from an arduino to another arduino using modulation and antennas

Hello,

I am having issues tackling sending data using my own modulation scheme and antennas. The frequency we are using is around 10Mhz. So far my setup is something like this

Arduino -> FM Modulation -> Transmitting Antenna Receiving Antenna -> Demodulate -> Arduino

I am able to get data across but its all over the place. I have been looking at examples like virtual wire with those little transmitter and receivers but those are at 415Mhz and also cannot use my own antennas (they require like 10 cm wire antennas). I have tried to figure out how to do a simple one way communication thing but I keep running into problems on how to handle the timing to interpret incoming data from the transmitter . I have tried trying to figure a way to do something like a simple one way hand shake like 1111101111 then start recording bit data every 10us etc. I feel like I am missing a very obvious answer to this problem.

Thank You.

You should be able to use VirtualWire with your radio equipment, if your equipment can provide a digital TX (0 or 1) line at the transmitter and digital RX at the receiver. VirtualWire does not know anything about the radio frequencies involved or the modulation scheme that the radio uses to encode 1 or 0.

I have been researching VirtualWire but what I have a hard time grasping is how I would implement my own radio equipment. It seems that you type your message within arduino then send it out the TX pin to say my antenna but how would I implement my modulation scheme say FSK to modulate my data? At the moment I am using a analog chip to modulate what my arduino digital pin is spitting out. So 101 would be = Arduino outsputs 101 binary -> FSK Chip modulates this data -> out to antenna.

I feel like I am missing a very obvious answer to this problem.

The frequency we are using is around 10Mhz.

You are missing the point that in most of the world transmitting FM at 10MHz is illegal.

This is for research and at 1mW also I have my HAM license. Pretty sure its not illegal in the US at least.

back on topic could I just sent the arduino VirtualWire data to my FSK chip? It seems virtual wire does ASK so I might be able to send that straight out to the chip and then FSK the high low from Virtual key. Does anyone know if the ASK is 5v 0v or do they use other voltages for high and low?

VirtualWire sends and receives serial strings of 0 and 1 bits.

The radio transmitter and receiver perform the carrier modulation and demodulation. The type of modulation can be anything supported by the transmitter and receiver. If you don't understand the distinction, you need to do more background research.

I feel like I am missing a very obvious answer to this problem.

Asynchronous serial communication

It is built into all arduinos.

I am using the arduino itself on the receiver to demodulate my incoming data using some code to determine frequency. Virtual wire only seems to spit out basic ASK which is fine on the transmitter side as its sending out to my FSK modulation chip which in turn is spitting out my frequency modulated signal. Maybe I am not explaining myself well enough or you don't understand what I am doing. The issue I am having is on the receiving side due to virtual wire looking for a ASK signal of highs and lows. I guess I can get around this by first demodulating my signal using some analog circuitry then feeding that to virtual wire on the arduino.

PS to Grumpy yes I know about async com except that is only true for ASK or if I demodulate the signal into a binary stream before I send it to the arduino. I am not using off the shelf radio transmitter/receiver.

Which FSK modulation chip are you using? Datasheet?

Pete

except that is only true for ASK or if I demodulate the signal into a binary stream before I send it to the arduino.

No that is not true. The modulation method has nothing to do with the data that it is being modulated.

Maybe I am not explaining myself well enough

Yes nail / head collision there.

AD9833 DDS is the chip I am using. By changing the logic lvl from 0 to 5v it will spit out a corresponding frequency that I have set. So my setup at the moment on the transmitter side is arduino that spits out a binary stream to the FSK unit which modulates it and sends it out my antenna. The receiver is going to be an arduino that was going to demodulate the data with some code I wrote for detecting freqnency changes but been having timing issues. Which is why I started looking at VirtualWire functions for some solutions.

Grumpy I do not understand how virtual wire will be able to interpret FSK as it seems it only can handle binary 1 or 0 (5v or 0v) for the data, my incomming data stream is going to be only varying in frequency. If I am using my arduino as my demodulation unit for FSK then I do not see how VirtualWire would be able to handle that incomming stream? I only see an option of demodulating the data before it gets to the arduino.

Thanks guys

You are going to need a radio receiver of one sort or another to detect the signal. There's no way that an Arduino can receive and demodulate a 10MHz radio signal on its own.

Pete

I do not understand how virtual wire will be able to interpret FSK

It can't

I only see an option of demodulating the data before it gets to the arduino.

The FSK will be converted into a varying voltage by the receiver. You then have the choice of feeding that voltage into the analogue input or better putting it through a comparator to turn it into 0s and 1s. If the data starts off as asynchronous data then once you have converted it back you can use the serial port to receive it.

I too am a HAM .... G8HBR

An Arduino could in principle demodulate an FSK audio subcarrier, but I get the impression that it is the 10 MHz carrier that you are modulating. Is that correct?

amano001: This is for research and at 1mW also I have my HAM license. Pretty sure its not illegal in the US at least.

10 MHz is neither Amateur nor ISM band - it is in fact, a WWV reference frequency on which absolutely no-one wants you transmitting at any power level whatsoever.

If you have an Amateur license, you already know that.

Are you perhaps meaning 14 MHz (20 metre band)? Or 40 metres? If so, please say so.

It is just a little irritating for such wrong information to be repeated.

10 MHz is neither Amateur nor ISM band

Apparently in the U.S. it is.

Hambands_color.pdf (346 KB)

Grumpy_Mike:

10 MHz is neither Amateur nor ISM band

Apparently in the U.S. it is.

OK, 10.1 to 10.15 - data only. Reasonable distance.

Thanks Grumpy for backing me up!

Sorry I forgot to clarify I am using the DUE so 10Mhz is well within possible for it to detect. Yes I am modulating the 10Mhz carrier. My intention was to use a frequencydetector on the DUE and then feed that into VirtualWire functions. Would this be possible? If I have to I can always drop the Carrier down to the Khz range if need be but would rather keep it.

Grumpy Yes that is how I understood to do it for virtualwire, thank you for clarifying. I think the comparator idea would be good idea, What would be a good circuit for detecting the frequency. I have read up on DFM and it could be an option, but are there any IC's that can handle this task?

Thanks

There are lots of ways of demodulating the 10MHz. If it were me I would use a phased locked loop or PLL.