完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
大家好
我一直在使用 NodeMCU 和 Lua 来创建通过 MQTT 进行通信的监控节点。我试图将 SDS011 灰尘传感器添加到这些节点之一但我收到 NodeMCU 的随机异常重置这似乎只是由串行连接处于活动状态引起的。SDS011每秒发送一条消息我已经尝试了硬件和软UART结果相同。 我已经检查了 SDS011 的规格串行连接是 3.3v所以我认为它不应该是任何物理的。 即使使用如下所示的精简脚本我也会崩溃我已经在多个 NodeMCU 上进行了测试结果相同。 脚本 代码全选local l_sds_data = "" function sds_read(l_sds_data) print("sds_read "..node.heap()) end s = softuart.setup(9600, 2, 3) s:on("data", 10, sds_read) 我发现让 NodeMCU 保持活动状态的唯一方法是使用 init.lua 中的以下代码检测软复位并触发外部复位。如果没有这个硬重置wifi 将永远不会重新连接。您可以在日志中进一步查看此代码的输出。 代码全选-- Report on startup reason rawcode, reason, exccause, epc1, epc2, epc3, excvaddr, depc = node.bootreason() if reason == 0 then print("Power up") elseif reason == 1 then print("Hardware watchdog") elseif reason == 2 then print("Exception reset") print("EXCCAUSE "..exccause) print("EPC1 "..epc1) print("EPC2 "..epc2) print("EPC3 "..epc3) print("EXCVADDR "..excvaddr) print("DEPC "..depc) gpio.mode(6,gpio.OUTPUT,gpio.PULLUP) gpio.write(gpio.LOW) elseif reason == 3 then print("Software watchdog") elseif reason == 4 then print("Software restart") elseif reason == 5 then print("Wake from deep sleep") elseif reason == 6 then print("External reset") end 每隔几分钟它就会崩溃如下面的日志摘录 代码全选sds_read 35088 sds_read 35088 sds_read 35088 sds_read 35088 ets Jan 8 2013,rst cause:2, boot mode:(3,6) load 0x40100000, len 27928, room 16 tail 8 chksum 0x8c load 0x3ffe8000, len 2584, room 0 tail 8 chksum 0xf8 load 0x3ffe8a18, len 8, room 0 tail 8 chksum 0x12 csum 0x12 {‚Ÿâsä2’lŒ„ ìn~2cb„oàŽoäo~#Žƒ$ŽŽlònoŸŒonž 䛂’`~ƒ2„Nožì²œ¾{$~ƒc„noŸì’ƒ² „ãäƒoäÛr‚ûo|ìd$l c’œðŸ|r’dœnà‚nâ l`Œãr’lŒ$Œd`„âr²p‚äl„l Œãr“l¾Œl$`{lŽ‚b ŒŸÂcBì|ŒcprÜãÜbœplœ$ ìòNÎ2Nnâ $#lŒŽŒ€d$d$Žì„Œ€$rd€oü „¾"bl$ŽÛä#„¾BblŒcrl{ NodeMCU 3.0.0.0 built on nodemcu-build.com provided by frightanic.com branch: master commit: 8d091c476edf6ae2977a5f2a74bf5824d07d6183 release: 3.0-master_20200610 release DTS: 202006092026 SSL: false build type: float LFS: 0x0 bytes total capacity modules: bme280,dht,file,gpio,i2c,mqtt,net,node,softuart,struct,tmr,u8g2,uart,wifi build 2020-07-06 17:40 powered by Lua 5.1.4 on SDK 3.0.1-dev(fce080e) Exception reset EXCCAUSE 0 EPC1 1076054560 EPC2 0 EPC3 0 EXCVADDR 1076341284 DEPCàrl $Üž| Œlà|Œlìb|‚䲟|"ŒpŒp~òoŸloNÜãìcpŒŽ$r$rlpòoàƒl#oã|„ìŽã„bŒònoïl„ l on$`orŽ›’nä’`pûoàr„ÜœãàbNâ|ŒÛŽ"Œònoïl`2Nn$`orŽÛ’nãl`pûoàr„ÜœÂlbNâ|"Œònoïl`nol Nr²Ÿî„l r’ÛNŒ$`rƒ’›oä2’lŒŒäo~cc„p2roäN~BŽpâ€r$ûon¾ „noŸì’ƒ² ‚2Œonž 䛂“`~ƒb„noŸì’ƒ’ Œãä‚Nì|rƒòN|ì$ll B’ß|r“$Üoàƒoã l ŒÂœn‚l„l2„l`Œãr“lä$„l`Œãr’l¾Œl$`rl‚sl„ßâ„"ì„bŒBprœÂãBÜp$Ül äûoïoNâ d#$ŒŽ„l$l$Žì„Œ€$Žs$€oü ŒžãŒ#ll’ìc„ßâ„blŒcrl{ NodeMCU 3.0.0.0 built on nodemcu-build.com provided by frightanic.com branch: master commit: 8d091c476edf6ae2977a5f2a74bf5824d07d6183 release: 3.0-master_20200610 release DTS: 202006092026 SSL: false build type: float LFS: 0x0 bytes total capacity modules: bme280,dht,file,gpio,i2c,mqtt,net,node,softuart,struct,tmr,u8g2,uart,wifi build 2020-07-06 17:40 powered by Lua 5.1.4 on SDK 3.0.1-dev(fce080e) External reset Connecting to WiFi access point... > Connection to AP(BTHub6-TPRH) established! Waiting for IP address... Wifi connection is ready! IP address is: 192.168.1.187 Startup will resume momentarily, you have 10 seconds to abort. Waiting... Running sds_read 35072 sds_read 35072 sds_read 35072 我正在使用来自 nodemcu-build.com 的固件主分支 我已经完成了一些基本测试例如拔下 SDS011 连接然后我没有得到任何重置当然也没有数据。 谁能告诉我哪里出错了 |
|
相关推荐
1个回答
|
|
我最近也遇到跟你一模一样的问题,问下楼主最后解决了吗?uart读取SY210激光传感器的数据,运行一会就重启,而且一直连不上wifi,只能按reset键重启,softuart也试过一样问题,后来把那哈uart.on的第二个参数设的很大,50个字节后回调,有点效果,能正常运行个半小时再重启,感觉好像是数据太多溢出了,但是我不太会整
|
|
|
|
只有小组成员才能发言,加入小组>>
419浏览 6评论
352浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
334浏览 5评论
337浏览 4评论
317浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-24 08:18 , Processed in 0.759035 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191