admin 管理员组

文章数量: 1184232

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 连接 yang1234 WiFi,并获取 IP 地址(串口监视器查看)。
  • 假设 IP 地址为 192.168.31.100(可以通过路由器查看esp8266的ip)

2️⃣ 设置风扇速度

在浏览器或 Postman 访问:

  • speed=0 :最低速度(有些风扇会停止)
  • speed=128 :50% 速度
  • speed=255 :100% 速度

3️⃣ 获取风扇当前转速

在浏览器或 Postman 访问:

返回:

Current RPM: 1200

6. 说明

  • analogWrite(pwmPin, speed); 控制风扇转速
  • attachInterrupt(digitalPinToInterrupt(tachPin), countPulse, FALLING); 监听 TACHO 信号, 有风扇差异,计算rpm可能不一样,根据情况修改
  • getFanRPM() 计算风扇 RPM

7. 结论

本方案通过 ESP8266 控制风扇 PWM 实现调速,并获取风扇实时转速数据。用户可以通过 Web API 远程控制风扇运行状态,适用于 DIY 智能风扇控制系统。

最后上图

本文标签: 连接 速度 控制风扇

更多相关文章

如何解决电脑和音响对接无声的神秘迷雾?

1月前

当音响插电脑上没声音时,可以按照以下步骤进行排查和解决: 一、检查音响连接 确认连接牢固:检查音响与电脑的连接是否牢固,包括USB接口或音频线的连接。 如果是

从根源解决:电脑和音响无法同步播放声音的问题指南

1月前

当音响插电脑上没声音时,可以按照以下步骤进行排查和解决: 一、检查音响连接 确认连接牢固:检查音响与电脑的连接是否牢固,包括USB接口或音频线的连接。 如果是

键盘不听使唤?快速诊断与修复指南,告别打字障碍

1月前

电脑键盘打不了字,这是我们电脑使用过程中,偶尔会遇到的电脑故障问题。一般来说,电脑键盘打不出字,可能是硬件故障、驱动问题或系统设置错误等多种原因引起。本文将详细介绍一些常见的原因和解决方法,帮助用户恢复正常的键盘输入功能。 一

升级VS至2019后,快速链接CAD2019的C#技巧分享

1月前

目录我是想用Qt连接CAD的,而且主要应用2D部分,之前找的Free CAD挺好的,只是它主要是发展3D部分,综合来看还是得用autocad,最开始我电脑里只有vs2013,因为之前出现过卸载不干净然后重做系统的大坑情况

只需一分钟,让你的电脑恢复黄金般的开机速度

1月前

有些朋友觉得,电脑怎么开机越来越慢了,刚用的时候用二十秒就完成了开机,到后面都要一两分钟擦能开机,这是怎么回事呢?最近有位朋友发现电脑开机启动慢,有点无法忍受。那么电脑开机慢怎么解决呢?下面,小编就把电脑开机慢的解决方法分享给大家。

轻松配置PDCN路由器:从入门到精通的登录地址进阶之路

1月前

注:使用期间千万不要恢复出厂! 切记。 麻烦评价不要写敏感词,非常感谢哈!路由器初始无线 WIFI名称 : PDCN

摆脱手机谷歌浏览器离线模式的困扰:快速修复攻略

1月前

不知道用户在使用的时候有没有遇到无法连接网络的问题,今天小编就会与大家一起来分享一下,在使用谷歌浏览器时,如果出现无网络连接的问题时,要如何解决,首先用户可以检查一下自己的网络情况,如果这些都没有问题,那么就可以进行其他的操作,想其他

'射雕游戏'与数据库之战:一场关于连接、解决与胜利的故事

1月前

启动游戏发现,初始化数据库失败,错误信息为:dial tcp 127.0.0.1:3306: connect: connection refused mysql -uroot -p  之后输入密码提示:Can 't con

Mac与Windows共享文件连接:实用步骤解析

1月前

MAC系统如何连接Windows共享文件?MAC系统和Windows是两个不同的系统,有时候我们想要MAC系统访问Windows共享文件,那么有什么方法呢,下面小编就为大家介绍一下。MAC系统连接Windows共享文件的方

D-Link 655路由器USB共享打印,办公效率提升利器

27天前

买了一台D-link DIR-655 无线路由器,带USB口,可以接驳USB外设(打印机、U盘、扫描仪等),计划放在公共区域,大家可以远程通过WIFI共享设备,但同时只能有一个人在使用。 主要步骤(以打印机为例):

旧版iTunes连接AppleID出现服务器错误?轻松解决教程!

26天前

菜鸟一枚,最近在学习ios逆向,由于ios版本低,应用商店无法安装ios应用,需要用到iTunes(12.6.5.3)和ios旧版应用下载器 后来发现是提前打开了这个工具导致登录失败,这个工具会拦截网络,所以登录前关闭工具。

当旧版iTunes连接Apple ID出错时:快速解决步骤

26天前

菜鸟一枚,最近在学习ios逆向,由于ios版本低,应用商店无法安装ios应用,需要用到iTunes(12.6.5.3)和ios旧版应用下载器 后来发现是提前打开了这个工具导致登录失败,这个工具会拦截网络,所以登录前关闭工具。

遇到错误651?跟着指南重启设备,让你的网络马上恢复!

23天前

转载自: 今天遇到了这种问题很是头疼,我自己使用最后一种方法解决的,也就是启动服务。 以下是转载的原文:如果你的win7拨号的时候遇到了651错误,最好能够换一个vista或者xp系统再拨号看看是

告别延迟!Win10键盘响应速度优化全面攻略

22天前

细心的用户发现win10 64位系统键盘时反应很慢,每次都要等上好几秒才有响应,降低工作效率,这是怎么回事?可能是键盘设置的灵敏度问题。 那么win10怎么加快键盘反应速度?只要调节一下键盘灵敏度即可。win10怎

从菜鸟到高手,台式电脑WiFi连接简易教程

21天前

在这个互联网时代,无论是工作还是娱乐,我们都离不开网络的陪伴。对于使用台式电脑的朋友来说,虽然大多数台式机默认配置了有线网卡,但无线网络带来的便捷性让越来越多的人开始考虑如何让自己的台式机也能享受到WiFi带来的自由与便利。那么,台式

当192.168.1.253不再工作,如何重启TP Link路由器的管理界面

18天前

TL-WR710N是TP Link在很多年前发布的一个迷你型的便携路由器,一插上还能用,直接reset打算重设密码,结果根据它给的192.168.1.253根本打不开。 # 解决方法 ping一下192.168.1.2

从入门到精通:轻松掌握路由器上PPPoE连接步骤

18天前

在家庭网络环境中,我们经常使用PPPoE(点对点协议过夜)连接来接入宽带互联网。然而,对于一些没有网络专业知识的人来说,配置PPPoE连接可能会有些困难。在本文中,我将详细介绍如何轻松配置PPPoE连接,无需繁琐的操作。让我们一起来看

笔记本电脑怎么连接WiFi 这几种方法最实用_没有路由器笔记本电脑怎样连接无线网

16天前

在使用笔记本电脑时,最基础也是最重要的操作之一就是连接WiFi。无论是办公、上网课还是娱乐,都离不开稳定的网络连接。不同系统的笔记本连接WiFi的方式略有不同,但掌握几个常见方法,就能轻松应对。下面为你详细介绍几种笔记本连接WiFi的

显卡闪一下就断电?这里有快速解决步骤

9天前

当我们开启电脑时,突然遇到闪烁的问题并随即断电,这可能是由于硬件或软件问题引起的。以下是一些可能的解决方案,帮助您解决这个问题。 检查电源连接:首先,确保电脑的电源线正确连接到电源插座,并且连接牢固。还要检查电源线是否受损

一插即用,USB无线网卡让台式机无缝接入无线上网,享受ADSL新体验

8天前

轻松无线,USB无线网卡共享台式机接入ADSL无线上网 笔者在去年10月份的时候购置了一部内置无线网卡的笔记本电脑,但这个功能一直没有机会得以应用。今年春节回家的几日中突然萌发了组建无线局域网的想法,因为如果想用自

发表评论

全部评论 0
暂无评论