Close

Walsh-Hadamard Codes

A project log for QMesh: A LoRa-based Voice Mesh Network

Developing a synchronized, flooded mesh network to carry codec2-encoded voice over LoRa

dan-fayDan Fay 08/03/2021 at 12:210 Comments

Up to this point, the various parameters that make up the COMA anti-interference mechanism were chosen randomly at every packet. To prevent overlap, the Mersenne Twister-based pseudo-random number generator was seeded with the address of the node. While this did a good job keeping nodes from interfering from each other, it's probabilistically possible that interfering/overlapping COMA parameters are selected.

I started experimenting with instead choosing these parameters using Walsh-Hadamard Codes instead. These codes are used in many CDMA systems to find orthogonal pseudo-noise (PN) codes for the different users. Doing some very crude experimenting, it looks like they have a lot of potential as a way to choose the different anti-interference factors that QMesh uses (frequency offset, timing offset, channel, and inverted bits). 

It does seem to do a pretty good job of selecting parameters that are fairly far apart from each other:

Node
Frequency
Offset
ChannelTiming
Offset
Invert
Bits
0-8831600No
18713715No
26795703Yes
3-3519916Yes
43547107No
58793212No
68977704Yes
7-1109611Yes

Discussions