tag 标签: 嵌入式硬件

相关帖子
相关博文
  • 2025-1-10 17:34
    0 个评论
    今天我们学习的是关于Air201的MQTT实用示例的终极指南。 本教程教你通过使用脚本代码,对Air201模组进行MQTT链接操作。 操作例程包括: MQTT单链接 MQTT多链接 MQTT SSL不带证书链接 MQTT SSL带证书链接 大家可根据自身需求,选择对应的例程学习。 1. 搭建环境 新同学建议先看前期的基础知识相关教程,更有助于理解和操作。 本章所需要用到的脚本存于LuatOS-Air201demomqtt文件夹中;若没有找到该脚本,可能代码并非最新,请根据前面教学重新拉取。 1.1 硬件准备 Air201 PCBA 带有数据通信功能的数据线 Win10以上PC 1.2 软件准备 LuaTools调试工具: https://docs.openluat.com/Luatools/ 最新固件: https://gitee.com/openLuat/LuatOS-Air201/tree/master/core 最新脚本: https://gitee.com/openLuat/LuatOS-Air201/tree/master/demo/mqtt MQTTX工具: https://mqttx.app/ 本章教程以MQTTX工具为例进行学习,大家也可以使用其他MQTT工具。 我们先把MQTTX工具配置一下: ▼ MQTTX工具配置 ▼ 下载好软件后,根据下方图中操作指示填写信息: 填写好信息,点击右上角【连接】。 下一步,开始添加订阅主题和发布消息主题: 这里,要特别注意一下主题格式。 订阅主题格式 要求默认为:/luatos/pub/ 加模组的IMEI号 例如: /luatos/pub/864536071785271 发布主题格式 要求默认为:/luatos/sub/ 加模组的IMEI号 例如: /luatos/sub/864536071785271 MQTTX配置已经完成,现在开始正式学习。学成之后便可通过MQTT进行自由通信了,实际效果如下图所示: 2.MQTT单链接示例 2.1 main.lua说明 在main.lua中我们需要调用single_mqtt,代码参考如下: 2.2 single_mqtt.lua说明 下面将对single_mqtt.lua中的代码进行简单说明,并指导大家修改指定参数,以便顺利进行MQTT单链接操作。 1)在代码开头部分,根据自己的服务器修改指定的参数。 需要注意的是user_name和password在有些服务器上是可以不传入的,或者是对传入的值没有要求限制。 要根据实际服务器要求来填写。 2)此task实现的是MQTT的连接、订阅消息、发布消息的流程。 要先等待网络就绪之后,才可进行MQTT后续操作。 待网络就绪之后,根据代码编写情况此时client_id、pub_topic和sub_topic会发生变化, 会覆盖掉代码开头部分时的配置,这点需要注意。 device_id为模组的IMEI号。 3)此task的功能为模组每3秒向服务器发送一次数据: 4)此代码可实现mqtt-uart透传,利用串口工具给服务器发消息或者接收来自服务器的消息。 注意:要使用串口1,且波特率为9600。 5)此task是通过使用rtos.meminfo()查询内存信息,并进行打印。 RTOS库详细信息请参考: RTOS底层操作库 https://wiki.luatos.com/api/rtos.html?highlight=rtos#rtos-meminfo-type 2.3 示例效果 MQTT单链接示例如下图所示,实现效果为模块每3秒向服务器发送一次数据。 前面代码中所提到的mqtt-uart透传实现效果图如下所示: 3. MQTT多链接示例 3.1 main.lua说明 在main.lua中我们需要调用multilink_mqtt,代码参考如下: 3.2 multilink_mqtt.lua说明 1)在代码开头部分,请根据自己的服务器修改指定的参数。 特别说明: client1_pub_topic client1_sub_topic client2_pub_topic client2_sub_topic 以上几项在后面函数中会再次赋参数,因此会覆盖掉这里的参数,所以大家可以选择不填。 2)此create_mqtt函数主要功能是创建并配置MQTT客户端对象。 具体步骤包括: 使用mqtt.create创建一个MQTT客户端对象,并将其存储在mqtt_param表的mqttc字段中; 使用log.info打印MQTT客户端的配置信息; 使用mqttc:auth进行MQTT三元组配置; 使用mqttc:autoreconn配置自动重连机制,true表示启动自动重连机制,3000为自动重连周期,单位为ms。 3)此mqtt_client1函数主要功能是创建并配置一个MQTT客户端1(client1),并链接到指定的MQTT服务器。 具体步骤包括: client1_pub_topic和client1_sub_topic分别定义了客户端1的上报主题和订阅主题,device_id为设备的IMEI号; 使用log.info函数打印客户端1的上报和下发主题; 使用create_mqtt函数创建MQTT客户端1,并传入mqtt1_param表中参数; 设置MQTT客户端1的事件回调函数,event为事件类型标识,可能出现的值有"conack"(连接确认)、"recv"(接收消息)、"sent"(发送完成)、"disconnect"(服务器断开连接)等,再根据不同事件类型执行不同的功能; 调用connect方法连接到MQTT服务器。 4)此mqtt_client2函数主要功能是创建并配置一个MQTT客户端2(client2),并链接到指定的MQTT服务器。 代码内容与mqtt_client1类似,此处不再复述。 5)此sys.taskInit为主task函数 函数主要功能是初始化刚才那两个MQTT客户端,确保它们能够成功连接到服务器,并进行周期性的发布消息以实现与服务器的通信。代码中还进行了设备联网检查及库的兼容性验证,确保在合适环境下运行。 具体步骤包括: 使用sys.waitUntil让系统等待网络连接就绪; 使用mobile.imei()获取模块IMEI号后赋值给device_id作为设备ID; 代码检查是否存在有可用的MQTT库。若不存在,进入一个无限循环,每秒打印一个日志信息,告知用户未找到MQTT库; 分别启动两个MQTT客户端,并等待与服务器成功连接的确认; 设定要发布的数据及qos(服务质量)等级,qos为1表示消息至少会被传递一次; 使用一个无限循环,每隔3秒检查MQTT客户端是否准备好,并发送带有时间戳的数据到指定的主题。 6)此sys.taskInit的主要功能是,每隔3秒打印一次Lua程序和操作系统的内存使用情况。 3.3 示例效果 Client 1: Client 2: 4. MQTT SSL不带证书链接示例 4.1 main.lua说明 在main.lua中我们需要调用ssl_mqtt,代码参考如下: 4.2 ssl_mqtt.lua说明 1)在代码开头部分,根据自己的服务器修改对应参数。 特别注意: MQTT SSL不带证书链接与带证书链接为同一个文件,我们本节教程是MQTT SSL不带证书链接, 因此要将mqtt_isssl的值改为true , 大家可自行参考下方代码进行修改。 2)其余代码部分就与MQTT单链接示例中的single_mqtt.lua 代码相同,同样为避免重复信息过多,影响阅读感受,大家可转到上文 2.2 single_mqtt.lua说明 进行了解。 4.3 示例效果 5. MQTT SSL带证书链接示例 5.1 main.lua说明 在main.lua中我们依旧需要调用ssl_mqtt,代码参考如下: 5.2 ssl_mqtt.lua说明 1)在代码开头部分,依旧需要大家根据自己的服务器进行修改对应参数。 不过需要注意的是,本次是使用MQTT SSL带证书链接,所以需要将mqtt_isssl的值改为table; 另外需要注意的是,既然是带证书链接,那么肯定是需要准备好证书文件了,大家在使用自己的服务器时,一定要准备好对应的证书文件才行,证书文件建议直接放在 LuatOS-Air201demomqtt 文件夹下,证书文件路径根据代码中示例自行修改。 在烧录时,要将证书文件作为脚本文件一同烧录到模组中。详细烧录教程,大家可自行参考: https://docs.openluat.com/Luatools/ 2)其余代码部分就与MQTT单链接示例中的single_mqtt.lua代码相同,为避免重复信息过多,影响阅读感受,大家可转到上文大家可以转到 2.2 single_mqtt.lua说明 进行了解。 5.3 示例效果 分享完毕,欢迎关注~
  • 2025-1-10 17:06
    0 个评论
    一、UDP概述 UDP(用户数据报协议,UserDatagramProtocol)是一种无连接的、不可靠的传输层协议,主要用于实现网络中的快速通讯。以下是UDP通讯的主要特点: 1.1 无连接通讯: UDP在发送数据之前不需要建立连接,这大大减少了通讯的延迟。发送方只需将数据包封装成UDP报文,并附上目的地址和端口号,即可直接发送。 1.2 不可靠传输: UDP不保证数据包的顺序性、完整性和可靠性。数据包在传输过程中可能会丢失、重复或乱序到达。因此,UDP通讯需要应用层自行处理这些问题,如实现错误检测、数据重传等机制。 1.3 面向报文: UDP以报文为单位进行数据传输,每个报文都是独立的。这种面向报文的特性使得UDP能够保持数据的完整性,并且便于进行错误检测和处理。 1.4 高效性: UDP的头部结构非常简单,只包含必要的字段,如源端口、目的端口、数据长度和校验和。这种简洁的头部设计使得UDP在处理数据包时更加高效,减少了网络延迟。 1.5 实时性: UDP通讯具有较快的传输速度,适用于对实时性要求较高的应用场景,如视频通话、在线游戏等。在这些场景中,即使数据包偶尔丢失或延迟,也不会对整体功能产生严重影响。 二、UDP-UART透传功能实现的概述 本文教你怎么使用luatos脚本语言,就可以让4G模组连接上一个UDP服务器,并且模组和服务器之间实现数据的双向传输! 2.1 本教程实现的功能定义 通过网页端启动一个UDP服务器; 4G模组插卡开机后,连接上UDP服务器; 4G模组向UDP服务器发送"UDPCONNECT",服务器可以收到数据并且在网页端显示; UDP服务器网页端向4G模组发送datafromUDPserver,4G模组可以收到数据并且通过串口输出显示; 2.2核心脚本代码详解 2.2.1 串口初始化 本文示例:串口使用MAIN_UART(uart1) 2.2.2 数据接收回调:搭建响应桥梁 这里使用uart.rx接口,和以zbuff的方式存储从uart1外部串口收到的数据--收取数据会触发回调,这里的"receive"是固定值不要修改。 2.2.3 UDP网络配置:铺就数据通道 2.2.4 UDP至串口透传:数据无缝流转 2.2.5 串口至UDP反透传:信息双向传递 2.3 成果演示与深度解析: 2.3.1 成果运行精彩呈现 2.3.2完整实例深度剖析 三、总结 UDP-UART汇总: UDP(用户数据报协议)是一种无连接的传输层协议,它提供不可靠的服务,不保证数据包的顺序、完整性或正确性,但具有较低的时延和开销。UDP常用于需要快速传输且对丢包不太敏感的应用,如实时音视频、在线游戏等。 UART(通用异步收发传输器)是一种串行通信协议,用于在计算机和其他设备之间传输数据。UART通信是异步的,意味着每个数据包的发送和接收是独立的,不需要时钟信号来同步。UART通信通常用于低速设备之间的连接,如微控制器、传感器等。 将UDP与UART结合起来,通常是在嵌入式系统或物联网(IoT)应用中,需要将设备上的数据通过网络传输到远程服务器或其他设备时。在这种情况下,UART可能用于设备内部的串行通信,而UDP则用于设备之间的网络通信。例如,一个基于微控制器的设备可能通过UART接口收集传感器数据,然后通过UDP协议将这些数据发送到远程服务器进行分析或存储。 需要注意的是,UDP和UART是不同层次的协议,UDP位于传输层,而UART位于物理层和数据链路层(在某些上下文中,可能被视为一种简单的通信接口)。它们各自在其层次上发挥作用,但可以在某些应用场景中结合使用以实现设备到网络的通信。 四、常见问题 4.1 UDP是否支持单向/双向认证? UDP本身不直接支持单向或双向认证。UDP是一种无连接的协议,主要用于实时应用,如IP电话和视频会议,它不保证数据的可靠交付。虽然UDP本身不提供认证功能,但可以在应用层或通过网络设备实现用户认证。这种认证可以在连接建立的起始阶段进行,并且可以通过多种方式实现,包括单向认证(如客户端向服务器提供认证信息)和双向认证(双方相互验证身份)。具体实现方式取决于应用场景和需求。 五、扩展 5.1 关于TCP和UDP TCP(TransmissionControlProtocol,传输控制协议)和UDP(UserDatagramProtocol,用户数据报协议)都是网络层之上的传输层协议,它们在网络通讯中扮演着重要的角色,但有着显著的区别。以下是TCP和UDP的简化对比: 5.2 连接性: TCP:面向连接。在数据传输之前,需要先建立连接(三次握手),确保数据传输的可靠性。 UDP:无连接。数据传输前不需要建立连接,直接发送数据包。 5.3 可靠性: TCP:提供可靠的传输服务。通过确认应答、超时重传、错误校验等机制,确保数据按顺序、无错误地传输。 UDP:不保证数据的可靠性。数据包可能会丢失、重复或乱序到达。 5.4 速度: TCP:由于需要建立连接和进行各种可靠性检查,TCP的传输速度相对较慢。 UDP:没有连接建立和可靠性检查的开销,UDP的传输速度通常更快。 5.5 应用场景: TCP:适用于需要可靠传输的应用场景,如网页浏览、文件传输等。 UDP:适用于对实时性要求较高、但对数据可靠性要求不高的应用场景,如视频流、音频流、在线游戏等。 5.6 流量控制: TCP:具有流量控制和拥塞控制机制,能够根据网络状况调整数据传输速率。 UDP:没有流量控制和拥塞控制机制,数据发送速率完全取决于应用程序。 5.7 头部开销: TCP:头部开销较大,包含源端口、目的端口、序列号、确认号、窗口大小等多个字段。 UDP:头部开销较小,仅包含源端口、目的端口、长度和校验和等字段。 今天就分享到这里了!
  • 2025-1-10 16:28
    61 次阅读|
    0 个评论
    今天展示的是RTC时钟使用指南,轻松学习,完美成果。 本指南教你通过使用脚本代码,实现Air201内置RTC实时时钟同步时间、获取时间、设置时间等功能,可根据实际需求灵活应用。 我们先了解一些相关基础知识: RTC ——Real-Time Clock实时时钟,通常称为时钟芯片,可以提供精确的实时时间,它可以用于产生年、月、日、时、分、秒等信息。晶体振荡器是最常用的时钟源,因为它具有高精度和稳定性。有些时钟芯片为了在主电源掉电时还可以工作,会外加电池供电,使时间信息一直保持有效。 时区差异 ——东八区(UTC/GMT+08:00)是比世界协调时间(UTC)/格林尼治时间(GMT)快8小时的时区,理论上的位置是位于东经112.5度至127.5度之间,在此15度的范围内,统一采用以东经120度中心线的地方时间为准,是东盟标准的其中一个候选时区。当格林尼治标准时间为00:00时,东八区的标准时间为08:00。 1. 搭建环境 新同学建议先看前期的基础知识相关教程,更有助于理解和操作。 可以在LuaTools项目管理中新建一个项目,重新选择底层CORE和脚本;或者在原有项目的基础上,不更换CORE,将原来的脚本删除,添加为demo/rtc的脚本。 本章所需要用到的脚本存于 LuatOS-Air201demortc 文件夹中;若没有找到该脚本,可能代码并非最新,请根据前面教学重新拉取。 1.1 硬件准备: Air201 PCBA SIM卡一张 带有数据通信功能的数据线 Win10以上PC 1.2 软件准备: LuaTools调试工具: https://docs.openluat.com/Luatools/ 最新固件: https://gitee.com/openLuat/LuatOS-Air201/tree/master/core 最新脚本: https://gitee.com/openLuat/LuatOS-Air201/tree/master/demo/rtc 2.编写代码 main.lua文件:模组成功注册上网后,即可获取正常时间;支持table方式和时间戳方式设置时间。 3. 代码烧录 新朋友可以查看参考详细烧录教程: https://docs.openluat.com/Luatools/ 1)选对应的固件版本; 2)选择对应的脚本,选择添加默认lib,勾选免BOOT刷脚本; 3)固件版本不变的情况下,直接选择下载脚本即可。 4. 示例效果 示例rtc.get/set是UTC时间,os.date为北京时间(东八区时间);实现设置、读取和打印时间数据,如下图所示: 今天的分享就到这里了~ Air201最新资料详见: https://docs.openluat.com/air201/
  • 2025-1-10 15:20
    58 次阅读|
    0 个评论
    亲爱的工程师朋友们:今天我们学习低功耗4G模组Air780E的I2C接口操作方法。 1、I2C概述 Air780E可支持1路I2C接口,如果复用的话最多有两路: I2C配置: 兼容PhilipsI2C标准协议。 支持Fastmode(400Kbps)和Slowmode(100Kbps)。 只支持master模式,不支持slaver模式。 可通过软件来配置内部的上拉电阻,1.8K或者20K。 理论上最多可支持127个从设备。 I2C的参考电路如下: Air780E的I2C接口电压是1.8V/3.3V可配置,通过PIN100IO_SEL配置IO口电平,能够满足大部分外设的直接需求,但是如果要和5V或者以上电平的外设通信,那就必须要加电平转换电路 2、演示功能概述 本例程将使用I2C协议读取传感器数据并打印出来。 3、准备硬件环境 3.1 780E开发板一套 此核心板的详细使用说明参考:Air780E产品手册中的< ;核心板使用过程中遇到任何问题,可以直接参考这份使用说明pdf文档。 3.2 数据通信线 typec接口USB数据线即可。 3.3 PC电脑 WINDOWS系统。 3.4 sht20温湿度传感器一个 3.5 780E与sht20接线图如下 4、准备软件环境 4.1 基本的下载调试工具 使用说明参考:Luatools下载和详细使用; https://docs.openluat.com/Luatools/ 5、使用I2C读取sht20软硬件资料 5.1 文档和工具: 780E模块使用固件:SDK&Demo-文档中心,本demo使用的固件版本是: LuatOS-SoC_V1112_EC618_FULL.soc 本教程使用的demo: https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/sht20 5.2demo使用api介绍 i2c.setup(id,speed,pullup) 作用:i2c初始化 参数: 返回值: i2c.send(id,addr,data,stop) 作用:i2c发送数据 参数: 返回值: i2c.recv(id,addr,len) 作用:i2c接收数据 返回值: 6、代码示例介绍 6.1 读取SHT20温湿度传感器 6.1.1 SHT20简介: SHT20是使用I2C协议进行通信的温湿度传感器。 首先我们可以发送STH20的7位从机地址+1位读写位(写0读1),然后发送8位的命令,0xF3是读取温度的命令,0xF5是读取湿度的命令。发送完后接收应答,等待20us之后我们发出I2C的结束时序。 6.1.2 demo介绍 首先初始化i2c,然后给sht20发送读取温湿度命令,接收sht20回传的数据即可。 6.1.3 将程序下载到开发板: 使用说明参考:Luatools下载和详细使用 https://docs.openluat.com/Luatools/ 7、功能验证 成功使用I2C协议读取到sht20传感器的温湿度数值。 8、总结 本例程使用i2c协议读取了sht20传感器传输的温湿度数值。 9、常见问题 9.1 i2c每次读写数据前都需要setup一次吗? 不需要。 正常的业务逻辑为: i2c.setup, …此处可以多次读写数据, i2c.close, setup之后,只要没有close,就可以反复读写数据, 一旦执行了close,下次读写数据前,必须再次setup。 9.2 i2c通信时模块可以做从设备吗? 注意:模块I2C只能做主设备,外部需要上拉,在配置FAST速率时,上拉电阻阻值不要大于4.7K。 9.3 i2c设备7位的地址为0x38,需要我手动转换到8位地址吗? 这里i2c_addr地址是7bit地址,如果i2c外设手册中给的是8bit地址,需要把8bit地址右移1位,赋值给i2c_addr变量;如果i2c外设手册中给的是7bit地址,直接把7bit地址赋值给i2c_addr变量即可。 今天就分享到这里了!
  • 2025-1-10 12:40
    0 个评论
    大家好,今天我们来学习Air780E模组LuatOS开发4G通信中HTTP网络协议的应用,实现模组和服务器之间数据的传输。 一、HTTP概述 1.1 简介 HTTP是HyperTextTransferProtocol(超文本传输协议)的缩写。HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS,所以HTTPS相关的指令只需要参考SSL部分配置连接,其他和http都是一样的。 HTTP协议的_主要应用场景_有:基于浏览器的网页获取与表单提交、文件上传与下载、移动应用、物联网设备的数据上报等。 1.2 请求报文 ​ ●method:请求方法,GET和POST是最常见的HTTP方法。 ●URL:为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。 ●Version:协议名称及版本号。 ●Headerlines:HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。 ●Entitybody:是报文体,它将一个页面表单中的组件值通过param1=value1&m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。 ●请求报文示例如下: ​ 1.3 响应报文 ​ ●version:报文协议及版本。 ●statuscode:状态码及状态描述。 ●phrase:原因短语。 ●Headerlines:响应报文头。 ●Entitybody:响应报文体,即我们真正要的内容。 ●响应报文示例如下: ​ 注意:sp表示空格,crlf表示回车换行,报文头和报文体之间要有一行空格 1.4 HTTP请求方法 HTTP客户端发出请求,告知服务端需要执行不同类型的请求命令,这些命令被称为HTTP方法。 ●GET:获取资源方法 ●POST:传输实体数据方法 ●HEAD:获取头部报文方法 ●PUT:传输文件方法 ●DELETE:删除指定资源方法 1.5 HTTP状态码 HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类: ●信息响应(100–199),信息响应中,服务器收到请求,需要请求者继续执行操作; ●成功响应(200–299),信息响应成功,操作被成功接收并处理; ●重定向,需要进一步操作(300–399),信息需要被重新定向,需要进一步的操作以完成请求; ●客户端错误(400–499),客户端错误,请求包含语法错误或无法完成请求; ●服务器错误(500–599),服务器错误,服务器在处理请求的过程中发生了错误。 二、演示功能概述 本文教你4G模组使用LuatOS开发4G通信中http网络协议的应用,实现模组和服务器之间数据的传输! 本教程实现的功能定义是: 使用Air780E核心板下载Air780的LuatOS示例代码中http的例程进行验证,包含get请求,post请求,文件上传,文件下载等功能。 三、硬件环境 3.1 Air780E核心板 3.2 SIM卡 中国大陆环境下,可以上网的sim卡,一般来说,使用移动,电信,联通的物联网卡或者手机卡都行; 3.3 PC电脑 WINDOWS系统,其他暂无特别要求; 3.4 数据通信线 USB数据线,暂无特别要求; 四、软件环境 4.1 Luatools工具 要想烧录AT固件到4G模组中,需要用到调试工具:Luatools; 详细使用说明参考:Luatools工具使用说明。 Luatools工具集具备以下几大核心功能: 一键获取最新固件:自动连接服务器,轻松下载最新的模组固件。 固件与脚本烧录:便捷地将固件及脚本文件烧录至目标模组中。 串口日志管理:实时查看模组通过串口输出的日志信息,并支持保存功能。 串口调试助手:提供简洁的串口调试界面,满足基本的串口通信测试需求。 Luatools下载之后,无需安装,解压到你的硬盘,点击Luatools_v3.exe运行,出现如下界面,就代表Luatools安装成功了. 4.2 准备需要烧录的代码 首先要说明一点:脚本代码,要和固件的bin文件一起烧录。 4.2.1 烧录的底层固件文件 底层core下载地址:LuatOS固件版本下载地址 ​ Air780E的底层固件在Luatools解压后目录的LuatOS-SoC_V1112_EC618_FULL.soc ​ 4.2.2 烧录的脚本代码 首先要下载Air780的LuatOS示例代码到一个合适的项目目录,示例代码网站:https://gitee.com/openLuat/LuatOS-Air780E 下载流程参考下图: ​ ​ 下载的文件解压,找到 LuatOS-Air780E-masterdemohttpmain.lua,如图: ​ 4.3 烧录步骤 4.3.1 正确连接电脑和4G模组电路板 使用带有数据通信功能的数据线,不要使用仅有充电功能的数据线; 4.3.2 识别4G模组的boot引脚 在下载之前,要用模组的boot引脚触发下载,也就是说,要把4G模组的boot引脚拉到1.8v,或者直接把boot引脚和VDD_EXT引脚相连。我们要在按下BOOT按键时让模块开机,就可以进入下载模式了。 具体到Air780E开发板: 1、当我们模块没开机时,按着BOOT键然后长按PWR开机。 2、当我们模块开机时,按着BOOT键然后点按重启键即可。 ​ 4.3.3 识别电脑的正确端口 判断是否进入BOOT模式:模块上电,此时在电脑的设备管理器中,查看串口设备,会出现一个端口表示进入了boot下载模式,如下图所示: ​ 当设备管理器出现了3个连续数字的com端口,并且每个数字都大于4,这时候,硬件连接上就绪状态,恭喜你,可以进行烧录了! 4.3.4 用LuatOS工具烧录 新建项目 首先,确保你的Luatools的版本,上大于3.0.6版本的。 在Luatools的左上角上有版本显示的,如图所示: ​ Luatools版本没问题的话,就点击LuaTOols右上角的“项目管理测试”按钮,如下图所示: ​ 这时会弹出项目管理和烧录管理的对话框,如下图: ​ 开始烧录 选择780E板子对应的底层core和刚改的main.lua脚本文件。下载到板子中。 ​ 点击下载后,我们需要进入boot模式才能正常下载。 ​ ​ 五、API说明 http客户端: http.request(method,url,headers,body,opts,ca_file,client_ca,client_key,client_password) 参数 返回值 创建HTTP客户端 ​ 六、功能验证 6.1 GET请求 HTTPGET请求是一种用于从指定资源URI(统一资源标识符)请求数据的HTTP方法。它通常用于请求服务器发送资源(如HTML页面、图片等)给客户端,且请求信息包含在URL中。 下面根据demo演示HTTP的GET请求用法,示例代码如下(具体demo可以点此链接跳转) 示例如下: ​ 对应log: ​ 6.2 POST请求 HTTPPOST请求是一种HTTP方法,用于向指定的资源提交数据。与GET请求不同,POST请求的数据包含在请求体中,可以提交大量数据且数据不会显示在URL中,常用于提交表单数据或上传文件等操作。 下面根据demo演示HTTP的POST请求方法提交一个表单,示例代码如下(具体demo可以点此链接跳转) 示例: ​ 对应log: ​ 6.3 文件上传 HTTPPOST请求在文件上传场景中发挥着关键作用。用户通过POST请求可以将文件数据包含在请求体中发送给服务器,而不是像GET请求那样通过URL传递。这种方式允许上传大量数据,包括各种类型的文件,如图片、视频、文档等。服务器接收到请求后,会解析请求体中的文件数据,并存储到服务器上相应的位置。文件上传是HTTP应用中常见的功能。 下面根据demo演示HTTP文件上传的功能,示例代码如下(具体demo可以点此链接跳转) 示例: ​ 对应log: ​ 6.4 文件下载 下面根据demo演示HTTP文件下载的功能,示例代码如下(具体demo可以点此链接跳转) 示例: ​ 对应log: ​ 6.5 处理JSON数据 处理json数据主要有两个函数,json.encode(t)和json.decode(str),参考示例代码: https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/json ​ 6.6 压缩和解压 这个例程用和风天气的api做演示,请求到的数据配合miniz库进行解压,示例代码如下(具体demo可以点此链接跳转) 示例: ​ 对应log: ​ 也可以参考例程: https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/miniz ​ 七、总结 本文档主要介绍4G通信中http网络协议的应用。讲解了HTTP基本原理,GET和POST请求,以及文件上传下载、HTTPS加密、JSON数据处理和数据压缩等高级功能,直接烧录例程即可测试,旨在实现高效、安全的数据传输。 八、常见问题 8.1 HTTP支持多连接吗 目前HTTP仅支持单连接,不支持多连接。 8.2 重试多次PDP,HTTP应用一直连接失败 如果重试多次PDP激活,PDP一直激活失败,或者HTTP一直请求应答失败,则尝试使用如下手段恢复: 1、使用RESET引脚复位模块 2、极端情况下,直接给模块断电,再上电,POWERKEY引脚拉低开机 8.3 为什么我只发了10字节消息,100次却消耗了那么多流量? 因为还有HTTP自带的请求头。如何统计流量 8.4 为什么频繁请求会失败? 支持的http连接总数有限数量为tcp连接数量8个,建议一个http连接返回请求结果之后,再去请求下一个连接;不要使用循环定时器方式不断的发起新的http请求。 8.5 专网卡访问白名单 用定向Ip的物联网卡,需要把域名或IP加入白名单才能使用。如果不加入白名单会出现无法访问服务器的情况。
相关资源