聚丰项目 > 智能家居控制器
本项目基于AB32VG1 BLE的SOC, 使用RT-Thread Rtos 完成智能家居灯\门锁...通过蓝牙BLE用手机等智能终端控制, 并有语音提示, 除了手机控制, 当然也可以用按键控制, 这只一个小案例, 除了灯\门锁...还有其他的电器,比如插座\窗帘'....
fannifu
分享fannifu
团队成员
大树 电子工程师
本项目了 除了用执行元件, 都用AB32VG1开发板完成的, 得益于AB32VG1丰富的功能组件:
CPU: AB5301A;( LQFP48 封装,主频 120M,片上集成 RAM 192K, flash 8 Mbit, ADC, PWM, USB, UART, IIC 等资源)
AB5301A内置蓝牙BLE SOC -- 本项目用此做手机远程控制
AB5301A内置 FM 模块 (本项目未使用)
一路 TF Card 接口 (本项目未使用)
一路 USB 接口 (本项目未使用)
一路 IIC 接口 (本项目未使用)
一路音频接口(美标 CTIA) -- 本项目用此做操作语音揭示及反馈
六路 ADC 输入引脚端子引出 (本项目未使用, 如需拓展温度光照检测应用, 可以用ADC)
六路 PWM 输出引脚端子引出(本项目未使用, 如需拓展调光应用, 可以用PWM)
一个 IRDA(红外接收端口) (本项目未使用)
一个 Reset 按键, 三个功能按键(通用版为两个功能按键)
硬件架构
系统采用USB供电
USB转UART 下载程序及软件调试
DAC做音频输出到喇叭, 操作语音揭示及反馈
GPIO输出控制LED灯和门锁
软件功能
手机通过BLE远程控制LED灯亮灭, 开门锁(锁门驱动模块会自动检测关门并锁门, 所以不考虑锁门)
板载按键远程控制LED灯亮灭, 开门锁
软件框图
使用RT-Thread Studio, 创建工程, 配置好组件软件包, 本项目应用组件或软件包:
RT-Thread 标准最新版本
驱动:
Audio
串口
Pin(GPIO)
组件:
wavplayer播放器 播放器
ptparse --命令行参数解析器, wavplayer依赖它解析播放参数
DFS ---文件系统
Finsh命令
MultiButtion --- 按键框架
bluetrum SDK
以上都是通过RT-Thread Studio配置 获得, 我需要写的代码, 非常少, 真的是低代码开发
我需要开发的
1、BLE(Gatt Server) 收到手机发来的数据和按键事件处理, 调用GPIO执行控制LED灯亮灭, 开门锁, 播放提示音
注: 提示音由mkromfs将音频文件制作成C语言数组的虚拟文件系统, 详细参阅:http://bbs.sunsili.com/thread-225776-1-1.html
2、BLE Gatt Service重写
事件处理代码
/* * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2021-12-07 LOJAM the first version */ #include
BLE相关代码
/* * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2021-12-04 LOJAM the first version */ #include
Gatt Service代码
/* * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2021-12-05 LOJAM the first version */ #include
在这上传代码不看到, 请移步:
https://gitee.com/lojam/ab32vg1-ble_-smrthm/tree/master
1、按键操作:
S2 按一下开锁
S3 按一下开灯, 再关灯, 如此循环
注:每个操作,都播放提示音
2、BLE 远程控制:
没写APP,用BLE调试助手
连接设备:Silicon_Smarthome
连接成功后, 选择 Unkown Service (用户自定义)
Unkown (用户自定义) Charismatic 长度2Bytes Read / Write ( 可读写)
Byte0 Byte1
灯控制 lock
1:开灯 1: 开锁(锁驱动会自动检测关锁)
0:关灯 0: 关
Device Information Service 设备信息服务
Manufacturer Name String Charismatic read( 只读) 读设备制造商信息 字串类型
Model Number String Charismatic read( 只读)获取设备型号 字串类型
鸣谢
RT-Thread
电子发烧友
中科蓝讯
RTT大赛开发者交流群的朋友们