- Tue Apr 16, 2013 5:07 am
#158426
A long time ago, in a galaxy far far away...
uh, I mean about 12 years ago working in a hotel room while deployed out to USPS mail facilities for automation systems installations, I found my love of micro controllers in the form of a Basic Stamp-1.
I soon had 2 and had built a pair of IR transceivers with them...experimenting with sending ASCII strings from one to the other, and figuring out how to improve ranges and message quality.
I set one TRX as an initiator, and the other TRX as a responder.
The initiator powered up and immediately sent out a string.
The responder powered up and sat there listening for a message before sending its string.
The pair formed a tag-team that played a game of "catch" that would continue on and on until the chain was broken by missing characters in the string transmission, or by simply one unit not getting the message at all
( because I threw a sock over its head to kill the game and make em goto sleep )
I found this pair of matching TRXs highly useful in prototyping or testing algorithms related to IR signalling and stuff.
Some very notable discoveries I made in these experiments was how the more workable data formatting methods and the different schema for TX and RX pairs data formats worked and why.
I also went all they way down (way...on...down...) to 300 baud on TX and RX that made an incredible (i said that in loud baritone) difference in range and readability... it even worked around corners!! im not shittin you.
But the part most applicable here to this thread would be the formatting that boosted reliability of signalling between TX and RX pairs.
Im sure this is prolly encapsulated within some one elses coding formats, but I did this independently of anything anyway, so this might be of help to you or anyone working out a solution by scratch.
If you figure out how many individual control/message signals you might need for your particular application, you can then proceed in coding or at least conjuring up some 'alphabet' or command list to work from.
I originally was sending a complete sentence like "mary had a little lamb", and it didnt take much to break the cycle... a dropped space could terminate the game of 'catch' my little 'stamp-bots' were playing.
Then I discovered stacking or chaining like characters to form redundant command signalling that was much harder to cause to fail. Then, progression lead to the best way of implementing the RX-side decoding methodologies...
like I sent "mmmmaaaarrrryyyy hhhhaaaadddd aaaa lllliiiittttttttlllleeee llllaaaammmmbbbb" and had the RX side perform a "latch" decoding function by only expecting the next character in the series after successfully interpreting the prior symbol.
So, unless RX decoded an "m", it ignored everything else, sitting there waiting on its expected "m' symbol.
In this way, the redundant series of characters were filtered out rapidly, and entire complex sequences could be decoded reliably at impressive distances and orientations (around corners ~wink)
This in effect created the possibility for many many "channels" or commands to be coded into the TRX pairs, essentially making many possible signals that could be sent and used to trigger events on the RX side.
I went as far as using "return acknowledgment signalling" where each time a RX got some characters in a burst, it would send out a simple string of +++++ to let the TX know it got something, and then it would send out +++++ or ------ to let the TX know it had successfully keyed a function or failed to match a key... causing a possible retransmission.
Using these basic fundamental format methods, the TX / RX pairs reached impressive reliability, rivaling any low power RF signalling setups.
Think about this methodology and you can improve your conditions immensely regardless of "noise" or transmission quality.
Russ Reed - KF5DPO
Wings are for fairies...and runways are for fashion models...