2013-07-29 67 views
0

我建立它由一个Arduino的(宇野,此刻)钟爱的项目,一个GPS(Sparkfun GS407)和GSM调制解调器(Sparkfun ADH8066)。这个想法是我可以短信调制解调器,并让它回复它的位置。的Arduino SoftwareSerial连接

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

1)显然,我使用串行通信时,需要一个良好的接地(仅使用9600波特率)。我是电子新手,所以我不确定我会如何改善我的工作。

2)我读的地方(可能here)是SoftwareSerial只支持一组引脚发送/接收在任何一个时间的。这可能会证明问题,如果GPS正在喷出大量的数据,就像他们一样。

任何人都可以评论我看到奇怪的串行输出的原因吗?

回答

0

接地不应该是一个问题。只要你有一个地面连接,你应该没问题。 Sparkfun中线板将处理任何敏感的接地问题。

奇数据几乎可以肯定是从使用多个softwareserials,不推荐你发现。

一个解决方案是使用硬件串行端口,用于一个装置,以及用于其它软件串行端口。 (硬件GPS,因为它比GSM更新更频繁)

+0

谢谢。你能建议我可能使用的任何代码吗?我正在努力寻找有效的代码,并且不会持续轮询GSM调制解调器(通过串行)获取新的SMS消息。 – mabnz

+0

理想的解决方案是设置软件串行,以便当GSM调制解调器发送一个终止字符(指示一条线路已发送)时,软件串行中断将自动调用某个要调用的函数来处理该更新。这将消除你需要不断地提供()和read()。但是,您需要修改库才能这样做,但这可能并不困难。在库中会有一个中断服务程序(ISR)编码,所以你可以编辑它并说明读取的字节是否是终止字符(\ 0或空终止符),运行X函数。 – user2461391