芯查查logo
  • 物料选型
  • 数据服务
    1. 新产品
    2. 查替代
    3. 丝印反查
    4. 查品牌
    5. PCN/PDN
    6. 查方案
    7. 查代理
    8. 数据合作
  • 应用方案
  • SaaS产品
      SaaS产品
    1. 供应链波动监测预警
    2. 半导体产业链地图
    3. 智能BOM管家
    4. 解决方案
    5. 汽车电子
    6. 政府机构
    7. 数据API
  • 商城
  • 行业资讯
    1. 资讯
    2. 直播
  • 论坛社区
    1. 论坛
    2. 学习
    3. 测评中心
    4. 活动中心
    5. 积分商城
  • 查一下
ESP8266时钟还能当万用表?V16.4颠覆认知!
原创 发布时间:2026/03/20 21:34
版块:
开源硬件项目 电子DIY PCB设计 电子元器件 单片机/MCU论坛
简介:突破天花板!ESP8266时钟V16.5硬核升级!集成四合一数字万用表:电压、电流、电阻、NTC温度测量,OLED与网页实时同步,按键切换模式,硬件校准,让时钟变身桌面测量工作站。

远程查看干电池电压演示:

开机检测A0电压自动切换模式:

1.0V → 强制热点配置模式

 

0.2~0.3V → 电压表模式

 

0.4~0.5V → 电流表模式

 

0.6~0.7V → 电阻测试模式

 

0.8~0.9V → 温度计模式

 

用法:
 GND ----- A0 -------------------- 3V

    |               |                                   |

 电阻 _______|______电阻(可调)_______|

就是A0和3V接可调电阻,A0和GND也接电阻(10K/20K/100K)都可以,重启设备 

破解页面升级了:

这次破解添加了5个动态密码:

     case 0: return ssid + "12345";
     case 1: return ssid + "123456";
     case 2: return ssid + "12345678";
     case 3: return "123" + ssid + "123";
     case 4: return ssid; 
完整代码展示:

// === Password ===
String commonPasswords[] = {
 "", "123456789abc", "qweasdzxc", "123456789", "password", "1234567890a", 
 "88888888", "999999999", "P@ssword", "qwertyuiop", "administrator",
 "Administrator", "Password", "QAZWSXEDC", "00000000", "123456QWETRY", "qazwsxedcrfv",
 "abc123456789", "password1", "123123123", "87654321", "qwerty123", "123456qwe",
 "admin123", "qwertyuiop123", "abc123456abc", "12345678", "1234567890", "password123",
 "123456abc", "abc123456", "mnbvcxz", "11111111", "12344321", "66666666",
 "lkjhgfdsa", "1qaz2wsx", "aa123456", "qwe123456", "zxcvbnm", "asdfghjkl",
 "password1234", "zvs142857", "987654321", "RASSWORD"
};

const int passwordCount = sizeof(commonPasswords) / sizeof(commonPasswords[0]);
const int STATIC_PASSWORD_COUNT = sizeof(commonPasswords) / sizeof(commonPasswords[0]);
const int DYNAMIC_PASSWORD_COUNT = 5;
const int TOTAL_PASSWORD_COUNT = STATIC_PASSWORD_COUNT + DYNAMIC_PASSWORD_COUNT;

String getPasswordForIndex(int idx, const String& ssid) {
 if (idx < STATIC_PASSWORD_COUNT) {
   return commonPasswords[idx];
 } else {
   int d = idx - STATIC_PASSWORD_COUNT;
   switch (d) {
     case 0: return ssid + "12345";
     case 1: return ssid + "123456";
     case 2: return ssid + "12345678";
     case 3: return "123" + ssid + "123";
     case 4: return ssid; 
     default: return "";
   }
 }
}
假如有个网络名是ESP8266-WiFi,那么最后5个会尝试这些密码:

ESP8266-WiFi12345
ESP8266-WiFi123456

123ESP8266-WiFi123

ESP8266-WiFi


头文件升级:
#include <ESP8266WiFi.h>
#include <U8g2lib.h>
#include <ESP8266WebServer.h>
#include <DNSServer.h>
#include <EEPROM.h>
#include <TimeLib.h>
#include <NtpClientLib.h>
#include <ESP8266HTTPClient.h>
#include <ESP8266httpUpdate.h>
#include <SimpleTimer.h>
#include <Wire.h>
#include <FS.h>
#include <lwip/napt.h> // WiFi NAT
extern "C" {
 #include <user_interface.h>
 bool wifi_softap_deauth(uint8_t *mac);
}

#define BUTTON_PIN 14 // D5 GPIO14
bool lastButtonState = HIGH;
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 50;
这个 lwip/napt.h 是WiFi放大,已在V15.7以上包含(V16.4升级了)

这个“#include <user_interface.h>”是点击“挂起”后重定向127.0.0.1+ Deauth 

接下来介绍下Deauth:
Deauth 是 Deauthentication(解除认证)的缩写。在无线网络(Wi-Fi)领域,它指的是一种管理帧,用于通知一个设备断开与无线接入点(如路由器)的连接。

简单来说,Deauth 就像一把“万能钥匙”,可以强制把任何 Wi-Fi 设备踢下线。

1. 它的正常用途

在 IEEE 802.11(无线局域网标准)协议中,Deauth 帧是标准功能,用于优雅地终止连接。例如:

当你手动点击“断开 Wi-Fi”时,手机会发送 Deauth 帧告诉路由器“这个设备需要强制断开连接”。

路由器在重启或踢开信号太弱的设备时,也会发送 Deauth 帧。
攻击原理:
攻击者使用无线网卡发送伪造的 Deauth 帧,假装自己是路由器发给你的手机,或者假装是你的手机发给路由器。收到这个帧后,你的设备就会断开连接。


这个应用到ESP8266 V16.4(目前只有16.4才有)

点击操作的"挂起"按钮

点击之后,会重定向127.0.0.1,还会发送Deauth,这是为了增加安全性,阻止其他设备蹭网,这时点击"挂起"不要"断开"
对应代码:

      } else if (action == "suspend") {
       suspendedMAC = mac;
       connectedClients[i].isSuspended = true;
       redirectActive = true;
       message = "已挂起设备: " + mac + ",设备将被重定向";
       Serial.println("设备 " + mac + " 已被标记为挂起状态");
       sendDeauthToClient(mac); // WiFi Deauth
       dnsServer.start(DNS_PORT, "*", IPAddress(127,0,0,1));
     } else if (action == "resume") {
       if (suspendedMAC == mac) {
         suspendedMAC = "";
         redirectActive = false;
       }
其中,
       sendDeauthToClient(mac); // WiFi Deauth
       dnsServer.start(DNS_PORT, "*", IPAddress(127,0,0,1));
就包含了重定向127.0.0.1+Deauth 

当检查时发现陌生设备连接时,就找到陌生设备的MAC地址,点击"挂起"
 

所有功能展示:


1. 时钟模式

NTP 网络自动校时(time.windows.com)

日期显示(年-月-日)

时间显示(时:分:秒,含秒)

温度显示(LM35DZ 或 NTC 热敏电阻)

天气推断(根据温度显示:❄️雪天 / ☁️阴天 / 🌧️雨天 / ☀️晴天 / 🔥Very Hot!)

自动识别 OLED(I2C 地址 0x3C / 0x3D)

⚡ 2. 万用表模式(A0 模拟测量,一键切换)

电压表:0–3.3V,自动切换 mV / V

电流表:uA / mA / A 自适应(需外接采样电阻)

电阻计:Ω / kΩ / MΩ 自动换挡(分压法)

温度计:NTC 热敏电阻,Steinhart-Hart 方程,精度 ±1°C

📡 3. WiFi 功能

扫描周边网络(按信号强度排序)

密码字典测试(50+ 静态弱密码 + 动态生成如“SSID+123456”)

开放网络自动连接

优先连接预设网络(3 个固定 + 自动扫描开放网络)

自动保存成功连接的 WiFi 凭证(EEPROM,最多 10 组)

断线重连
WiFi仅供学习使用,这里只演示效果

🔥 4. 热点模式 + 设备管理

开放热点 ESP8266(可配置密码)

Web 管理界面(http://192.168.4.1)

查看连接设备(IP、MAC、设备类型识别)

设备操作:

断开设备(发送 Deauth 帧,强制踢出)

挂起设备(DNS 劫持到 127.0.0.1,能连 WiFi 但无法上网)

恢复设备(取消劫持)

热点状态监控(断开后 60 秒自动恢复)

📶 5. NAT 信号放大

启用/禁用 NAT(网络地址转换)

让连接热点的设备通过 ESP8266 的上级 WiFi 上网,实现简易 WiFi 中继/信号放大

6. OTA 更新

自动检查云端更新(解析论坛页面版本号)

本地文件系统版本检查(预定义版本数组)

通过 HTTP 下载并更新固件(ESPhttpUpdate)

支持网页手动上传 .bin 固件

更新失败自动回滚(不变砖)

7. 蓝屏保护机制

触发条件:

NTP 时间同步失败(年份 < 2000 且重试 5 次)

内存不足(< 10KB)

所有 WiFi 连接失败

模拟 Windows 蓝屏样式(:( + 进度条)

进度条随机增长(1%~10% 增量),制造“收集错误信息”的视觉效果

结束后自动重启

8. 硬件交互

按键(D5 GPIO14):单击强制切换到热点模式

A0 电压检测启动模式(上电时):

1.0V → 强制热点配置模式

0.2~0.3V → 电压表模式

0.4~0.5V → 电流表模式

0.6~0.7V → 电阻测试模式

0.8~0.9V → 温度计模式

🧠 9. 系统管理

实时内存(RAM)监控(低于 10KB 触发蓝屏)

看门狗定时器防死机

EEPROM 存储多组 WiFi 凭证

串口调试输出

10. Web 管理页面(全功能)

主页:设备信息 + 设备管理表格

WiFi 配置:扫描并连接网络

密码管理:查看/删除已保存的 WiFi 密码

高级设置:手动同步 NTP、启用/禁用 NAT、查看内存/Flash

万用表模式切换(电压/电流/电阻/温度页面)

OTA 更新上传

蓝屏测试触发

11. 设备类型识别

根据 MAC 地址前缀识别品牌(Apple/HUAWEI/XIAOMI/VMware/Windows)

12. 其他

支持 SPIFFS 文件系统

SimpleTimer 独立刷新 OLED

多模式状态机:时钟 / 破解 / 热点 无缝切换


V12.8古老蓝屏:

好像从V15就把":("放到了左上角,这样猜像Windows蓝屏
V15.7以上就随机百分比+清理内存


常见问题解决(必读):

 

1:不会写代码怎么办?不会写代码也能复刻!zvs142857 WiFi OLED V16.4.txt这个文件是源码,zvs142857 ESP8266 V16.4.zip里面有.bin(固件)还有.mix(Mixly文件)不必担心无法复刻

 

2:编译器报错,上传失败:如果用Mixly上传,不要把.cpp和.mix文件搞一起,不要在压缩包直接打开.mix文件,可以把.mix文件复制桌面再上传

 

3:连不上网络:代码不能直接复制粘贴,先找到这里(Ctrl+F是查找):
// === 加载优先连接网络模块 ===
void initPriorityNetworks() {
 strcpy(priorityNetworks[0].ssid, "1");// WiFi名称需要修改
 strcpy(priorityNetworks[0].password, "输入密码");
 strcpy(priorityNetworks[1].ssid, "2");// WiFi名称需要修改
 strcpy(priorityNetworks[1].password, "输入密码");
 strcpy(priorityNetworks[2].ssid, "3");// WiFi名称需要修改
 strcpy(priorityNetworks[2].password, "输入密码");
把1、2、3换成网络名,把"输入密码"换成密码

还有这里:
// === 检查并更新配置 ===
void checkAndUpdateConfig() {
 Serial.println("=== Update SSID and Passwords ===");
 if (strcmp(priorityNetworks[0].ssid, "输入WiFi名称") == 0) {
   strcpy(priorityNetworks[0].ssid, "1");// WiFi名称需要修改
   strcpy(priorityNetworks[0].password, "密码");
   configUpdated = true;
 }
 if (strcmp(priorityNetworks[1].ssid, "输入备用WiFi名称") == 0) {
   strcpy(priorityNetworks[1].ssid, "2");// WiFi名称需要修改
   strcpy(priorityNetworks[1].password, "密码");
   configUpdated = true;
 }
   if (strcmp(priorityNetworks[2].ssid, "输入备用WiFi名称2") == 0) {
   strcpy(priorityNetworks[2].ssid, "3");// WiFi名称需要修改
   strcpy(priorityNetworks[2].password, "密码");
   configUpdated = true;
 }
   if (strcmp(priorityNetworks[3].ssid, "输入备用WiFi名称3") == 0) {
   strcpy(priorityNetworks[3].ssid, "");
   strcpy(priorityNetworks[3].password, "");
   configUpdated = true;
 }
     if (strcmp(priorityNetworks[4].ssid, "输入备用WiFi名称4") == 0) {
   strcpy(priorityNetworks[4].ssid, "");
   strcpy(priorityNetworks[4].password, "");
   configUpdated = true;
 }
 if (configUpdated) {
   Serial.println("配置更新完成!");
 }
}
替换成自己的即可。

4:没有Mixly怎么办?其实用其他的也可以,但是Mixly支持积木和代码(MIXLY可以下载)

5:写不进去代码怎么办?检查COM端口,像以下情况,说明系统无法识别,需要换成数据线+串口驱动.rar

还是上次一样:此电脑+管理……
COM1是Windows的端口,要切换成ESP8266的

上次说的不准确,COM3~COM10,准确来说打开设备管理器点击"端口"查看是否有相似设备:
USB-SERIAL CH340

USB-SERIAL CH210

Silicon Labs CP210x USB to UART Bridge

Silicon Labs CP340x USB to UART Bridge

CH340 USB

CH343 USB SERIAL

CH341G ESP8266

ESP8266 USB CH340

CH210 USB ESP-12E

CH340 ESP12F

WCH USB CH340

WCH

ESP8266

……
如果没有,显示"其他设备"就要安装驱动

后面一般带(COM3)(COM4)(COM5)(COM6)(COM7)(COM8)……(只要不是COM1 COM2就对)
 

废话不多说直接复刻!
Update界面一样

“高级”页面就新增了

从

到

只需10秒左右,直接完成了更新,连接服务器等
以后只发更新了

 

最后,你觉得它还能干什么?
评论区交给你来“定义”下一版功能 [doge]

多选 这次想复刻吗?
想
进行中 2人参与 2050-05-05 结束
投票
工程附件
zvs142857 WiFi OLED V16.4.txt
zvs142857 ESP8266 V16.4.zip
zvs142857 ESP8266 V16.4 Voltage.zip
串口驱动.rar
申请原创奖励
2026/03/20 21:34
  • 举报
😁😂😃😄😅😆😉😊😋😌😍😏😒😓😔😖😘😚😜😝😞😠😡😢😣😤😥😨😩😪😫😭😰😱😲😳😵😷😸😹😺😻😼😽😾😿🙀🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏✂✅✈✉✊✋✌✏✒✔✖✨✳✴❄❇❌❎❓❔❕❗❤➕➖➗➡➰🚀🚃🚄🚅🚇🚉🚌🚏🚑🚒🚓🚕🚗🚙🚚🚢🚤🚥🚧🚨🚩🚪🚫🚬🚭🚲🚶🚹🚺🚻🚼🚽🚾🛀Ⓜ🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕
@好友

全部评论

加载中
游客登录通知
已选择 0 人
自定义圈子
移动
发布帖子
发布动态
发布问答
发布者
zvs142857
目录

1. 它的正常用途

⚡ 2. 万用表模式(A0 模拟测量,一键切换)

📡 3. WiFi 功能

🔥 4. 热点模式 + 设备管理

📶 5. NAT 信号放大

6. OTA 更新

7. 蓝屏保护机制

8. 硬件交互

🧠 9. 系统管理

10. Web 管理页面(全功能)

11. 设备类型识别

12. 其他

最新帖子
RA4M2-SENSOR+ADC采集工业位移传感器RA4M2-SENSOR+SCI(IIC)触屏测试ESP8266时钟还能当示波器?V16.6硬核更新!GBSC-扩展板_带信号增强ESP8266时钟还能当万用表?V16.4颠覆认知!
热门版块
查看更多
萤火工场
问型号
问技术
问行情
电子DIY
机器人开源工坊
硬件资源下载区
飞腾
开源硬件项目
每日打卡

155

收藏

分享

微信扫码
分享给好友

评论