433Mhz Uhf Ask Data Transmitter and Receiver: Egrf-433A1
433Mhz Uhf Ask Data Transmitter and Receiver: Egrf-433A1
433Mhz Uhf Ask Data Transmitter and Receiver: Egrf-433A1
Limitations
The transmitter module is based on Micrel’s UHF The transmitter is ASK pulse modulated by ap-
transmitter MICRF113. This is a very stable UHF plying LVTTL level pulses at the TXIN input. TXIN
oscillator locked to a crystal frequency. It is ca- input is non linear. Basically, what the input pulses
pable of delivering RF output of up to 10dbm, does is turn ON and OFF the transmitter at a suc-
although in our circuit, actual RF output is about 3 cession to effect ASK transmission.
-*$849$3&00$:&('50&$*+$&;-&%"'3$(*,1*"&"-0$!"<5-
ence.
Figure 3. The transmitter module is crystal locked in frequency, ensuring a stable and more reliable
&,%;<#'&&';=+>?;!&'";@+8))+*A&*,;%)+!"#$";*;&<+%,*+-A*/+';+B%)?*@+C"&0';=+!%;+(*+%!!'/*;&%))D+/*&?;*/@
PIN ID Description
1 +3v3 Power Input, 1v8 to 3v6 volts
TXIN
2 GND Power Ground WIRE
GND ANTENNA
3 No connection +3V3 (SEE TEXT)
4 TXIN ASK Data Pulse input P1
The receiver module is built around ATA3741, a the detection of sync signal. The sync pulses are
UHF receiver circuit capable of demodulating ei- immediately followed by a start marker - a 12bit
ther an ASK or FSK signal. The receiver frequency pulse pattern, the number of bytes to transmit, and
is likewise crystal locked to keep the frequency the data stream itself. Transmission is concluded
from wandering off and getting out of tune with the with a 4 byte CRC that must be used by the host
transmitter. controller to validate the data.
Figure 5. A snapshot of an oscilloscope trace of a EGRF-433A1-T transmitter module sending the mes-
sage “123456”. The lower trace is the expanded highlighted portion of the packet. The lower trace clearly
<0".<+&0*+<D;!0,";'E%&'";+$?)<*<F+&0*+9G5('&+<&%,&+#%,H*,F+*;!"/*/+$%D)"%/+<$*!'-*,F+%;/+$",&'";<+">+&0*+
payload itself.
To use the EGRF-433A1 with your gizDuino, you UART port pin 0, pin 1, and pin 2 of the gizDuino
need to integrate the VirtualWire library with your free. The UART port is one of the most useful
current Arduino IDE installation. Installing Virtual- features of a microcontroller. A lot of devices would
Wire Libraries to your Arduino IDE requires only a want to connect in the UART port. And it is not
couple of steps: needed for EGRF-433A1 to work, although you
can use it with equal ease if you want to. It will
1. Download the latest VirtualWire library from just be a waste. You will never know when you will
http://www.open.com.au/mikem/arduino/ need it for other devices.
TXIN
GND
+3V3
P1
4'=?,*+Q@+1A%#$)*+">+%;+12345677895:+&,%;<#'&&*,+#"/?)*+.',*/+.'&0+='ER?';"S+#"/?)*@+C**/)*<+&"+
say, this setup will work with any Arduino and compatible module as well, not just with the gizDuino+.
User can freely use any other DIO pin other than the one shown in this example.
#include <VirtualWire.h>
void setup()
{
void loop()
{
The receiver circuit, as a minimum, requires just cease going from state to state (Fig. 11). This will
one gizDuino DIO to implement. The host control- conceivably put a burden in the MCU hosts, with
ler (gizDuino) running the VirtualWire services the effect showing as system slowing down. The
1&%!*4!('33?$()&(O0$-)&$01&(!2&4$PQH6$Q+$'"$!"(*,- Enable pin helps minimize this. It works by keeping
ing stream is detected, it processes the data, get the DATA output silent (no pulses) when nothing is
rid of the noise, checks for data integrity, and then being sent from the transmitter side (Fig. 10). This
expose the clean receive data to a running user is possible because the ATA3741 chip used in the
codes. All complex tasks are done by the Virtual- receiver module has a built-in function that can
Wire for you. detect the synchronization start pulse on its own.
To use it, the host MCU must pull down Enable pin
Control to the receiver ENable pin is not neces- for a short moment after the completion of a data
sary, but is highly recommended. The EGRF- packet reception.
433A1 DATA output pin, as repeatedly mentioned,
is littered with random noise pulses. Even with the An Arduino demo sketch for the receiver module is
absence of incoming signal, the DATA output never shown in the following pages.
WIRE
ANTENNA
(SEE TEXT)
Vcc
GND
DATA
N.C.
EN
DEM
Figure 9. EGRF-433A1-R Receiver Module on a gizDuino+. As in the transmitter wiring example, users
can freely choose a different DIO if the application circuit so requires. But remember to modify the pin as-
<'=;#*;&+";+D"?,+8,/?';"+MH*&!0+%!!",/';=)D@
Figure 11. You can leave out the Enable function. But this is what will happen in the DATA
output. Random noise pulses keeps coming out of the DATA pin even in the absence of an
incoming signal. This may present a unnecessary burden that could slow down the process-
ing speed of the hosts MCU.
#include <VirtualWire.h>
byte bitctr=14;
void setup()
{
pinMode(rxenable,OUTPUT); // EGRF-433A1 DIO for ENable pin
ATA3741(); // setup Rx module ATA3741 chip
pinMode(ledpin,OUTPUT); // LED
}
uint8_t buf[VW_MAX_MESSAGE_LEN];
$$$$5!"-RS-$:5<&"$T$CDSE=USEVWW=XVSYVZL
int i;
$$$$$!+$F[>S#&-S,&00'#&F:5+G$\:5<&"KK]$$MM$4'-'$'['!3':3&^
$$$$$$$$4!#!-'3D%!-&F._G$7QX7KL$$$$$$$$$MM$<'0)$HZ$YVP
$ +*%$F!$T$/L$!$`$:5<&"L$!aaK
{
Serial.print((char)buf[i]);
}
Serial.println(“”);
}
}
void ATA3741(void){
digitalWrite(rxenable,HIGH);
$$MM$Q"!-!'-&$=I=_c8.$(*"2#5%'-!*"$,*4&$:?
// forcing DATA pin low for 15ms
pinMode(rxpin,OUTPUT); // Change DATA pin direction to OUTPUT
digitalWrite(rxpin,LOW);
delayMicroseconds(15000);
digitalWrite(rxpin,HIGH);
pinMode(rxpin,INPUT);
digitalWrite(rxpin,LOW);
// wait for t2
bitctr=14;
// send 14 bits init pattern
while(bitctr>0){
bitctr--;
spattern=spattern<<1;
}
delayMicroseconds(15000);
$$MM$J5-$:'(O$=I=_c8.$!"$(*"2#$,*4&
pinMode(rxpin,OUTPUT);
digitalWrite(rxpin,LOW);
delayMicroseconds(1000);
digitalWrite(rxpin,HIGH);
pinMode(rxpin,INPUT);
digitalWrite(rxpin,LOW);
bitctr--;
lpattern=lpattern<<1;
}
}
delayMicroseconds(131);
pinMode(rxpin,OUTPUT); // output a low
delayMicroseconds(150); // for 150uS
pinMode(rxpin,INPUT);
delayMicroseconds(50);
}
BOTTOM
TOP
BOTTOM
TOP