# AIR780 MINI LTE 4G全网通模块 ![image-20230523214603884](media/image-20230523214603884.png) ## 原理图和例程等汇总资料下载地址 ## 资料链接: [https://pan.baidu.com/s/1fnRDMXCYXxlvcHWK3krEVA](https://pan.baidu.com/s/1fnRDMXCYXxlvcHWK3krEVA ) 提取码:3333 【如果百度云盘下载地址无效,请联系[本店铺](https://ilovemcu.taobao.com)客服更改】 ## 视频教程 [https://www.bilibili.com/video/BV1h24y1N7gT](https://www.bilibili.com/video/BV1h24y1N7gT) ## 模块淘宝链接 [https://item.taobao.com/item.htm?ft=t&id=719941972368](https://item.taobao.com/item.htm?ft=t&id=719941972368) ![image-20230522204715536](media/image-20230522204715536.png) ## 模块引脚说明 ![image-20230522191634516](media/image-20230522191634516.png) 电路版本V1.5以上版本,选择内核为3.3v AIR780EX,V1.5版本以前为1.8v AIR780EX版本,需要电平转换。 v1.5版本不需要转换,降低串口波特率误码率 为了兼容以前版本接线,V_MCU引脚修改为NC,悬空不接。 ![image-20240912203510408](media/image-20240912203510408.png) ![image-20230522195323672](media/image-20230522195323672.png) ![image-20230522193130532](media/image-20230522193130532.png) v1.5以上版本去除了V_MCU引脚和电平转换。 ## PC调试使用 ### 1.接上IPEX接口天线 ![image-20230520221302424](media/image-20230520221302424.png) ### 2.插入SIM卡 因为AIR780支持LTE CAT.1的模组, 支持频段: LTE-TDD:B34/B38/B39/B40/B41 LTE-FDD:B1/B3/B5/B8 通俗点讲,中国环境,支持移动/联通的卡短信功能。【不支持电信卡收发短信】 支持移动/联通/电信的卡网络功能。 本模块使用的是NANO尺寸的卡【和手机一样的小卡】,按照箭头方向插入接口,注意缺口放方向。 ![image-20230520230903611](media/image-20230520230903611.png) ![image-20230520221416501](media/image-20230520221416501.png) ### 3.基础接线测试 使用USB-TTL模块接AIR780模块如图 备注:这里V_MCU看自己的USB-TTL内核电平逻辑,如果是5v就可以直接接5v,如果是3.3v内核,就接3.3v。 如果实在不知道内核是3.3还是5v这里就随意了,不影响调试。大部分USB-TTL,比如CP2102 CH340电路都是3.3v逻辑 ``` USB-TTL模块 AIR780 MINI 5V ---> V_IN 3.3V ---> V_MCU GND ----> GND RXD ---> TXD TXD ---> RXD ``` ![image-20230520220409407](media/image-20230520220409407.png) ### 4.启动模块 把USB-TTL模块插入电脑的USB供电,然后模组的PWK和GND引脚短路1.5秒以上,就可以触发开机。可以 观察网络指示灯,不停闪烁,表示开发板已经正常开机。 开机后,如果再长按开机键(1.5S)以上触发关机流程,观察网络指示灯,停止闪烁表示关机动作结束。 关于上电自启动,把PWK和GND直接短路,可以上电自启动 ![image-20230520222344101](media/image-20230520222344101.png) ### 5.串口助手调试 打开串口助手,比如常用的XCOM - 选择自己的USB-TTL对应的COM号,波特率选择9600,打开串口 - 这里波特率也可以用115200,内核默认是115200,可以看到开机log信息。 - 用9600时候要开机多发一些AT,模块会自适应波特率为9600。 ![image-20230520222836004](media/image-20230520222836004.png) - 如果一直是乱码,可以切115200波特率看下输出的开机log信息,如果是一直如下图输入,说明vin供电功率不足,模块在一直重启。用usb供电电脑输入只有500mA如果还插有很多其他设备,那500mA都可能不到。如果在不停重启,可以使用外置电源给vin供电,用5V2A电源。或者升高供电电压用9v1A的 ![image-20240503193751287](media/image-20240503193751287.png) - 切换到多条发送,输入AT,勾选发送新行,点发送。如果没有返回AT OK,多发送几条,模块刚开机需一段时间启动,等能返回OK再测试其它指令 ![image-20230520223109060](media/image-20230520223109060.png) 发送常用测试指令看测试结果, AT+CSQ AT+CPIN? AT+CREG? 以下正常返回 ![image-20230520223634672](media/image-20230520223634672.png) - 如果您AT+CPIN?返回的不是这样,而是如下图,那ERROR,可能因为卡没插好,或者卡方向没插对,或者先上电后插的卡,总之模块没读取到卡。 ![image-20230520223916340](media/image-20230520223916340.png) - 如果AT+CREG?返回的不是0,1或者0,5,那么卡应该没服务停机了,没有连接到基站,或者没插卡![image-20230520224049786](media/image-20230520224049786.png) - 如果能上面3个基础指令都能正常,才可以操作短信和网络流程。 ### 发送短信流程 重要事情说n遍!!!!! **重要说明,这里很多人会问为什么不能发短信,先看这个!!!!!** **重要说明,这里很多人会问为什么不能发短信,先看这个!!!!!** **重要说明,这里很多人会问为什么不能发短信,先看这个!!!!!** **重要说明,这里很多人会问为什么不能发短信,先看这个!!!!!** **重要说明,这里很多人会问为什么不能发短信,先看这个!!!!!** **重要说明,这里很多人会问为什么不能发短信,先看这个!!!!!** **重要说明,这里很多人会问为什么不能发短信,先看这个!!!!!** **重要说明,这里很多人会问为什么不能发短信,先看这个!!!!!** **重要说明,这里很多人会问为什么不能发短信,先看这个!!!!!** **重要说明,这里很多人会问为什么不能发短信,先看这个!!!!!** **重要说明,这里很多人会问为什么不能发短信,先看这个!!!!!** 测试短信需要自己实名制自己办卡 ![image-20230520231230154](media/image-20230520231230154.png) #### 发送英文短信 用到下面几条指令 ``` AT+CMGF=1 AT+CSMP=17,167,0,0 AT+CSCS="IRA" AT+CMGS="183XXXXXXXX" 这个是要接收短信的手机号 发送短信内容,不勾选回车,点发送 1A 勾选hex发送,不勾选回车 ``` ![image-20230520231611554](media/image-20230520231611554.png) ![image-20230520232254300](media/image-20230520232254300.png) ![image-20230520231918960](media/image-20230520231918960.png) 能看到OK,就能接收到短信了 #### 发送中文短信 这里以最简单的TEXT模式下发送中文短信为例,如果想研究[PDU](https://doc.openluat.com/pdu)的可以自行学习 用到几条指令 ``` AT+CMGF=1 AT+CSMP=17,167,0,8 AT+CSCS="IRA" AT+CMGS="173xxxxxxx1" 短信内容 需要用uncode转码工具转换,不勾选发送新行,勾选HEX发送 1A HEX发送 ``` 用资料包提供的UNCODE工具提前转换好要发送的中文内容 ![image-20230520233818696](media/image-20230520233818696.png) 然后按照下面流程操作 ![image-20230520234023842](media/image-20230520234023842.png) 这样手机上就可以收到中文短信了 ### TCP网络测试 ![image-20230520235825221](media/image-20230520235825221.png) 打开TCP测试网站[https://netlab.luatos.com/](https://netlab.luatos.com/)点左上角打开TCP ![image-20230520235939353](media/image-20230520235939353.png) 获取到能临时使用的IP和端口 ![image-20230521000022093](media/image-20230521000022093.png) 把IP和端口组成下面的链接TCP的指令,发送指令,连接成功 ``` AT+CIPSTART="TCP","112.125.89.8","36611" ``` ![image-20230521000220453](media/image-20230521000220453.png) 使用AT+CIPSEND指令启动发送,发送任意内容,这里以“WAAAX”为例 1A勾选HEX发送,显示SEND OK,说明发送成功了 ![image-20230521001014007](media/image-20230521001014007.png) 然后在网页端就可以看到发送的内容了 ![image-20230521001050887](media/image-20230521001050887.png) 想断开连接使用AT+CIPSHUT结束连接 ![image-20230521001215436](media/image-20230521001215436.png) 备注:测试发现用XCOM因为编码问题发送的内容不能为中文,可以尝试用原厂的[LLCOM工具](https://llcom.papapoi.com/index.html),一样流程,内容还能发中文,很不错哦 ![image-20230521001443429](media/image-20230521001443429.png) ### Onenet物联网平台MQTT通讯 onenet平台链接:[https://open.iot.10086.cn/](https://open.iot.10086.cn/) 完成注册登陆和添加设备,参考官方教程Onenet物联网平台操作教程:[https://doc.openluat.com/wiki/37?wiki_page_id=4506](https://doc.openluat.com/wiki/37?wiki_page_id=4506) ![image-20230523220728442](media/image-20230523220728442.png) ![image-20230523220429336](media/image-20230523220429336.png) ![image-20230523220648612](media/image-20230523220648612.png) ![image-20230523220744904](media/image-20230523220744904.png) ![image-20230523220915503](media/image-20230523220915503.png) ![image-20230523221009713](media/image-20230523221009713.png) 可以看到,登入onenet时,mqtt的clientID、username和password都有指定 clientId即为刚才创建的设备名称 username为创建的产品ID ![image-20230523221610629](media/image-20230523221610629.png) ![image-20230523221456393](media/image-20230523221456393.png) ![image-20230523221637380](media/image-20230523221637380.png) token计算工具 https://open.iot.10086.cn/bbs/thread-38815-1-1.html password是需要经过加密计算得来的鉴权token 计算方法详见如下文章,这篇文章测试时直接使用onenet提供的测试工具来计算鉴权密码 [接入安全认证_开发者文档_OneNET (10086.cn)](https://open.iot.10086.cn/doc/iot_platform/book/device-connect&manager/device-auth.html) ![image-20230524001226807](media/image-20230524001226807.png) 从上面教程获取了重要的三要素 ``` 项目ID:T1S6hH1y7F 设备ID:air 换算后的token:version=2018-10-31&res=products%2FT1S6hH1y7F%2Fdevices%2Fair&et=1895140886&method=md5&sign=kwQ%2FSHIB93sr%2BponsEYJ4A%3D%3D ``` 可以用mqtt.fx先测试效果 ![image-20230524113134194](media/image-20230524113134194.png) ![image-20230524113231442](media/image-20230524113231442.png) 显示绿色,连接成功 ![image-20230524113246159](media/image-20230524113246159.png) 订阅 ``` $sys/T1S6hH1y7F/air/thing/property/post/reply ``` ![image-20230524113401701](media/image-20230524113401701.png) 发送数据 ``` $sys/T1S6hH1y7F/air/thing/property/post ``` 测试内容 ``` { "id": "123", "version": "1.0", "params": { "temp_value": { "value": 65 } } } ``` ![image-20230524113434520](media/image-20230524113434520.png) 看到订阅回复成功 ![image-20230524113527568](media/image-20230524113527568.png) 在物联网里面看到对应数据 ![image-20230524113555402](media/image-20230524113555402.png) AT指令流程比较长,请参考视频演示 ``` AT AT+CGATT? AT+CSTT AT+CIICR AT+CIFSR AT+MCONFIG="air","T1S6hH1y7F","version=2018-10-31&res=products%2FT1S6hH1y7F%2Fdevices%2Fair&et=3565958400&method=md5&sign=Lwkt49lZGoQBT%2FTRrVPKDg%3D%3D" AT+MIPSTART="mqtts.heclouds.com",1883 AT+MCONNECT=1,120 AT+MSUB="$sys/T1S6hH1y7F/air/thing/property/post/reply",0 AT+MPUB="$sys/T1S6hH1y7F/air/thing/property/post", 0, 0, "{\22id\22:\22123\22,\22params\22:{\22temp_value\22:{\22value\22:22}}}" AT+MIPCLOSE ``` 前面的教程只是抛砖引玉教大家学会如何基础操作AT指令, 官方还有丰富的其他流程教程,可以自行查阅测试 [https://doc.openluat.com/wiki/37?wiki_page_id=4491](https://doc.openluat.com/wiki/37?wiki_page_id=4491) ![image-20230521001745822](media/image-20230521001745822.png) ## Arduino例程 接线方式 ``` 硬件串口方式连接: air780模块 ARDUINO UNO板子 V_IN-----------------5V V_MCU----------------5V GND------------------GND TX-----------------RX 数字0 RX-----------------TX 数字1 PWK接GND(用于开机自启动) 虚拟串口接电脑调试 USB-TTL模块 ARDUINO UNO板子 GND--------------------->GND RX---------------------->数字11 TX---------------------->数字10 烧录代码时候记得拔掉AIR780和UNO板子的TX RX的线,烧录好断电后再TX RX接线然后重新上电 ``` ### 发送英文短信 功能: Arduino开机等待和Air780通讯,通讯完成后发送一条英文短信,对应目标电话和短信修改代码中此处 ``` char phoneNumber[] = "173xxxxxxx1"; //替换成目标手机号 char msg[] = "hello waaax"; //短信内容 ``` 在Arduino的硬件串口,可以看到Arduino发送给Air780的AT指令 在Arduino的虚拟串口,可以看到Air780回复给Arduino的数据,Arduino接收后从虚拟串口打印,用于看状态。 ![image-20230523202043869](media/image-20230523202043869.png) ### 发送中文短信 功能: Arduino开机等待和Air780通讯,通讯完成后发送一条中文短信,对应目标电话和短信修改代码中此处 ``` char phoneNumber[] = "173xxxxxxx1"; //替换成目标手机号 char msg[] = "7EF453EF601D"; //维可思 //中文短信,用uicode工具转换,然后把空格去掉 ``` ![image-20230523204006588](media/image-20230523204006588.png) 在Arduino的硬件串口,可以看到Arduino发送给Air780的AT指令 在Arduino的虚拟串口,可以看到Air780回复给Arduino的数据,Arduino接收后从虚拟串口打印,用于看状态。 ![image-20230523204421768](media/image-20230523204421768.png) ### TCP通讯 功能: Arduino开机等待和Air780通讯,通讯完成后给对应的IP和端口发送20组数据,发送完后断开连接 ``` //需要是公网IP,测试可以使用 https://netlab.luatos.com/ 获取临时的 const char TCPServer[]="112.125.89.8"; const char Port[]="36936"; //端口号 ``` 在Arduino的硬件串口,可以看到Arduino发送给Air780的AT指令 在Arduino的虚拟串口,可以看到Air780回复给Arduino的数据,Arduino接收后从虚拟串口打印,用于看状态。 ![image-20230523211240852](media/image-20230523211240852.png) 网页端获取到客户端发过来的数据,因为是TCP网络传输的,没有距离限制 ![image-20230523211452973](media/image-20230523211452973.png) 因为Arduino的IDE和网页的这个TCP测试链接都是UTF-8编码,所以甚至代码这里可以直接写中文发送,使能这个 ![image-20230523211940207](media/image-20230523211940207.png) 而网页端这样接收的 ![image-20230523211909355](media/image-20230523211909355.png) ### MQTT通讯ONENET物联网平台 功能: Arduino开机等待和Air780通讯,通讯完成后向onenet服务器通过MQTT协议发送5组数据,发送完后断开连接 ``` #define mqtt_pubid "T1S6hH1y7F" //产品ID #define mqtt_devid "air" //设备ID //鉴权信息 #define mqtt_token "version=2018-10-31&res=products%2FT1S6hH1y7F%2Fdevices%2Fair&et=3565958400&method=md5&sign=Lwkt49lZGoQBT%2FTRrVPKDg%3D%3D" //鉴权信息 #define subscribe "$sys/T1S6hH1y7F/air/thing/property/post/reply" //参考mqtt_pubid和mqtt_devid一起替换对应位置 #define publish "$sys/T1S6hH1y7F/air/thing/property/post" //参考mqtt_pubid和mqtt_devid一起替换对应位置 #define paramsName "temp_value" ``` 在Arduino的硬件串口,可以看到Arduino发送给Air780的AT指令 在Arduino的虚拟串口,可以看到Air780回复给Arduino的数据,Arduino接收后从虚拟串口打印,用于看状态。 ![image-20230524232256843](media/image-20230524232256843.png) ## 51单片机例程 接线方式 ``` 硬件串口方式连接: air780模块 STC89C52板子 V_IN-----------------5V V_MCU----------------5V GND------------------GND TX-----------------P3.0 RX-----------------P3.1 PWK接GND(用于开机自启动) 本代码使用STC89C52RC单片机,晶振11.0592MHz下测试[必须使用11.0592M,不能用12M晶振] 烧录代码时候记得拔掉AIR780和51的TX RX的线,烧录好断电后再TX RX接线然后重新上电 ``` ### 发送英文短信 功能: 51单片机开机等待和Air780通讯,通讯完成后发送一条英文短信,对应目标电话和短信修改代码中此处 ``` char phoneNumber[] = "173xxxxxxx1"; //替换成需要被拨打电话的号码 char msg[] = "waaax"; //短信内容 ``` ![image-20230524235413353](media/image-20230524235413353.png) ### 发送中文短信 功能: 51单片机开机等待和Air780通讯,通讯完成后发送一条中文短信,对应目标电话和短信修改代码中此处 ``` char phoneNumber[] = "173xxxxxxx1"; //替换成目标手机号码 char msg[] = "7EF453EF601D"; //维可思 //中文短信,用uicode工具转换,然后把空格去掉 ``` ![image-20230525002420082](media/image-20230525002420082.png) ### TCP通讯 功能: 51单片机开机等待和Air780通讯,通讯完成后给对应的IP和端口发送20组数据,发送完后断开连接 ``` code char TCPServer[]="112.125.89.8"; //需要是公网IP,测试可以使用https://netlab.luatos.com/ 获取临时的 code char Port[]="37685"; //端口号 ``` 51的串口发送的数据 ![image-20230525085059400](media/image-20230525085059400.png) 网页端获取到客户端发过来的数据,因为是TCP网络传输的,没有距离限制 ![image-20230525085140709](media/image-20230525085140709.png) ### MQTT通讯ONENET物联网平台 功能: 51单片机开机等待和Air780通讯,通讯完成后向onenet服务器通过MQTT协议发送5组数据,发送完后断开连接 ``` #define mqtt_pubid "T1S6hH1y7F" //产品ID #define mqtt_devid "air" //设备ID //鉴权信息 #define mqtt_token "version=2018-10-31&res=products%2FT1S6hH1y7F%2Fdevices%2Fair&et=3565958400&method=md5&sign=Lwkt49lZGoQBT%2FTRrVPKDg%3D%3D" //鉴权信息 #define subscribe "$sys/T1S6hH1y7F/air/thing/property/post/reply" //参考mqtt_pubid和mqtt_devid一起替换对应位置 #define publish "$sys/T1S6hH1y7F/air/thing/property/post" //参考mqtt_pubid和mqtt_devid一起替换对应位置 #define paramsName "temp_value" ``` 51串口发送的数据 ![image-20230525094654542](media/image-20230525094654542.png) onenet服务器端接收效果 ![image-20230525094739659](media/image-20230525094739659.png) ## STM32单片机例程 接线方式 ``` 硬件串口方式连接: air780模块 STM32板子 V_IN-----------------5V V_MCU----------------3.3V GND------------------GND TX-----------------RX2 PA3 RX-----------------TX2 PA2 PWK接GND(用于开机自启动) usb-ttl接电脑调试 USB-TTL模块 STM32板子 5V----------------------5V GND--------------------->GND RX---------------------->PA9 TX---------------------->PA10 ``` ### 发送英文短信 功能: STM32开机等待和Air780通讯,通讯完成后发送一条英文短信,对应目标电话和短信修改代码中此处 ``` char phoneNumber[] = "173xxxxxxx1"; //替换成目标手机号 char msg[] = "hello waaax"; //短信内容 ``` 在STM32的串口1,可以看到Air780回复给STM32的数据,STM32接收后从串口1打印,用于看状态。 ![image-20230525133759899](media/image-20230525133759899.png) ### 发送中文短信 功能: STM32开机等待和Air780通讯,通讯完成后发送一条中文短信,对应目标电话和短信修改代码中此处 ``` char phoneNumber[] = "173xxxxxxx1"; //替换成目标手机号 char msg[] = "7EF453EF601D"; //维可思 //中文短信,用unicode工具转换,然后把空格去掉 ``` 在STM32的串口1,可以看到Air780回复给STM32的数据,STM32接收后从串口1打印,用于看状态。 ![image-20230525140710830](media/image-20230525140710830.png) ### TCP通讯 功能: STM32开机等待和Air780通讯,通讯完成后给对应的IP和端口发送20组数据,发送完后断开连接 ``` //需要是公网IP,测试可以使用 https://netlab.luatos.com/ 获取临时的 const char TCPServer[]="112.125.89.8"; const char Port[]="36936"; //端口号 ``` 在STM32的串口1,可以看到Air780回复给STM32的数据,STM32接收后从串口1打印,用于看状态。 在IP的服务器端可以看到接收的数据 ![image-20230525141816696](media/image-20230525141816696.png) ### MQTT通讯ONENET物联网平台 功能: STM32单片机开机等待和Air780通讯,通讯完成后向onenet服务器通过MQTT协议发送5组数据,发送完后断开连接 ``` #define mqtt_pubid "T1S6hH1y7F" //产品ID #define mqtt_devid "air" //设备ID #define mqtt_token "version=2018-10-31&res=products%2FT1S6hH1y7F%2Fdevices%2Fair&et=3565958400&method=md5&sign=Lwkt49lZGoQBT%2FTRrVPKDg%3D%3D" //鉴权信息 #define subscribe "$sys/T1S6hH1y7F/air/thing/property/post/reply" //参考mqtt_pubid和mqtt_devid一起替换对应位置 #define publish "$sys/T1S6hH1y7F/air/thing/property/post" //参考mqtt_pubid和mqtt_devid一起替换对应位置 #define paramsName "temp_value" ``` 串口1打印数据 ![image-20230525223419652](media/image-20230525223419652.png) 服务器端接收 ![image-20230525223547067](media/image-20230525223547067.png)