Arduino Nano 无串口通讯 SIM800C

Arduino Nano no serial communication SIM800C

我正在尝试让我的 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应该是自己检测波特率的。

我敢肯定肯定有一个简单的愚蠢错误。我只是不知道此时该怎么办。我显然已经检查过电缆是否断裂。出于绝望,我已经尝试切换 RXTX。我还尝试了不同的波特率(在 SoftwareSerial 的通常限制范围内的任何值)但是一旦输入了几个 AT 命令,它应该会自动检测到它。

您需要考虑一些问题:

  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. 不知道SIM800是否可以用500mA的USB接口给SIM800供电,确保SIM模块的VCC使用外接1/2A的电源。

  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());
  }
}

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

此外,正如 SIM800C 文档所述,该特定模块并未启用自动波特率。正确的波特率是115200.

是的,此模块将无法在此配置中工作。 V_TTL 有一个带 5V 引脚的引脚。此引脚启用 GSM 的 TTL 逻辑转换器。如果是 arduino,则必须将此引脚连接到 5V,如果是 ESP8266,则必须连接到 3V。See the pin configuration here