Arduino红外串行通信纠错

时间:2012-11-20 03:43:01

标签: arduino serial-communication infrared

最好的方法是什么,以便在使用二进制红外发送消息时不会出错。目前我通过将它们编码成二进制ascii值来发送消息,然后将两个带有红外灯的Arduinos和传感器检查起始位光,然后通过检查红外灯是否以3毫秒的间隔打开或关闭来读取消息。

我需要做到这一点,无论发生什么(即来自远程或其他Arduinos的干扰),仍然会发送正确的消息。

我还想做到这样,即使两个Arduinos同时尝试发送消息,他们都会互相收到消息。

我通过Arduino IDE的串行监视器发送和接收消息。

PS:我遇到了一个问题,如果我一次发送很多信件,他们会在一定数量的字符后开始混乱。即如果我输入1 - 30,数字之间有空格,我会得到结果:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 14 15 a s .... 17之后数字会变得混乱。

如果您对问题可能有任何想法,我将非常感激!

1 个答案:

答案 0 :(得分:0)

没有IR的错误将是艰难的。问题是,如果它错过一次眨眼,它会全部移动,然后你的拧紧。一次发送2也很难,因为arduino不进行并行处理。

我会推荐一种不同的协议。 IR对于大量信息并不是很好。如果你不需要无线,串口是非常容易的,如果你这样做,请使用蓝牙,例如2个blueSMIRF。你必须将一个设置为主设备,但它就像串行通信一样。

做一些谷歌搜索,但我认为IR不会解决整个消息。肯定会有1或2个数字,但整句话或某些事情都不会很好。

要尝试的一件事是发送消息2或3次,并比较以查看它们是否相同。如果是,可能是正确的,但如果不同,你可以要求重新发送。

如果可以的话,你可能还想放慢速度,并使用更长的脉冲和暂停,这将使它有更多的时间进行注册,这意味着它应该更准确。

祝你好运!