参加合泰杯作品的部分展示,基于HT32的智能家居,这里展示灯光的相关控制,是用蓝牙进行的数据透传,参考了一些资料,美化封装了一下之前的上位机界面。
成果展示
点击主界面的蓝牙设置,进行连接,下面已经成功连接上,并且接收到了HT32单片机测量到的温湿度数据。
LED关闭 最右侧的LED
LED打开
开关灯的协议指令,控制台输出
设计过程
HT32单片机部分 (仅展示LED)
使用的是开发板自带的LED,只需要控制对于引脚输出的电平就可以控制LED的亮灭。
#ifndef _LED_H_
#define _LED_H_#include "ht32f5xxxx_ckcu.h"
#include "ht32f5xxxx_gpio.h"//端口号定义
#define HT_GPIO_PORT HT_GPIOC
//LED引脚定义
#define HT_GPIO_PIN (GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_10|GPIO_PIN_11)//LED1 LED2 宏定义开和关
#define LED1_ON() GPIO_WriteOutBits(HT_GPIO_PORT,GPIO_PIN_14,RESET)
#define LED1_OFF() GPIO_WriteOutBits(HT_GPIO_PORT,GPIO_PIN_14,SET)#define LED2_ON() GPIO_WriteOutBits(HT_GPIO_PORT,GPIO_PIN_15,RESET)
#define LED2_OFF() GPIO_WriteOutBits(HT_GPIO_PORT,GPIO_PIN_15,SET)#define A1_ON() GPIO_WriteOutBits(HT_GPIO_PORT,GPIO_PIN_11,RESET)
#define A1_OFF() GPIO_WriteOutBits(HT_GPIO_PORT,GPIO_PIN_11,SET)#define B1_ON() GPIO_WriteOutBits(HT_GPIO_PORT,GPIO_PIN_12,RESET)
#define B1_OFF() GPIO_WriteOutBits(HT_GPIO_PORT,GPIO_PIN_12,SET)
void Led_Init(void);
#endif
蓝牙模块使用的是BT04,本来打算采用官方的模块,奈何焊接技术不行,
使用的单片机引脚接入, PA2 rX 和 PA3 tX 串口0 printf指向蓝牙(进行单片机向上位机的数据传输)这里简单的配置一下串口就行,和stm32类似。
QT蓝牙上位机部分
目录展示:目录有四部分
先进行的是my_custom的设计,里面设计了按钮开关(之前的博客做过)和其他需要使用的控件,因为qt本身的控件并没有滑动开关,所以这里重写绘画和鼠标点击事件进行滑动按钮的设置,在外面进行调用即可,QT可以进行封装到其他项目使用(但是我没有成果,所以只能在项目中进行调用)
之后我进行的是device文件夹的设计,里面就是设计的是灯相关的,需要调用my_custom里卖弄的控件,所以放在第二步,这里很关键的一点是要设置一个信号(可以后面设计了蓝牙再进行添加),用于进行蓝牙的数据传输(我直接在这里面调用蓝牙的socket进行传输失败(遇到数不清的erro),还是得在主界面里面使用信号槽机制)
然后是设计的蓝牙部分,蓝牙部分就是之前博客做的蓝牙上位机直接移植了过来。区别是这里要添加一个槽函数,用于发送信息。
最后是再主界面中进行编写,将两边connect起来
(上位机部分参考了b站老徐的作品:链接(博主使用的是tcp)【开源项目】Qt智能家居案例。源码请从简介获取。_哔哩哔哩_bilibili)