ash-liu / kid_blockly

为了方便自己家小孩学习block编程做的玩具,界面和功能多来自于网络,仅根据个人喜好做添加和修改。
0 stars 0 forks source link

通过网络而非串口连接控制设备 #11

Closed ash-liu closed 3 years ago

ash-liu commented 3 years ago

通过一个esp8266作为转接,来实现编程电脑或者ipad与被控pico的分离。毕竟有一个usb线连着不方便,对于小车之类的实验非常不友好,如果改为走wifi,并且可以通过ipad之类的移动端操作,可玩性更高。

ash-liu commented 3 years ago

结合手头现有的东西探索了一下,原理上应该是没有问题的:

  1. 首先是wifi透传模块。刚好清理柜子找到了一个esp-01,安信可最小的esp8266模块,可以把它改装成一个wifi的串口透传模块。在网上找了一个现成的固件 _提取码: ss12 固件的使用参考它里面的文档;经过测试,透传功能正常。

  2. 对pico固件的改造。为什么要改造pico的固件?最开始我也没仔细想,以为是弄一个usb转串口的板子,然后连接pico的usb就ok了,但仔细一想,感觉不对劲:因为pico和usb转串都是slave设备,显然不能这么用,需要整一个类似树莓派那样master的设备才行,这显然太麻烦了。所以,更好的办法应该是让python的REPL通过串口来交互,以前在移植stm32的microPython时候刚好碰到过,所以比较熟悉,直接打开define即可。对于pico默认的是用pin-0和pin-1作为REPL over UART,经过测试,也是没问题的。

  3. 最后,应该就是组装的工作了。把REPL over UART与esp01的UART相连即可,再剩下的就是网页那边的工作了。

ash-liu commented 3 years ago

跟新一下进度:

上面的设想还是有问题,因为当前的透传固件只能支持tcp/udp/mqtt,所以并不能直接通过websocket来访问,一个可能的方案是依然还是走tcp的底层,但是需要在pico那边通过串口来模拟websocket的连接协议,这显然又是走歪了。更好的办法还是在透传模块上实现,所以去找了一圈,基本没发现支持websocket的固件,那只能自己动手了。

参考另一个repo:https://github.com/ash-liu/SimpleWsTraversal

利用micropython提供的webrepl来测试,基本没发现问题,至此,才真的是只剩下网页那边的工作了。

ash-liu commented 3 years ago

已经基本完成,关闭;