通过Amperka库使Keyestudio GSM / GPRS Shield正常工作

我想介绍Keyestudio提供的Arduino的GSM / GPRS Shield库。 因为价格我买了这个设备。 在中国,它的价格几乎是安培(Amperka)的2倍,是iAruino的3倍。 编写此文本的原因是,在Keyestudio上缺少可以使用它的可接受的库。 不考虑通过一组AT命令进行工作。 其他类似设备的库不直接适合。 无论如何,我无法让他们工作。

我认为,我必须为该板改编最详尽的Amperkovskaya库,从而尝试保持为Amperkovsky屏蔽编写的代码的兼容性。

实际链接到库: github.com/andrewinc/keyestudio-gsm-gprs-shield
外观Keyestudio GSM / GPRS Shield
Amperka在其屏蔽层中使用Sim900R芯片,以下是Sim900。 ST信号最重要的区别是:它在源库和屏蔽中,但不在Keyestudio中。 同时,它将明确启用或禁用该芯片。 但是有一个SIM900_Power按钮,这使我对缺少打开芯片的软件功能的想法产生了不好的想法。 幸运的是,他们错了。

针脚9-控制芯片的插入,Amperka板上指示电源按钮的相同替代品PK。

芯片版本的细微差异不会影响其功能,无论如何,我都设法使用库中提供的示例发起了呼叫,发送和接收SMS。 我认为这是使用此防护罩的主要方向。

物理设置


该开发板通过UART接口与Arduino通信。 对于那些不了解UART的用户,这些引脚是TX和RX。 通过TX-数据来自Arduino,然后通过RX-返回。

还有一个开关“ UART_Port-DBG_Port”,但是我没有使用此端口。 开关保留在“ UART_Port”中。

董事会的特殊之处在于它无法立即使用。 如果打开包装后注意跳线的状态(请参见上图),则可以看到TXD c 0和RXD与1的连接。在Arduino上,TX和RX使用相同的引脚。 这正是问题所在,因为 他们忙于下载草图,还用于通过Serial对象(包括)交换信息。 并进行调试。 将Arduino连接到屏蔽板时,会发生冲突并且固件失败。

软件序列号


众所周知,Arduino UNO只有一个串行接口,但是它们的整个家族都是Arduino Mega。 与Serial2和Serial3类似,Serial1与一对TX1和RX1相关联。
要使用Arduino UNO,使用软件Serial是合理的。 连接适当的库并创建对象本身就足够了,它指示TXD和RXD信号来自shield'a的Arduino引脚:

#include <SoftwareSerial.h> SoftwareSerial mySerial(6, 7); 

在此示例中,TXD连接到引脚6,而RXD连接到引脚7。

软件启用芯片


与TX和RX不同,芯片上的开/关引脚-9无法连接到其他Arduino引脚,在任何情况下,屏蔽层上都没有用于此的开关。

要打开芯片,您需要发送9个引脚的高电平信号,等待1-3秒,然后对其施加低电平信号。 然后,通常在代码中,您可以在5到15秒内看到等待时间。 所有这些都类似于操纵手机上的电源按钮,然后下载该按钮并建立与网络的连接。

在Amperka的源库中,通过ST信号得到了反馈。 通过它,在开启过程中,检查了状态:芯片是否开启? las,在没有此信号的情况下,芯片的打开和关闭方法与双胞胎兄弟相似,这是因为还发送了9针长的选通脉冲来关闭。 由于代码兼容性和常见的惰性,这些方法没有合并为一个。

如何运作


库本身与以下行连接:

 #include <GPRSk_Shield_Arduino.h> 

然后,您可以基于GPRSk类创建一个对象,并将相同的mySerial传递给构造函数,或指定硬件Serial1,Serial2等。 一个例子:

 GPRSk gprs(mySerial); 

Serial和mySerial通常在设置函数中初始化,但是,如果您不打算将调试信息发送到Arduino IDE监视器,则只能使用mySerial初始化。

之后,使用gprs.powerOn()方法关闭芯片,然后调用gprs.init(),如果芯片准备好接收/发送信息,则它将返回true。

所有这些任务完成后,您可以发送SMS:

 gprs.sendSMS("+79007654321", "Hello SMS from Keyestudio!"); 

阅读新文章:

 char message[160]; char phone[16]; char datetime[24]; if (gprs.ifSMSNow()) { gprs.readSMS(message, phone, datetime); } 

拨打电话:

 gprs.callUp("+79007654321"); 



在该库的框架内,附加了“ Amperkov”示例,其中仅将Serial1更改为软件。 它们在Keyestudio GSM / GPRS Shield上进行了测试,并展示了它们的性能。

营养学


观察结果表明,来自Arduino UNO和GPRS防护罩的“三明治”缺少USB供电。 这可以通过使用gprs.init()方法系统地发出false来表示
除USB电源外,标准Arduino电源连接器的200mA(9V)电源也不足。 而是有时通过gprs.init(),有时没有通过。 我相信5V 1-1.5A电源就足够了。

缺点:


  1. 该库使用暂停delay(),这会中断所有控制器代码的执行。
  2. 假设SIM卡上未安装PIN码
  3. SMS消息的文本不支持西里尔字母。

我希望该库对您有所帮助,以及有关使用此防护罩的一些注意事项。

Source: https://habr.com/ru/post/zh-CN403843/


All Articles