Arduino Nano没有串行通信SIM800C

时间:2019-07-13 13:49:02

标签: arduino serial-port gsm modem

我正在尝试让我的SIM800C与Arduino对话。但是,没有通信发生。

#include <SoftwareSerial.h>

SoftwareSerial at(2, 3);

void setup() {
  Serial.begin(9600);
  at.begin(9600);
}

void loop() {
  // try every 2 seconds
  delay(2000);

  Serial.println("sending AT ... ");
  at.println("AT");

  while (at.available() > 0) {
    Serial.write(at.read());
  }
}

我无法找回OK。 SIM800C应该自己检测波特率。

wiring of Arduino and SIM800C

我确信肯定有一个简单的愚蠢错误。我现在不知道该怎么办。我显然已经检查了电缆断裂。出于绝望,我已经尝试切换RXTX。我还尝试了不同的波特率(无论在SoftwareSerial的通常限制范围内),但是无论如何,只要有两条AT命令进入,它就可以自动检测到它。

3 个答案:

答案 0 :(得分:1)

您需要考虑一些问题:

  1. 使用以下示例代码在PC和SIM之间传输数据。有时,SIM模块会进入掉电状态,并且不响应任何AT命令,但会在串行监视器中显示一些结果。

  2. 正如评论中已经提到的,似乎您的接线错误,并且您将软件串行声明为SoftwareSerial at(2, 3);,这意味着引脚2在Arduino上为Rx,应连接到SIM的Tx引脚,而引脚3为Arduino上的Tx,应连接到SIM的Rx引脚。请不要弄乱引脚,并按如下所示正确连接引脚。

Arduino       SIM
Rx 2   ---->  Tx
Tx 3   ---->  Rx
  1. 我不确定是否可以使用500mA USB连接器打开SIM800的电源,请确保为SIM模块的VCC使用外部1/2 A电源。

  2. 查看SIM卡模块的闪烁速度(如果已连接并打开电源),它将以3秒的延迟闪烁,并且如果快速闪烁,则表明它正在重新启动。同样,如果SIM卡电源正确打开,它将打印一些信息,例如SIM READYCALL READY等。

  3. 尝试使用其他115200波特率,看看是否有通电。

我添加了一些宏定义,以使引脚映射更加清晰。

#include <SoftwareSerial.h>

//SIM800 TX is connected to Arduino D2
#define SIM800_TX_PIN 2

//SIM800 RX is connected to Arduino D3
#define SIM800_RX_PIN 3



//Create software serial object to communicate with SIM800
SoftwareSerial serialSIM800(SIM800_TX_PIN,SIM800_RX_PIN);

void setup() {
  //Begin serial comunication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  while(!Serial);

  //Being serial communication witj Arduino and SIM800
  serialSIM800.begin(9600);
  delay(1000);

  Serial.println("Setup Complete!");
}

void loop() {
  //Read SIM800 output (if available) and print it in Arduino IDE Serial Monitor
  if(serialSIM800.available()){
    Serial.write(serialSIM800.read());
  }
  //Read Arduino IDE Serial Monitor inputs (if available) and send them to SIM800
  if(Serial.available()){    
    serialSIM800.write(Serial.read());
  }
}

答案 1 :(得分:1)

很奇怪,SIM800C上的引脚PWX需要连接到GND才能工作。现在它开始每秒闪烁一次,并且正在响应AT命令。

而且,事实证明,如SIM800C文档所述,此特定模块未附带启用自动波特率的功能。正确的波特率是115200。

答案 2 :(得分:0)

是的,此模块在此配置中将不起作用。有一个V_TTL引脚和5V引脚。此引脚用于启用GSM的TTL逻辑转换器。如果需要使用arduino,则必须将该引脚连接到5V,如果使用ESP8266,则必须将该引脚连接到3V。See the pin configuration here