天问esp32驱动DHT11官方程序BUG修复

天问esp32驱动DHT11官方程序BUG修复

因为刚刚开始接触天问ESP32C3pro单片机,在天问官网中采用在线编程的模式,测试了板载的OLED液晶屏、WiFi联网等官方程序,都没问题,整个图形化编程感觉挺好的。

可是当我测试DHT11温湿度传感器程序的时候,在线模式就无法编译下载了。于是我想到既然在线编程模式不行,就改用下载安装天问BLOCK,采用本地编程的模式。我在天问BLOCK中,打开官方提供的DHT11示例程序,点击天问BLOCK窗口上方的运行按钮,可以看到程序写入到开发板模块中,而且也运行起来了,液晶屏中显示了温度和湿度的信息。

  • 问题现象:

这时候,当我按动开发板中的rest按钮重启,则运行窗口和模块液晶屏中,都显示了运行错误的信息。不甘心,拔下开发板后重新插入电脑,进行冷启动,液晶屏依然显示运行错误信息。

从错误信息中看出"NoneType"的对象无法创建,所以我一度以为是DHT传感器的驱动程序没有在开发板中安装成功。因为在电脑天问BLOCK中运行开发板中的main.py程序,程序就能运行成功,而从开发板中重启程序,则程序卡死。所以我曾一度坚信是因为这个DHT驱动库是我们在程序中添加的拓展驱动,可能在电脑的天问BLOCK中,有完整的驱动库;而开发板中可能是驱动库文件不完整,所以造成了从开发板启动程序出现了错误错误。

为了解决问题,我查阅了许多网上的教程,包括B站的教学视频,但都没有结果。后来想着问淘宝客服吧,问了几家自称为"有技术支持的"网店,通过购买再次她们的模块,以期望能从技术员哪里得到帮助(这个或许就是花钱买技术吧)。结果没有一个店家能帮我解决这个问题的。

  • 问题分析:

没办法,看来求人不如求己。我突然发现天问BLOCK中自带有一个智能体,于是试着向这个智能通提出问题,通过描述问题:"esp32c3驱动DHT11重启设备时出现运行错误NoneType",结果获得的答案是可能DHT的接线或硬件出现问题。这个设备时没有问题的,因为在天问BLOCK中运行,程序能跑起来了,不可能硬件有问题。

于是我把整个错误信息重新输入进行提问:"TypeError: 'NoneType' object isn't subscriptable"。获得的结果可能是程序的初始化失败造成的。

  • 出现错误的原因

从模块中启动程序,程序为什么会初始化失败呢?我有重新认真地阅读了这个程序的Python代码,并一句一句地推演代码的运行过程,结果发现了一个问题:程序刚刚创建完一个DHT11的对象后,就立刻进入循环的读取操作!!!

这会不会有问题呢?这个DHT11的每次读取都需要1-2秒的延时的,会不会是这个DHT设备刚刚创建完成(初始化),然后就立刻进行温湿度数据的读取,会不会太快了,模块都还没反应过来呢。

于是,我抱着试试看的态度,把while循环结构中的"延时2秒"的积木代码,从结构体的后面,移到了前面来。这样,程序完成DHT11的初始化后,进入循环函数,首先有一个2秒的延时,然后才是读取温湿度数据并显示。通过这样的调整,程序在初始化和读取数据的中间,就出现了一个2秒的延时了。

  • 问题解决

我们点击窗口上方的运行按钮,把这个程序重新写入到开发板中。程序终于跑起来了。

这时候不管是按开发板的rest热重启,还是断电后重新上电的冷重启,程序都能运行起来了,问题得到了完美的解决。

由于是刚刚接触这个模块,一切都很陌生,这样的一个问题前前后后困扰了我一个多月的时间。

很明显这个就是官方程序出现的失误,可能也是没有经过重启测试,从而留下了一个BUG,这样的一个坑,却也给刚刚入学的用户造成了困扰。如果你也有这样的困扰,希望这篇文章能给予一些帮助吧。

相关推荐
深念Y21 小时前
Opencode Event 表写入优化方案
数据库·人工智能·ai·node.js·bug·优化·opencode
姚青&2 天前
Bug基本概念
bug
AI多Agent协作实战派2 天前
AI多Agent协作系统实战(三十九):AI修对了Bug,却越了权——自动化团队的第一条铁律
人工智能·自动化·bug
深念Y4 天前
AMD 芯片组驱动触发高频 SSD 写入的问题及解决方案
windows·bug·ssd·日志·芯片·驱动·amd
加油码4 天前
探秘 volatile关键字:编译器的过度优化
linux·bug·信号处理
鹿屿二向箔4 天前
keil5.39版本使用AC6编译器不能位域操作的BUG使用STM32U385系列MCU
stm32·单片机·bug
angryshan4 天前
goLang配置断点流程
go·bug
吨吨ai6 天前
# ChatGPT Plus / Pro + Codex Debug 实战:如何让 AI 从日志、Trace、异常堆栈自动定位线上 Bug
人工智能·chatgpt·bug
灰暗世界%7 天前
飞牛bug修复
bug
凌云拓界9 天前
NodeVerdict | 性能门禁:把追踪数据变成 CI 规则
ci/cd·信息可视化·开源·node.js·bug·数据可视化·安全架构