基于STM32+机智云的花园4G远程控制器开发全教程

描述


Part.01硬件框架


 

硬件主要接线说明:单片机串口2(即PA2 PA3)接4G模组协议串口;单片机PA15,PB3-PB9一共8组输出信号接继电器(继电器采用低电平有效);通过继电器的开关来实现对交流220V信号的开关控制,从而实现对交流接触器的通断控制。


 

控制器
 

硬件组装实物参考图:


 

硬件说明:

1、单片机采用STM32F103C8T6核心板一块


 

控制器
 


 

2、带机智云gagent固件的GA211模组一个,购买链接:

https://item.taobao.com/item.htm?id=607405418406


 

控制器
 


 

3.8路5V继电器模组(带光偶隔离,信号均采用低电平有效,通过跳冒调整)


 

控制器
 


 

4、交流接触器


 

控制器
 


 

Part.02云端部署
 


 

1.注册登录账号,进入机智云开发者中心

https://developer.gizwits.com,点击左上角智能产品后创建,创建一个项目。


 

控制器
 

智能家居产品。


 

选择好产品分类,分类不影响开发,方案需要选择自定义方案,不能选择标准方案。


 

控制器
 


 

输入产品名称,例如:花园4G远程控制器,类型选择移动网络或者WiFi都可以,不影响后续开发,数据传输定长变长都可以,功耗选择正常,配置好后点击创建,完成产品的创建。


 

控制器
控制器
 


 

产品创建结束后需要进行数据点的创建,数据点决定改产品需要实现的功能,可根据自己的需求进行修改。


 

控制器
 


 

创建一个上花园喷淋数据点,显示名称就是APP显示的名称,标识名是需要写入程序的,需要用英文开头,可以搭配数字及下划线,数据点采用布尔可写。(自己需要新增功能,比如创建2位小数的温度数据点,可以创建数值可只读,分别率0.01,其他默认即可)


 

控制器
 


 

同样的方式创建,下花园喷淋,上花园灯光,下花园灯光,上花园鱼池循环泵,下花园鱼池循环泵,上院鱼池紫光灯,下院鱼池紫光灯,喷淋时间设置等数据点,可根据自己的需求自行创建。


 

控制器
 


 

2、移动应用页面编辑


 

在不使用公版APP,又不想开发代码开发APP的情况下,可选择云端的APP快速开发来进行APP快速生成,移动应用创建详细教程可参考帖子:

https://club.gizwits.com/thread-170135-1-1.html


 

创建好移动应用后,点击产品开发页面顶上的控制页面导航栏。


 

控制器
 


 

点击关联应用(需要先创建好应用),选择之前创建好的应用,点击确定,关联好应用。


 

控制器
 


 

打开单设备分享


 

控制器
 


 

配置智能场景,选择所有数据点。方便后续智能场景操作。


 

控制器
 

APP布局修改


 

控制器
 


 

修改顺序,图标大小等参数后点击保存,中间是不会随着改变而改变的,仅作为参考。


 

控制器
 


 

回到应用开发页面,点击应用构建,构建测试版,构建完成后下载APP即可。


 

控制器
 


 

3、单片机代码生成与下载

按照如图所示生成STM32f103c8x代码


 

控制器
 


 

下载代码到电脑备用,到此云顿部署结束。


 

控制器
 


 

Part.03单片机代码开发
 


 

1、CubeMX初始化配置

将下载的代码进行解压,找到STM32F103C8x.ioc文件,将其打开(需提前安装CubeMX,否则不能打开该项目文件)


 

控制器
 


 

更新库文件使其一致


 

控制器
 


 

按照如图所示,配置上院喷淋引脚,


 

控制器
 


 

同样的方式配置其它输出引脚


 

控制器
 


 

为每个文件都生成.c.h文件,方便后续代码整理


 

控制器
 


 

点击generate code,生成代码,出现库提示就点确认。


 

控制器
 


 

可选择打开项目文件或者关闭文件都可以,打开项目文件需要电脑安装keilARM,到此CubeMX配置结束。


 

控制器
 


 

2、 Bootloder文件烧录

烧录Bootloder文件是为了方便后续进行远程升级系统,详细可参考代码根目录下的《OTA使用教程.html》文件说明。将解压过后的..\Bootloder\Project文件夹下的gokit_mcu_stm32.uvprojx文件用keil ARM打开。


 

控制器
 


 

打开项目后,点击魔法标进入target,配置好烧录大小,11*1024=11264=0x2C00


 

控制器
 


 

点击Linker,配置Flash 烧写地址有效


 

控制器
 


 

点击debug,选择对应的下载器


 

控制器
 


 

下载模式选择按块擦除 Flash 区间


 

控制器
 


 

编译烧录Bootloader固件


 

控制器
控制器
 


 

3、单片机APP代码修改烧录

打开之前通过CubeMX初始化后的代码


 

控制器
 


 

找到gizwits_protocol.h文件,将注释的#define OTA_ENABLE 代码打开,让BootLoader生效。


 

控制器
 


 

点击魔法标,配置下载起始地址及大小(此处由于需要用到断电状态数据缓存,所以预留2K地址作为缓存空间)。


 

控制器
 


 

配置flash烧写地址有效


 

控制器
 


 

配置下载器擦除固定区间


 

控制器
 


 

修改变更的flash起始地址及大小


 

控制器
 


 

定义一个数组用于存储开关状态及喷淋时间,以便于后续断电记忆数据处理。


 

控制器
控制器
 


 

在gizwits_product.c新增flash读写程序。


 

控制器
 


 

处理云端下发数据,数据处理在gizwitsEventProcess函数。


 

控制器
 


 

断电记忆,开机读取存储在flash中的参数。


 

控制器
控制器
 


 

喷淋自动关闭时间处理。


 

控制器
 


 

喷淋关闭操作


 

控制器
 


 

如编译过程中出现was set but never used告警,只需要在对应的变量前加volatile即可,否则可能出现变量被屏蔽的情况。远程升级:可参考生成代码根目录下的OTA文档操作。


 

Part.04开源项目实物及APP
 


 



控制器控制器

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分