欢迎来到厦门皓佑物联科技有限公司官方网站!
您的位置: 首页 - 新闻资讯 - 物联网项目实战开发之基于STM32的实例接入new lab平台 stm32物联网平台

物联网项目实战开发之基于STM32的实例接入new lab平台 stm32物联网平台

来源:新闻资讯 / 时间: 2024-11-22


前提:
非物联网专业出身,网络协议一知半解(就是没学过),最近调试一块stm32+w5500开发板,为了学习知识,实现以个依靠阿里云物联网平台控制开发板上LED开关功能。(2020年4月24日)

1:阿里云物联网平台:
https://www.aliyun.com/
物联网平台主要是创建一个设备,收费比较便宜(创建设备两块多,资源包买了100万分钟不到十块)。第一次登陆网站会有文档一步一步指导创建,这里就不细说了。当获取了ProductKey、DeviceSecret、DeviceName这个三项之后创建设备告一段落。

**2:w5500简介:
https://www.iwiznet.cn/2017/09/这里有一篇w5500中国官网博客 功能也是连接阿里云,不过到现在也是过去三年了,阿里云界面或者一些配置需要更改。
w5500驱动:http://wizwiki.net/wiki/doku.php?id=products:w5500:driver

3:stm32与w5500相关:
stm32与w5500是使用SPI通信,mode 0/3.由于我使用的stm32cube生成代码,使用的HAL库,所以只要封装两个函数`

接下来就是实现w5500的连网操作了,不要急这里我们分三步(注由于w5500驱动因为版本不同,部分函数名可能有区别)
一,设置固定IP,可以使用计算机与w5500网线直连测试,如果接路由器请注意防止IP冲突这里参考另一位大佬博客

二,DHCP动态IP,为了防止IP冲突这里更改为动态IP获取。依旧是上一位大佬的博客

三,通过DNS获取服务器IP。上链接

这里要注意了,这位大佬获取的是“www.baidu.com”,如果你成功获取了百度的ip,那么下一步需要注意了。

我们需要获取物联网平台上我们设备的域名“{ProductKey}.iot-as-mqtt.cn-shanghai.aliyuncs.com”的iP


使用cn-shanghai因为是华东2节点。

但是你会发现获取不到ip.这里可能是因为阿里云更新的原因或者是我网络防火墙的原因吧。于是我使用了w5500博客中的另一种方法。直接Ping就好了。。。。。。。你会发现与手册的界面有一丝丝不同。(域名变了,我是没有一丝丝网络知识所以我也不知道为什么)。不过直接使用这个ip赋值吧.

4:MQTT协议:

MQTT协议是一种TCP协议?虽然不太清楚,不过有现成的库直接用!

MQTT代码源码下载地址:(http://www.eclipse.org/paho/)


将以上文件都可以在w5500的博客文件中找到,其中最重要的部分就是void MQTT_CON_ALI(void)这个函数了,它是使用MQTT协议与阿里云进行连接,发送的拼接报文如下:

参考阿里云内 MQTT 设备接入手册,计算出设备连接的各项参数,例如下列程序中框中的部分为本例程 MQTT 与阿里云连接的参数的配置,详细内容如下:

clientId = 192.168.207.115 //可以随便写的

deviceName = MQTT1 //根据自己平台上的名称修改

productKey = TKKMt4nMF8U //根据自己平台上的名称修改

timestamp = 789(毫秒值) //不变

signmethod = hmacsha1(算法类型) //不变

deviceSecret = secret //根据自己平台上的名称修改

加密部分可以使用网站生成http://encode.chahuo.com/



在tcp_client.c文件对应位置替换好上图字段,我们就可以进行连接测试了!

通过定时器中断每隔几秒ping一次服务器的方式保持自己在线。

5:Cjson相关:

json基本的格式是 “变量名”:“变量值”,变量值是另一个json格式值。就是说变量值可以是json,可以是字符串,可以是数字。。。举个例子:

{“method”:

“thing.service.property.set”,“id”:“1098258095”,“params”:

{“NightLightSwitch”:0},“version”:“1.0.0”}

这是一条控制开关的指令,其中变量名为“params”的值为{“NightLightSwitch”:0},“version”:“1.0.0”},为了获取开关值我们还需要知道“NightLightSwitch”的值,所以代码中这样实现:

6:阿里云下发,stm32上传流程:**



![串口助手显示](


到目前为止,stm32+w5500作为客户端可以接受服务端指令并做出对应操作,下面就是执行成功与否进行反馈了。


相关产品

在线客服
微信联系
客服
扫码加微信(手机同号)
电话咨询
返回顶部