参加合泰杯作品的部分展示,基于HT32的智能家居,这里展示灯光的相关控制,是用蓝牙进行的数据透传,参考了一些资料,美化封装了一下之前的上位机界面。

        成果展示

        点击主界面的蓝牙设置,进行连接,下面已经成功连接上,并且接收到了HT32单片机测量到的温湿度数据。

LED关闭 最右侧的LED

Android蓝牙通信控制上位机_智能家居

Android蓝牙通信控制上位机_智能家居_02

 LED打开

Android蓝牙通信控制上位机_Android蓝牙通信控制上位机_03

Android蓝牙通信控制上位机_Android蓝牙通信控制上位机_04

开关灯的协议指令,控制台输出

Android蓝牙通信控制上位机_单片机_05

 

        设计过程

                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类似。

Android蓝牙通信控制上位机_Android蓝牙通信控制上位机_06

                 QT蓝牙上位机部分 

                    目录展示:目录有四部分

Android蓝牙通信控制上位机_#define_07

        先进行的是my_custom的设计,里面设计了按钮开关(之前的博客做过)和其他需要使用的控件,因为qt本身的控件并没有滑动开关,所以这里重写绘画和鼠标点击事件进行滑动按钮的设置,在外面进行调用即可,QT可以进行封装到其他项目使用(但是我没有成果,所以只能在项目中进行调用)

        之后我进行的是device文件夹的设计,里面就是设计的是灯相关的,需要调用my_custom里卖弄的控件,所以放在第二步,这里很关键的一点是要设置一个信号(可以后面设计了蓝牙再进行添加),用于进行蓝牙的数据传输(我直接在这里面调用蓝牙的socket进行传输失败(遇到数不清的erro),还是得在主界面里面使用信号槽机制)

                        

Android蓝牙通信控制上位机_上位机_08

Android蓝牙通信控制上位机_#define_09

                     

Android蓝牙通信控制上位机_Android蓝牙通信控制上位机_10

        然后是设计的蓝牙部分,蓝牙部分就是之前博客做的蓝牙上位机直接移植了过来。区别是这里要添加一个槽函数,用于发送信息。

Android蓝牙通信控制上位机_上位机_11

                

Android蓝牙通信控制上位机_#define_12

             最后是再主界面中进行编写,将两边connect起来

              

Android蓝牙通信控制上位机_Android蓝牙通信控制上位机_13

        (上位机部分参考了b站老徐的作品:链接(博主使用的是tcp)【开源项目】Qt智能家居案例。源码请从简介获取。_哔哩哔哩_bilibili)