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

最后上图

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

更多相关文章

轻松掌握Linux中WiFi-Direct与Python的奇妙组合,从原理到实践

1月前

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

Unlock WiFi Direct on Linux: Python Modules for Seamless Networking

1月前

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

电脑开得像蜗牛?这里有几个小窍门帮你解决

1月前

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

一学就会的PDCN路由器使用手册及登录技巧

1月前

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

硬件升级指南:一文解读如何看懂内存条的参数

1月前

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

宽带出错633怎么办?快来看看这份超实用的快速修复指南!

1月前

今天继续和大家科普一下错误 633 的解决方法。问题一:错误 633 是什么意思?答:错误 633 表示调制解调器(或者其它连接设备)已在

跨平台大融合:Windows与Apple设备间的iPhone连接解决方案大全

1月前

Windows苹果驱动终极指南:彻底解决iPhone连接难题

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

1月前

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

从零开始:全面解读远程桌面连接步骤与技巧

1月前

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

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

25天前

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

不再为 Mac 连接 Apple ID 的错误烦恼,轻松搞定!

25天前

最近几天mac上的apple id无法登录了,各种查资料,google,百度,试了网上的各种方法,配过dns,然而并没有什么卵用。appstore无法更新软件,作为一名奋青,宝宝内心是崩溃的。 然而当我最终要放弃时,想到会不会

EuroLLVM'19:连接LLVM与Flash开发者的世界

21天前

The LLVM Foundation is excited to announce the program for the EuroLLVM’19 developers’ meeting (April 8 - 9 in Brusse

电脑打印机连接入门指南:USB、WiFi、共享,轻松搞定,打印无忧

20天前

本文是一篇关于“ 电脑怎么连接打印机”的终极技术指南,旨在解决从家庭用户到办公室环境中的各类打印机连接难题。文章将系统性地讲解四种核心连接方法:传统的 USB有线连接、主流的

从入门到精通:USB、WiFi、共享打印机,电脑与打印设备的完美衔接

20天前

本文是一篇关于“ 电脑怎么连接打印机”的终极技术指南,旨在解决从家庭用户到办公室环境中的各类打印机连接难题。文章将系统性地讲解四种核心连接方法:传统的 USB有线连接、主流的

重启路由器的深层奥秘:为何能改善网络速度?

19天前

问题描述: 路由器为什么每隔一周重启一下,清理历史数据可以改善网速呢? 问题解答: 路由器定期重启有助于改善网速的原因主要包括以下几点: 1. 内存和缓存清理:路由器在运行过程中会积累临时数据和缓存,这

内存条揭秘:简单几步教你辨别品牌、型号与频率

17天前

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

主页被修改成httpwww.yy4000.cn等类似首页,无法更改,怎么办?

15天前

今天在测试的时候遇到个问题,就是不能从现场环境切换回局里的测试环境,而且输入www.baidu.com时都默认为httpwww.yy4000.cn的页面。Internet选项中--连接--局域网设置里的代理服务器,主页选项均已改为空且已

如何在电脑上控制手机?电脑控制手机教程_vysor

14天前

要通过电脑控制手机,您可以使用一些专业软件,如Total Control、ApowerMirror、或AirDroid等。这些软件允许您将手机屏幕镜像到电脑,并使用鼠标和键盘控制手机。以下是一个简单的教程,教您如何使用Total Co

电脑怎么连接wifi?【图文详解】笔记本电脑怎么连接无线wifi?笔记本电脑连不上wifi怎么办?_笔记本电脑怎么连接wifi

9天前

一、问题背景 现在不管是上班办公、居家追剧,还是在线学习, 都离不开笔记本电脑连WiFi。但很多人,尤其是刚接触电脑的新手,一看到没弹出WiFi列表、不知道点哪里输入密码,就会犯难。 还

手机连WiFi后CSDN访问不了?看这里快速解决

8天前

首先说明一下,我的手机是华为Y220T,手机配置比较低。以前用过一个无线路由,用Y220T连接WiFi以及上网都没有任何问题,最近买了一个新的无线路由,设置完毕之后,发现手机能连上新路由的WiFi,但是却不能上网。浏览器上不了网,

发表评论

全部评论 0
暂无评论