项目详情

展开看实现思路、技术选型和迭代记录

WiFi 智能拨码显示终端

WiFi 智能拨码显示终端

嵌入式 已发布
技术标签
嵌入式系统 ESP8266 C/C++ Modbus RTU UART RS485 已完成
项目描述
本项目是一个基于 ESP8266 微控制器的工业级数字显示终端设备,应用于需要远程监控现场拨码设定值的场景。设备通过 4 位 BCD 拨码开关手动设定 0000~9999 的目标数值,经两片级联的 74HC165 并行转串行移位寄存器读取后,驱动外置 4 位 7 段数码管实时显示当前值及工作状态。设备通过 WiFi 接入阿里云 IoT 物联网平台,采用 MQTT 协议实现数据双向通信:一方面定时上报当前拨码数值和设备使能状态,另一方面接收云端下发的远程控制指令(启用/禁用设备)。支持 WiFi AP 模式 Captive Portal(门户劫持)配网,首次使用时用户可通过手机连接设备热点自动弹出配网页面,输入家庭/工厂 WiFi 密码即可完成联网配置,配置信息持久化存储于 EEPROM 中,断电不丢失。 系统架构 ┌─────────────┐ 并行数据 ┌──────────────┐ 串行数据 ┌──────────┐ │ 4位BCD拨码盘 │──────────────→│ 2×74HC165 │─────────────→│ ESP8266 │ │ (手动设定值) │ (4×4bit) │ (级联移位) │ (16bit) │ 主控MCU │ └─────────────┘ └──────────────┘ └────┬─────┘ │ ┌────────────┼────────────┐ │ │ │ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ 4位7段 │ │ 阿里云 │ │ 2个按键 │ │ 数码管 │ │ IoT平台 │ │ 2个LED │ │(UART驱动)│ │ (MQTT) │ │(状态指示)│ └──────────┘ └──────────┘ └──────────┘ 硬件详细说明 4.1 核心元器件清单 序号 元器件 型号/规格 数量 用途 1 主控芯片 ESP8266 (ESP-01/NodeMCU) 1 系统核心,WiFi 通信 2 移位寄存器 74HC165 2 并行转串行,读取 BCD 拨码 3 BCD 拨码开关 4 位 BCD 旋转拨码盘 1 手动设定 0~9999 数值 4 7 段数码管 4 位 LED 数码管(UART 驱动型) 1 显示数值和状态 5 按键 轻触按键 2 复位/确认操作 6 LED 指示灯 3mm/5mm LED 2 按键状态指示 7 上拉电阻 10KΩ 若干 按键和 74HC165 上拉 4.2 引脚分配表 ESP8266 引脚 GPIO 编号 连接目标 方向 说明 D0 GPIO16 复位按键 INPUT 内部下拉,按键接地 D1 GPIO5 确认按键 INPUT 内部下拉,按键接地 D2 GPIO4 复位 LED OUTPUT 复位模式指示灯 D3 GPIO0 确认 LED OUTPUT 确认模式指示灯 D5 GPIO14 74HC165 PL (锁存) OUTPUT LOW→HIGH 锁存数据 D6 GPIO12 74HC165 CP (时钟) OUTPUT 上升沿移位 D7 GPIO13 74HC165 Q7 (数据) INPUT 串行数据输出 RX (GPIO3) GPIO3 数码管 TX OUTPUT 软串口发送 (9600 baud) TX (GPIO1) GPIO1 数码管 RX — 软串口 (与烧录口冲突) 4.3 74HC165 级联电路 两片 74HC165 采用级联方式(第一片 Q7 接第二片 SER),共读取 16 位数据: 拨码盘位1 (千位): RegisterData[4~7] = 高4bit, RegisterData[0~3] = 低4bit 拨码盘位2 (百位): ───────────────────────────────────────────────────────── 拨码盘位3 (十位): RegisterData[12~15] = 高4bit, RegisterData[8~11] = 低4bit 拨码盘位4 (个位): ───────────────────────────────────────────────────────── 注意:74HC165 读出的数据需要取反(~)才是实际的 BCD 值。 BCD 拨码编码表 拨码盘采用加一码(偏移二进制编码),物理拨码位置与实际数字存在 +1 偏移: 物理拨码位置 BCD 二进制 (DCBA) 实际显示数字 0 0001 0 1 0010 1 2 0011 2 3 0100 3 4 0101 4 5 0110 5 6 0111 6 7 1000 7 8 1001 8 9 1010 9 超出 0001~1010 范围(含 0000)视为读取错误,触发错误状态(状态 0)。 技术参数总表 项目 参数 主控芯片 ESP8266 (ESP-01/NodeMCU) 开发框架 Arduino 程序语言 C/C++ (Arduino) 代码行数 约 840 行(优化后) 移位寄存器 2× 74HC165 级联(16 位并行转串行) BCD 输入 4 位拨码开关(加一码编码,00011010 对应 09) 采样策略 连续 10 次采样,多数表决去抖(≥5 次 LOW 判 LOW) 单次采样耗时 约 80ms(16bit × 250μs × 2 × 10) 数码管接口 UART 软串口(GPIO3 RX / GPIO1 TX),9600 baud,8N1 数码管帧长 13 字节(4 位显示)/ 8 字节(单位显示) 通信校验 Modbus CRC16(查表法,256 字节查找表) 云平台 阿里云 IoT(MQTT 协议) 上报周期 1 秒(由定时器中断驱动) 上报属性 Dialer_Number(拨码值)、Dialer_Switch_whole_Control(使能状态) 下行控制 Dialer_Switch_whole_Control(0=禁用, 1=启用) 配网方式 WiFi AP 模式 + Captive Portal(DNS 劫持) AP 名称 Network Configuration AP IP 192.168.4.1 WiFi 超时 20 秒(超时自动重启,不重新配网) 配网等待 上电 12 秒无操作自动进入 自动重连 WiFi.setAutoReconnect(true) 定时器 ESP8266 硬件定时器,1 秒中断 中断函数 IRAM_ATTR TimerHandler() 按键 2 个(复位 D0/GPIO16,确认 D1/GPIO5) 按键去抖 20ms 延时 + 状态标志位防冲突 指示灯 2 个 LED(D2/GPIO4 复位灯,D3/GPIO0 确认灯) 数据存储 EEPROM(WiFi 凭据 96 字节 + 控制标志 1 字节,起始地址 2448) 恢复出厂 双键长按 3 秒,清除 WiFi 配置并重启 依赖库 TimerInterrupt_Generic、SoftwareSerial、EEPROM、ESP8266WiFi、DNSServer、ESP8266WebServer、AliyunIoTSDK 代码及更多详情请看Code代码文件夹
发布时间:2026-05-24 22:02
链接与入口

评论 (0)

评论提交后公开展示可能会有延迟。

支持 jpg/jpeg/png/gif/webp,单张不超过 8MB。
验证码:请完成简单计算
暂无公开评论,欢迎成为第一个留言的人。

相关项目

返回上页