我想介绍Keyestudio提供的Arduino的GSM / GPRS Shield库。 因为价格我买了这个设备。 在中国,它的价格几乎是安培(Amperka)的2倍,是iAruino的3倍。 编写此文本的原因是,在Keyestudio上缺少可以使用它的可接受的库。
不考虑通过一组AT命令进行工作。 其他类似设备的库不直接适合。 无论如何,我无法让他们工作。
我认为,我必须为该板改编最详尽的Amperkovskaya库,从而尝试保持为Amperkovsky屏蔽编写的代码的兼容性。
实际链接到库:
github.com/andrewinc/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电源就足够了。
缺点:
- 该库使用暂停delay(),这会中断所有控制器代码的执行。
- 假设SIM卡上未安装PIN码
- SMS消息的文本不支持西里尔字母。
我希望该库对您有所帮助,以及有关使用此防护罩的一些注意事项。