基于单片机的智能风扇DIY总结【2020.06每月一练活动】
扫描二维码
随时随地手机看文章
功能梳理
-
PCB线路板采用核心板+底板实现
核心板:排针引脚间距为2.54mm,2排,双排间距为2.54mm的倍数(方便与面包板联用),未使用引脚全部引出,核心板上的主芯片为STM32F103RET6。
目的:
- 方便与面包板配合使用;
- 核心板上预留两个2.54mm间距,4脚座和5脚座,部分传感器模块只需要这两个底座既可以实现模块功能。
- 核心板上的主芯片相对较贵,做成核心板之后,可以重复利用,方便大家一起跟着做,以后我们只需要修改底板的设计即可。
上图中各个模块简要说明:
- 标号1为ESP8266 WiFi模块,用于实现与阿里云物联网平台连接,实现风扇的远程控制功能;
- 标号2为使用三极管实现风扇的控制;
- 标号3为使用光耦+mos管的方式实现风扇的控制;
- 标号4为电源座;
- 标号5为底板上的5个按键,从下到上,按键功能分别为:风速+、风速-、风扇开关、风扇开及风扇关;
- 标号6为核心板上预留的按键,用于实现模式的切换,本系统分为三个模式,默认为模式0,底板上的按键功能为上面的描述;模式1为修改系统时间功能,底板上的前三个按键用于调节实时时间的时分秒;模式2为修改定时时间功能,底板上的前三个按键用于调节定时时间的时分秒;
- 标号7为JATG下载STM32程序接口,SW模式,只需要三个引脚即可;
- 标号8为Micro USB底座,通过CH340C芯片与STM32的串口1相连,串口1一般用于系统调试信息的打印;
- 标号9为电源选择方式跳线,当使用跳线帽短接时,系统供电来自于Micro USB接口;当跳线帽拔掉后,系统供电来源于标号4的电源座;
- 标号10为红外接收头;
- 标号11为OLED屏;
- 标号12为DS18B20温度传感器模块,预留了两种接口,直插和防水线式DS18B20温度传感器都可以与底板连接。
后台回复关键词“每月一练”可以获得PCB工程文件,将下图框选的文件发给线路板加工厂家,可以直接打样。两个板子在嘉立创十元钱就可以搞定。

参考阅读:
STM32单片机最小系统详解
- 风扇调速功能
采用PWM调速的原理来实现风扇速度的控制,四挡风速的占空比分别为:15%、30%、60%和100%。
当风速选择0时,进入自动模式,温度分为22℃以下、22到25℃、25到28℃及28℃以上四个区间,对应风速的四个档位;
为了控制简单,大家可以安全操作,我们本次选用一个DC5V的风扇作为演示使用。
风扇调速原理,参考阅读:
利用PWM原理,实现呼吸灯功能
- 温度传感器 DS18B20
用来测量环境温度,实现自动功能。
STM32驱动DS18B20温度传感器,参考阅读:
DS18B20温度传感器时序图解析(STM32)
- WiFi模块
选用ESP8266 WiFi模块,连接阿里云物联网平台。
功能:手机APP控制风扇的开启和关闭,风扇档位及实时室温显示。
ESP8266 WiFi模块的使用及连接阿里云物联网平台,参考阅读:
mini D1 WiFi模块Arduino开发简介
七步快速开启产品智能化
ESP8266连接阿里云物联网平台(Arduino方式)
Windows下AliOS Things环境搭建及ESP8266 固件下载
快速接入阿里云物联网平台技术方案分享
- 串口通信STM32的串口1作为Debug串口;串口5与ESP8266进行数据通信。
STM32串口通信的使用方法,参考阅读:
物联网模块ESP8266返回的数据格式为JSON字符串,对此字符串进行解析,参考阅读:
Keil环境下STM32工程加入cJSON
用cJSON解析心知天气返回的数据包
- 按键
实现切换手动或者自动模式;调节档位,档位加、档位减、切换(手动模式和自动模式切换)。
按键功能实现,参考阅读:
- LCD显示
选用0.96寸 OLED屏 显示内容:当前温度、工作模式和档位模式。
参考阅读:
- RTC
STM32自带RTC功能,选用此功能为了实现定时模式。
此部分文章暂未介绍
- 红外遥控
功能:实现红外遥控功能;
参考阅读:
- LED
作用:
- 电源指示灯
- 系统调试使用
LED驱动功能实现,参考阅读:
完成了本设计之后,考虑一下实现的功能,其实这个设计完全可以改成“智能雾化器”,功能跟本设计基本相同,只需要将DS18B20温度传感器更换为温湿度传感器即可,使用PWM功能可以实现雾化量的控制。
温湿度传感器的使用,参考阅读:
DHT11及DHT21温湿度传感器时序图解析(STM32)
成果展示