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应该是自己检测波特率的。
我敢肯定肯定有一个简单的愚蠢错误。我只是不知道此时该怎么办。我显然已经检查过电缆是否断裂。出于绝望,我已经尝试切换 RX
和 TX
。我还尝试了不同的波特率(在 SoftwareSerial
的通常限制范围内的任何值)但是一旦输入了几个 AT 命令,它应该会自动检测到它。
您需要考虑一些问题:
使用下面的示例代码在 PC 和 SIM 之间传输数据。有时 SIM 模块会进入掉电状态,不会响应任何 AT 命令,但会在串口监视器中打印一些结果。
正如评论中已经提到的那样,您的接线似乎是错误的,因为您将软件串行声明为 SoftwareSerial at(2, 3);
,这意味着引脚 2 是 Arduino 上的 Rx,应该连接到 SIM 的 Tx 引脚引脚 3 是 Arduino 上的 Tx,应该连接到 SIM 的 Rx 引脚。请不要弄乱引脚并正确连接引脚如下。
Arduino SIM
Rx 2 ----> Tx
Tx 3 ----> Rx
不知道SIM800是否可以用500mA的USB接口给SIM800供电,确保SIM模块的VCC使用外接1/2A的电源。
看SIM卡闪烁速度,如果连接上电,会延迟3秒闪烁,如果闪烁快,说明正在重启。此外,如果 SIM 正确启动,它会打印一些信息,如 SIM READY
、CALL READY
等
尝试其他波特率,例如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
我正在尝试让我的 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应该是自己检测波特率的。
我敢肯定肯定有一个简单的愚蠢错误。我只是不知道此时该怎么办。我显然已经检查过电缆是否断裂。出于绝望,我已经尝试切换 RX
和 TX
。我还尝试了不同的波特率(在 SoftwareSerial
的通常限制范围内的任何值)但是一旦输入了几个 AT 命令,它应该会自动检测到它。
您需要考虑一些问题:
使用下面的示例代码在 PC 和 SIM 之间传输数据。有时 SIM 模块会进入掉电状态,不会响应任何 AT 命令,但会在串口监视器中打印一些结果。
正如评论中已经提到的那样,您的接线似乎是错误的,因为您将软件串行声明为
SoftwareSerial at(2, 3);
,这意味着引脚 2 是 Arduino 上的 Rx,应该连接到 SIM 的 Tx 引脚引脚 3 是 Arduino 上的 Tx,应该连接到 SIM 的 Rx 引脚。请不要弄乱引脚并正确连接引脚如下。
Arduino SIM Rx 2 ----> Tx Tx 3 ----> Rx
不知道SIM800是否可以用500mA的USB接口给SIM800供电,确保SIM模块的VCC使用外接1/2A的电源。
看SIM卡闪烁速度,如果连接上电,会延迟3秒闪烁,如果闪烁快,说明正在重启。此外,如果 SIM 正确启动,它会打印一些信息,如
SIM READY
、CALL READY
等尝试其他波特率,例如
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