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

最后上图

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

更多相关文章

Wi-Fi环境下的电脑-打印机连接指南

1月前

在数字化的今天,电脑连接打印机是我们日常办公和生活中经常面临的任务之一。无论是打印工作文件、照片,还是制作一份重要的文档,正确连接电脑和打印机是确保顺利打印的首要步骤。然而,许多人可能在初次使用电脑连接打印机时感到困惑,不清楚应该如何

从零开始学习:利用PPPoeconf实现宽带的稳定连接

1月前

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

一步到位!掌握SWF代码在远程控制中的应用

1月前

一、系统远程桌面 Windows系统自带了一款免费的远程控制工具—— 远程桌面连接。该工具通过输入目标电脑IP地址能够轻松的远程控制另一台电脑,这也是非常常见的一种远程控制电脑方法。步骤1.

从零开始:telnet命令入门及高级使用指南

1月前

本文主要讲解telnet命令在日常网络分析中的使用前言 在日常的工作和网络调试中,经常需要探测当前主机是否能够连接另外一台主机的相关端口,这时候我们就可以使用telnet命令来进行测试连接是否畅通,这篇文章在此基

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

1月前

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

无线连接手机:ADB秘籍,轻松开启高效调试模式!

1月前

通过IP 第一次需要USB 1、Android设备和电脑连接在同一局域网上 2、Android设备先用USB连接,adb devices查看是否连接成功 3、 adb tcpip 555,让设备在5555端口监

一文带你解锁ADB无线连接问题,告别技术障碍!

1月前

今天来个安卓的测试,无线连接adb的时候发现连接不到手机,之前是用adb无线连接过的,折腾了半天才搞定。如果有遇到相同问题的小伙伴,希望能解决你们的问题。环境介绍:实体机mac启动的win to go 外置硬盘

ADB无线大揭秘:快速连接手机,无需实体线束的神奇方法

1月前

通过IP 第一次需要USB 1、Android设备和电脑连接在同一局域网上 2、Android设备先用USB连接,adb devices查看是否连接成功 3、 adb tcpip 555,让设备在5555端口监

当音乐不再响起:教你排查音响与电脑连接不出声的原因

1月前

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

SATA世界大揭秘:从Raid到AHCI再到IDE,让你明白你的硬盘怎么转!

1月前

今天在一台计算机上插上CF卡,不能工作,CF卡灯不亮。 进BIOS,SATA mode从IDE改成AHCI就好了。 首先说一下,关于主板的SATA接口的工作模式,BIOS中常见的选项有以下三种:RAID(部分技嘉主板叫

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

1月前

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

WiFi Direct实战指南:一步到位开启你的无线互联新体验

1月前

WiFi Direct是一种无线通信技术,它允许设备之间直接建立点对点的连接,而无需通过中间的网络路由器或访问点。这种技术的出现使得设备可以在没有互联网连接的情况下进行直接通信,为编程带来了许多有趣的应用场景。 在编程中,我们

PDCN路由器入门:安装指导及快速登录教程

1月前

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

Win7新手必学:轻松建立本地网络连接教程

1月前

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

无需技术大神,详解PDCN路由器安装及登录地址设置

1月前

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

PDCN路由器小白也能上手:简单易懂登录地址解析

1月前

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

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

1月前

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

宽带连接出错633?这里有你急需的解决大法!

1月前

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

射雕玩家必看:面对初始化数据库难题,如何轻松突破

1月前

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

电脑连不上投影仪?这3步让你立刻搞定笔记本投影连接

22天前

在我们使用VGA数据线将家用投影仪和电脑连接,可以按快捷键“Windows”+P或Fn+F4(根据电脑品牌的不同而异,详细可以浏览一下电脑说明书操作,小编这里以Windows”+P为例)进行画面传输操作,一般电脑的投影快捷键“Wind

发表评论

全部评论 0
暂无评论