Manchester Encoding

A project log for ViperPhoton weather station

Host webpage with weather readings from distributed sensors on a viperized Photon

andreas.betzandreas.betz 11/10/2015 at 11:220 Comments

One of the goals of this project is to have sensor nodes transmitting data wireless to the Photon.

Reading serial data from a digital pin is of course a good start for this, but it's not going to work very well with the cheap 433MHz modules that I have available at the moment: The 433MHz modules communicate in so called On-Off-Keying, i.e. 1 and 0 are represented by RF power on and off. In the absence of actual data transmission the receiver will then ramp up its RF gain till it sees a "signal" and we end up with noise "data". This might even happen for say a transmission of the form 0b10000000.

A way to combat this is to use Manchester encoding: logic bits 0/1 are encoded as rising/ falling edges in the middle of the transmitted bit.

There are good libraries for sending out Manchester encoded data on Arduino (or any other MCU IDE, I guess) and on the VIPER side of things we are also nearly there, as decoding Manchester data is all about the time between rising and falling edges.

So the next step is to adapt the SoftRx_ICU routine for Manchester data and then get a first wireless transmission!