Arduino库教程-GSM-GSM Scan Networks
GSM Scan Networks
- 这个例子打印调制解调器的IMEI号码,然后检查是否连接到载体并打印出它的信号强度。它也可以扫描所有附近的网络。
硬件要求
- Arduino or Genuino Board
- Arduino + Telefonica GSM/GPRS Shield
- SIM card enable for Data
电路
这是在一块Arduino或者Genuino开发板上的Arduino GSM Shield图
样例代码
- 首先,加上GSM库
#include <GSM.h>
- SIM卡可能有一个引脚数,来使能它们的功能。为您的SIM卡定义引脚。如果你的卡没有引脚,你可以让它空白:
#define PINNUMBER ""
- 初始化将要使用的类的实例。你同时需要GSM和GSMVoiceCall类。
GSM gsmAccess;
GSM_SMS sms;
- 创建一个变量来保存该IMEI号码,和一个状态信息来发送到串口监视器:
String IMEI = "";
String errortext = "ERROR";
- 在setup里,打开一个到计算机的串口连接。打开连接后,向串口监视器发送一个消息示意该程序已启动。调用@scannerNetworks.begin()@@来复位调制解调器。
void setup(){
Serial.begin(9600);
Serial.println("GSM networks scanner");
scannerNetworks.begin();
- 创建一个本地变量来跟踪连接状态。直到SIM连接到网络之前,你可以用这个来防止程序开始,:
boolean notConnected = true;
通过调用gsmAccess.begin()连接到网络。它以SIM卡的引脚当作一个参数。你也可以用gprs.attachGPRS()连接到GPRS网络。这个要求你前面声明的APN,登录和密码。通过放在while()循环里,你可以不断地检查连接的状态,等到他们都成为真。
当调制解调器连接到GPRS网络,gsmAccess() 将返回GSM_READY。以此为连接与否的标志。一旦连接好,setup()的其余部分将会运行。
while(notConnected)
{
if(gsmAccess.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{
Serial.println("Not connected");
delay(1000);
}
}
- 用modemTest.getIMEI()函数得到调制解调器的IMEI,并打印到串口监视器。
Serial.print("Modem IMEI: ");
IMEI = modemTest.getIMEI();
IMEI.replace("\n","");
if(IMEI != NULL)
Serial.println(IMEI);
- 在loop(),扫描和打印出所有可用的网络。这可能需要一些时间
Serial.println("Scanning available networks. May take some seconds.");
Serial.println(scannerNetworks.readNetworks());
- 打印当前连接的载体,以及信号的强度。信号强度是按0~31划分,其中0为最低,31为最高。关闭loop()。
Serial.print("Current carrier: ");
Serial.println(scannerNetworks.getCurrentCarrier());
Serial.print("Signal Strength: ");
Serial.print(scannerNetworks.getSignalStrength());
Serial.println(" [0-31]");
一旦你的代码被上传,打开串口监视器来查看连接的状态。
完整程序如下:
/*
GSM Scan Networks
This example prints out the IMEI number of the modem,
then checks to see if it's connected to a carrier. If so,
it prints the phone number associated with the card.
Then it scans for nearby networks and prints out their signal strengths.
Circuit:
* GSM shield
* SIM card
Created 8 Mar 2012
by Tom Igoe, implemented by Javier Carazo
Modified 4 Feb 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/GSMToolsGsmScanNetworks
This example code is part of the public domain
*/
// libraries
#include <GSM.h>
// PIN Number
#define PINNUMBER ""
// initialize the library instance
GSM gsmAccess; // include a 'true' parameter to enable debugging
GSMScanner scannerNetworks;
GSMModem modemTest;
// Save data variables
String IMEI = "";
// serial monitor result messages
String errortext = "ERROR";
void setup() {
// initialize serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("GSM networks scanner");
scannerNetworks.begin();
// connection state
boolean notConnected = true;
// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
while (notConnected) {
if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
notConnected = false;
} else {
Serial.println("Not connected");
delay(1000);
}
}
// get modem parameters
// IMEI, modem unique identifier
Serial.print("Modem IMEI: ");
IMEI = modemTest.getIMEI();
IMEI.replace("\n", "");
if (IMEI != NULL) {
Serial.println(IMEI);
}
}
void loop() {
// scan for existing networks, displays a list of networks
Serial.println("Scanning available networks. May take some seconds.");
Serial.println(scannerNetworks.readNetworks());
// currently connected carrier
Serial.print("Current carrier: ");
Serial.println(scannerNetworks.getCurrentCarrier());
// returns strength and ber
// signal strength in 0-31 scale. 31 means power > 51dBm
// BER is the Bit Error Rate. 0-7 scale. 99=not detectable
Serial.print("Signal Strength: ");
Serial.print(scannerNetworks.getSignalStrength());
Serial.println(" [0-31]");
}
[Get Code]
更多
Arduino GSM Shield – 完整的产品描述。
Getting started with the GSM Shield – 在几分钟内启动所有东西
GSM library – GSM 库的参考网页
GSMScanner
begin()
getCurrentCarrier()
getSignalStrength()
readNetworks()
Arduino GSM Shield – 完整的产品描述。
Getting started with the GSM Shield – 在几分钟内启动所有东西
GSM library – GSM 库的参考网页
GSMToolsTestGPRS - 试图用提供的APN和证书来通过GPRS访问互联网 。
GSMToolsGsmScanNetworks - 扫描可用网络和打印关于IMEI和SIM卡号码的信息。
GSMToolsPinManagement - 如何更改或删除引脚数。
GSMToolsTestModem - 测试看看GSM shield的调制解调器是否正确工作。
GSMToolsTestWebServer - 一个简单的Web服务器,没有任何答复,只打印客户端的请求和服务器IP地址。
GSMExamplesMakeVoiceCall - 如何用麦克风和扬声器进行语音通话。
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号