- 博客(14)
- 收藏
- 关注
原创 esp32(arduino)使用u8g2做oled多级菜单(双向链表)
用链表向前和向后索引的方式可以实现在最底菜单切换到最顶的菜单,我这里用光标的位置来判断是否已经达到最顶或者最低来切换页面,用当前菜单指针的前一个或者后一个菜单是否存在来判断是否到顶或者底。我们让background_current_menu(用来画图的结构体指针)和current_menu(选择游标)都切换到子菜单并串口打印出当前菜单名字,这样就可以看见一级菜单main下面的二级菜单的第一个菜单名称了----我这里将输出 wifi。定义这些菜单,并将其上下菜单关系,父子菜单关系绑定,没有的填NULL。
2025-03-24 20:55:08
1983
原创 esp32s3(espidf)使用脉冲计数(pcnt)计数ec11 单/双边沿计数 双通道计数
esp32 idf通过设置pcnt计数模式对EC11正反计数并通过中断设置阈值
2025-03-22 11:58:36
1856
原创 micropython通过umqtt连接至onenet-应用+物联
如果有机会我们下一步将实现python+kivy开发app将收到的信息显示在手机上,并通过手机来实现控制设备。到这里我们完成了基本的物联网的通讯,通过onenet平台自动计算token,自动连接,与应用端接发数据。我们已经可以完成了从应用端调用api到设备端mqtt的全过程。在处理led对象里面判断我们发来的led是亮还是灭。既然能点灯剩下的操作大家应该也都清楚怎么操作了。改写我们的处理函数增加一个led的类对象p40。这一步我们将俩者结合起来,完成全部内容。这一次代码都是之前用的了不给了。
2025-01-08 16:27:40
518
原创 micropython通过umqtt连接至onenet-uasyncio提升性能(异步协程)
多点几次属性设置就会出现属性设置失败,原因是我们post数据到平台是一个阻塞的过程,我们一直post就会导致程序一直阻塞在那,无法处理平台下发的set属性topic。我们这里使用携程就足够了。这俩完全是一个异步的程序,即(1)阻塞时候我们就可以去处理(2)中的事情,没必要一直等着(1)来浪费时间,当(1)做完了平台会返回消息我们再去处理(1)即可。会报各种错误,即我们挂起时用到的函数已经被我们await挂起了,现在是异步程序,所以我们要在原函数的def前面加入async,表面这个函数我们是异步程序。
2025-01-08 15:12:22
1818
原创 micropython通过umqtt连接至onenet-设备直接读取设备信息
我们遍历字典的params里面的列表得到参数属性,将参数属性用随机数生成的数据赋值再上传给平台,平台转发给用户。不同1,直接是应用端直接向设备单独发送一次获取信息的请求,平台这时候只是中间商代理传递我们的请求和回复请求.这一步设备会接受一个需要上传的信息,我们把相应的信息上传即可.这一步对应本篇文章.这一步我们主要通过get直接向设备请求信息,这里要区别设备post到平台的数据,该get方法是客户app或者其他应用直接向设备请求当前的信息,不知道大家有没有看第一篇应用篇的api。
2025-01-07 11:38:56
1937
原创 micropython通过umqtt连接至onenet-下发命令
同理先检查有没有新消息,然后判断来的消息是set指令还是其他指令这个由第一步我们设计过了,如果是我们的设置指令进入处理平台发来的设置消息,我们提取了id和消息内容即params里面的内容,遍历出我们需要的信息再进行自己需要的操作,我这里直接print没有操作,大家可以点一下开发板上的灯试一下。这里我设置了俩个全局变量一个用来传递平台发来的topic-replay_state_code,一个用来传递topic携带的信息-replay_msg后续用来在main里面处理消息用。订阅以后我们就可以收到如下的信息。
2025-01-06 21:00:14
585
原创 micropython用umqtt连接onenet-回复和回调函数
主要通过umqtt.robust里面的类对象的set_callback方法订阅,我们这边需要调用上一步的clinet = onenet对象,即clinet.clinet.set_callback(回调函数名),我这里定义一个on_message回调函数。这里我们改进一下读取msg里面的msg判断是否上传成功可以在if里面做后续处理如是否继续上传或者返回信息return一个状态码用来读取状态判断是否继续上传数据等,这些我们后续做完三个api对应的功能后再来做。同时我们可以看到这样的现象。
2025-01-06 17:14:13
598
原创 micropython调用umqtt的public指令上传数据到平台
经过前面的连接,下一步进行上传数据,通过umqtt.robust.public(topic,msg)函数上传数据(post指令)。1 topic(字符串格式)如果失败请确认设备是否在线.可以看到平台已经收到数据。改写一下main()里的。2msg(字符串格式)4接上一期的完整代码。
2025-01-05 20:40:25
630
原创 得到token使用umqtt连接到onenet平台
2.在onenet平台上注册,创建产品,设置属性............等,这一步建议去b站跟视频做着做,随便搜一堆。我将这个代码文件其命名为 wifi_connect.py代码为micropython官方示例的代码。成功的话可以看到print打印的信息,在下述的图中的设备状态先在线10s再离线。最新版的micropython可能已经携带umqtt.,通过在命令行输入。安装umqtt,通过在thonney命令行输入下载或者去。可以查询已经预编译的库,查询是否需要下载。5调用umqtt连接。
2025-01-04 16:48:21
616
原创 python调用onenet平台api读取和下发命令(应用端的尝试)
直接调用可以获得云平台的数据(即向平台获取数据,区别与后面Get_DiveceData,不需要设备或者平台返回值,不需要设备侧订阅或者发布,读取的数据直接为下图的数据源,该数据原由设备侧发布$sys/xsH8t9odKK/stm32/thing/property/post这个topic获得,具体返回的格式及收到的格式都在注释可见)函数用与直接向设备查询当前属性的值(而不是3中平台记录的值,即用户直接与设备沟通,需要设备向平台的对应topic返回属性值,具体返回的格式及收到的格式都在注释可见)
2025-01-03 20:25:32
2758
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
4