大家好,超能力有限,技术不高,如有错误,请批评指正。今天的文章不谈通信中的各种协议。我们来做一个物联网入门的DIY程序设计。我们用法国半导体的STM32 MCU配合ESP8266的WiFi模块,利用阿里云的物联网平台,做了一个控制LED灯开关的APP的设计。其实就是控制STM32单片机IO口的高低电平。如果我们控制一个继电器,然后控制火线的通断,就可以模拟出市面上的一个WiFi插座。而且可以绑定天猫精灵,然后就可以用天猫精灵的声音来控制开关。
在程序设计中,STM32使用的软件是Keil集成开发环境(IDE),编程语言是C语言。如果你想要程序源代码,可以联系我。超子不是专业程序员,水平也不高,只要你不反感就行。
说到单片机的型号,太多了,比如51单片机,意法半导体STM8单片机,Atmel AVR单片机,PIC单片机,德州仪器430单片机,Arduino等。以及我们要用的STM32单片机。其实用哪个型号的单片机都可以实现这种DIY编程,不过超子刚好有个STM32的硬件开发板。
ESP8266的WiFi模块,由串口AT命令控制,具有串口传输的功能,在网上很容易找到,价格也很便宜,非常适合我们爱好者做DIY设计。
准备好STM32和ESP8266这两个关键硬件之后,就可以开始设计软件了。我们首先需要在阿里云的物联网平台上注册一个账号,然后设立第一个项目。
第一次使用阿里云的生活物联网平台时,首先会进入新手指南界面,我们会点击红圈的创建项目。
我们需要输入项目名称,第一个DIY设计,你可以自己命名。然后单击确定。
项目成功立项后,你可以在项目列表中看到我们的第一个DIY设计。然后我们点击它进入项目管理界面。
接下来,我们需要创造新产品。单击创建新产品。
我们需要填写和设置产品信息。产品名称叫插座,然后品类属于电气照明下的插座。选择设备类型,不要连接到网关。因为ESP8266可以连接WiFi路由器,具有直接连接云端的能力,所以是直连设备,不需要网关。一定要注意联网方式。虽然ESP8266是WiFi模块,但是我们不能选择WiFi联网模式。那是因为我们用的是ESP8266,它是通用的,由at指令控制,在阿里云生活物联网平台没有认证。不兼容阿里云生活物联网平台APP的网络分发协议。如果我们选择WiFi模式,网络分布就过不去,编程就无法进行。所以我们来巧妙的碰碰运气,用蜂窝连接跳过阿里云生活物联网平台APP的分发网络。我们可以使用ESP8266模块自带的APP分发网络或者直接用C语言程序写WiFi的SSID和密码。然后选择Alink JSON作为无ID2认证的数据格式,最后点击完成。
产品建立后,我们进入第一个DIY设计项目下的插座产品配置界面,先设置第一步的功能定义。我们可以看到阿里云生活物联网平台自动为我们添加了电源开关的功能属性。当然,我们也可以自己添加其他功能,比如采集电流、电压、功率等电参数等。当然,这是后话。先专注入门,再求拓展。这一步我们不需要做任何改动,直接点击下一步:设备调试。然后阿里云生活物联网平台要求我们选择认证的模块。我们是一种狡猾的方式。你可以随便选一个模块,对我们的DIY设计没有影响。
选择模块后,我们点击添加测试设备。每个产品下有50个测试设备位。我们做DIY编程,50个够我们用了。
src="https://tupian.lamuhao.com/pic/img.php?k=天猫精灵怎么重新设置wifi,天猫精灵怎么绑定qq音乐9.jpg">新增测试设备时,我们要输入设备名称,就叫D001吧,大家可以自己起名字,然后点击确定。
然后会弹出激活凭证,也就是三元组信息,这个是登录阿里云生活物联网平台的认证信息,稍后我们修改C语言程序时要用到这些重要信息。然后页面下方,我们点击下一步:人机交互。
不会设计APP怎么办,我们可以使用阿里云生活物联网平台的公版APP。我们打开上图中的开关就行。
然后我们点击未设置,选择一个界面。
自己喜欢哪个,选一个就行,然后点击确认。
然后页面下方,我们要配置APP功能,多语言管理是必须设置的,可以设置品牌名称,设备名称,产品编号等等,我们做DIY设计,也没啥品牌,自己填一个就行,这些品牌信息可以显示在APP的顶部。然后我们看到了天猫精灵,没错,阿里云和天猫精灵都是阿里巴巴旗下的,所以可以直接绑定天猫精灵的账号,就可以用天猫精灵控制开关了,非常方便。然后我们点击下一步:批量投产。
然后我们勾选上对勾,点击开发完成后,我们整个配置就算完成了,接下来我们要修改C语言程序了。
首先我们看一下wifi.c的C语言源文件,wifi_mode这个变量设置使用哪种方式进行配网,大家根据注释自行选择就行,如果选择0的话,SSID和密码要在wifi.h头文件中设置 。
然后我们需要修改C语言头文件mqtt.h中的5个字符串,前三个对应新增测试设备时的激活凭证,也就是三元组信息。后边两个字符串是Topic,set是用来接收控制开关命令推送的Topic,我们需要订阅它,post是用来往服务器上传数据的,这次的实验,我们主要是接收控制命令的推送数据。那么这两个Topic再那找呢?看下图。
测试设备点击红圈圈中的查看。
然后在Topic列表下,可以看到post和set,我们把程序中的替换即可。然后我们要重新编译C语言程序,使上面的更改生效,然后再把程序下载到开发板中,等待设备在线后,使用阿里云生活物联网平台的公版APP扫码添加设备就可以控制了,那么码在哪呢?看下图。
人机交互设置页面,我们点击红圈,然后弹出页面,需要我们填写设备名称,我的是D001,然后就可以生成我们需要的添加码,因为文章中不能出现码,所以超子就不展示了。到此我们本次的DIY程序设计,基本就完成了,如果有什么问题的话,大家直接问超子就行。如果想要C语言程序源码,找我就行。