arduino - GSM 没有响应
问题描述
我正在设计一种设备来控制温度并在温度过高或过低时发送短信。我正在使用 arduino、DHT22 传感器和 DFrobot Gravity UART A6(GSM 模块)。传感器工作正常,但我一直遇到 GSM 问题,因为它停止响应。这是我正在使用的代码,它是来自 DFRobot 的标准代码示例:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(11, 10); // TX-Pin11, RX-Pin10
void updateSerial()
{
delay(2000);
while (Serial.available()) {
mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
}
while(mySerial.available()) {
Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
}
}
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
}
void loop()
{
mySerial.println("AT"); //Once the handshake test is successful, it will back to OK
updateSerial();
mySerial.println("AT+CSQ"); //Signal quality test, value range is 0-31, 31 is the best
updateSerial();
mySerial.println("AT+CCID"); //Read SIM information to confirm whether the SIM is plugged
updateSerial();
mySerial.println("AT+CREG?"); //Check whether it has registered in the network
updateSerial();
mySerial.println("AT+SNFS=0"); //Adjust to earphone mode(AT+SNFS=1 is microphone mode)
updateSerial();
mySerial.println("AT+CRSL=2"); //Adjust volume, volume range is 0-15, maximum:15
updateSerial();
while(1)
{
if(mySerial.available())
{
Serial.write(mySerial.read()); //Forward what Software Serial received to Serial Port
if(Serial.available())
{
mySerial.write(Serial.read()); //Forward what Serial received to Software Serial Port
}
}
}
}
结果,我不断收到“???”。而且我不知道该怎么办了。我今天用 oscyloskope 检查了信号,一切正常。请帮忙 :)
解决方案
你的代码很好;考虑到您正在使用调制解调器制造商提供的示例,这不足为奇。
下一个最可能的解释是您的接线有问题。因此,请确保调制解调器上的 TX 连接到板上的引脚 11,而 RX 连接到引脚 10。
你不是第一个遇到这个问题的人。
推荐阅读
- python - 在 Dask 中返回数据框
- datetime - Elixir 将时区数据添加到原始日期时间
- javascript - 如何使 JSON 数组的元素成为 JavaScript 变量?
- sql - 如何将查询答案传递给限制函数 Impala
- python - 如何使用条件 DataFrame 验证 DataFrame?
- angular - Angular Material matDatepicker 和 Textarea 作为表单的一部分
- c# - 如何向 C# Web 应用程序添加 Angular 支持?
- c++ - 在 Eigen C++ 中重复向量的最快方法
- java - 地图的 Junit 测试 java.lang.NullPointerException
> - permissions - 更改 VScode 权限