测试 GSM 调制解调器
本教程用来学习如何测试 GSM Shield 调制解调器(Modem),本教程不需要使用 SIM 卡。
硬件准备
- Arduino 主控板
- GSM Shield 扩展模块
硬件图示
首先,我们要引入 GSM 库文件: #include 实利化一个 GSMModem 类 GSMModem modem; 声明一个变量,用来保存读取调制解调器中的 IMEI 编码 String IMEI = ""; 在 setup 区块中,程序开启串口并输出 "Starting modem test..."
void setup() {
Serial.begin(9600);
Serial.print("Starting modem test...");
}
调用 modem.begin() 函数,开启调制解调器 (Modem):
if(modem.begin()) {
Serial.println("modem.begin() succeeded");
} else {
Serial.println("ERROR, no modem answer.");
}
在 loop 循环体中,, 通过 modem.getIMEI() 获取调制解调器的 IMEI 值. 每个 GSM 扩展都有一个唯一的 IMEI 值。
void loop() {
//@获取调制解调器 IMEI 号码
Serial.print("Checking IMEI...");
IMEI = modem.getIMEI();
}
通过 getIMEI() 得到数据后,通过串口监视器输出,并通过 modem.begin() 复位调制解调器。
if(IMEI != NULL) {
//@Print IMEI in serial monitor
Serial.println("Modem's IMEI: " + IMEI);
// reset modem to check booting:
Serial.print("Reseting modem...");
modem.begin();
}
Arduino 复位之后,通过串口监视器检查 IMEI 信息
if(modem.getIMEI() != NULL) {
Serial.println("Modem is functoning properly");
} else {
Serial.println("Error: getIMEI() failed after modem.begin()");
}
如果 getIMEI() 不成功,则报告错误。 如果程序启动后,一直没有返回 IMEI 信息,程序报错。
当程序成功下载到Arduino 之后,打开串口监视器,就可以看到 Modem 的测试信息了 。
/*
This example test if your modem is working correctly.
Circuit:
* GSM shield attached (using digital pins 2, 3, and 7)
Created 12 Jun 2012
by David del Peral
modified 21 Nov 2012
by Tom Igoe
*/
//@libraries
#include
//@modem verification object
GSMModem modem;
// IMEI variable
String IMEI = "";
void setup()
{
// initialize serial communications
Serial.begin(9600);
//@Start modem test (reset and check response)
Serial.print("Starting modem test...");
if(modem.begin())
Serial.println("modem.begin() succeeded");
else
Serial.println("ERROR, no modem answer.");
}
void loop()
{
//@get modem IMEI
Serial.print("Checking IMEI...");
IMEI = modem.getIMEI();
// check IMEI response
if(IMEI != NULL)
{
// show IMEI in serial monitor
Serial.println("Modem's IMEI: " + IMEI);
// reset modem to check booting:
Serial.print("Reseting modem...");
modem.begin();
// get and check IMEI one more time
if(modem.getIMEI() != NULL)
{
Serial.println("Modem is functoning properly");
}
else
{
Serial.println("Error: getIMEI() failed after modem.begin()");
}
}
else
{
Serial.println("Error: Could not get IMEI");
}
// do nothing:
while(true);
}