Go Down

Topic: 433MHz RX/TX question, Manchester encoding (Read 12224 times) previous topic - next topic


Have a look at using Xbee modules .
You can get an Xbee shield for your Arduino, and Xbee to Serial converters exist which you can connect your PC too.
The Xbee modules do all the hard work of encoding the serial data, so work just like a hardwired connection.


Guys & Girls,

if you want bi-directional 433 comms then the virtual wire will work fine its just you cannot have full duplex you will have to do a master slave configuration or implement a collision detection implementation if you need multiple masters or have different frequency for tx vs rx, but that is not usually any better if more than 2 devices etc..

the 433 tx rx modules use the same frequency and hence you only want one talking at any given time its nothing to do with software its to do with airwaves !

i use 20 sensors all talking to a base station in 433 with time cycling and a randomiser to minimise collisions but i have also made my second generation system using tx and rx on a single module utilising a master slave configuration where you do get bi-directional communications.

I use the Atmega 328 in sensors and repeaters and the Atmega 1280 in our base station because this handles SMS messaging of alarms, keyboard, LCD display , 434 RX , sounder, USB to PC , SD card, and USB host for writing info to Pen drives (so needs a little bit more horse power :-)
The sensors work off 2 AA and utilising sleep and watch dog I get 4 - 5 years life - monitors battery life, 3 digital temperature sensors with error rejection, and lost transmission recovery over 500M range.


Can confirm works well with VirtualWire - shipping time was long, so this was long until I had my new Arduino :=)


RF transmiters and receivers only send and receive digital values, 1 and 0, mounted on a radio frecuency with some kind of modulation:  Amplitude, frequency or phase.

There's neither manchester nor any other kind of encoding or decoding method involved in this RF process yet.  You have to choose one.

Any kind of noise affects RF, so 1 and 0 can be received from the noise, but it's random!  If you try to read what 1s and 0s are received, you'll get many of them, even when your transmiter does't transmit.  So you must use an encoding/decoding method to recognize the 1s and 0s you receive (and how you send them).  Manchester is a method.  There are others, for example the one used by Holtek (http://www.holtek.com/pdf/consumer/6p20v170.pdf)

Generic RF remote controls use this holtek chip to encode and decode.  I made a program to decode holtek encoding method and works fine.  It in this forum, you can check (http://arduino.cc/forum/index.php/topic,129201.0.html)


Motion Control
Siemens Solution Partner


Yes I know, I consulted VirtualWire for that issue. However, when I started the thread I had only one Arduino and so couldn't check whether they work. And full duplex for one Arduino was not possible for me to work on, because this is not worth the effort. And now with my two Arduinos it works great.
VirtualWire also includes some kind of checksum (CRC) so shouldn't get noise in.

Go Up