- 博客(14)
- 收藏
- 关注
原创 14- ESP8266通过mqtt服务器接收控制指令
我这里采取的场景模式是,远程调光就会生效,物理旋钮如果在0.1秒内有超过10单位的读数变化,则读取旋钮值,并放弃远程控制的设定。既然指令也来自于消息订阅,那么让MCU去MQTT服务器匹配自己的订阅地址订阅消息就好了,根据业务需求设置合理的订阅频率,频率不要过高,不要给服务器施加太大压力(主要我的服务器没有做集群和负载均衡,扛不住啊)。操作过程复杂,就不拍摄动图了。至此我们就完美的实现了MCU通过MQTT传输数据和进行控制的接口实现,剩下的就是采用不同的应用客户端,解析数据以及生成指令的问题了。
2023-03-04 22:21:35
1864
原创 12-ESP8266数据封装成JSON
12)封装json的方法,json结构按我这里的前后台解析协议所制定,该协议下MCU端设备数量任意,但需要标定设备编号,以便于后续接受控制指令。15)烧录并运行代码,打开串口监视器的同时,转动旋钮以及触动开关,可以看到输出的json结果同步变化,后面我们将json数据发送出去,有相关应用来进行解析。但程序在编译执行时,内存里面的t1不过是一对的01代码,如果你不知道Student的类的定义,就没办法解析出数据。8)定义两个字符缓冲,一个存放芯片hostname,一个存放封装的json数据,后者要大一点。
2023-03-02 22:48:21
1909
1
原创 11- ESP8266建立灯控web服务器
可以以非常容易的将MCU接入网络,在没有公网(全球访问)资源的情况下,内网直连操作也是比较常见的做法。现在我们来实现,通过在局域网内访问mcu芯片,通过网页对LED灯的开关进行控制,如下图。需要注意的是:当灯光当前为亮起时,页面的灯光状态为开,但按钮显示的应该是关,使得用户知道按下去时的作用。1)新建项目,Lot_web_ctrl_v1.0,修改串口波特率,导入WiFiManager扩展库。配网成功后,当有客户端http请求后,向客户端写HTML代码,客户通过浏览器端显示页面。2)导入DHT传感器库。
2023-03-02 10:24:45
1280
原创 10- ESP8266自主WiFi配网
我们可以看到,串口打印出了连接到WiFI后的IP地址,还有MCU的hostname(来自于芯片id),最后输出WiFi信号的强度值。但是如果场景发生了变化,如果是要销售的产品,如何知道用户的WiFi环境。在有路由器的场合,mcu多数作为从设备来工作即可,也就是STA身份,ESP芯片支持AP主设备、STA从设备、AP+STA主从设备模式。这里需要注意:platformio扩展库下载的WiFimanager比较老旧,里面的案例也未能提供我们所需要的,所以我们将采取导入外部扩展库的方式。
2023-03-01 16:07:14
6944
6
原创 08-ESP8266按钮处理
打开示例SimpleOnOf的主文件,先阅读代码,可以看出,代码实现了按钮的释放判断,将代码复制到我们自己项目的主文件中。MCU引脚有限,可以通过不同的按键方式和组合实现多种控制,参看LongPress示例代码,可以实现短按开关灯,长按灯光闪烁,复制到我们的主文件中,修改引脚数字。改用我们之前实验板子中的D4(2)开关和D6(12) LED,然后直接烧录代码吧,并观察结果,因其内部进行了抖动处理,所以按钮响应非常干脆,如果你手抖的厉害,可以尝试构造按钮对象时传递更长的抖动时间,如50毫秒。
2023-02-27 22:01:06
4520
原创 07-ESP8266 多任务库函数
一、TaskScheduler多任务库函数上一章节的计时器伪多线程操作中需要定义大量的变量,封装一下会提高代码的可读性。拿来主义是个不错的选择。Arduino框架提供了TaskScheduler多任务库函数。特点任务周期性执行,执行频率以毫秒(默认)或微秒(如果显式启用)为单位;支持设定执行次数(有限或无限次)按预定义的顺序执行任务支持任务执行参数的动态变化(频率、执行次数、回调方法)支持在没有任务运行时进入睡眠模式以省电支持事件驱动的任务调度支持任务优先级。
2023-02-27 21:33:39
1135
原创 06-ESP8266 模拟多线程多任务处理
一、什么是多线程从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。简单总结就是,他让我们感觉设备同时在处理很多事情,例如敲着代码听着歌。单线程模式的化,我们可能敲一下键盘,歌曲停一下。
2023-02-23 23:44:06
3090
原创 05-ESP8266 A0引脚控制LED亮度
一、使用模拟旋钮控制LED亮度在很多场合中,我需要读取连续变化的模拟数值,例如阻值变化,以及转化为阻值的温度、湿度变化等。ESP8266只有一个模拟输入接口A0,如果需要更多的模拟量输入,需要使用单片机进行扩展,在这里我们使用A0接口来读取旋转电阻的阻值进行控制。准备LED。
2023-02-22 15:51:31
2589
原创 02-VS Code 和 PlatformIO IDE开发环境
一、安装VS CodeArduino IDE 非常适合小型应用程序。但是,对于具有超过 200 行代码、多个文件和其他高级功能(如自动完成和错误检查)的高级项目,带有 PlatformIO IDE 扩展的 VS Code 是最佳选择,并且其可以有代码提示功能,这对于高效率编程非常有帮助。
2023-02-20 14:49:01
3756
原创 MySQL使用chameleon迁移openGauss问题处理
chameleon迁移工具通过Mysql数据库像openGauss迁移时的问题
2023-01-29 10:24:06
959
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人