基于AIR32F103CCT6单片机的智能家居系统

这篇具有很好参考价值的文章主要介绍了基于AIR32F103CCT6单片机的智能家居系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、摘要

      本作品以AIR32F103CCT6单片机为控制核心,设计并制作了智能家居系统。系统由单片机控制电路、电源电路、复位电路等组成。智能家居系统包括蓝牙模块、温湿度模块、语音合成模块、OLED显示屏,通过蓝牙模块可以用手机控制智能家居的开关灯,语音合成模块并且可以播报智能家居实时的温湿度,系统稳定性和安全性高,功能丰富,人机交互良好。

二、智能家居的研究意义

1.提高生活质量:智能家居系统能够通过自动化的方式,实现对家庭设备的智能管理和控制,让家庭生活更加便捷和舒适。例如,通过智能家居系统,用户可以远程控制家中的灯光、空调、电视等设备,实现自动化调节室内温度、湿度和光照,提高居住的舒适度。

2.提升安全性:智能家居系统具有安全监控功能,能够实时监测家庭的安全状况。例如,安装在家中的摄像头和传感器可以及时发现异常情况,并及时报警,保障家庭成员的人身和财产安全。

3.节能环保:智能家居系统能够实现对家庭设备的智能调度和管理,有效降低能源消耗。例如,智能照明系统可以根据室内外光照情况自动调节灯光亮度,智能空调系统可以根据室内外温度和湿度自动调节运行模式,从而实现节能减排。

4.提高工作效率:智能家居系统能够帮助用户节省时间和精力,提高生活和工作效率。例如,用户可以通过智能手机或电脑远程控制家中的设备,实现家庭和工作场所的智能互联,方便用户随时处理家庭事务。

5.促进科技创新:智能家居系统的研究和开发,能够推动相关领域的技术创新和发展。例如,智能家居系统需要用到传感器、控制器、执行器等设备,这些设备的研究和制造技术的发展,将带动整个产业链的升级和变革。

满足个性化需求:智能家居系统能够根据用户的习惯和喜好进行智能化调节,满足用户的个性化需求。例如,智能音响可以根据用户的喜好推荐音乐,智能电视可以根据用户的历史观看记录推荐节目,提供更为贴心的服务。

智能家居的研究具有重要的意义,它能够提高生活质量,提升安全性,节能减排,提高工作效率,促进科技创新,满足个性化需求,推动社会进步和经济发展。

​三、方案设计与论证

方案一:采用蓝牙模块,蓝牙通信范围一般在10米以内,适合在个人和家庭范围内进行设备之间的无线连接和数据传输,蓝牙技术的应用范围非常广泛,涉及到通信、计算、消费电子等多个领域,HC-05 蓝牙模块是专为智能无线数据传输而打造,遵循 V20+EDR 蓝牙规范。

方案二:采用MIFI模块,ESP8266是一种强大的WIFI模块,它由ESPRESSIF SYSTEMS公司开发,可以实现与网络通信的功能。ESP8266在物联网中被广泛使用,可以通过串行通信接口连接到微控制器

方案选择:综上所述方案一使用简单,而且开发简单,价格便宜,最终选择方案一。

四、系统参数的设计

蓝牙模块、DHT11模块和OLED模块已经在我以前的文章详细说过,这里就不多解析了。

基于CH32V307VCT6单片机啊里云和蓝牙的数据传输 (qq.com)

4.1系统硬件设计

4.1.1.SYN6288语音合成模块

SYN6288中文语音合成芯片是背景宇音天下科技有限公司与2010年初推出的一款性价比更高,效果更自然的一款中高端语音合成芯片。SYN6288通过异步串口(UART)通信方式,接收待合成的文本数据实现文本到语音(或TTS语音)的转换。

支持GB2312、GBK、BIG5和UNICODE内码格式的文本
每次合成的文本量最多可达200字节
支持多种控制命令,包括:合成,停止,暂停合成,继续合成,改变波特率等
支持休眠功能,在休眠状态下可降低功耗,支持多种方式查询芯片状态。
支持串口数据通讯接口,支持三种通信波特率:9600,19200,38400
支持16级音量调整,播放文本的前景音量和播放背景音乐的背景音量可分开控制。
可通过发送控制标志调节词语语速,支持6级词语语速调整。
芯片内固化有多首和弦音乐、提示音效和针对某行业领域的常见语音提示音。
内部继承19首声音提示音,23首和弦提示音,15首背景音乐
内置10bit推挽式、可独立供电的功放,进行数模DAC输出
 

基于AIR32F103CCT6单片机的智能家居系统,单片机,智能家居,嵌入式硬件

SYN6288语音合成模块系统构成框图

基于AIR32F103CCT6单片机的智能家居系统,单片机,智能家居,嵌入式硬件

SYN6288语音合成模块接线图

这个模块只需要接4个引脚即可工作:

RXD—板子上的TXD
TXD—板子上的RXD
VCC—VCC(5V)
GND—GND

根据手册可以得知需要把对应的串口波特率设置为9600bps。
基于AIR32F103CCT6单片机的智能家居系统,单片机,智能家居,嵌入式硬件

通讯协议图

基于AIR32F103CCT6单片机的智能家居系统,单片机,智能家居,嵌入式硬件

主控电路原理图

基于AIR32F103CCT6单片机的智能家居系统,单片机,智能家居,嵌入式硬件

主控电路PCB图

基于AIR32F103CCT6单片机的智能家居系统,单片机,智能家居,嵌入式硬件

主控电路3D图

基于AIR32F103CCT6单片机的智能家居系统,单片机,智能家居,嵌入式硬件

主控电路实物图

嘉立创EDA开源链接:心型灯 - 嘉立创EDA开源硬件平台

​4.1.3.软件设计

软件的总开发环境为MDK5,单片机的PB6和PB7(I2C1)引脚控制OLED的驱动,PA1(GPIO)引脚控制DHT11温湿度传感器的驱动,PA2和PA3(USART2)引脚控制蓝牙模块的数据收发,PB10和PB11(USART3)引脚控制SYN6288语音合成模块的数据收发,其他的引脚用来控制LED灯的亮灭。

主函数代码如下:

int main (void){//主程序
	
	
	RCC_Configuration(); //系统时钟初始化 
	I2C_Configuration();//I2C初始化
	OLED0561_Init(); //OLED初始?
  led_Init();	//LED的初始化
	LED_Init_A();
	LED_Init_B();
	LED_Init_B1();
	uart2_init(115200);		//初始化串口2
	
	OLED_DISPLAY_16x16(0,1*16,0);//显示智能家居系统
	OLED_DISPLAY_16x16(0,2*16,1);
	OLED_DISPLAY_16x16(0,3*16,2);
	OLED_DISPLAY_16x16(0,4*16,3);

	OLED_DISPLAY_16x16(0,5*16,4);//
	OLED_DISPLAY_16x16(0,6*16,5);
	
	while(DHT11_Init())
	{
		//printf("DHT11 Error \r\n");
		delay_ms(1000);
	}

	OLED_DISPLAY_16x16(2,0*16,6);//显示当前温度
	OLED_DISPLAY_16x16(2,1*16,7);
	OLED_DISPLAY_16x16(2,2*16,8);
	OLED_DISPLAY_16x16(2,3*16,9);
	
	OLED_DISPLAY_16x16(4,0*16,6);//显示当前湿度
	OLED_DISPLAY_16x16(4,1*16,7);
	OLED_DISPLAY_16x16(4,2*16,10);
	OLED_DISPLAY_16x16(4,3*16,9);
  syn6288_Init();
	syn6288_Say("欢迎进入智能家居系统AI小权为你服务");
  OLED_DISPLAY_8x16(6,0*8,'A');//
	OLED_DISPLAY_8x16(6,1*8,'I');//
	OLED_DISPLAY_16x16(6,1*16,11);//
	OLED_DISPLAY_16x16(6,2*16,12);
	OLED_DISPLAY_16x16(6,3*16,13);
	OLED_DISPLAY_16x16(6,4*16,14);
	OLED_DISPLAY_16x16(6,5*16,15);//
	OLED_DISPLAY_16x16(6,6*16,16);//
	OLED_DISPLAY_8x16(6,14*8,'!');//
	

	while(1){
	
		   if(flag_start==1)
			 {
				 flag_start=0;	
      	switch (a){
			    case '1':
					  GPIO_ResetBits(GPIOC,GPIO_Pin_13);
					  GPIO_ResetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5| GPIO_Pin_6| GPIO_Pin_7);
					  	GPIO_ResetBits(GPIOB, GPIO_Pin_3);
		GPIO_ResetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5| GPIO_Pin_6| GPIO_Pin_7| GPIO_Pin_8 | GPIO_Pin_9| GPIO_Pin_10| GPIO_Pin_15);
		GPIO_ResetBits(GPIOB, GPIO_Pin_0 |GPIO_Pin_3| GPIO_Pin_4| GPIO_Pin_5|GPIO_Pin_8| GPIO_Pin_9|GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15);
					  syn6288_Say("开灯");
					OLED_DISPLAY_16x16(6,0*16,17);//
					OLED_DISPLAY_16x16(6,1*16,19);
					OLED_DISPLAY_16x16(6,2*16,17);
					OLED_DISPLAY_16x16(6,3*16,19);
					OLED_DISPLAY_16x16(6,4*16,17);//
					OLED_DISPLAY_16x16(6,5*16,19);//
					OLED_DISPLAY_16x16(6,6*16,17);//
					OLED_DISPLAY_16x16(6,7*16,19);//
					break;
				  case '0':
					  GPIO_SetBits(GPIOC,GPIO_Pin_13);
						GPIO_SetBits(GPIOB, GPIO_Pin_3);
		GPIO_SetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5| GPIO_Pin_6| GPIO_Pin_7| GPIO_Pin_8 | GPIO_Pin_9| GPIO_Pin_10| GPIO_Pin_15);
		GPIO_SetBits(GPIOB, GPIO_Pin_0 |GPIO_Pin_3| GPIO_Pin_4| GPIO_Pin_5|GPIO_Pin_8| GPIO_Pin_9|GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15);
				    syn6288_Say("关灯");
					  OLED_DISPLAY_16x16(6,0*16,18);//
					  OLED_DISPLAY_16x16(6,1*16,19);
					  OLED_DISPLAY_16x16(6,2*16,18);
					  OLED_DISPLAY_16x16(6,3*16,19);
					  OLED_DISPLAY_16x16(6,4*16,18);//
					  OLED_DISPLAY_16x16(6,5*16,19);//
					  OLED_DISPLAY_16x16(6,6*16,18);//
					  OLED_DISPLAY_16x16(6,7*16,19);//
					break;
					case '2':
					  		sprintf((char *)fTempStr,"%s %d %s","当前室内温度",temp,"度");
            		syn6288_Say((char *)fTempStr);
					      OLED_DISPLAY_16x16(6,0*16,18);//
					  OLED_DISPLAY_16x16(6,0*16,0);
					  OLED_DISPLAY_16x16(6,1*16,1);
					  OLED_DISPLAY_16x16(6,2*16,2);
					  OLED_DISPLAY_16x16(6,3*16,3);//
					  OLED_DISPLAY_16x16(6,4*16,20);//
					  OLED_DISPLAY_16x16(6,5*16,21);//
					  OLED_DISPLAY_16x16(6,6*16,8);//
					  OLED_DISPLAY_16x16(6,7*16,9);//
					break;
					case '3':
					  		sprintf((char *)fTempStr,"%s %d %s","当前室内湿度",humi,"克/立方米");
            		syn6288_Say((char *)fTempStr);
					      OLED_DISPLAY_16x16(6,0*16,0);
					  OLED_DISPLAY_16x16(6,1*16,1);
					  OLED_DISPLAY_16x16(6,2*16,2);
					  OLED_DISPLAY_16x16(6,3*16,3);//
					  OLED_DISPLAY_16x16(6,4*16,20);//
					  OLED_DISPLAY_16x16(6,5*16,21);//
					  OLED_DISPLAY_16x16(6,6*16,10);//
					  OLED_DISPLAY_16x16(6,7*16,9);//
					break;
				default:
					break;
			}
		  }	
		        shucudianya(); //温度湿度检测
			      
//				    shedindianliu(); //设定电流
//		        shishidianliu(); //实时电流
//		        dianweiqi();//电位器步进
//		        KEY_flag();//按键扫描
//	          anjian();//按键扫描
	}
}

void USART2_IRQHandler(void)  
{  
    USART_ClearFlag(USART2,USART_FLAG_TC);  
    if(USART_GetITStatus(USART2,USART_IT_RXNE)!=Bit_RESET)//检查指定的USART中断发生与否  
    { 
		 a=USART_ReceiveData(USART2);
	        flag_start=1;	  																														   
    }   
} 

五、智能家居小屋的制作

小屋的制作材料是在淘宝买的,商家提供说明书和制作视频

https://m.tb.cn/h.5omSfZCILLmiviX?tk=inrAW6m4Gxk 

基于AIR32F103CCT6单片机的智能家居系统,单片机,智能家居,嵌入式硬件

部分制作说明书图

六、实物演示效果

基于AIR32F103CCT6单片机的智能家居系统,单片机,智能家居,嵌入式硬件

实物演示效果图

基于AIR32F103CCT6单片机的智能家居系统,单片机,智能家居,嵌入式硬件

实物演示效果图

本文章已同步发表在微信公众号:遇事可问

基于AIR32F103CCT6单片机的智能家居系统 (qq.com)

本文章已同步发表在知乎:星空

基于AIR32F103CCT6单片机的智能家居系统 - 知乎 (zhihu.com)文章来源地址https://www.toymoban.com/news/detail-789391.html

到了这里,关于基于AIR32F103CCT6单片机的智能家居系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于STM32F103ZET6单片机驱动SM16306SJ控制8个LED灯的系统设计

    1.设计要求:使用stm32f103zet6精英开发板  采用SM16306SJ驱动8个LED灯。 2.原理图 3.代码 4.实物效果图 备注:1 硬件上有一个LED灯坏了,所以才亮了7个LED灯            2 一个SM16306SJ最多可以驱动16个LED灯            3 SM16306SJ跟MBI5020程序通用

    2024年04月17日
    浏览(49)
  • 关于两个STM32F103系列单片机的蓝牙通信

       毕设做的是掌控小车,因此采用蓝牙通信作为小车和手部通信,前段时间做出实物,对其遇到的问题以及解决的方法做一些总结。一个主控芯片采用STM32F103ZET6,另一个主控芯片采用STM32F103C8T6,原因是本来准备了两个主控C8T6,不小心烧了一个。 1.两个蓝牙的配对  需要准

    2024年02月13日
    浏览(58)
  • STM32F103ZE单片机呼吸灯源代码

    本实验采用的系统频率SYSTIM为8MHZ,如果频率改变需要修改一个数值

    2024年02月09日
    浏览(51)
  • 【单片机】STM32单片机的各个定时器的定时中断程序,标准库,STM32F103

    高级定时器和普通定时器的区别(https://zhuanlan.zhihu.com/p/557896041): TIM1是高级定时器,使用的时钟总线是RCC_APB2Periph_TIM1,和普通定时器不一样。 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用

    2024年02月07日
    浏览(55)
  • JDY-31蓝牙模块远程控制STM32F103单片机

       手机app通过蓝牙模块发送指令实时控制单片机的外设功能,比如发送衣柜开关门指令(舵机旋转),衣架上升降落(步进电机正转反转),远程开启去污除湿功能(继电器控制打开关闭小风扇+加热片)。 本次例子:手机APP连接蓝牙模块远程控制SG90舵机正转(0-180°)和反

    2024年02月01日
    浏览(68)
  • (STM32F103单片机)DHT11温湿度传感器

    目录   一,产品介绍 二,产品亮点 三,产品参数 四,引脚连接及通信说明  五,原理讲解 六,源码 1,DHR11.C 2.DHR11.H 3,main.c DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高

    2023年04月08日
    浏览(53)
  • STM32F103单片机控制继电器开关小风扇和加热片

       在智能衣柜中,使用异味传感器检测柜内异味值,当异味值大于设定值时会自动开启小风扇,小风扇起到一个排污去浊的功能,再加上温湿度传感器检测柜内的温度和湿度,当温湿度达到设定值时,加热片自动发热,起到一个降温除霉的作用。想要使小风扇和加热片自动

    2024年02月02日
    浏览(50)
  • 【单片机】STM32F103C8T6 最小系统板原理图

    STM32F103C8T6是一款基于ARM Cortex-M3内核的32位微控制器,由STMicroelectronics(ST)公司生产。它是STMicroelectronics的STM32系列微控制器中的一员,被广泛应用于嵌入式系统和电子设备中。 STM32F103C8T6单片机的主要特点和资源包括: 内存资源: Flash存储器:64 KB SRAM(静态随机访问存储器

    2024年02月12日
    浏览(47)
  • 【单片机】STM32单片机,RTC实时时钟,STM32F103C8T6,程序,万年历,数字时钟

    我以STM32F103C8T6为例,但STM32F103的RTC是通用的,STM32F103C8T6有一个原理图: https://qq742971636.blog.csdn.net/article/details/131288390 用纽扣电池给VBAT供电(要共地),即可实现掉电后依旧走时的能力。 主要特性(来源于STM32中文参考手册V10.pdf): 记得加标准库文件: 串口接收:

    2024年02月11日
    浏览(53)
  • STM32F103ZET6 封装 LQFP-144 ST意法 单片机芯片

    STM32F103ZET6 是意法半导体(STMicroelectronics)生产的一款基于 ARM Cortex-M3 内核的 32 位微控制器。它具有高性能、低功耗的特点,广泛应用于各种嵌入式系统和工业应用中。STM32F103ZET6 的主要特点如下: 内核:ARM Cortex-M3,工作频率最高可达 72MHz。 存储器:64KB SRAM,512KB FLASH。 外

    2024年04月22日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包