【问题标题】:Arduino SoftwareSerial connectionsArduino 软件串行连接
【发布时间】:2013-08-13 18:13:11
【问题描述】:

我正在构建一个宠物项目,其中包括一个 Arduino(目前是 Uno)、一个 GPS(Sparkfun GS407)和一个 GSM 调制解调器(Sparkfun ADH8066)。我的想法是我可以给调制解调器发短信,让它回复它在哪里。

问题是,当我同时插入 GPS 和 GSM 模块时,串行通讯开始变得混乱。现在我有两个想法为什么会发生这种情况;

1) 显然,在使用串行通信时我需要一个良好的基础(仅使用 9600 波特)。我是电子新手,所以我不确定如何提高自己的基础。

2) 我在某处(可能是 here)读到 SoftwareSerial 在任何时候只支持一组引脚发送/接收。如果 GPS 像它们一样喷出大量虚假数据,这可能会出现问题。

谁能评论我看到奇怪的串行输出的原因?

【问题讨论】:

    标签: serial-port arduino


    【解决方案1】:

    接地应该不是问题。只要你有接地线,你应该没问题。 Sparkfun 断路器板将解决任何敏感的接地问题。

    奇怪的数据几乎可以肯定来自使用多个软件序列,正如您所发现的那样不推荐。

    一种解决方案是为一台设备使用硬件串行端口,为另一台设备使用软件串行端口。 (硬件上的 GPS,因为它比 GSM 更频繁地更新)

    【讨论】:

    • 谢谢。你能建议我可能使用的任何代码吗?我正在努力寻找有效的代码,并且不会不断地轮询 GSM 调制解调器(通过串行)以获取新的 SMS 消息。
    • 理想的解决方案是设置软件串行,这样当 GSM 调制解调器发送终止字符(表示已发送一行)时,软件串行中断将自动调用您要调用的某些函数来处理那个更新。这将消除您需要不断执行 available() 和 read() 的需要。但是,您需要修改库才能这样做,但这可能并不难。库中将编码一个中断服务例程 (ISR),因此您可以对其进行编辑并说明读取的字节是否为终止字符(\0 或空终止符),运行 X 函数。
    【解决方案2】:

    请将 SoftwareSerial 替换为更好的 AltSoftSerial (http://www.pjrc.com/teensy/td_libs_AltSoftSerial.html)。

    是的,将其中一个设备保留在硬件串行端口上,因为这优于任何以软件实现的串行解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      相关资源
      最近更新 更多