故事
necAnalyzer诞生于个人需要一款NEC红外遥控分析工具,无奈现有的方案都不是很合适,于是决定做一款。
设计之初,就确定了使用网页客户端,终端用ESP32-C3开发板,通过WiFi-webSocket实现通信,最终方案也顺利完成。
当决定把工具分享出来后,终端配网、webSocket相关配置始终没有搞定,除非上小程序、APP,太折腾了。
一个偶然的机会,让我知道了居然有Web Serial API这东西,顿时惊为天人,现在浏览器居然也可以直接和硬件通信了?
(没见识的我.jpg)
怼上数据线就用,这才是我想要的工具。
事故
说干就干,终端就是缝合下例程,IDF monitor输出正常 ✔
到了网页端,问题来了。串口连接正常,但就是收不到数据,也没有错误信息。说是开发板的问题嘛,但用桌面端串口工具通信又正常!
从照MDN、chrome文档手撸,到网上CV与AI生成的代码,还有网上众多在线串口工具,表现完全一致。
甚至怀疑过是不是Web Serial API的问题,于是又是换浏览器,换浏览器版本,依旧无效。
不行了,呼叫外援,但一试都说在线工具没问题!没问题?那难道ESP32-C3的问题?还是IDF的问题?至此思绪纷飞,开始怀疑人生!!!
真的猛士,敢于直面惨淡的人生,我决定再挣扎一下。既然桌面端可以用,那先用桌面端接收串口数据,再转发到网页又不是不能用。
代码撸起、调试,心心念念的信息终于收到,内容却是启动消息:开发板进入了下载模式!
随后二次折腾开始,什么“CH340网页串口调试 下载模式”啊,从必应问到好搜,从AI问到大佬……最终无果。
回光返照之际,也许是肌肉和心一样都累了,脑子终于上线。心想CH340与Web Serial API“不兼容”,那其它的串口芯片呢?
垂死病中惊坐起,连忙翻起被灰尘掩埋的另一片ESP32开发板,烧录、连接,通了!
5分钱引发的惨剧
CP2132没问题,那就是CH340的问题了。然而CH340方案那么常见,Web Serial API也是一项出来了多年的技术,如果真有兼容问题,不会说网上查不到任何消息才对。很可能是我手上的芯片本身有了故障,或芯片版本问题。
想起之前的项目,手头就有CH340芯片,决定换一片试试。芯片找好,正打算开干,这时才留意到手头这一块安信可的ESP-C3-32S-Kit开发板, 并没有常见的那两个8050,而这两个8050正好是用于串口硬件控制的。
找到开发板的规格书,发现CH340的RTS直接接到了C3的EN,DTR接到了IO9
难道和这有关?累了,什么真值表、上电时序毁灭吧,元件都有预留位,改回常规方案,上电验证最简单。
拆掉R4/R6,补上VT1/VT2两个8050,R1/R2两个10K电阻。
插电、开机,WOOOOOO~ ,网页串口通信成功!
至此,得出不严谨的结论:
ESP32-C3&CH340方案,省掉自动下载控制那两个8050,会影响 webSerial 与 nodeJS的serialport 包,连接后会让单片机进入下载模式。
最后的最后
So, hello AI-Thinker, like Linus's greeting to NVIDIA.