Transmit tone at 315Mhz

I want to use a cheap 315Mhz transmitter to send a simple 500hz tone that I can easily pick up on my scanner. So far all I can find is how to send data.

Is it possible to do what I am asking? If so how....

Just a simple oscillator circuit to generate the 315Mhz carrier and then a 555 chip to produce the 500 Hz signal. Put a transistor on the output of the oscillator with it's base attached to the 555 and you're there.

If you want to use an arduino to emulate a 555 chip I'm sure that can be achieved :slight_smile:

So far all I can find is how to send data.

If the "data" consist of just an on and off (high and low) state, repeating 500 times per second, you are all done.

@KenF - working on the oscillator circuit now.

@jremington - so something like this?

#include <VirtualWire.h>

void setup()
    Serial.begin(9600);	  // Debugging only

    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);	 // Bits per sec

void loop()
	const char *msg = "hello";

	for (int i=0; i <= 500; i++){
		vw_send((uint8_t *)msg, strlen(msg));
		vw_wait_tx(); // Wait until the whole message is gone

Why bother with VirtualWire? Connect the "dataPin" (as output) to the data input pin on the transmitter module, and run this program:

void loop() {
while(1) {
digitalWrite(dataPin, HIGH);

Don't do it for long, as you will interfere with every other device in the vicinity, using 315 MHz transmissions.

I will give this a try tonight. Thanks for the help.

If that is all you want to do, a 555 timer is the simple solution. No extra transistor needed, even.

If this is you learning how to use radio modules, then by all means use an Arduino. But please SKIP USING DELAY! Look at the "Blink Without Delay" example sketch, or use the tone() command. Using delay() is a terrible idea, as you'll only be learning a bad habit.

I've been programming professionally for over 40 years, and find delay() to be quite handy in certain instances.

Sure, it has its uses. But newbies are being taught to do everything using delay(). Then as soon as you try to combine more than one function, things grind to a halt and they have to relearn everything.

Thanks for all of the help. I really appreciate the great responses.

I like the use of the if logic in the example, however I think in this case a simple delay will work.

Consider also the tone() library function.

void loop() {
tone(dataPin, 500, 500);

You’re not meant to transmit continuously on the 315MHz frequency.