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 连接 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 智能风扇控制系统。

最后上图

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

更多相关文章

ESP8266遥控风扇转速:打造专属舒适风场

1月前

1. 概述 本文介绍如何使用 ESP8266 控制风扇转速,并通过 Web 服务器调整风扇速度及获取当前转速。该方案适用于支持 PWM 调速的 4Pin 风扇。 2. 所需工具 硬件:ESP8266

ESP8266玩转物联网:带你揭秘控制风扇的小秘密

1月前

1. 概述 本文介绍如何使用 ESP8266 控制风扇转速,并通过 Web 服务器调整风扇速度及获取当前转速。该方案适用于支持 PWM 调速的 4Pin 风扇。 2. 所需工具 硬件:ESP8266

详解本地连接下调整IP及DNS技巧

1月前

本地连接-IP和DNS设置: 自定义 IP和DNS 地址, 一般自己拉宽带的 不用设置(自动获取IP和DNS),有时连不上网 可能会设置一下 DNS 地址(电信或者网通或者铁通等提供给你的 地址); 一般 局域

从新手到高手:详解使用PPPoeconf优化宽带连接步骤

1月前

一、检测pppoeconf软件是否安装 $ dpkg -s pppoeconf 出现如下说明已安装: {{Package: pppoeconf St

无线路由器连接光猫遇阻?轻松解决E1630问题!

1月前

昨天整理了一个晚上,终于搞定无线路由器和猫的连接问题了。原本昨天上午电信过来安装宽带,上午都测试好了,唯一没做的就是给无线宽带设置密码,导致下午就被人盗了,也设置了密码。害得我和几个邻居都用不了了,没办法,只能

一文精通!ADB无线模式让你的开发旅程更便捷

1月前

前言:除了USB方式连接Android终端设备,还有一种方法是通过adb connect命令利用TCPIP协议来连接。毕竟,PC端的USB口也是有限的。 1.USB 连接手机 确保 adb

双屏大作战:一机如何完美兼容两个显示器?秘籍在这里!

1月前

目录在日常办公场景中,为了提高工作效率和增强交互体验,常需一台电脑同时连接两个显示器,正如我们在营业厅常见到的那样:工作人员屏幕方便内部操作,而另一屏幕则面向客户展示信息。对于广泛使用的Windows 7和Windows

MVC实战:通过HTTPS保护应用与授权过程解析

1月前

1 using System.Web.Mvc;23 namespace Snowdream.Demo.RequireHttps4 {5     public class RequireH

“打不出字的键盘?快速搞定,恢复输入流畅体验。”

1月前

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

键盘失灵大作战:轻松搞定电脑打字难题

1月前

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

从入门到精通:Linux环境下的WiFi-Direct Python模块实战指南

1月前

Wifi-Direct-on-Linux Python模块介绍 去发现同类优质开源项目: 模块简介 本文档介绍了名为 Wifi-Direct-on-Linux的Python模块,该模块用

告别卡顿!搞定电脑启动慢的三大秘籍

1月前

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

瑞星杀毒拖累上网速度?对考试登录有啥坏处?

1月前

最近一周来,我一直被一个问题所困扰,我在重装XP系统后发现了一个问题,就是在打开浏览器浏览网页、在线视频时,速度非常慢(尝试了搜狗、IE),大概只有1KBs,经常出现0速度(通过瑞星安全助手查看到的,我用的网通2Mbs)

一文掌握!Win7系统中快速搭建本地网络的技巧与方法

1月前

本地连接是指电脑中不同网络创建的连接,一般情况计算机有几个网卡就会出现几个本地连接。最近有不少小伙伴发现自己的电脑没有本地连接,想要创建又不知道怎么操作。今天小编就带着大家一起看看Win7电脑创建本地连接网络的操作方法吧! W

新设备不配合?教您轻松搞定Apple移动设备启动问题

1月前

关于爱思助手 下面是对Apple mobile device无法启动的问题描述和解决方法 一、问题描述在更换了华硕天选的笔记本后,用数据线连接ipad和电脑,爱思助手7.0提示无法检测到苹果设备,即驱动异常

电脑性能开挂?教你快速识别你的内存条品牌、型号及频率

1月前

要查看电脑内存条的数量、品牌、型号和频率,可以通过以下几种方法来实现:方法一:通过任务管理器查看(适用于Windows10和Windows11) 可查看内存的总容量、速度(频率)、已用插槽数量、外形规格等信息

远程桌面入门:本地设备与防火墙设置详解

1月前

远程桌面设置主要分为启用远程访问功能和进行远程连接两个阶段,需根据操作系统版本选择对应方法。 一、目标计算机被远程桌面开启设置通用条件‌ ‌1、系统版本要求‌: Windows 专业版企业版旗舰版支持远程桌

一步到位:本地和跨网远程桌面连接攻略

1月前

远程桌面设置主要分为启用远程访问功能和进行远程连接两个阶段,需根据操作系统版本选择对应方法。 一、目标计算机被远程桌面开启设置通用条件‌ ‌1、系统版本要求‌: Windows 专业版企业版旗舰版支持远程桌

Mac用户快速指南:连接Windows共享资源

1月前

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

Win10键盘操作提速术:轻松几步优化键盘响应

22天前

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

发表评论

全部评论 0
暂无评论