Arduino Uno R3 + SIM900

3

我是一名程序员,尝试使用硬件。

我正在尝试连接我在网上购买的SIM900 shield。我已经按照很多教程将SIM卡与Arduino UNO相连接。

但是,情况并不顺利。

我已经放了一张解锁的SIM卡,网络指示灯每隔3秒闪烁3次,意味着它找到了网络。

我也设置了引脚为D7和D8,这是许多人所指出的。我还使用了9V 1A的电源。

但是当我尝试运行一个简单的基本示例代码时,它们不能正常执行。

我运行了这个示例代码:

#include <SoftwareSerial.h>

SoftwareSerial GPRS(7, 8);

unsigned char buffer[64];  // buffer array for data receive over serial port
int count=0;               // counter for buffer array 

void setup()
{
  GPRS.begin(19200);
  Serial.begin(19200);
}

void loop()
{
  if (GPRS.available())
  {
    while(GPRS.available())
    {
      buffer[count++]=GPRS.read();
      if(count == 64)break;
    }
    Serial.write(buffer,count);
    clearBufferArray();
    count = 0;
  }
  if (Serial.available())
    GPRS.write(Serial.read());
}

void clearBufferArray() 
{
  for (int i=0; i<count;i++)
  {
    buffer[i]=NULL;
  }
}

然后我在串口监视器中选择了19200波特率,并输入以下命令:

AT

它打印出了这个结果 enter image description here (出现了两个 ??)

看起来命令没有被发送...

下面是我的构建方式: enter image description here enter image description here

请帮帮我! 我做错了什么?


你应该使用2A的电源。但是你很可能在模块上使用了错误的波特率。请尝试在GPRS.begin()中使用9600和115200。 - SoreDakeNoKoto
请确保在发送AT指令后附加CR/LF。有时您的GSM模块会设置特定的波特率,在这种情况下,您可以尝试发送AT\r 2-3次,然后它将自动识别波特率,并且您将收到相应的OK响应。此外,建议您尝试@TisteAndii的建议。 - HallMark
1个回答

2

我解决了!

我进入了我的GSM库(位于libraries文件夹中),并在GSM.cpp中相应地将rx和tx引脚更改为7和8。 感谢您的帮助!


这不是最好的解决方案,你说的是哪个GSM库?sim900吗?如果是的话,它允许你为任何引脚创建一个GSM模块的软件串口,无需更改源代码。 - Ouss4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接