你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴

[复制链接]
STM32F103-34799 发布时间:2014-4-14 11:06
说完了【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0) ,总觉得该用网络做点什么来结尾。后来看到这个活动里,有人提到Yeelink ,后来看了下,觉得还是不错的。就玩了一下,之前的网友说的稍显简略,我在这里就狗尾续貂说一下,这个网站怎么用吧。
首先,主页http://www.yeelink.net/。进去之后注册,注册之后会有一个API-KEY用于验证你访问网站上注册设备的权限,然后是建立你的设备,传感器,同时网站会产生设备ID和传感器ID,这些会在后面的HTTP请求里用到。
层次结构是:一个设备包含很多传感器,一个传感器包含很多数据点。
其次,和网站进行互动,实质是通过HTTP协议传输一些请求,比如POST,PUT,DELETE。你可以通过查看相关API来了解什么样的请求完成什么样的功能,一看便知。令人欣慰的是,这个网站有个人性化的地方,就是这里http://www.yeelink.net/developer/debug,你可以通过设置相应的接口,API-KEY,HTTP请求方式,POST数据,在不用任何终端的情况下,进行调试。这些内容怎么填,根据你的需要(创建数据点?,编辑数据点?,删除数据点?或是管理传感器),去看网站上提供的API说明http://www.yeelink.net/developer/apidoc/11,填好之后,点击发送,相应的HTTP请求和服务器响应会出现在下面。
POST /v1.0/device/xxxx/sensor/xxxxx/datapoints HTTP/1.1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
Host: api.yeelink.net
Accept: */*
U-ApiKey: xxxxxxxxxxxxxxxxxxxxxxxx
Content-Length: 11
Content-Type: application/x-www-form-urlencoded
{"value":1}
而这些HTTP请求字符串就是你的终端要发给服务器的数据。所以就算你不了解HTTP,也可以玩。话多了,自己探索吧。待会儿上传个tcp/udp客户端服务器的软件。也可以用这个软件测试下,这个网站的功能,这样就避免了在网站内部测试忽略了实际上网络传输的过程。
实现与yeelink数据交互,首先要在网站上注册并创建设备和传感器。然后调好stm32的网络终端(这里要实现的是一个tcp客户端,对于带os的lwip来说,就是创建一个线程,具体过程可以参考老衲五木的最后一章API的使用说明,测试可以用我待会儿上传的那个软件)。然后连接到可以访问网络的路由器,注意路由器的设置与stm32网络终端的ip获得方式要一致,要么静态ip,要么dhcp。我用的dhcp,一旦成功获得ip地址,就可以正常访问网络了。接下来就是根据你的要求,进行建立,绑定,连接,发送,释放的过程了。服务器使用的端口是http通用的80端口。
最后再说一句,如果你想用dns的话,可以在lwipopts.h中设置LWIP_DNS为1,同时修改一个MEMP_NUM_SYS_TIMEOUT宏,这个宏是当前超时事件数,你添加了一个功能超时事件数就会增加,因此必须与之对应,实际上设置LWIP_DHCP为1的时候也可能出现这个状况。在定义了LWIP_DNS之后,在init.c的初始化函数中多调用一个dns_init函数。之后就可以用netconn_gethostbyname函数获得ip地址了,这个函数只有两个参数,一个const char* 是穿进去的网站网址,另一个是一个ip地址结构体指针,用于填充解析出来的ip地址。返回值是一个结果
 * @return ERR_OK: resolving succeeded
 *         ERR_MEM: memory error, try again later
 *         ERR_ARG: dns client not initialized or invalid hostname
 *         ERR_VAL: dns server response was invalid
一个细节,DNS采用的域名解析的服务器默认是208.67.222.222,查了一下,美国的resolver1.opendns.com。同样你也可以用dns_setserver设置DNS服务器ip地址。里面有两个参数,一个是索引号,一个是服务器的ip地址。索引号是不能大于DNS_MAX_SERVERS这个宏的。
另一说明,LWIP实现的DHCP和DNS都是客户端,有人想实现服务器可能要自己搞哦。
好了,终于说完了。热烈欢迎拍砖讨论!

SocketTool.rar

下载

404.84 KB, 下载次数: 230

收藏 1 评论7 发布时间:2014-4-14 11:06

举报

7个回答
swustlx86 回答时间:2014-4-14 13:59:06

回复:【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴

正在做这方面的应用    顶一下   我用的wifi模块  不知道wifi模块应该怎么设置啊  是否需要用到SOCKET呢  请楼主赐教
swustlx86 回答时间:2014-4-14 14:09:01

回复:【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴

不好意思  第二个问题解决了   应该是用冒号分隔数据
沐紫 回答时间:2014-4-14 14:31:58

回复:【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴

回复第 3 楼 于2014-04-14 14:09:01发表:
不好意思  第二个问题解决了   应该是用冒号分隔数据 

继续加油!
STM32F103-34799 回答时间:2014-4-14 21:03:30

RE:【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴

wifi模块是什么接口?串口?sdio?不过话说回来都没用过,不过实质都是用tcp传输数据亦或用AT指令实现,具体要看你硬件的手册和相关资料了。有问题继续讨论了
雨中绵羊 回答时间:2014-6-27 18:58:34

RE:【MCU实战经验】+stm32f4 + uCOS-III(V3.0.3) + LWIP(V1.4.0)应用与结贴

LZ能发个历程文件吗?求指导啊。。
changzehai 回答时间:2018-5-16 20:51:02
谢谢楼主
板子粉丝 回答时间:2018-5-17 08:52:15
谢谢楼主,好资料!

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版