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

最后上图

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

更多相关文章

IP地址冲突让你头疼?Windows 解决指南帮你搞定!

1月前

1. 重启路由器: - 首先,最简单的解决方法是重启您的路由器或网络设备。这样可以刷新DHCP服务器的租用列表,并重新分配IP地址给连接的设备。 2. 手动设置静态IP地址: - 如果重启路由器后问题依然存在,

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

1月前

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

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

1月前

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

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

1月前

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

玩转ADB,不再受限:无线连接技巧解析

1月前

无线连接除了可以通过 USB 连接设备与电脑来使用 adb,也可以通过无线连接——虽然连接过程中也有需要使用 USB 的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱 USB 连接线的限制啦! 操

手把手教你:如何通过ADB实现无绳操控,畅享自由玩乐

1月前

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

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

1月前

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

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

1月前

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

Win7系统高手教程:快速搭建无线网络热点分享网速。

1月前

1.你的电脑必须有无线网卡,不限内置还是外置的,也就是说,台式机只要插上一个USB无线网卡一样能用。2.你电脑的系统必须是win7

春节假期后,快速破解你的网络连接难题:DNS配置教程

1月前

过年前回家的时候, 网络是好好的, 结果过年来, 网络就连接不上了。 我的网络连接是这样的, 我出钱, 电信人员给我分配了一个账号x和密码y, 并给我一根从远处牵过来的网线, 该网线通过无线路由器, 在无线路由器上再设置一个账

Linux WiFi Direct Connection Simplified: Python Modules for Beginners

1月前

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

全新宽带自动连接脚本,快速稳定上网不是梦

1月前

zjnu宽带自动连接 import subprocessimport timeimport osfrom datetime import datetimeimport pyautoguiimport requestsde

开机即上网?教你一键设置Windows 10自动连上宽带。

1月前

工具原料 Windows 10 专业版。 方法步骤 用“如何在 Windows 10 里创建、断开宽带连接”的方法,建立一个宽带连接,确保其能够正常连接。 在“开始”按钮上右键—

“笔记本连局域网OK,一接TP-Link立马受限制或无连接?这啥情况?”

1月前

一> 问题环境:1.TP-Link路由连接无线局域网。 2.使用MAC地址绑定,自动获取IP 3.系统: WINXP(sp2)二>问题:开机后自动连接无线局域网,结果提示&qu

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

1月前

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

内存条迷宫?轻松掌握品牌、型号、频率的辨识技巧!

1月前

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

WiFi进化再一步!NETGEAR首推符合WiFi6规范的路由神器!

1月前

11月8日上午消息,NETGEAR(美国网件)宣布推出旗下首款符合Wi-Fi 6规范的无线路由器,Nighthawk AX8。 Wi-Fi 6即第六代Wi-Fi标准,IEEE定义为802.11ax。网件称,相较于当下主流的Wi

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

1月前

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

优化Windows 10键盘灵敏度,玩转游戏

23天前

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

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

22天前

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

发表评论

全部评论 0
暂无评论