代码拉取完成,页面将自动刷新
#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 /**********************************************************************************************/ /**********************************************************************************************/
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。