1. 项目概述:打造智能小风扇的初衷
最近天气又开始闷热起来,看着女朋友在书桌前工作时总是汗流浃背,我决定亲手制作一个智能小风扇送给她。这个项目不仅要有基本的送风功能,还要能根据环境温度自动调节风速,同时具备美观的外观设计。作为一个嵌入式开发爱好者,我选择了Arduino作为控制核心,搭配温湿度传感器和PWM调速风扇,打造一个既实用又有心意的智能小风扇。
2. 硬件选型与材料准备
2.1 核心控制器选择
我选择了Arduino Nano作为主控板,主要基于以下几个考虑:
- 体积小巧(18×45mm),适合嵌入风扇底座
- 具备PWM输出功能,可精确控制风扇转速
- 价格实惠(约30元),性价比高
- 开发环境简单,适合快速原型开发
提示:如果追求更低功耗,可以考虑ESP8266,但会增加开发复杂度。
2.2 传感器选型
温度检测使用DHT22数字温湿度传感器,相比DHT11具有以下优势:
- 测量精度更高(±0.5℃ vs ±2℃)
- 测量范围更广(-40~80℃ vs 0~50℃)
- 响应速度更快(2秒 vs 5秒)
虽然价格稍贵(约25元),但考虑到需要精确控温,这个投入是值得的。
2.3 风扇电机选择
选用5V USB供电的4028涡轮风扇,主要参数:
- 尺寸:40×40×28mm
- 转速:3000-5000RPM(PWM可调)
- 噪音:<25dB(低速时几乎无声)
- 电流:0.1-0.3A(USB接口可轻松驱动)
3. 电路设计与组装
3.1 电路连接示意图
code复制Arduino Nano DHT22 风扇电机
| | |
5V --------- VCC VCC
GND -------- GND GND
D2 --------- DATA
D3 -------------------- PWM
3.2 实际组装步骤
- 将Arduino Nano固定在3D打印的底座内
- 用热熔胶固定DHT22传感器在出风口附近
- 连接风扇电机到PWM输出引脚(D3)
- 使用跳线连接所有电路
- 用螺丝固定风扇外壳
注意:传感器不要离风扇太近,否则测得的会是风扇吹出的风温而非环境温度。
4. 程序设计详解
4.1 开发环境配置
- 安装Arduino IDE 2.0
- 添加DHT传感器库:工具→管理库→搜索"DHT sensor library"
- 选择正确板卡:工具→板卡→Arduino Nano
- 选择对应处理器:工具→处理器→ATmega328P
4.2 核心代码实现
cpp复制#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
#define FAN_PIN 3
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(FAN_PIN, OUTPUT);
}
void loop() {
float temp = dht.readTemperature();
if (isnan(temp)) {
Serial.println("读取传感器失败!");
return;
}
Serial.print("当前温度: ");
Serial.print(temp);
Serial.println("°C");
int fanSpeed = map(temp, 25, 35, 80, 255); // 25°C时80/255,35°C时全速
fanSpeed = constrain(fanSpeed, 80, 255); // 限制最低转速
analogWrite(FAN_PIN, fanSpeed);
delay(2000); // 每2秒更新一次
}
4.3 代码关键点解析
- 温度映射函数:使用map()将25-35℃线性映射到80-255 PWM值
- 最低转速限制:保持80/255的最低转速,避免风扇停转
- 错误处理:检查传感器读数是否有效(isnan)
- 采样间隔:2秒读取一次,避免频繁变化
5. 外壳设计与制作
5.1 3D建模要点
使用Fusion 360设计外壳时注意:
- 留出足够的散热孔(直径3-5mm)
- 传感器位置要避开直接风流
- USB接口要方便插拔
- 整体尺寸控制在100×100×120mm以内
5.2 打印参数建议
- 材料:PLA(环保无味)
- 层高:0.2mm(平衡速度和质量)
- 填充率:20%(保证强度同时节省材料)
- 打印时间:约4小时(取决于打印机速度)
6. 使用效果与优化
6.1 实际测试数据
| 环境温度(℃) | PWM值 | 实测风速(m/s) | 噪音水平(dB) |
|---|---|---|---|
| 25 | 80 | 0.8 | 20 |
| 28 | 140 | 1.5 | 22 |
| 32 | 200 | 2.3 | 25 |
| 35 | 255 | 3.0 | 28 |
6.2 用户体验优化
根据实际使用反馈,做了以下改进:
- 增加手动模式切换按钮
- 添加LED指示灯显示当前模式
- 优化风扇启动曲线,避免突然高速启动
- 在底座增加防滑硅胶垫
7. 常见问题与解决方案
7.1 风扇不转
可能原因及排查:
- 检查USB供电是否正常(用万用表测5V)
- 确认PWM引脚连接正确(D3)
- 检查代码中PWM值是否输出(用串口监视器)
- 尝试直接给风扇供电排除电机故障
7.2 温度读数异常
解决方法:
- 检查DHT22接线是否正确
- 尝试更换传感器(DHT22有时会损坏)
- 在代码中添加防抖处理(连续3次读数取平均)
- 确保传感器不被阳光直射
7.3 噪音过大
优化方案:
- 在风扇四个角加装减震胶垫
- 降低最低PWM值(从80降到60)
- 检查风扇叶片是否平衡
- 考虑更换更静音的风扇型号
8. 项目扩展思路
这个基础版本完成后,还可以考虑以下升级方向:
- 增加手机APP控制(通过蓝牙模块)
- 添加湿度检测和显示功能
- 改用锂电池供电,增加便携性
- 设计更艺术化的外壳造型
- 加入定时关闭功能
整个项目从构思到完成大约花费了3个周末时间,材料成本控制在100元以内。女朋友收到后非常喜欢,特别是温度自动调节功能让她不用频繁手动调整风速。这个项目不仅解决了实际问题,也增进了我们的感情,是技术融入生活的完美体现。