日志

2025.5.2晚 决定实现裸机方案
5.2晚 实现delay函数,usart函数,systerm函数封装
5.3凌晨 实现oled、DHT11温湿度函数封装
5.3晚 实现烟雾传感器的函数封装
5.4凌晨 初步探索语音模块的使用
5.5晚 编写RFID-RC522模块即NFC模块使用
5.6晚 完成驱动电机和火焰传感器模块编写
5.7晚 修改范例并提交

引脚定义

模块 连接方式 STM32引脚
OLED (0.96寸)#5V I2C (硬件或软件) SCL: PB6, SDA: PB7
温湿度传感器#3.3V GPIO (如 DHT11/AM2302) 数据引脚: PA0
烟雾传感器#3.3V ADC 输入引脚: PA1
温度传感器3.3V ADC 输入引脚:待定(目前预定PB1)
RFID卡 (NFC)#3.3V SPI MOSI: PA7, MISO: PA6, SCK: PA5, NSS(SDA): PA4,RESET:PB0
步进电机1 (PWM+STR)(门) PWM + GPIO PWM: PB3 (TIM2_CH2), STR1: PB4
步进电机2 (PWM+STR)(风扇/空调) PWM + GPIO PWM: PB10 (TIM2_CH3), STR2: PB11
语音控制模块#5V UART1 TX: PA9, RX: PA10
蓝牙模块3.3V UART2 TX: PA2, RX: PA3
按键 (4个) GPIO PB12, PB13, PB14, PB15
蜂鸣器#3.3V PWM 或 GPIO PB5
灯光 GPIO 引脚:待定(目前预定PA8)
火焰传感器3.3V GPIO/ADC 引脚:待定(目前预定PB2)

剩余引脚PA11, PA12, PA15 , PB6,PB7,PC13

image.png

首先实现裸机方案

第0个任务

建立BSP层、Systerm层

第一步首先移植简单的OLED屏幕模块以及温湿度读取模块

OLED模块移植

方案:硬件IIC

将其使能,选择FastMode,速率改成100kHz即可,其他默认

image.png

然后将官方的例程进行修改

修改遇到问题

显示未定义I2C句柄,明明extern外部引用了还是没有,后面检查发现是i2c.c文件中的句柄I2C_HandleTypeDef hi2c1被误删了

将程序编写在main.c时一直不显示数据,出现了三个事故

温湿度读取模块

cubemx定义

将PA0口定义成输出模式,置高电平,速率拉到最高

image.png

然后将嘉立创的例程进行修改

https://wiki.lckfb.com/zh-hans/dkx-stm32f103c8t6/module/sensor/dht11.html

修改遇到问题

代码如下

结果如下

6013ead4fbd8a216cdb96ce3629595a.jpg

烟雾传感器函数封装

使用adc读取,打开adc选择模拟输入读取