0

在 Sim800L AT-Commands Guide 中有很多不同的状态命令,应该告诉我们,状态是有的。

例如:

AT+CPAS - check if device is ready
AT+CGREG? - check registration status in network
AT+CGATT? - check if device "attached to network"
AT+CSQ - get signal level

但是,在某些情况下,此命令的答案可能是“错误”,或者根本没有答案。

我需要一种可靠且快速的方法来确定设备是否已连接到网络,或者它已经处于 GPRS 模式,现在我开始使用 Sim800L 上闪烁的 LED 来检测它的状态。

LED 具有三种闪烁频率:

  1. 快速闪烁 - GPRS 连接处于活动状态
  2. 中速闪烁 - 尚未建立网络连接
  3. 缓慢闪烁 - 设备已连接到网络(但不是 GPRS)

我可以使用光电二极管和“读取”LED 的闪光,或者我可以将 LED 的电源引脚连接到 Arduino 的模拟引脚,并读取它的电压。接下来,我可以计算 LED 闪烁的速度,并确定 Sim800L 处于哪个状态。

但是,如何在不使用这种拐杖的情况下获得这种级别的可靠性呢?

4

1 回答 1

0

给定快速意味着 1 秒,您可以发送一个 AT 命令,例如五次,并将 3 个无错误响应作为有效结果。见伪代码

uint8_t  errorCount = 0;
for (uint8_t i=0;i<5;i++){
 .... send AT command ... 
if (response == "error")  errorCount++;
if (errorCount >=3) errorHandling();
}
 ... process successful AT command ...

或者您的硬件方法与 LED 到模拟引脚

于 2020-03-22T20:46:59.167 回答