tag 标签: 物联网

相关帖子
相关博文
  • 2025-5-27 13:45
    76 次阅读|
    0 个评论
    sys库是LuatOS的核心系统调度库,它基于Lua协程机制实现了实时多任务调度、定时器管理以及消息通信等功能。 在详细介绍sys库之前,我们先来补充一些关于实时操作系统RTOS的知识,方便大家更好地理解LuatOS的运行机制。 一、 RTOS实时操作系统 我们用一个简单的例子来看,对比经典的裸机开发和LuatOS开发的优势: 一位母亲,她需要同步做两件事情,一件是喂小孩吃饭,另一件事是回复朋友信息。 1.1 裸机开发 对裸机开发来说,这是两件任务,这位母亲一段时间内只能做一个任务,任务执行不连贯,等待时间长。 time1-5 : 喂小孩吃饭,就无法回复信息,朋友就受到冷落; time5-10 : 回复信息,小孩吃不到饭,就会哭闹。 1.2 RTOS处理多任务 那RTOS是如何处理的呢?在RTOS里,这位母亲的大脑非常强大,切换得非常的快,她上一秒喂饭,下一秒回复信息,再下一秒再喂饭。 因为切换得非常快,小孩以为她在专心喂饭,朋友以为她在认真聊天。这两个任务看起来在同时进行。 这就是RTOS的本质——把一秒钟的时间切成多个时间片段,一个时间片段内干一件事情,一秒钟切换100个时间片就可以做100件事情。 RTOS通过快速切换任务,让多个任务看似在同时进行,提高了系统的并发处理能力和效率。 LuatOS通过Lua虚拟机封装了底层RTOS的API,向开发者提供高级抽象接口,而无需直接操作RTOS内核。 基于此LuatOS实现了一套多任务机制,允许开发者创建多个并行运行的任务。这些任务通过Lua语言的协程机制来实现,使得每个任务都可以在自己的执行上下文中运行,而不会相互干扰。 二、sys库任务管理API函数 sys库是LuatOS的核心系统库,提供了任务调度、时间管理、消息传递等关键功能,本文主要介绍其任务管理相关API函数及其运用示例。 2.1 程序框架 在程序的开头我们必须调用sys库;在程序的结尾,我们需要在代码的最后一行调用sys.run()函数来启动主程序,让框架内的任务代码会在 sys.run()中运行。 一个Lua程序的框架是这样的: 2.2 任务管理 任务管理包含:创建任务sys.taskInit()、任务等待 sys.wait()和sys.waitUntil() 。 1)创建任务sys.taskInit() 在创建任务时,需要指定一个任务函数,该函数包含了任务要执行的代码。 比如,我们创建一个喂饭的任务feed。 代码示例:先定义“喂饭”函数,然后创建并启动“喂饭”任务。 2)任务等待sys.wait() 暂停当前任务的执行一段时间,单位为毫秒。在等待期间,系统会调度其他任务执行,实现多任务并发。 代码举例: 我们依旧利用上面的程序,我们在代码第三行后面,加一句sys.wait(1000) 即可。 每隔一秒,打印一次 I'm feeding..... 3)任务中断sys.waitUntil() 允许当前的Task协程暂停执行,进入等待状态。在等待过程中,它会监听指定名称的事件(即 topic)是否发生,同时会记录时间。 如果在指定的时间内,该事件发生了,协程会恢复执行; 如果超过了指定的时间,事件还未发生,协程也同样会恢复执行。 一般这里都会设置判断条件:指定时间内,事件发生执行A,超时未发生执行B。 一般和sys.waitUntil()配合使用的,是sys.publish(): sys.publish()它的作用就像是在系统里广播消息,让其他关注该消息的任务能够接收到并做出相应反应——比如,sys.waitUntil()。 三、多任务实战演练 我们利用一个示例来实际感受下这几个函数的用法: 一位女主人,在烧水的同时,还要扫地; 水烧开后,停止扫地去关火,并沏茶。 分析上述例子,女主人共有三个任务:烧水、扫地、沏茶 这三个任务分别运行如下: 接下来,我们来对这三个协程单独分析: 1)烧水协程: 烧水5秒后,sys.publish()发消息:“水烧开了”。 代码如下: 2)扫地协程: 扫地持续进行,sys.waitUntil()等待收到了:“水烧开的消息”,停止扫地;同时sys.publish()发送消息:水烧开了,不扫地了,去沏茶。 代码如下: sys.waitUntil()如果在1s内接收到了水烧开的消息,则返回true给result,继续执行下面的if程序,打印“水烧开了:我去关火”; 如果超时1秒没有接收到,则返回false给result,继续执行下面的if程序,打印“水还没烧开,我要继续扫地”。 3)沏茶协程: 在烧水的5秒钟内,一直处于等待状态,直到水烧开后,sys.waitUntil()收到:“水烧开了,不扫地了去沏茶”这条消息,开始执行沏茶协程。 代码如下: 我们把完整代码下载到Air780EPM开发板上,看下运行效果: 这样,我们就利用sys.publish()和sys.waitUntil()完成了一个多任务协程程序。 附完整代码: 今天的内容就分享到这里了~
  • 2025-5-27 13:31
    159 次阅读|
    0 个评论
    今天特别分享基于Air780EPM的GPIO控制LED实现方案 ——通过硬件层精确控制电路参数,结合LuatOS高效API实现快速原型开发,适用于智能照明、状态指示等物联网场景。 一、GPIO直接驱动LED 1.1适用场景 低功耗场景:LED电流 ≤ 5mA(普通GPIO的驱动能力限制)。 休眠需求:若需LED在休眠时保持亮灭状态,需使用AGPIO。 注意:Air780EPM所有AGPIO的驱动电路总和上限是5mA。 1.2 电路设计 1.3 限流电阻计算 公式:R=(VGPIO−VLED)/ILED 其中: VGPIO=3.0V(Air780EPM的GPIO电平)。 VLED:不同颜色LED的正向压降(典型值): -- 红色LED:2.0V∼2.2V -- 绿色LED:2.8V∼3.3V -- 蓝色/白色LED:3.0V∼3.6V ILED:目标电流(通常选5mA) 示例计算: 红色LED(VLED=2.0V,I=5mA): R1=(3.0V−2.0V)/5mA=200Ω(选220Ω标准电阻) 绿色LED(VLED=2.8V,I=5mA): R2=(3.0V−2.8V)/5mA=40Ω(选51Ω标准电阻) 蓝色LED(VLED=3.3V,I=5mA): R3=(3.0V−3.3V)/5mA=−60Ω(无法直接驱动,需三极管或MOSFET) 1.4 LuatOS代码示例 二、三极管驱动LED(中高功率场景) 2.1适用场景 电流需求:LED电流 5mA(如蓝色/白色LED)。 高电压支持:需外部电源(如5V)驱动高亮度LED。 2.2 电路设计 2.3 电阻计算 基极电阻R4:R4=(VGPIO−VBE)/IB=(3.0V−0.7V)/1mA=2.3kΩ(选2.2kΩ或2.7kΩ) LED限流电阻 R3(以5V电源驱动蓝色LED为例):R3=(5V−3.3V)/20mA=85Ω(选82Ω或100Ω) 2.4 LuatOS代码示例 与GPIO直接驱动代码相同,通过控制GPIO电平开关三极管。 三、PWM调光(亮度调节) 3.1适用场景 调光需求:通过占空比调节LED亮度。 呼吸灯效果:结合PWM和延迟实现渐变效果。 3.2 电路设计 - 直接驱动小功率LED: - 驱动大功率LED:通过三极管/MOSFET连接PWM信号。 3.3 LuatOS代码示例 四、其他驱动方式 4.1NMOS驱动(大功率场景) 适用场景:LED电流 500mA(如高亮度LED灯带)。 电路设计: 4.2 继电器驱动(高电压场景) 适用场景:控制220V交流LED灯。 电路设计: 五、RGB LED驱动方案 5.1电路设计 - 共阴极RGB LED: - 共阳极RGB LED:需通过三极管分别控制各通道。 5.2 LuatOS代码示例 六、注意事项 6.1 GPIO驱动能力与LED兼容性 红色LED:可直接驱动(需合理电阻)。 绿色LED:若压降≤3.0V,可直接驱动(如VLED=2.8V)。 蓝色/白色LED:需通过三极管/MOSFET驱动。 RGB LED:蓝色/白色需外接驱动电路。 6.2 AGPIO的使用限制 总电流限制:所有AGPIO的总驱动电流不能超过5mA。 例如:同时驱动3个LED,每个LED电流2mA,总电流6mA,需降电流或改用普通GPIO。 休眠特性:AGPIO在休眠时保持电平,适合常亮指示灯。 6.3 休眠模式下的GPIO行为 普通GPIO:休眠时断电,需加下拉电阻保持低电平,LED熄灭。 AGPIO:休眠时保持电平,适合需要常亮的指示灯。 Wakeup IO:仅支持输入,不可作为输出。 6.4 电路保护 TVS防护:按键或机械开关需加TVS管(如5V TVS)。 过流保护:使用保险丝或自恢复保险器。 七、LuatOS开发关键函数 7.1 GPIO控制 最新资料详见资料中心:https://docs.openluat.com/air780epm/luatos/api/core/gpio/ gpio.setup(pin, mode, pull, irq_type):配置GPIO模式。 gpio.set(pin, level):设置电平(gpio.HIGH/gpio.LOW)。 gpio.get(pin):读取输出电平状态。 7.2 PWM控制 最新资料详见资料中心:https://docs.openluat.com/air780epm/luatos/api/core/pwm/ pwm.setup(pin, freq, duty):初始化PWM参数。 pwm.start(pin) / pwm.stop(pin):启停PWM。 pwm.setDuty(pin, duty):调整占空比。 八、总结 直接驱动:适用于低功耗LED,需合理计算电阻。 三极管/MOSFET:扩展驱动能力,支持高电压/大电流LED。 PWM调光:通过占空比调节亮度。 RGB LED:分通道设计,蓝色/白色需外接驱动电路。 LuatOS开发:通过GPIO和PWM函数实现控制,注意AGPIO的电流限制和休眠特性。 通过以上方案,基于Air780EPM可灵活控制LED灯,满足从简单指示到复杂调光的需求。 今天的内容就分享到这里了~
  • 2025-5-27 13:24
    140 次阅读|
    0 个评论
    本文以Air8101开发板为例,演示SoftAP配网示例要点。 最新源码及实操教程详见: https://docs.openluat.com/air8101/luatos/app/wifi/softap/ 一、主要示例代码解析 1.1 启用AP模式: 启用Air8101开发板AP模式,AP是Access Point的缩写,即无线接入点,它是一个无线网络的中心节点,可以看成是一个服务器。 SoftAP配网也就是让Air8101工作在AP模式下,创建一个Wi-Fi热点,用户使用手机或者电脑连接这个热点,通过配网页面将要连接的Wi-Fi信息发送给Air8101,从而实现配网。 1.2 启动一个HTTP服务器,管理Wi-Fi接入点的配置和连接: 通过HTTP服务器实现对Wi-Fi热点的管理和控制。 可以在网页通过HTTP请求控制LED的开关、发送任意消息、扫描可用的Wi-Fi网络、获取AP列表,以及连接到新的Wi-Fi网络。 二、Air8101配网系统实操 2.1配网系统展示 通过手机或者电脑登录配网网页(IP地址:192.168.4.1),显示内容如下: 2.2 配网系统实例 使用手机或电脑登录到Air8101开发板的网络IP地址,此时手机或电脑等登录设备作为客户端,而开发板则充当服务端,双方进行简单的通信交流。 以下统一以服务端和客户端来分别指代开发板和登录设备。 1)客户端通过配网页面点击Wi-Fi扫描按钮 可以实现WiFiScan的功能,显示在配网系统页面以及LuaTools日志中。 如下所示: 2)服务端向配网页面发送消息 用户在客户端网页的输入框中键入消息,然后将这个消息通过POST请求以JSON格式发送到服务端的/msg路径,服务端监听到请求后,解析获取到的消息,并通过log打印出来。 3)客户端通过配网页面发指令,让服务端连接到新的Wi-Fi网络。 如下图所示,服务端连接到Wi-Fi热点: kfyy123,连接成功后,会发布一个“IP_READY”消息。后续可以通过订阅该消息,实现联网后的业务逻辑实现。 三、配网常见问题 3.1 手机或电脑无法打开配网网页IP地址? 注意开发板需要配置成AP模式,创建一个Wi-Fi热点,手机或电脑打开配网网页前,需要先连接上前面创建的热点。 3.2 如何获取开发板的MAC地址? 通过wlan.getMac()接口即可,返回值是以十六进制形式呈现。 3.3 SoftAP配网优缺点 --优点:SoftAP配网方式很可靠,成功率基本达到100%,设备端的代码也简单。 --缺点:需要手动切换手机Wi-Fi连接的网络,先连接到Air8101的AP网络,配置完成后再恢复连接正常Wi-Fi网络,操作上有一定的复杂性。 如果想要更简洁的配网方式,可参考下图链接,使用AirKiss配网方式: 今天的内容就分享到这里了~
  • 2025-5-27 13:12
    114 次阅读|
    0 个评论
    为确保Air8000设备顺利使用Wi-Fi功能,请按以下实操要点操作;快快学起来吧~ 一、Air8000升级Wi-Fi实操要点 本文以Air8000核心板为例,采用串口线刷方式升级Wi-Fi固件。 实操要点如下: 1)首先将核心板正面开关拨到供电端,背面开关拨到ON。 如下图示: 2)Air8000核心板的UART10通过串口小板连接到电脑,核心板可以通过USB供电或者电池供电。 如下图示: 3)先选择4G固件进行烧录(此处通过USB升级),新朋友如果不清楚烧录操作,可参考下方教程。 如何使用LuaTools烧录软件: https://docs.openluat.com/air8000/luatos/common/download/ 4)正确插入USB转TTL串口板并且USB成功连接电脑后,电脑的设备管理器可以看到USB-SERIAL CH340的端口。 5)打开LuaTools工具,选择通用串口打印,选择上一小节显示的串口号,波特率选择2000000。 6)选择Wi-Fi固件进行烧录(注:Air8000S是指Air8000内部的协程处理器): 7)出现“下载准备中”字样时,需要按下Air8000核心板的下载按键(注意:如果按下载按键没有反应,可以尝试多按几下)。 8)等待Wi-Fi固件下载成功: 今天的内容就分享到这里了~
  • 2025-5-27 12:53
    95 次阅读|
    0 个评论
    一、 Air8101开发板AirKiss配网示例 下文以Air8101开发板为例,演示AirKiss配网实操要点。 此配网方式极为简单,使用示例源码将Air8101设置成AirKiss模式,再通过vx平台进行AirKiss配网即可。 最新源码及实操教程详见: https://docs.openluat.com/air8101/luatos/app/wifi/airkiss/ 1.1 主要示例代码解析: 1)启动AirKiss配网 通过wlan.smartconfig(wlan.AIRKISS)启动配网: 如果配网成功,系统会发布一个"SC_RESULT"消息,消息包含配网成功的Wi-Fi的SSID和密码,配网成功后可以将SSID和密码保存到fdb,做持久化存储。 如果配网超时,则停止配网过程并等待3秒后重新开始配网。 2)订阅“IP_READY消息” 在网络连接成功时,会发布一个系统消息IP_READY,联网成功,可以根据自己的业务逻辑实现相应的功能。 3)通过按键清除配网信息 通过长按BOOT按钮(持续3秒以上)来清除设备保存的Wi-Fi配网信息(SSID和密码),并提供两种处理清除后的方案:直接重启设备/通过快速闪灯提示让用户自行复位重启。 这样设计可以方便在设备丢失或需要重新配网的情况下,能够轻松地清除旧的配网信息。 1.2 通过vx平台进行AirKiss配网 1)微vx搜索“airKiss一键配网”,本教程使用的是巴法云的Airkiss配网功能: 2)进入小程序,切换协议到AirKiss配网: 3)连接Wi-Fi即可: 1.3 配网成功显示 通过LuaTools日志显示,可以看到AirKiss配网成功,并已保存到fdb中,掉电不丢失。 今天的内容就分享到这里了~
相关资源
  • 所需E币: 0
    时间: 2025-2-27 14:30
    大小: 2.38KB
    上传者: huangyasir1990
    一、什么是MQTTMQTT(消息队列遥测传输)是ISO标准(ISO/IECPRF20922)下基于发布订阅范式的消息协议。它工作在TCP/IP协议之上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。二、MQTT特点轻量级协议:设计简单,占用带宽少,特别适合嵌入式设备和不稳定的网络环境。发布/订阅模型:客户端通过主题(Topic)发布消息,订阅者通过主题接收消息,彼此不直接通信。可靠性保障:提供三种服务质量(QoS)等级,确保消息可靠传输:QoS0:至多一次(不确认,可能丢失)。QoS1:至少一次(需要确认,但可能重复)。QoS2:仅一次(确保消息不丢失且不重复)。持续连接:使用TCP/IP连接,通过心跳包(Keep-Alive)保持连接稳定。支持离线消息:使用“保留消息”和“持久会话”功能,实现离线设备接收消息。安全性:支持SSL/TLS加密,结合用户名和密码进行身份验证。三、项目需求:在开发管理系统时,需要在项目中控制一些物联网设备,因为我们开发的是管理系统,所以在管理设备的时候需要有通用性和扩展性!比如空调设备A客户用的是美的品牌B客户用的是格力,过两天又来一个供应商,我们怎么扩展,这个时候在页面上控制这些设备的时候就需要根据设备品牌的不同调用不同的实现类来操作空调,不止空调比如断路器、门禁等等供应商不同控制他们的设备方法不同、参数不同、协议也有可能不同,但是经过我的观察我发现:比如空调设备虽然空调设备的供应商不一样,但是空调设备提供的功能一般都是一样的只有个别的有区别:开关,调节风速、模式基本的设备功能,那别的设备肯定也有这种特性,利用这种特性我觉得觉得可以给我们对接的设备定义一个接口类。四、springboot项目中集成mqtt服务为了模拟的更加真实点儿,我这边做了两个端,分别是客户端和服务端,代码基本都一样,客户端就是将服务端复制过来改了下关键部分。除了springboot的依赖,其他的都有注释,如果mqtt的依赖引入报错的话,在重新引入一下就行.在application.yml文件中加入mqtt的配置##MQTT配置mqtt: host:tcp://127.0.0.1:1883 userName:admin1 passWord:1234567 qos:1 clientId:serve timeout:10 keepalive:20注意一定要改clientId,不然启动的时候会报错连接失败,然后一直在重新连接。改一下回调类MyMQTTCallback中的messageArrived方法:/**   *@paramtopic   *@parammqttMessage   *@throwsException   *subscribe后得到的消息会执行到这里面   *订阅者收到消息之后执行   */  @Override  publicvoidmessageArrived(Stringtopic,MqttMessagemqttMessage)throwsException{    System.out.println("客户端接收到消息之后调用");    log.info("接收消息主题:{},接收消息内容:{}",topic,newString(mqttMessage.getPayload()));  }
  • 所需E币: 0
    时间: 2024-8-27 15:22
    大小: 40.01MB
    上传者: zzj
    ESP32-C3是搭载了开源指令集RISC-V的32位低功耗、低成本、安全的物联网芯片,本书也是该芯片原厂乐鑫科技的官方作品。本书从物联网工程开发的必备知识入手,循序渐进地介绍了硬件设计、外设驱动、ESP-IDF开发环境搭建、Wi-Fi网络配置、本地和云端控制、OTA升级原理、电源管理、低功耗优化、设备安全功能、固件版本管理和量产测试等方面的内容。物联网工程开发涉及的知识点很多,本书根据所涉及的知识点将全书分为4篇,分别是准备篇(第1~4章)、硬件与驱动开发篇(第5~6章)、无线通信与控制篇(第7~11章)、优化与量产篇(第12~15章),可帮助读者更好地掌握相关的知识点。
  • 所需E币: 1
    时间: 2024-8-19 16:10
    大小: 14.14MB
    上传者: milktea88
    第1章物联网与RFID技术第2章RFID系统的基本构成第3章物联网RFID系统架构第4章RFID使用的频率及电磁波的工作特点第5章天线基础第6章RFID中的天线技术第7章RFID电感耦合方式的射频前端第8章RFID电磁反向散射方式的射频前端 第9章编码与调制第10章数据的完整性与数据的安全性第11章电子标签的体系结构第12章读写器的体系结构第13章物联网RFID中间件第14章物联网RFID标准体系第15章物联网RFID在交通运输领域的应用第16章物联网RFID在制造与物流领域的应用第17章物联网RFID在防伪和公共安全领域的应用
  • 所需E币: 5
    时间: 2024-2-21 18:00
    大小: 19.05MB
    上传者: 小恶魔owo
    烧录工具,目前支持各类芯片,可烧录多行固件,以及支持固件地址自定义!工程师必备烧录工具,自测ESP32/ESP8266完美适配可用!
  • 所需E币: 0
    时间: 2023-9-19 17:20
    大小: 456.39KB
    上传者: 香港润芯小云
    BL0937B是一颗宽量程单相多功能电能计量芯片,适用于单相插座表、单相插排、智能家电控制电路等应用,具有较高的性价比。BL0939免校准、用电安全监测、双路、可多路级联.  十相交/直流电能计量芯片BL0910
  • 所需E币: 0
    时间: 2023-9-19 17:17
    大小: 2.14MB
    上传者: 香港润芯小云
    ,BL0937B是一颗宽量程单相多功能电能计量芯片,适用于单相插座表、单相插排、智能家电控制电路等应用,具有较高的性价比。BL0939免校准、用电安全监测、双路、可多路级联。十相交/直流电能计量芯片BL0910
  • 所需E币: 1
    时间: 2023-7-29 18:00
    大小: 31.53MB
    上传者: Argent
    蓝牙4.0BLE开发完全手册物联网开发技术实战
  • 所需E币: 0
    时间: 2023-6-10 19:56
    大小: 6.46MB
    上传者: samewell
     物联网的构建模块-构建物联网的技术和解决方案.pdf
  • 所需E币: 1
    时间: 2023-3-30 15:58
    大小: 3.52MB
    物联网之雾:基于雾计算的智能硬件快速反应与安全控制
  • 所需E币: 5
    时间: 2023-2-20 20:46
    大小: 1.72MB
    上传者: ZHUANG
    基于物联网高安全MCU芯片的回样验证
  • 所需E币: 5
    时间: 2023-2-13 11:21
    大小: 2.66MB
    上传者: czd886
    物联网环境下的移动机器人定位与控制研究.
  • 所需E币: 5
    时间: 2023-2-14 21:24
    大小: 1.38MB
    上传者: czd886
    基于物联网的移动机器人综合实训平台设计
  • 所需E币: 0
    时间: 2023-2-11 21:37
    大小: 1.52MB
    上传者: ZHUANG
    无线传感器网络技术在物联网中的应用趋势探讨
  • 所需E币: 0
    时间: 2023-2-11 19:21
    大小: 1.23MB
    上传者: ZHUANG
    基于物联网技术的计算机网络安全问题及应对策略研究
  • 所需E币: 5
    时间: 2023-2-11 17:23
    大小: 3.26MB
    上传者: ZHUANG
    对电信无线通信网络在物联网中的技术应用分析.
  • 所需E币: 3
    时间: 2023-2-11 14:44
    大小: 1.24MB
    上传者: ZHUANG
    基于复杂网络的泛在电力物联网设计方法
  • 所需E币: 4
    时间: 2023-2-11 14:11
    大小: 387.82KB
    上传者: ZHUANG
    试析物联网对计算机网络技术发展的影响
  • 所需E币: 5
    时间: 2023-2-11 12:05
    大小: 1.19MB
    上传者: ZHUANG
    网络安全标准对物联网系统安全保障作用浅析
  • 所需E币: 5
    时间: 2023-2-11 11:29
    大小: 1.11MB
    上传者: ZHUANG
    基于组合神经网络的物联网入侵检测方法.
  • 所需E币: 5
    时间: 2023-2-11 10:49
    大小: 2.03MB
    上传者: ZHUANG
    面向物联网的僵尸网络流量检测与应用