【问题标题】:Arduino Infrared Serial Communication Error CorrectionArduino红外串行通信纠错
【发布时间】:2015-01-24 02:21:41
【问题描述】:

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

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

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

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

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

如果您对可能出现的问题有任何想法,我将不胜感激!

【问题讨论】:

标签: arduino serial-communication infrared


【解决方案1】:

在 IR 中不出错将是一项艰巨的任务。问题是如果它错过了一次眨眼,它就会全部转移,然后你就搞砸了。一次发送 2 个也很困难,因为 arduino 不能进行并行处理。

我会推荐一个不同的协议。 IR 不适用于大量信息。如果您不需要无线,串行超级简单,如果需要,请使用蓝牙,例如 2 个 blueSMIRF。您必须将其设置为主机,但这就像串行通信一样。

做一些谷歌搜索,但我认为 IR 无法处理完整的消​​息。 1 或 2 个数字,当然,但一个完整的句子或其他东西不会很好。

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

如果可以的话,您可能还想放慢速度,并使用更长的脉冲和暂停,这将给它更多的时间来记录,这意味着它应该更准确。

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多