以下是示波器功能测试:
// 可以看到,波形电压为1.25V,频率87.7Hz
示波器最大测
0~3.3V
2.5KHz
2.5khz是理论最大测,实际最大测1KHz


V16.6 全部功能列表
一、时钟模式
NTP 网络时间同步,服务器 time.windows.com,东八区
OLED 显示:年-月-日,时:分:秒,温度(摄氏度),天气状态
温度传感器 LM35DZ 通过 A0 读取,电压转温度公式 电压*100
天气推断逻辑:<=3.0度显示 Snowy,3.1-10.0 Cloudy,10.1-18.0 Rainy,18.1-26.0 Cloudy,26.1-38.0 Sunny,>38.0 Very Hot
二、WiFi 功能
扫描周边 WiFi,按信号强度排序,去重
弱密码字典测试:50 个静态弱密码(如 12345678, password, qwertyuiop 等)
动态密码生成:SSID+12345, SSID+123456, SSID+12345678, 123+SSID+123, 直接 SSID 本身
开放网络自动连接(加密类型为无)
优先网络列表:5 个预设 SSID/密码,开机优先尝试
EEPROM 存储成功连接的 WiFi 凭证,最多 10 组
断线自动重连(每 10 秒检查一次 WiFi 状态)
加载已保存的凭证自动连接
三、热点模式(AP)
开放热点 SSID 为 ESP8266,密码 zvs142857(可改)
Web 管理后台地址 http://192.168.4.1
显示已连接设备列表(IP, MAC, 设备类型)
设备类型识别:根据 MAC 地址前缀识别 Apple, Huawei, Xiaomi, Samsung, Windows, Linux, Raspberry Pi, VMware, Google, ESP8266/ESP32 等
设备操作:断开(关闭热点 60 秒),挂起(DNS 重定向到 127.0.0.1 并发送 Deauth 帧强制断网),恢复(取消重定向)
热点状态监控:断开后 60 秒自动恢复,显示剩余时间
支持通过 Web 页面手动刷新设备列表
四、NAT 信号放大(WiFi 中继)
一键启用/禁用 NAT(网络地址转换)
功能:让连接到 ESP8266 热点的设备通过 ESP8266 的上级 WiFi 上网
仅在时钟模式且已连接上级 WiFi 时可操作
Web 页面“高级”设置中提供开关
五、万用表模式(通过 A0 测量)
上电时检测 A0 电压,自动进入对应模式:
0.35V 到 0.45V:电压表模式,量程 0-3.3V,自动切换 mV/V 单位
0.5V 到 0.6V:电流表模式,需外接 0.1 欧姆采样电阻,自动切换 uA/mA/A
0.65V 到 0.75V:电阻测试模式,使用 10k 欧姆上拉电阻,自动切换 欧姆/k欧姆/M欧姆
0.8V 到 0.9V:NTC 温度计模式,使用 10k 欧姆 NTC 热敏电阻,Steinhart-Hart 公式计算,精度正负1度
六、示波器模式(V16.6 新增)
触发条件:上电 A0 电压在 0.1V 到 0.3V 之间
测量范围:电压 0-3.3V,最高可测频率约 2.5kHz
采样点数:128 个,采样间隔 200 微秒(200us)
OLED 实时显示波形(横轴时间,纵轴电压)
自动计算并显示当前电压值和信号频率(单位 Hz, kHz, MHz)
Web 页面 /Oscilloscope 可同步查看
七、OTA 更新系统 (zvs142857 Update) (空中升级)
云端更新:从本地 HTTP 服务器下载 Update.txt 检查版本,发现新版本自动下载 .bin 并刷写
本地文件系统更新:预置版本数组(V12.5 到 V21),比较后提示更新
Web 手动上传:通过 /update 页面选择 .bin 文件上传更新
回滚机制:更新失败时自动下载 Rollback.bin 并恢复旧版本
更新保护:更新时 OLED 显示“请不要断电”,失败后自动回滚
更新失败处理:储存不足或写入错误时触发蓝屏并尝试回滚
八、Web 管理页面(完整功能列表)
主页:显示当前连接的 SSID, IP 地址,热点 IP,设备管理表格
刷新设备列表按钮
切换到热点模式按钮
切换到破解模式按钮
跳转到更新页面链接
测试蓝屏按钮
WiFi 配置页面:扫描网络,输入密码连接,保存到优先列表
密码管理页面:查看已保存的 WiFi 密码(明文),支持删除
高级设置页面:
重新同步 NTP 时间
显示 DNS 连接状态
显示当前版本
显示 RAM 可用大小(KB 和字节)
显示 Flash 已用/总大小及使用百分比
启用/禁用 NAT(WiFi 信号增强)
跳转到“更改当前不可更改的设置”(即 WiFi 配置页面)
查看密码页面链接
回滚页面链接
OTA 更新页面:显示 Flash 占用率,上传 .bin 固件
蓝屏测试页面
SPIFFS 格式化页面(/SPIFFS.format)
电压表、电流表、电阻测试、温度检测的独立 Web 页面(/voltage, /current, /resistance, /temperature)
其他功能页面:/other 包含所有测量模式入口,示波器入口
删除已保存网络的接口(/delete-network)
安全认证接口(/SecurityAuthentication)返回 Flash 使用量, RAM, MAC, 时间, 原因
九、蓝屏保护机制
触发条件:
NTP 时间同步失败(年份小于 2000 且重试 5 次后仍失败)
内存不足(剩余堆小于 2.5 KB)
所有 WiFi 连接失败
手动调用函数或 Web 点击测试
蓝屏效果:
显示 “:(” 在左上角
进度条随机增长(每次增加 1% 到 10%)
显示 “collecting data from your device X%”
自动清理内存,断开 WiFi,停止 NTP,停止服务器,删除临时文件
最后重启设备
防死机:多处喂狗(ESP.wdtFeed),关键循环 yield()
十、系统管理功能
实时内存监控:每 10 秒检查一次,剩余堆小于 2.5KB 立即蓝屏
看门狗定时器:在延时、循环、文件操作等位置喂狗
串口调试输出:所有关键步骤打印日志(波特率 115200)
硬件按钮:D5(GPIO14)单击强制切换到热点模式,带消抖
A0 电压检测启动模式:上电读取 A0 电压,根据电压区间自动进入示波器、电压表、电流表、电阻表、温度计或强制热点配置模式(大于 1.0V)
安全认证接口:提供 Flash/RAM/MAC/时间信息供外部系统验证
十一、存储与文件系统
EEPROM:容量 4096 字节,存储优先网络(5 组)和已保存网络(10 组)
SPIFFS:文件系统,存储 rollback.bin, weather.txt 等
支持 SPIFFS 格式化(Web 页面提供按钮)
十二、OLED 显示增强
自动检测 I2C 地址(0x3C 或 0x3D)
支持 SH1106 驱动(1.3 寸)和兼容 0.96 寸
多字体支持:时间用大字体(u8g2_font_timR24_tf),状态用小字体
支持 UTF-8 中文显示(enableUTF8Print)
显示模式切换:时钟、电压、电流、电阻、温度、天气、示波器,共 7 种
启动画面显示版本号和欢迎语
十三、安全认证(验证ESP8266_DNS是否假冒)
启动时尝试连接名为“ESP8266_DNS”的 WiFi(密码 zvs142857),获取期望的 SSID 和网关 IP
连接成功后通过 /ssid 和 /ip 接口获取期望值,与实际连接对比,不匹配则蓝屏
通过 /SecurityAuthentication 验证 Flash 使用量是否在 2035-2650KB 且百分比 58-65%,否则拒绝连接
支持自定义期望 SSID 和网关的防呆机制
十四、其他细节功能
支持加载已保存的网络列表,自动尝试连接
支持优先连接开放 WiFi(扫描所有无加密网络,按信号强度尝试前两个)
支持密码破解时的进度显示(网络序号,密码序号,SSID,尝试密码,耗时,状态)
破解成功后会显示密码和破解时间
支持显示 Flash 和 RAM 使用情况(Web 页面和串口)
支持更新检查定时器(每小时一次)
支持本地版本数组搜索(最多 75 个预定义版本)
支持更新失败后执行回滚,回滚时显示写入进度百分比
支持更新时检测储存空间不足并触发蓝屏
支持从 SPIFFS 读取天气缓存,定期从 wttr.in 更新天气(http://wttr.in/?format=%c+%t)
支持根据温度超过 325 度(异常)自动切换到天气显示模式
支持 Web 页面动态生成设备操作按钮的 JavaScript
支持 NAT 启用时保存热点 IP,禁用时清除
十五、编译与依赖库
需要以下库:ESP8266WiFi, U8g2lib, ESP8266WebServer, DNSServer, EEPROM, TimeLib, NtpClientLib, ESP8266HTTPClient, ESP8266httpUpdate, SimpleTimer, Wire, FS, lwip/napt.h, user_interface.h ,zvs142857(后面介绍)
支持 Arduino IDE 和 Mixly 图形化编程
十六、硬件接口定义
OLED I2C:SDA -> D3 (GPIO0), SCL -> D4 (GPIO2)
按钮:D5 (GPIO14), 上拉输入,低电平触发
温度传感器 LM35DZ:输出接 A0
万用表/示波器输入:A0 和 GND(直接说A0和3.3V不对)
所有页面展示:
/ 主页面(连接热点后进入http://192.168.4.1)
/Update
这个支持上传bin文件(编译器编译成功后自动生成,按照修改日期找到.bin)
/advanced
这里修复了Flash显示,并且支持把87%使用率压缩到61%
功能较多,不能完全展示 :
这里新增了"示波器"
还优化了浏览器显示,先显示标题,再追加内容,可以节省ESP8266的内存
最后把3400行代码搞上去
下期预告(还没做完)[doge]:

常见问题
Q1:编译报错 zvs142857.h: No such file or directory 怎么办?
A:需要安装自制库。将附件中的 zvs142857 文件夹复制到以下任意路径:
Arduino IDE:C:\Users\%USERNAME%\Documents\Arduino\libraries\
Mixly 2.0/3.0:Mixly安装目录\arduino-cli\libraries\
或者先下载zvs142857.h.zip解压到桌面 再下载'说明(必读).zip'解压运行那个zvs142857.h(安装).bat
也可以直接把 zvs142857.h 放到项目文件夹(.ino 同目录)。重启 IDE 后编译。
Q2:示波器模式怎么进入?
A:上电前将 A0 引脚电压调到 0.1V~0.3V 之间(例如接一个分压电阻),然后上电。OLED 会自动显示波形和频率。
Q3:示波器最大能测多少伏?多少赫兹?
A:电压 0~3.3V(超过会烧芯片)。理论最高 2.5kHz,实际稳定测量约 1kHz。
Q4:连接 WiFi 时一直蓝屏重启怎么办?
A:检查优先网络列表中的 SSID 和密码是否正确。如果使用开放网络,确保附近有信号强的开放热点。也可以长按 D5 按钮强制进入热点模式,然后通过 Web 页面重新配置 WiFi。
Q5:Web 管理页面无法打开?
A:确保设备已连接到 ESP8266 热点(SSID: ESP8266,密码: zvs142857)。然后在浏览器输入 http://192.168.4.1。如果无法访问,尝试关闭防火墙或换用 Chrome/Edge 浏览器。
Q6:OTA 更新失败怎么办?
A:检查电脑端 HTTP 服务器是否正常开启(需放置 Update.txt 和 Update.bin)。如果失败,设备会自动回滚到上一版本,不会变砖。也可以手动通过 /update 页面上传 .bin 文件。
Q7:温度显示异常(如 300 多度)怎么办?
A:温度传感器 LM35DZ 输出接 A0,GND 接 GND,VCC 接 3.3V。如果接错或未接,会读到随机电压导致温度错误。此时会自动切换到天气显示模式(从 wttr.in 获取)。
Q8:如何恢复出厂设置?
A:进入 Web 管理页面 → 高级 → Format SPIFFS,然后重启。或者上电时将 A0 接 3.3V(>1V),进入强制热点模式后手动格式化。
Q9:按键没反应?
A:按键接 D5(GPIO14),另一端接 GND。程序检测下降沿,长按约 50ms 即可触发切换到热点模式。
Q10:编译时提示“多个库冲突”怎么办?
A:确保只保留一个 zvs142857 库副本。删除其他位置的同名文件夹,只保留 Arduino 库目录下的那一个。

全部评论