admin管理员组文章数量:1516870
1. 概述
本文介绍如何使用 ESP8266 控制风扇转速,并通过 Web 服务器调整风扇速度及获取当前转速。该方案适用于支持 PWM 调速的 4Pin 风扇。
2. 所需工具
硬件:
- ESP8266 开发板(NodeMCU / Wemos D1 Mini)
- 4Pin PWM 风扇
- 大 4Pin 转小 4Pin 线(2 个小 4Pin 12V 接口,2 个小 4Pin 5V 接口,每个小4pin有2个引脚,2个空的,空的可以插入杜邦线引脚,某宝几块钱,如果没有这线也可以其他方法实现供电)
- 杜邦线
- 电源(12V,适配风扇功率)
软件:
- Arduino IDE(安装 ESP8266 开发板库)
- Postman 或浏览器(用于发送 HTTP 请求)
3. 连接示意图
风扇引脚说明
| pwm风扇 | 功能 | 连接 |
|---|---|---|
| 黄 | 12V 供电 | 小4pin 12v |
| 黑 | GND | 小4pin GND |
| 蓝 | PWM 调速 | esp8266 D1 |
| 绿 | TACHO 反馈 | esp8266 D2 |
ESP8266 供电
| 线材 | 功能 | 连接 |
|---|---|---|
| 5V(红) | 供电 | 小 4Pin 5V -> ESP8266 VIN |
| GND(黑) | 接地 | 小 4Pin GND -> ESP8266 GND |
| D1 | PWM 调速 | 接风扇 |
| D2 | TACHO 反馈 | 接风扇 |
4. 代码实现
代码功能
- 连接 WiFi
- 通过 HTTP 请求调整风扇转速(PWM 输出)
- 读取风扇 TACHO 信号,计算 RPM
- 通过 Web API 获取当前风扇转速
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
const char* ssid = "yang1234"; // wifi名字
const char* password = "y123456789"; // wifi密码
const int pwmPin = 5; // D1, 控制风扇速度
const int tachPin = 4; // D2, 读取风扇转速反馈信号
ESP8266WebServer server(80);
volatile int pulseCount = 0;
unsigned long lastTime = 0;
int fanSpeed = 255; // 默认全速
void IRAM_ATTR countPulse() {
pulseCount++;
}
int getFanRPM() {
unsigned long elapsedTime = millis() - lastTime;
int rpm = (pulseCount * 30) / (elapsedTime / 1000); // 计算 RPM
pulseCount = 0;
lastTime = millis();
return rpm;
}
void handleSetSpeed() {
if (server.hasArg("speed")) {
fanSpeed = server.arg("speed").toInt();
fanSpeed = constrain(fanSpeed, 0, 255);
analogWrite(pwmPin, fanSpeed);
server.send(200, "text/plain", "Speed set to(0-255) " + String(fanSpeed));
} else {
server.send(400, "text/plain", "Missing 'speed' parameter");
}
}
void handleGetRPM() {
int rpm = getFanRPM();
server.send(200, "text/plain", "Current RPM: " + String(rpm));
}
void setup() {
Serial.begin(115200);
pinMode(pwmPin, OUTPUT);
pinMode(tachPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(tachPin), countPulse, FALLING);
analogWrite(pwmPin, fanSpeed);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConnected to WiFi");
Serial.println(WiFi.localIP());
server.on("/setSpeed", HTTP_GET, handleSetSpeed);
server.on("/getRPM", HTTP_GET, handleGetRPM);
server.begin();
}
void loop() {
server.handleClient();
}5. 使用方法
1️⃣ 连接 ESP8266
-
上电后,ESP8266 连接
yang1234WiFi,并获取 IP 地址(串口监视器查看)。 -
假设 IP 地址为
192.168.31.100(可以通过路由器查看esp8266的ip)
2️⃣ 设置风扇速度
在浏览器或 Postman 访问:
speed=0:最低速度(有些风扇会停止)speed=128:50% 速度speed=255:100% 速度
3️⃣ 获取风扇当前转速
在浏览器或 Postman 访问:
返回:
Current RPM: 12006. 说明
analogWrite(pwmPin, speed);控制风扇转速attachInterrupt(digitalPinToInterrupt(tachPin), countPulse, FALLING);监听 TACHO 信号, 有风扇差异,计算rpm可能不一样,根据情况修改getFanRPM()计算风扇 RPM
7. 结论
本方案通过 ESP8266 控制风扇 PWM 实现调速,并获取风扇实时转速数据。用户可以通过 Web API 远程控制风扇运行状态,适用于 DIY 智能风扇控制系统。
最后上图
版权声明:本文标题:ESP8266遥控风扇转速:打造专属舒适风场 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/web/1771293790a3263874.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
更多相关文章
IP地址冲突让你头疼?Windows 解决指南帮你搞定!
1. 重启路由器: - 首先,最简单的解决方法是重启您的路由器或网络设备。这样可以刷新DHCP服务器的租用列表,并重新分配IP地址给连接的设备。 2. 手动设置静态IP地址: - 如果重启路由器后问题依然存在,
Wi-Fi环境下的电脑-打印机连接指南
在数字化的今天,电脑连接打印机是我们日常办公和生活中经常面临的任务之一。无论是打印工作文件、照片,还是制作一份重要的文档,正确连接电脑和打印机是确保顺利打印的首要步骤。然而,许多人可能在初次使用电脑连接打印机时感到困惑,不清楚应该如何
从零开始学习:利用PPPoeconf实现宽带的稳定连接
一、检测pppoeconf软件是否安装 $ dpkg -s pppoeconf 出现如下说明已安装: {{Package: pppoeconf St
一步到位!掌握SWF代码在远程控制中的应用
一、系统远程桌面 Windows系统自带了一款免费的远程控制工具—— 远程桌面连接。该工具通过输入目标电脑IP地址能够轻松的远程控制另一台电脑,这也是非常常见的一种远程控制电脑方法。步骤1.
玩转ADB,不再受限:无线连接技巧解析
无线连接除了可以通过 USB 连接设备与电脑来使用 adb,也可以通过无线连接——虽然连接过程中也有需要使用 USB 的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱 USB 连接线的限制啦! 操
手把手教你:如何通过ADB实现无绳操控,畅享自由玩乐
前言:除了USB方式连接Android终端设备,还有一种方法是通过adb connect命令利用TCPIP协议来连接。毕竟,PC端的USB口也是有限的。 1.USB 连接手机 确保 adb
无线连接手机:ADB秘籍,轻松开启高效调试模式!
通过IP 第一次需要USB 1、Android设备和电脑连接在同一局域网上 2、Android设备先用USB连接,adb devices查看是否连接成功 3、 adb tcpip 555,让设备在5555端口监
双屏大作战:一机如何完美兼容两个显示器?秘籍在这里!
目录在日常办公场景中,为了提高工作效率和增强交互体验,常需一台电脑同时连接两个显示器,正如我们在营业厅常见到的那样:工作人员屏幕方便内部操作,而另一屏幕则面向客户展示信息。对于广泛使用的Windows 7和Windows
Win7系统高手教程:快速搭建无线网络热点分享网速。
1.你的电脑必须有无线网卡,不限内置还是外置的,也就是说,台式机只要插上一个USB无线网卡一样能用。2.你电脑的系统必须是win7
春节假期后,快速破解你的网络连接难题:DNS配置教程
过年前回家的时候, 网络是好好的, 结果过年来, 网络就连接不上了。 我的网络连接是这样的, 我出钱, 电信人员给我分配了一个账号x和密码y, 并给我一根从远处牵过来的网线, 该网线通过无线路由器, 在无线路由器上再设置一个账
Linux WiFi Direct Connection Simplified: Python Modules for Beginners
Wifi-Direct-on-Linux Python模块介绍 去发现同类优质开源项目: 模块简介 本文档介绍了名为 Wifi-Direct-on-Linux的Python模块,该模块用
全新宽带自动连接脚本,快速稳定上网不是梦
zjnu宽带自动连接 import subprocessimport timeimport osfrom datetime import datetimeimport pyautoguiimport requestsde
开机即上网?教你一键设置Windows 10自动连上宽带。
工具原料 Windows 10 专业版。 方法步骤 用“如何在 Windows 10 里创建、断开宽带连接”的方法,建立一个宽带连接,确保其能够正常连接。 在“开始”按钮上右键—
“笔记本连局域网OK,一接TP-Link立马受限制或无连接?这啥情况?”
一> 问题环境:1.TP-Link路由连接无线局域网。 2.使用MAC地址绑定,自动获取IP 3.系统: WINXP(sp2)二>问题:开机后自动连接无线局域网,结果提示&qu
瑞星杀毒拖累上网速度?对考试登录有啥坏处?
最近一周来,我一直被一个问题所困扰,我在重装XP系统后发现了一个问题,就是在打开浏览器浏览网页、在线视频时,速度非常慢(尝试了搜狗、IE),大概只有1KBs,经常出现0速度(通过瑞星安全助手查看到的,我用的网通2Mbs)
内存条迷宫?轻松掌握品牌、型号、频率的辨识技巧!
要查看电脑内存条的数量、品牌、型号和频率,可以通过以下几种方法来实现:方法一:通过任务管理器查看(适用于Windows10和Windows11) 可查看内存的总容量、速度(频率)、已用插槽数量、外形规格等信息
WiFi进化再一步!NETGEAR首推符合WiFi6规范的路由神器!
11月8日上午消息,NETGEAR(美国网件)宣布推出旗下首款符合Wi-Fi 6规范的无线路由器,Nighthawk AX8。 Wi-Fi 6即第六代Wi-Fi标准,IEEE定义为802.11ax。网件称,相较于当下主流的Wi
一步到位:本地和跨网远程桌面连接攻略
远程桌面设置主要分为启用远程访问功能和进行远程连接两个阶段,需根据操作系统版本选择对应方法。 一、目标计算机被远程桌面开启设置通用条件 1、系统版本要求: Windows 专业版企业版旗舰版支持远程桌
优化Windows 10键盘灵敏度,玩转游戏
细心的用户发现win10 64位系统键盘时反应很慢,每次都要等上好几秒才有响应,降低工作效率,这是怎么回事?可能是键盘设置的灵敏度问题。 那么win10怎么加快键盘反应速度?只要调节一下键盘灵敏度即可。win10怎
Win10键盘操作提速术:轻松几步优化键盘响应
细心的用户发现win10 64位系统键盘时反应很慢,每次都要等上好几秒才有响应,降低工作效率,这是怎么回事?可能是键盘设置的灵敏度问题。 那么win10怎么加快键盘反应速度?只要调节一下键盘灵敏度即可。win10怎


发表评论