大家好,超子能力有限,技术不高,有什么错误的地方,欢迎批评指正。今天的文章不讲通信中的各种协议了,咱们做一个物联网入门的DIY程序设计,用意法半导体的STM32单片机配合ESP8266的WiFi模块,利用阿里云旗下的生活物联网平台,做一个APP控制LED灯亮灭的设计,其实就是控制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连网模式,那是因为我们使用的是通用的,AT指令控制的ESP8266,没有在阿里云生活物联网平台认证,不兼容阿里云生活物联网平台APP的配网协议,如果我们选择WiFi方式的话,配网过不去,程序设计就无法进行了。所以我们取个巧,使用蜂窝连接方式,跳过阿里云生活物联网平台APP的配网,我们可以用ESP8266模块自己的APP配网或是直接把WiFi的SSID以及密码写在C语言程序里就行了。然后数据格式选择Alink JSON,不使用ID2认证,最后点击完成就行了。
产品建立完成后,我们进入第一个DIY设计项目下插座产品的配置界面,先进行第一步的功能定义的设置,我们可以看到,阿里云生活物联网平台自动帮我们添加了电源开关的功能属性。当然我们还可以自己添加别的功能,比如采集电流,电压,功率等电量参数,当然这都是后话了,我们先以入门为主,然后在求扩展。这一步我们不需要做什么修改,直接点击下一步:设备调试。然后阿里云生活物联网平台要求我们选择一个通过认证的模组,我们本身就是取巧方式,大家随便选一个模组就行,对于我们的DIY设计没有影响。
选好模组后,我们点击新增测试设备,每个产品下有50个测试设备名额,我们做DIY程序设计,50个足够我们用了。
新增测试设备时,我们要输入设备名称,就叫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语言程序源码,找我就行。