PDA

View Full Version : 433 Mhz Data Receiver



Pesticida
- 23rd October 2005, 15:40
Hi people,I have found a 433 Mhz data receiver the chip on the receiver is a Philips UAA3201T like on the photo .
From pin 9 I receive the data,my question is how I must connect this pin to my PIC 16f870 and what command I can use to read the data.
I tryed with serin porta.0,n2400,B0 on porta.0 but I receive a lot of data .
This 433 Mhz receiver have a standalone "Button" transmitter ,I want to display the data from this little transmitter example on my PC.
To interface between my pic and my pc is not a problem,just between PIC and the receiver is a problem for me.
I have on the pin 9 on the receiver 1 volt when i push the "button" transmitter i have on the pin 9 2.5 Volt of data.

Thanks.
bye Pesti.

NavMicroSystems
- 23rd October 2005, 17:25
Pesti,

those "Single Button Transmitters"
(ie. Wireless Door Chime) usually consist of a very simple RF transmitter and an encoder chip.

There is actually not much data of any sense to be displayed as long as you don't know in detail what the transmitter is sending and how it is encoded.

(Or are you trying to "Sniff" the bitstream and "Clone" the transmitter?)

Pesticida
- 23rd October 2005, 17:52
Hi,
:-) Is not a Wireless Door Chime,I have one alarm button transmitter and a receiver.
Now I want to read the data from this button and make my own circuit with a PIC16f870.
The problem is I can not read the data from the original cicuit PIC16f84 and receiver.I want to receive data from receiver to pic and then I can see what code send this button.
I can write my own visual basic program with this "code",when i push the button something happend on my program, alarm is incoming and so on.
I hope you understand what I mean.

Bye Pesti.

Ron Marcus
- 23rd October 2005, 21:28
The receiver is a simple OOK receiver. Do you already have a companion transmitter? I once took apart a similar device that was part of a IR proximity alarm. It would sense a warm body, and send out a 24 bit stream of data which included it's address, and the alarm state. I reverse engineered a receiver for it that looked at the incoming noise for a particular pattern of data. For instance, let's say that the transmitter put out four short bursts and four long bursts to indicate it was in an alarm state. The receiver looked for a burst of the proper length. If it got it, it looked for the next, then the next, until all matched up in the right order, and each individual pulse was the right length. If for some reason, the pulse length or position was wrong, it fell through to the beginning. If all was right, and I got three correct sequences in a row, I had an alarm state, and the microprocessor put out the proper response.
With the receiver you have, the data slicer is going to be constantly transitioning from 0 to 1 and back again due to random noise. You need to be able to differentiate the signal from the noise. Most OOK systems that transmit data, will start with a preamble that will set the data slicer to the midpoint. Following this is a character that tells the receiver to listen up, then it's followed by the data, and a checksum so the receiver has some form of error detection. In your case, three characters repeated over and over will be enough to signal to the receiver what is going on, as long as they are relatively balanced between ones and zeros. Manchester encoding takes care of this for you, but it raises the level of complication above what you need.
I have used the Micrel receivers in the past for this, and have found them much easier and cheaper to use than the Philips parts.

Ron

Pesticida
- 24th October 2005, 17:24
Hi,
yes I have a receiver and a transmitter.
The receiver is connected trough a RJ11 cable to a PIC controller,now when I push the transmitter button the first time the PIC save the data from the transmitter to the pic memory,and now I can use the button with this receiver and PIC.
Do you understand what I mean.
I looked on the receiver,I receive all the time data from all buttons what I have but the PIC can just switch the output when I push the button what I have saved .
The PIC Schematic look like this,I draw just what I need.
My question is how can I do the same cicuit on my PIC 16F870 and what command I need to do this.I connect the receiver to my PIC but I receive all the time strange data and when I push the button I receive data to, but is all Mixed.

Thanks Pesti.

Pesticida
- 24th October 2005, 20:45
Ok,I read now the data from the PIC16F84 eprom.
When I push the button 1 and save the data trough the receiver to the PIC I can see on the adress 0000: 01 00 03 EF 36 00 00 00 when I push the button 2 I can read on adress 0000:01 00 03 ED 2E 00 00 00.
I think this is the right code!

Bye Pesti.

Pesticida
- 25th October 2005, 18:48
Hi,
is nobody here that can help me?

Thanks.
Pesti.

Pesticida
- 25th October 2005, 21:19
Hi,
I have another question how can I check this number "108219" on Porta.0 with serin command.
Example serin porta.0,N300,[108], B0 this is for number "108",but i want to check the complete number how can i do this,I become all the time number owerflow while this is to big !
Thanks a lot people for help.

Pesti.

Pesticida
- 26th October 2005, 12:45
Wauuuuuuuu!
Thanks people for so much help.
I will never forget this!
Bye Pesti.

Tissy
- 27th October 2005, 01:33
Would you mind posting a snipet of your Serin code. I too am using a 433Mhz receiver which has 4 outputs. 1-3 are depending on which of the 3 buttons on the fob are pressed, but the 4th emits serial data, like the serial number of the fob device.

I owuld be interested in how you are capturing your serial code.

Many thanks,

Steve

Pesticida
- 28th October 2005, 18:54
Hi,
I try to capture with audio visual method or connect direct from transmitter output to my second PIC.
But the problem is I can not make the same wave I dont know why!, I have tryed with 300 Baud then with 1200 but I can not have the same binary tone.
I use just a normal Serin command:

Define LOADER_USED 1


Include "modedefs.bas" ' Mode definitions for Serout



ADCON1=7
define osc 4

DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 24h
DEFINE HSER_SPBRG 207 ' 1200 Bauds
DEFINE HSER_CLOERR 1









' Alias definition
' ================
'
'
RCIF VAR PIR1.5 ' Receive interrupt flag (1=full , 0=empty)
TXIF VAR PIR1.4 ' Transmit interrupt flag (1=empty, 0=full)

' Variable definition
' ===================


B0 var byte

pause 10 ' safe start-up delay


Main:

serin porta.0,N1200,B0
serout porta.1,N1200,[B0]
hserout [#B0]
goto main

This photo is what I have captured from my transmitter.
This wave is made from the transmitter 5 times.
I have found on the web how can I read this audio data but I dont know any more where is this homepage ! :-)

Bye Pesti.

Pesticida
- 29th October 2005, 13:53
Hi People,
i have a question ,can I use this manchester code like in this example.
Trough PortA.0 is incoming encoded data from my transmitter and is then decoded and trough PortA.1 is going encoded data out.

Define LOADER_USED 1
Include "modedefs.bas" ' Mode definitions for Serout

ADCON1=7
define osc 4

DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 24h
DEFINE HSER_SPBRG 207 ' 1200 Bauds
DEFINE HSER_CLOERR 1

n var byte
d var byte
myVar VAR byte
CounterA var Byte
ErrorFlag var Bit
MyData var Byte
encoded var Word
v var word

pause 10 ' safe start-up delay

Main:

serin porta.0,N1200,v

ErrorFlag=0
For CounterA=0 to 7
If v.1=0 then
MyData.7=0
If v.0=0 then ErrorFlag=1
else
MyData.7=1
If v.0=1 then ErrorFlag=1
endif
v=v>>2
If CounterA<7 then MyData=MyData>1
next
goto encodemanchester
encodeManchester:
For d=0 TO 7
IF mydata.0[d]=0 Then
encoded.0[d*2]=0
encoded.0[d*2+1]=1
Else
encoded.0[d*2]=1
encoded.0[d*2+1]=0
EndIF

serout porta.1,N1200,[encoded]
hserout [encoded]

Next

goto main
end


Please for help,thanks very much.

Pesti.

Pesticida
- 29th October 2005, 22:08
Hi,
Is nobody here that can help me please?

Regard Pesti.

ChrisMicro
- 29th November 2010, 01:50
The serin command is used as folow:
Transmitter code: SerOut GPIO.1,N1200,["A","work"]
Receiver code: SerIn porta.3,N1200,["A"],B0,B1,B2,B3 received data will be: B0=w, B1=o, B2=r, B3=k
Note the N1200 is the baud rate, that is very important the N can be replaced with a T depending on the polarity of the data you receive, then the ["A"] the program will wait on the pin porta.3 until it receive an "A" then it will read the data that follow into the 4 variables B0-B3, you can use more variables if you want to.
But if your transmitter is using a decoder chip it is impossible to read the data you will always get garbage and not real data.
The data that you receive while the transmitter is off is only garbage or QRM caused by florescent light or other interference.
To sum up, you will need to know at what baud rate and polarity your transmitter is sending the data and you need to know what the [qualifier] is, it can be any character/s.

ChrisMicro
- 29th November 2010, 02:26
You can try the following:
Create some word long variables eg
B0 var WORD
B1 var WORD
B2 var WORD
B3 var WORD

SerIn porta.3, N1200,,, B0, B1, B2, B3
then compare the variables if it contain the same data then it will be the correct code because the encoder/decoder chips send out a 12 bit data that will fit into a word variable that can take up to 16 bits of data