加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
#SmartHome
/**********************************************************************************************/
/**********************************************************************************************/
一、系统简介
1、本系统所使用的MCU是STM32F103RCT6,用到的STM32的外设和资源有:USART1、SPI1、SysTick滴答定时器、
   通用定时器2(TIM2)、通用定时器3(TIM3)、WakeUp唤醒、中断、电源控制、备份寄存器、DMA等。
2、本系统所使用的模块有:DHT11温湿度传感器、HC-SR501人体检测传感器、USR-WiFi232无线上网模块、
   WS2812灯带、XFM10XX麦克风阵列模块、OLED显示屏、MPU6050整合性6轴运动处理模块、数字舵机等。
3、本程序的设计中加入了uCOSIII实时操作系统。
4、本程序要实现的主要功能是通过WiFi上网模块将HC-SR501和DHT11检测到的数据发送给带Andriod系统的微
   型投影仪CB-100,并由该微型投影仪做出相应的处理。
   (1)当WiFi模块收到来自Andriod的进入待机模式命令时,
   (2)STM32先关掉显示器,再进入待机模式。HC-SR501检测到人时,会通过wkup引脚将STM32唤醒,并告知
   Andriod有人到来。
5、STM32使用模拟I2C1来控制XFM麦克风阵列模块,使用模拟I2C2来读取MPU6050的数据,WIFI232超时没有连
   接网络,会自动复位重新进行连接。
   /*-----------------------------------------------------------------------------------------*/
   注:WS2812灯带用来指示各模块的工作状态,例如WIFI232的连接状态、XFM10XX麦克风阵列是否唤醒等等。
/**********************************************************************************************/
/**********************************************************************************************/
二、程序详细说明
1、修改模拟I2C时序,优化读取XFM模块不正常的情况。
2、将麦克风阵列模块升级为XFM10412(4麦克风版本)。
3、加入PWM和数字舵机驱动,使用TIMx的通道3产生的PWM控制舵机旋转角度。
4、更改灯带第二位(SystemState[1])的指示含义,具体见指示灯说明。
5、将用来控制是否将MPU6050采集的数据上报给上位机的按键改为中断触发方式,实时性好,反应灵敏。
6、利用XFM麦克风阵列对唤醒人的定位得出的角度和MPU6050采集的角度数据共同来控制舵机(带动机器人的头
   部)旋转,使其正对唤醒人。
7、去除外部干扰对舵机造成的抖动影响。
8、将DHT11更换为SI7021。
9、更改USART一帧数据长度。
10、加入HC-SR50X和MPU6050设备开关。
/**********************************************************************************************/
/**********************************************************************************************/
三、管脚分配和WIFI通信协议说明
1、HC-SR501
   1号HC-SR501 : OUT --> PA0  //使用PA0复用的WakeUp唤醒功能
2、DHT11
         DATA     -->  PB10   
3、XFM10XX 
         WAKEUP   -->  PB5
         I2C_SCK  -->  PB6(I2C1_SCL)
         I2C_SDA  -->  PB7(I2C1_SDA)
4、0.96寸OLED 
         D0(SCL)  -->  PB15
         D1(SDA)  -->  PB13
         RES      -->  PC6
         DC       -->  PB14
         CS       -->  PB12 
5、USR_WiFi232_A
         nReady   -->  PC0
         nReload  -->  PC1(key0按键)
         RESET    -->  PC7
         nLink    -->  PB1
         UART_TXD -->  PA10 
         UART_RXD -->  PA9 
6、WS2812灯带
         SPI1_SCK       -->  PA5
		 SPI1_MISO		-->  PA6 
         IN(SPI1_MOSI)  -->  PA7
7、GPIO模拟I2C1、I2C2
   (1) I2C1_SCL   -->  PB6
       I2C1_SDA   -->  PB7
   (2) I2C2_SCL   -->  PA1
       I2C2_SDA   -->  PA2
   (2) I2C3_SCL   -->  PA3
       I2C3_SDA   -->  PA4
8、PWM
   (1)/*** PWM1  --> PB0(重映射TIM3_CH3) ***/
       PWM1  --> PB8(TIM4_CH3)
9、按键
	   KEY1  --> PC13
/**********************************************************************************************/
/**********************************************************************************************/
四、指示灯说明
1、SystemState[0]表示WIFI232的是否恢复出厂设置以及连接状态: 
                 未连接 --> RED    已连接   --> GREEN   成功恢复出厂设置  --> BLUE
2、SystemState[1]表示USART(WIFI232)是否在传输数据: 
                 未传输 --> RED    在传输   --> GREEN    
3、SystemState[2]表示HC-SR501是否检测到人:    未检测到人 --> RED   检测到人   --> GREEN
4、SystemState[3]表示MPU6050是否成功初始化: 初始化未成功 --> RED   初始化成功 --> GREEN
5、SystemState[4]表示XFM麦克风阵列是否唤醒:    待唤醒     --> RED   已唤醒     --> GREEN
                           没检测到XFM麦克风阵列 --> BLUE
/*-----------------------------------------------------------------------------------------*/
   注:数组SystemState[]的定义在WS2812.c文件中。
/**********************************************************************************************/
/**********************************************************************************************/
五、WIFI和Andriod通信协议格式和相关说明
/*-------------------------------------------------*/
1、发送的数据格式为:0xff 0x06 0x00 0x00 0x00 0x00 0x00 0x00 0xfe
* 第一位:发送数据起始标志(帧头)          -->  0xff
* 第二位:除起始位和停止位外的数据长度    -->  0x06
* 第三位:表示待机状态                    -->  0x0a表示待机      0x00表示工作
* 第四位:检测人的标志                    -->  0x01表示检测到人  0x00表示没有检测到人
* 第五位:湿度低字节数据  
* 第六位:湿度高字节数据
* 第六位:温度低字节数据
* 第六位:温度高字节数据
* 第七位:发送温湿度数据结束标志(帧尾)    -->  0xfe
/*-------------------------------------------------*/
2、命令
  (1) 向Andriod发送数据          -->  0x11
  (2) 系统进入休眠               -->  0x22
/**********************************************************************************************/
/**********************************************************************************************/

空文件

简介

本系统所使用的MCU是STM32F103RCT6,用到的STM32的外设和资源有:USART1、SPI1、SysTick滴答定时器、通用定时器2(TIM2)、通用定时器3(TIM3)、WakeUp唤醒、中断、电源控制、备份寄存器、DMA等。本系统所使用的模块有:DHT11温湿度传感器、HC-SR501人体检测传感器、USR-WiFi232无线上网模块、WS2812灯带、XFM10XX麦克风阵列模块、OLED显示屏等。本程序的设计中加入了uCOSIII实时操作系统。本程序要实现的主要功能是通过WiFi上网模块将HC-SR501和DHT11检测到的数据发送给带Andriod系统的微型投影仪CB-100,并由该微型投影仪做出相应的处理。当WiFi模块收到来自Andriod的进入待机模式命令时... 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化