# 15. 扩展板 ## 15.1 4G扩展板 - Air720/Air724 ### 15.1.1 API介绍 #### begin() - 确定模块与主板间通信的uart **语法** ```c++ void begin(HardwareSerial &s_); ``` **参数** | 传入值 | 说明 | 值范围 | | :----: | :--: | :-----------: | | s_ | 串口 | 指定为Serial1 | #### checkSignalQuality() - 查询信号质量 **语法** ```c++ int checkSignalQuality(void); ``` **返回值** | 返回值 | 说明 | 值范围 | | :------: | :----------------------------------------------------------: | ------ | | 信号质量 | 0:小于等于-115dBm; 1: -111dBm; 2~30: -109~-53dBm: 31: 大于等于-51dBm; 99: 未知或不可测 | int | #### attachService() - 使模块附着服务 **语法** ```c++ bool attachService(void); ``` **返回值** | 返回值 | 说明 | 值范围 | | :----------: | :------------------------------------------: | ---------- | | 模块服务状态 | true 附着成功,有服务,false附着失败,无服务 | true/false | #### setBaudRate() - 设置主板与4G模块串口通信的波特率 **语法** ```c++ bool setBaudRate(long rate); ``` **参数** | 传入值 | 说明 | 值范围 | | :----: | :--------: | :----------------------------------------------------------: | | rate | 串口波特率 | 1200、2400、4800、9600、19200、38400、57600、115200、230400、460800、921600、 | **返回值** | 返回值 | 说明 | 值范围 | | :------: | :--------------------------: | ---------- | | 设置状态 | true 设置成功,false设置失败 | true/false | #### checkSIMStatus() - 查询SIMS状态 **语法** ```c++ bool checkSIMStatus(void); ``` **返回值** | 返回值 | 说明 | 值范围 | | :------: | :--------------------------------------------: | ---------- | | SIMS状态 | true 表示PIN码锁并未开启,false表示PIN码锁开启 | true/false | #### openNetwork() - 建立网络连接 **语法** ```c++ bool openNetwork(Protocol ptl, const char *host, int port); ``` **参数** | 传入值 | 说明 | 值范围 | | :----: | :----------: | :----------------: | | ptl | 网络连接模式 | TCP\UDP | | host | 远端服务器 | IP 地址 或域名皆可 | | port | 远端服务端口 | int | **返回值** | 返回值 | 说明 | 值范围 | | :----------: | :----------------------------------: | ---------- | | 网络连接状态 | true 表示连接成功,false表示连接失败 | true/false | #### send() - 发送网络数据 **语法** ```c++ bool send(void *buffer,size_t len); ``` **参数** | 传入值 | 说明 | 值范围 | | :----: | :------: | :----: | | buffer | 数据 | | | len | 数据长度 | | **返回值** | 返回值 | 说明 | 值范围 | | :------: | :----------------------------------: | ---------- | | 发送结果 | true 表示发送成功,false表示发送失败 | true/false | #### recv() - 发送网络数据 **语法** ```c++ int recv(char* buf, int maxlen, int timeout); ``` **参数** | 传入值 | 说明 | 值范围 | | :-----: | :--------------: | :----: | | buf | 接收数据的buffer | | | maxlen | 最大数据长度 | | | timeout | 超时时间 | | **返回值** | 返回值 | 说明 | 值范围 | | :------------: | :--: | ------ | | 接收的数据长度 | | int | #### closeNetwork() - 断开网络连接 **语法** ```c++ bool closeNetwork(void); ``` **返回值** | 返回值 | 说明 | 值范围 | | :------: | :----------------------------------: | ------ | | 网络状态 | true 表示断开成功,false表示断开失败 | bool | #### httpInit() - http初始化 **语法** ```c++ bool httpInit(); ``` **返回值** | 返回值 | 说明 | 值范围 | | :------------: | :--------------------------------------: | ------ | | http初始化状态 | true 表示初始化成功,false表示初始化失败 | bool | #### httpConnect() - 建立http连接 **语法** ```c++ bool httpConnect(const char *Host); ``` **参数** | 传入值 | 说明 | 值范围 | | :----: | :---------------: | :----: | | Host | HTTP 或 HTTPS URL | | **返回值** | 返回值 | 说明 | 值范围 | | :----------: | :----------------------------------: | ------ | | http连接状态 | true 表示连接成功,false表示连接失败 | bool | #### httpPost() - 上传http信息 **语法** ```c++ bool httpPost(const char *Host , String data); ``` **参数** | 传入值 | 说明 | 值范围 | | :----: | :---------------: | :----: | | Host | HTTP 或 HTTPS URL | | | data | 数据 | | **返回值** | 返回值 | 说明 | 值范围 | | :----------: | :-----------------------------: | ------ | | 上传数据结果 | 表示post成功,false表示post失败 | bool | #### httpGet() - 获取http信息 **语法** ```c++ char * httpGet(const char *Host); ``` **参数** | 传入值 | 说明 | 值范围 | | :----: | :---------------: | :----: | | Host | HTTP 或 HTTPS URL | | **返回值** | 返回值 | 说明 | 值范围 | | :--------: | :--------------: | ------ | | 获得的数据 | http information | | #### httpDisconnect() - 断开http连接 **语法** ```c++ void httpDisconnect(void); ``` #### mqttDisonnect() - 断开mqtt连接 **语法** ```c++ bool mqttDisonnect(); ``` **返回值** | 返回值 | 说明 | 值范围 | | :----------: | :----------------------------------: | ------ | | mqtt连接状态 | true 表示断开成功,false表示断开失败 | bool | #### mqttIPStart() - 建立mqtt的IP连接 **语法** ```c++ bool mqttIPStart(const char *host, int port); ``` **参数** | 传入值 | 说明 | 值范围 | | :----: | :----------------: | :----: | | Host | 服务器的ip或者域名 | | | port | 端口号 | | **返回值** | 返回值 | 说明 | 值范围 | | :--------------: | :-----------------------------: | ------ | | mqtt IP 连接状态 | 表示连接成功,false表示连接失败 | bool | #### mqttIPClose() - 断开mqtt的IP连接 **语法** ```c++ bool mqttIPStart(const char *host, int port); ``` **返回值** | 返回值 | 说明 | 值范围 | | :--------------: | :----------------------------------: | ------ | | mqtt IP 连接状态 | true 表示断开成功,false表示断开失败 | bool | #### mqttConnect() - 建立mqtt连接 **语法** ```c++ bool mqttConnect(uint16_t keepalive); ``` **参数** | 传入值 | 说明 | 值范围 | | :-------: | :----------------------------------------------------------: | :----: | | keepalive | 保活时间
时间单位:秒 设备端在保活时间内至少需要发送一次报文,包括PING请求。如果服务器端在保活时间内未接收到任何报文,会断开连接,设备端需要发起重连。建议取值在 300s 以上。 | <65535 | **返回值** | 返回值 | 说明 | 值范围 | | :------------: | :----------------------------------: | ------ | | mqtt 连接状态 | true 表示连接成功,false表示连接失败 | bool | #### mqttUNSUB() - 取消订阅主题 **语法** ```c++ bool mqttUNSUB(char* iot_topic); ``` **参数** | 传入值 | 说明 | 值范围 | | :-------: | :--------: | :----: | | iot_topic | 订阅的主题 | char* | **返回值** | 返回值 | 说明 | 值范围 | | :----------------: | :----------------------------------: | ------ | | 取消订阅主题的结果 | true 表示取消成功,false表示取消失败 | bool | #### mqttSUB() - 订阅主题 **语法** ```c++ bool mqttSUB(char* iot_topic,int qos); ``` **参数** | 传入值 | 说明 | 值范围 | | :-------: | :----------------------------------------------------------: | :----: | | iot_topic | 订阅的主题 | char* | | qos | 应用程序消息的服务质量
0:at most once delivery for application message
1:at least once delivery for application message
2:exactly once delivery for application message
| 0-2 | **返回值** | 返回值 | 说明 | 值范围 | | :------------: | :----------------------------------: | ------ | | 订阅主题的结果 | true 表示订阅成功,false表示订阅失败 | bool | #### mqttPUB() - 发布消息 **语法** ```c++ bool mqttPUB(char* iot_topic,int qos,int retain,String str); ``` **参数** | 传入值 | 说明 | 值范围 | | :-------: | :----------------------------------------------------------: | :----: | | iot_topic | 订阅的主题 | char* | | qos | 应用程序消息的服务质量
0:at most once delivery for application message
1:at least once delivery for application message
2:exactly once delivery for application message
| 0-2 | | retain | retain flag
0: the server will restore the application meassge and its QoS
1: the server must not restore the application meassge and must not remove or replace any existing retained message
| 0-1 | | str | 发布的消息 | | **返回值** | 返回值 | 说明 | 值范围 | | :------------: | :----------------------------------: | ------ | | 发布消息的结果 | true 表示发布成功,false表示发布失败 | bool | #### mqttConfig() - mqtt通信配置 **语法** ```c++ bool mqttConfig(char* iot_client, char* iot_username, char* iot_key); ``` **参数** | 传入值 | 说明 | 值范围 | | :----------: | :------------------------------------------: | :----: | | iot_client | client identity (最大 256 个字节) | char* | | iot_username | username to login server (最大 256 个字节) | char* | | iot_key | password to login server (最大 256 个字节) | char* | **返回值** | 返回值 | 说明 | 值范围 | | :------------: | :----------------------------------: | ------ | | 发布消息的结果 | true 表示配置成功,false表示配置失败 | bool | #### mqttRecv() - mqtt接收订阅主题的消息 **语法** ```c++ bool mqttRecv(char* iot_topic, char* buf,int maxlen); ``` **参数** | 传入值 | 说明 | 值范围 | | :-------: | :--------------: | :----: | | iot_topic | 主题 | char* | | buf | 接收数据的buffer | char* | | maxlen | 接收最大长度 | int | **返回值** | 返回值 | 说明 | 值范围 | | :------------: | :----------------------------------: | ------ | | 接收消息的结果 | true 表示接收成功,false表示接收失败 | bool | #### reset() - 模块重启 **语法** ```c++ bool reset(); ``` **返回值** | 返回值 | 说明 | 值范围 | | :----------------: | :--------------------------------------------------: | ------ | | 重启命令发送的结果 | true 表示重启命令发送成功,false表示重启命令发送失败 | bool | #### factoryDataReset() - 模块回复出厂设置并重启 **语法** ```c++ bool factoryDataReset(); ``` **返回值** | 返回值 | 说明 | 值范围 | | :------------: | :------------------------------------------: | ------ | | 命令发送的结果 | true 表示命令发送成功,false表示命令发送失败 | bool | #### getSIMtype() - 获取 SIM 卡类型 **语法** ```c++ int getSIMtype(); ``` **返回值** | 返回值 | 说明 | 值范围 | | :-------: | :-----------------: | ------ | | SIM卡类型 | 0:SIM; 1: USIM。 | 0-1 | #### setNTP() - 同步网络时间 **语法** ```c++ int setNTP(); ``` **返回值** | 返回值 | 说明 | 值范围 | | :------: | :----------------------------------------------------------: | ------ | | 同步结果 | 1: 网络时间同步成功; 61: 网络错误; 62: DNS 解析错误; 63: 连接错误; 64: 服务响应错误; 65: 服务响应超时; | 0-1 | #### getCLK() - 获取时钟 **语法** ```c++ char * getCLK(); ``` **返回值** | 返回值 | 说明 | 值范围 | | :----------: | :--: | ------ | | 模块系统时间 | | char * | #### getLocalIP() - 获取本地ip地址 **语法** ```c++ char * getLocalIP(); ``` **返回值** | 返回值 | 说明 | 值范围 | | :----: | :--: | ------ | | IP地址 | | char * | #### queryModuleModel() - 查询模块型号 **语法** ```c++ char * queryModuleModel(); ``` **返回值** | 返回值 | 说明 | 值范围 | | :------: | :--: | ------ | | 模块型号 | | char * | #### queryModuleVersion() - 查询模块版本信息 **语法** ```c++ char * queryModuleVersion(); ``` **返回值** | 返回值 | 说明 | 值范围 | | :----------: | :--: | ------ | | 模块版本信息 | | char * | #### queryIMEI() - 查询 IMEI 号 **语法** ```c++ char * queryIMEI(); ``` **返回值** | 返回值 | 说明 | 值范围 | | :-----: | :--: | ------ | | IMEI 号 | | char * | #### querySIMCardICCID() - 查询 SIM 卡 ICCID 号码 **语法** ```c++ char * querySIMCardICCID(); ``` **返回值** | 返回值 | 说明 | 值范围 | | :--------: | ---- | ------ | | ICCID 号码 | | char * | #### queryFirmWare() - 查询模块 FIRMWARE 版本 **语法** ```c++ char * queryFirmWare(); ``` **返回值** | 返回值 | 说明 | 值范围 | | :-----------: | ---- | ------ | | FIRMWARE 版本 | | char * | #### readLBSInformationAndTime() - 读取基站定位(LBS)信息和时间 **语法** ```c++ char * readLBSInformationAndTime(); ``` **返回值** | 返回值 | 说明 | 值范围 | | :-----------------------: | ---- | ------ | | 基站定位(LBS)信息和时间 | | char * | ### 15.1.2 示例程序 #### 例程1:AT指令透传 ```c++ /*! * @file ATTest.ino * @brief This example use the serial port to send AT command to control the AIR720UH * With initialization completed, we can enter AT command to AIR720UH directly * Common AT commands : * AT+CPIN? : Check SIM card * AT+CSQ : Check signal quality * AT+CGATT?: Check net attached state * AT+CSTT : Start net connect task * AT+CIFSR : Get local IP * Get the AT command table in Resource folder :Luat 4G模块AT命令手册V4.3.3.pdf * Note : The AT command must end with CRLF * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com) * @licence The MIT License (MIT) * @author [yangfeng] * @version V1.0 * @date 2021-08-18 */ void setup() { Serial.begin(115200); while(!Serial); Serial1.begin(115200);//The 4G module is connected to the Serial1 of the development board Serial.println("For example, if you type AT\\r\\n, OK\\r\\n will be responsed!"); Serial.println("Enter your AT command :"); } void loop() { while(Serial1.available()){ Serial.write(Serial1.read()); } while(Serial.available()){ Serial1.write(Serial.read()); } } ``` #### 例程2: 查询模块基础信息 ```c++ /*! * @file basic.ino * @brief : This example is used to get basic information about the module and SIM card * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com) * @licence The MIT License (MIT) * @author [yangfeng] * @version V1.0 * @date 2021-08-18 */ #include DFRobot_AIR720UH AIR720UH; void setup(){ int signalStrength,dataNum; Serial.begin(115200); Serial1.begin(115200); while(!Serial); AIR720UH.begin(Serial1); char *buff=NULL; Serial.print("Module Model:"); buff=AIR720UH.queryModuleModel(); if(buff!=NULL){ Serial.println(buff); }else{ Serial.println("query module model error!"); while(1); } Serial.print("Module Version:"); buff=AIR720UH.queryModuleVersion(); if(buff!=NULL){ Serial.println(buff); }else{ Serial.println("query module version error!"); while(1); } Serial.print("IMEI:"); buff=AIR720UH.queryIMEI(); if(buff!=NULL){ Serial.println(buff); }else{ Serial.println("query IMEI error!"); while(1); } Serial.print("Firmware:"); buff=AIR720UH.queryFirmWare(); if(buff!=NULL){ Serial.println(buff); }else{ Serial.println("query module firmware error!"); while(1); } Serial.println("Check SIM card......"); if(AIR720UH.checkSIMStatus()){ //Check SIM card Serial.println("SIM card READY"); }else{ Serial.println("SIM card ERROR, Check if you have insert SIM card and restart AIR720UH"); while(1); } Serial.print("SIM type:"); int data=AIR720UH.getSIMtype(); if(data==1){ Serial.println("USIM"); }else if(data ==0){ Serial.println("SIM"); }else{ Serial.println("get error"); while(1); } Serial.print("ICCID:"); buff=AIR720UH.querySIMCardICCID(); if(buff!=NULL){ Serial.println(buff); }else{ Serial.println("query SIM card ICCID error!"); while(1); } Serial.println("Get signal quality......"); delay(500); signalStrength=AIR720UH.checkSignalQuality(); //Check signal quality Serial.print("signalStrength ="); Serial.println(signalStrength); delay(500); } void loop(){ } ``` #### 例程3: http通信 ```c++ /*! * @file httpTest.ino * @brief : This example verify HTTP connection over a HTTP request * With initialization completed, we connect to server POST data and GET data * Thus we finished the HTTP POST and GET verification * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com) * @licence The MIT License (MIT) * @author [yangfeng] * @version V1.0 * @date 2021-08-18 */ #include #define POSTURL "https://fanyi.youdao.com/" #define GETURL "https://fanyi.youdao.com/" DFRobot_AIR720UH AIR720UH; void setup(){ int signalStrength,dataNum; Serial.begin(115200); while(!Serial); Serial1.begin(115200); AIR720UH.begin(Serial1); Serial.println("Check SIM card......"); if(AIR720UH.checkSIMStatus()){ //Check SIM card Serial.println("SIM card READY"); }else{ Serial.println("SIM card ERROR, Check if you have insert SIM card and restart AIR720UH"); while(1); } Serial.println("Get signal quality......"); signalStrength=AIR720UH.checkSignalQuality(); //Check signal quality Serial.print("signalStrength ="); Serial.println(signalStrength); delay(500); Serial.println("Init http......"); while(1){ if(AIR720UH.httpInit()){ //Init http service Serial.println("HTTP init !"); break; }else{ Serial.println("Fail to init http"); } } Serial.print("POST to "); Serial.println(POSTURL); String httpbuff = "English"; while(1){ if((httpbuff=AIR720UH.httpPost(POSTURL,httpbuff))!=NULL){ //HTTP POST Serial.println("Post successed"); break; }else{ Serial.println("Fail to post"); } } Serial.print("GET from "); Serial.println(GETURL); Serial.println(AIR720UH.httpGet(GETURL)); //HTTP GET Serial.println("Disconnect"); AIR720UH.httpDisconnect(); //Disconnect Serial.println("Close net work"); AIR720UH.closeNetwork(); //Close net work } void loop() { } ``` #### 例程4:TCP通信 ```c++ /*! * @file tcpTest.ino * @brief : This example validates the TCP connection. The module will connect to the TCP server (IP:120.76.100.197 PORT:10002) for data interaction * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com) * @licence The MIT License (MIT) * @author [yangfeng] * @version V1.0 * @date 2021-08-18 */ #include #include #define serverIP "120.76.100.197" #define serverPort 10002 DFRobot_AIR720UH AIR720UH; char sendData[100]; char buff[100]; void setup(){ int signalStrength,dataNum; Serial.begin(115200); Serial1.begin(115200); while(!Serial); AIR720UH.begin(Serial1); Serial.println("Check SIM card......"); if(AIR720UH.checkSIMStatus()){ //Check SIM card Serial.println("SIM card READY"); }else{ Serial.println("SIM card ERROR, Check if you have insert SIM card and restart AIR720UH"); while(1); } Serial.println("Get signal quality......"); delay(500); signalStrength=AIR720UH.checkSignalQuality(); //Check signal quality Serial.print("signalStrength ="); Serial.println(signalStrength); delay(500); Serial.println("Attaching service......"); while(1){ if(AIR720UH.attachService()){ //Open the connection Serial.println("Attach service"); Serial.print("Local IP:"); Serial.println(AIR720UH.getLocalIP()); break; }else{ Serial.println("Fail to Attach service"); delay(1000); } } } void loop(){ delay(2000); Serial.println("Connecting......"); if(AIR720UH.openNetwork(TCP,serverIP,serverPort)){ //Start up TCP connection Serial.println("Connect OK"); }else{ Serial.println("Fail to connect"); return; } while(1){ Serial.println("Input data :"); readSerial(sendData); Serial.println("Send data :"); Serial.println(sendData); if(AIR720UH.send(sendData,strlen(sendData))){ //Send data to server Serial.println("Send data, recive :"); AIR720UH.recv(buff,100,5); Serial.println(buff); memset(buff,0,100); }else{ Serial.println("Failed to send"); break; } delay(500); } Serial.println("Close connection......"); if(AIR720UH.closeNetwork()){ //End the connection Serial.println("Closed !"); }else{ Serial.println("Fail to close connection"); } } int readSerial(char result[]){ int i = 0; while(1){ while(Serial.available() > 0){ char inChar = Serial.read(); if(inChar == '\n'){ result[i] = '\0'; Serial.flush(); return 0; } if(inChar != '\r'){ result[i] = inChar; i++; } } } } ``` #### 例程5:mqtt通信 ```c++ /*! * @file mqttTest.ino * @brief : This example verify MQTT send verification * With initialization completed, we connect to iot.dfrobot.com.cn * Then send data to a topic * Thus we finished the MQTT send verification * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com) * @licence The MIT License (MIT) * @author [yangfeng] * @version V1.0 * @date 2021-08-18 */ #include //Login website (http://iot.dfrobot.com.cn) to register an account ,fill the following information based on your account #define serverIP "iot.dfrobot.com.cn" #define IOT_CLIENT "CLIENT_NAME" #define IOT_USERNAME "YOUR_USERNAME" #define IOT_KEY "YOUR_KEY" #define IOT_TOPIC "YOUR_TOPIC" DFRobot_AIR720UH AIR720UH; String readSerial(){ int i = 0; String result; while(1){ while(Serial.available() > 0){ char inChar = Serial.read(); if(inChar == '\n'){ result += inChar; while(Serial.read() >= 0); return result; } if(i == 50){ Serial.println("The data is too long"); result += '\0'; while(Serial.read() >= 0); return result; } result += inChar; i++; } } } void setup(){ int signalStrength; Serial.begin(115200); while(!Serial); Serial1.begin(115200); AIR720UH.begin(Serial1); Serial.println("Check SIM card......"); if(AIR720UH.checkSIMStatus()){ //Check SIM card Serial.println("SIM card READY"); }else{ Serial.println("SIM card ERROR, Check if you have insert SIM card and restart AIR720UH"); while(1); } Serial.println("Get signal quality......"); delay(500); signalStrength=AIR720UH.checkSignalQuality(); //Check signal quality Serial.print("signalStrength ="); Serial.println(signalStrength); delay(500); Serial.println("Attaching service......"); while(1){ if(AIR720UH.attachService()){ //Open the connection Serial.println("Attach service"); Serial.print("Local IP:"); Serial.println(AIR720UH.getLocalIP()); break; }else{ Serial.println("Fail to Attach service"); delay(1000); } } } void loop(){ if(AIR720UH.mqttConfig(IOT_CLIENT,IOT_USERNAME,IOT_KEY)){ Serial.println("mqttConfig !"); }else{ Serial.println("Failed to mqttConfig"); return; } delay(200); if(AIR720UH.mqttIPStart(serverIP,1883)){ //Config server Serial.println("mqttIPStart !"); }else{ Serial.println("Failed to mqttIPStart"); AIR720UH.mqttIPClose(); return; } Serial.print("Connect to :"); Serial.println(serverIP); Serial.print("Connect to : "); Serial.println(IOT_USERNAME); if(AIR720UH.mqttConnect(60)){ //Connect to server Serial.println("Connected !"); }else{ Serial.println("Failed to connect"); AIR720UH.mqttDisonnect(); return; } if(AIR720UH.mqttSUB(IOT_TOPIC,0)){ //Subscribe to the topic Serial.println("mqttSUB OK"); }else{ Serial.println("Failed to mqttSUB"); AIR720UH.mqttDisonnect(); return; } Serial.println("Input data end with CRLF : "); String sendData; sendData= readSerial(); Serial.print("Send data : "); Serial.print(sendData); Serial.println(" ......"); if(AIR720UH.mqttPUB(IOT_TOPIC,0,0,sendData)){ //Send data to topic Serial.println("Send OK"); }else{ Serial.println("Failed to send"); AIR720UH.mqttDisonnect(); return; } delay(1000); char buf[128]; if(AIR720UH.mqttRecv(IOT_TOPIC,buf,128)){ Serial.println("Received a message about the subscription topic:"); Serial.print(buf); memset(buf,0,sizeof(buf)); } delay(200); if(AIR720UH.mqttDisonnect()){ //Close connection Serial.println("Close connection !"); }else{ Serial.println("Fail to close connection !"); return; } delay(2000); } ``` #### 例程6:获取基站位置和时间信息 ```c++ /*! * @file readLBSInformationAndTime.ino * @brief : Read base station location (LBS) information and time * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com) * @licence The MIT License (MIT) * @author [yangfeng] * @version V1.0 * @date 2021-08-18 */ #include DFRobot_AIR720UH AIR720UH; void setup(){ int signalStrength,dataNum; Serial.begin(115200); Serial1.begin(115200); while(!Serial); AIR720UH.begin(Serial1); Serial.println("Check SIM card......"); if(AIR720UH.checkSIMStatus()){ //Check SIM card Serial.println("SIM card READY"); }else{ Serial.println("SIM card ERROR, Check if you have insert SIM card and restart AIR720UH"); while(1); } Serial.println("Get signal quality......"); delay(500); signalStrength=AIR720UH.checkSignalQuality(); //Check signal quality Serial.print("signalStrength ="); Serial.println(signalStrength); delay(500); Serial.println("Base station location (LBS) information and time:"); } void loop(){ char *buff=AIR720UH.readLBSInformationAndTime(); if(buff!=NULL){ Serial.println(buff); } delay(1000); } ``` #### 例程7:获取网络时间 ```c++ /*! * @file setNTP.ino * @brief : Synchronizing network Time * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com) * @licence The MIT License (MIT) * @author [yangfeng] * @version V1.0 * @date 2021-08-18 */ #include DFRobot_AIR720UH AIR720UH; void setup(){ int signalStrength,dataNum; Serial.begin(115200); Serial1.begin(115200); while(!Serial); AIR720UH.begin(Serial1); Serial.println("Check SIM card......"); if(AIR720UH.checkSIMStatus()){ //Check SIM card Serial.println("SIM card READY"); }else{ Serial.println("SIM card ERROR, Check if you have insert SIM card and restart AIR720UH"); while(1); } Serial.println("Get signal quality......"); delay(500); signalStrength=AIR720UH.checkSignalQuality(); //Check signal quality Serial.print("signalStrength ="); Serial.println(signalStrength); delay(500); Serial.println("set NTP ..."); while(1){ int data=AIR720UH.setNTP(); if(data==1){ Serial.println("The network time is synchronized successfully!"); break; }else if(data ==61){ Serial.println("Network error"); break; }else if(data ==62){ Serial.println("DNS resolution error"); break; }else if(data ==63){ Serial.println("Connection error"); break; }else if(data ==64){ Serial.println("Service response error"); break; }else if(data ==65){ Serial.println("Service response time out"); break; }else{ Serial.println("set error"); } } } void loop(){ char *buff = AIR720UH.getCLK(); if(buff!=NULL){ Serial.println(buff); } } ```