4G花园远程控制器
4G花园远程控制器本开源教程主要演示如何利用机智云平台快速开发一个4G花园远程控制器,主要实现功能有:远程控制8组开关,对其中2主开关进行限时关闭控制,同步开关状态(如有传感器,可在同步开关状态地方进行传感器的定时上报,实现传感器采集),通过云端快速构建APP,实现场景功能。
一、硬件框架硬件主要接线说明:单片机串口2(即PA2 PA3)接4G模组协议串口;单片机PA15PB3-PB9一共8组输出信号接继电器(继电器采用低电平有效);通过继电器的开关来实现对交流220V信号的开关控制,从而实现对交流接触器的通断控制。
硬件说明:1.单片机采用STM32F103C8T6核心板一块2.带机智云GAgent固件的GA211模组一个,购买链接:https://item.taobao.com/item.htm?id=6074054184063.8路5V继电器模组(带光偶隔离,信号均采用低电平有效,通过跳冒调整)4.交流接触器二、云端部署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代码下载代码到电脑备用,到此云顿部署结束。三、单片机代码开发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文档操作。开源项目实物及APP硬件组装实物参考图:
APP控制页面
开源代码:通过网盘分享的文件:花园远程控制器2026
链接: https://pan.baidu.com/s/1AqjemekVZHvaf-1IRc_img?pwd=fusa 提取码: fusa
页:
[1]