收藏官网首页
查看: 49|回复: 0

[开源项目] 4G花园远程控制器

跳转到指定楼层
#
 楼主| 发表于 前天 16:16 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
汉枫LPB120模块
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=607405418406
3.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


发烧友
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表