基本信息
- stm32f103rct6作为主控,下载接口采用的是4脚SWD下载
- 板载一个CH340E模块,该模块不需要外部晶振节省空间
- 通过一个USB micro接口获得5V的输入,由AMS1117-3.3转为3.3V给单片机供电
- 板载2路LED,一个是电源指示灯,一个用户自用(用来显示当前WIFI模块状态)
- 板载2路按键,一个是单片机的复位按键,另一个是用户按键(用来)
- WiFi模组使用的是正点的8266模块,使用AT指令开发,使用mqtt通讯协议,链接阿里云飞燕平台。通过手机APP可以查看并且控制继电器闭合与断开
- 使用公版APP貌似得移植AliOS系统,没做过,而且没有参考程序或者思路。最后只能换一个其他的物联网平台
- 附件有阿里云的一些总结(虽然没有整出来,不过还是有很多有用的资料),还有机智云的资料
- OLED显示当前继电器状态,wifi初始化是否链接正常,还可以显示网络时间
- 上电开机的时候继电器保持断开状态,防止发生事故
- 使用的是ESP8266模块,没有现成的飞燕平台的固件,所以只能自己去配网
调试过程
- 首先本人使用的正点原子的ATK-esp8266模块,使用的是固件是出厂固件,出厂固件无法支持mqtt指令,于是在网上找到了支持mqtt指令的8266固件。
- 下载固件的时候,使用了很多固件的烧写软件,很多都出现莫名其妙的BUG,最后在多次试用下,发现了一个可以使用的烧写软件。
- 由于没有接触过物联网、mqtt,所以只能按着一些大佬的博客慢慢理解。
- 接入域名、mqttclientId、mqttUsername、password在阿里云物联网平台有相应的格式以及获取方式。
- 接入域名是由你创建的ProductKey加上固定的格式生成的,端口号固定为1883。
- mqttclientId由一个clientId+安全模式+签名算法类型+当前时间毫秒值等数据构成 在非clientId的数据使用一个|(或运算符)符号框起来,中间的信息使用,(逗号)隔开。
- mqttUsername是由三元素中的 DeviceName&P~~~~roductKey 构成
- password的格式是clientId + “yourclientId” +deviceName + “yourdeviceName” + productKey + “yourproductKey” + timestamp + “yourtimestamp”为哈希算法的消息,以DeviceSecret为密匙,算法为sha1生成的加密字符串~~~~
本人先使用mqttfx在电脑上调试,发现可以连接上阿里云飞燕平台。熟悉了mqtt的基本的工作方式之后来进行8266的配置。
翻车了翻车了
整了几天发现连接上了飞燕平台,可以订阅发布主题,但是使用不了公版APP,不知道配网代码怎么编写,资料也没找到,最后没办法,只能换一个平台
后期可以试试自己使用AT指令进行配网连接
寻找其他出路
- 翻车后,查找一些资料,发现机智云可以试试
- 机智云可以生成你所创建设备的代码供给参考。
- 有足够的资料让我快速学会使用机智云。
- 有现成的固件使用。只需要移植Gizwits就可以不用自己去手动敲代码配网
- 最后成功的实现了使用手机APP控制继电器的开关,不过手机APP界面比较简陋,没有阿里云的公版APP好看
- 而且代码方面比较复杂,得移植一个信息交互的小系统
总结
- 虽然没有使用阿里云飞燕平台完成本项目,但是学会了如何使用mqtt固件,如何连接服务器,如何订阅与发布主题。
- 由于本次是初次接触物联网,所以只想着完成最基本的隔空使用服务器点灯,就没有增加其他的外设,而且设计的按键电路也有点少,配网就需要一个按键,想实现其他功能得自己加一些
- 电路部分第一次使用低压控制高压,之前一直听别人说光耦隔离,这次便用上了,但是效果一般,感觉没有直播的时候推荐的那个NUD31系列效果好
- 知道了一些更加规范的布局与覆铜知识,以前的时候直接一整块覆铜给地,现在知道了晶振底下得挖空,还有继电器下方也得挖空,防止干扰到地的稳定
- 各个模块得放一起,注意电源输入与原理图要对应,得先经过滤波电容之后才能供给给芯片,芯片输出的电压得经过电容之后才可以供给给其他地方
最终的图片展示(展示的图片是第一版,后面做了一些改动,缩小了布局)
CH340旁边的电容是最初版本原理图有问题,新版原理图已经更正了