深圳市天宇豪科技有限公司
- 型 号:
- 深圳市天宇豪科技有限公司
- 价 格:
- 11.00
- 订货量:
- (pcs):>=1
- 发货地点:
- 广东省/深圳
- 产品类别:
- 温控ic
- 更新时间:
- 2016/11/7 11:25:03
商品详情
stm32 w5500连接yeelink,网页控制led
国庆前无意中通过某种途径获取了两块w5500板子,想着闲着没事,就做个tcp/ip的数据传输吧,于是本着还没有忘记计算机网络老师教的那点知识,开始折腾起来,从wiznet的ag凯发旗舰厅官网上下载下来文档和资料,不过本人是本着关于w5500的资料一律下载下来,反正就那么一点点东西,先下载下来再说,还好觉得自己记忆力还行,还知道关于计算机网络那些知识,当然和坛子里的那些个移植uip和lwip的大神来说我也就是一个菜鸟,想着第一步把ping通了再说。
然后就是去百度了一番,果然发现了有一篇程序写的不错,感觉还是有可取之处的,就下载下来,更好的是发现接口和我都是用的spi1,此举感情定是极好的,另外那篇程序是实现了udp功能,我下载进去,一下就可以了,心情感觉很舒畅,于是就去看程序究竟是怎么写的,其中寄存器名字什么的都是直接抄的,这一点不能算移植。
不过移植好了发现我同样的程序别人的可以用,为啥我的就不能用,就想到了是不是哪里敲错了什么的,于是就开始在线仿真,终于经历了一番折腾,发现是一个spi空的读取,具体什么原因我现在都不晓得为啥加上个空的读取就行,不加就会ping不通,然后我就加上去了,发先还是不行,接着呢我就想有可能是这个空的读取被编译器给我优化掉的缘故,更改编译器优化级别,发现果然可以了,我就捉摸着,这可不行呀,这风险有点大呀,并且假如我以后要加其他程序的时候万一出bug怎么办,我的原则是写出来的程序至少要经过优化级别为2的考验,思索良久,晚上在床上辗转反侧,难以入睡,想到了是底层的问题,参考以前读取spi flash的程序,里面的那个就觉得挺不错的,觉得可以从这个方面入手。
到了第二天睡醒了,动手,不用别人的底层了,用我自己以前经常用的(实际上还是抄别人的底层,坛友们别喷我),忙活了一阵,下载进去,果然可以ping通了,并且还能够直接使用udp数据传输了,心情大好,当然这之前都是各种折腾。
接着就是我觉得w5500这个芯片比较厉害的一方面,udp折腾完了以后,对于tcp client 和tcp service 简直是信手拈来,更改了初始设置即可,果然是神器也!!!然后想着这折腾出来了还应该做点有价值的东西,无意中发现了yeelink这个平台,感觉很新颖,也有一定的使用价值,不晓得哪里听过一句话,“互联网后面的时代就是物联网”,感觉还是有一定道理的。
剩下就是看yeelink的各种api,什么json我也顺便瞅了瞅,不过发现实用价值不大,干脆不看api了,直接看别人写好的程序吧,终于从arduino的字里行间看到了里面在“传输层”究竟发的是什么数据——用的是tcp client 向服务器发送一串特定的指令,然后我就仿着别人的指令自己用工具一点点摸索,具体的摸索过程就不说了,很傻逼,反正连wireshark都用上了,也没发现个啥,不过最后发现了可以提交数据了,也有了返回的数据,剩下的就是移植到stm32上。移植完成后发现程序会卡到那里,这是我用板子和电脑模拟数据发送发现的问题,接着又是debug,查看返回的数据,得到的结果是返回的数据有可能不是都在一帧里面,有可能是从中间某个地方分开,成了两帧数据发送,然后就小小的把数据接收给修改了下,发现可以获取到数据了,算是大功告成了,当时测试的时候还发现了只能获取一次,这是因为yeelink的服务器端口在你获取完后会自动给你断开连接,所以每次进行数据传输都需要把连接给重新建立了,把这个问题解决了就可以了。
最后就是下面的资料、源码和视频。视频很撇,就是个网页上开关控制led灯,因为yeelink说是10秒钟请求一次,所以对led灯的响应要慢点,最多10秒,最低的话刚好,这个莫怪。听说yeelink还有个手机端的软件,可以加进来,这样感觉还是有一定价值的。