一、项目核心原理
人工地平线仪表逻辑:屏幕中心固定飞机符号,天地分界线随设备倾斜滚动,直观展示俯仰(Pitch,前后倾斜)、横滚(Roll,左右侧倾)。
传感单元:DFRobot WT61PC 6 轴串口 IMU(3 轴加速度计 + 3 轴陀螺仪),内部完成姿态解算,直接串口输出 Pitch、Roll 角度,无需主控做复杂滤波。
显示单元:两块 Waveshare ESP32-S3-LCD-1.28(1.28 英寸 240×240 IPS 圆形显示屏)
Primary(主屏):完整姿态地平线画面
Secondary(副屏):同画面同步显示,支持双屏并排安装
通信架构
IMU 传感器 → 串口发送姿态角度
ESP32 接收角度数据,实时渲染旋转地平线 UI
主屏可通过串口同步数据给副屏,实现双屏联动
区别于普通 MPU6050 方案:WT61PC 内置姿态算法,主控仅负责接收角度 + 图形渲染,代码逻辑大幅简化。

二、硬件方案详解
1. 核心物料清单
器件 | 型号 | 功能 |
|---|---|---|
姿态传感器 | DFRobot WT61PC 6 轴串口 IMU (SEN0186) | 采集俯仰、横滚角度 |
主控显示屏 | Waveshare ESP32-S3-LCD-1.28 | ESP32-S3 主控 + 1.28 寸圆形 IPS 屏,Arduino 直接驱动 |
转接板 | 1.27mm 间距转 2.54mm 排针适配器 | 适配传感器细密引脚 |
辅助配件 | USB-C 数据线、螺丝端子、杜邦线 | 供电与接线 |
2. 硬件装配两种方案
带外壳版本:适配外壳结构,元器件紧凑布局
裸屏无外壳版本:最简安装,适合嵌入模拟器面板
项目附带 KiCad PCB 工程,可自制电路板统一固定传感器与显示屏。
三、仓库全部文件拆解
pitch_roll_indicator/
├─ ARDUINO_pitch_roll_*.ino # Arduino主程序源码
│ ├─ primary:主屏固件(接收传感器数据)
│ ├─ secondary:副屏固件(接收主屏转发数据)
│ ├─ _blue / _orange:两套仪表盘配色(蓝天棕地 / 深色橙标)
├─ EXPORT_bronze_*.pitch # UI图形导出素材
├─ KICAD_waveshare_display_jicad # KiCad PCB工程(硬件底板设计)
├─ PHOTOPIA_*.psd # Photopea仪表盘UI分层源文件(可修改刻度、配色)
├─ LICENSE # MIT开源协议
└─ README.md # 物料链接、调试指南、演示视频
代码逻辑特点
采用 ESP32 官方 LCD 驱动库渲染圆形屏幕
预加载地平线背景位图,根据 Pitch/Roll 数值平移 + 旋转图层
支持两种色彩主题一键切换
串口透传协议,主屏自动向副屏同步姿态数据
四、软件工作流程
上电初始化 ESP32 显示屏、串口
串口持续读取 WT61PC 输出的 Pitch、Roll 角度
将角度映射为图形变换参数:
Roll → 地平线图层旋转
Pitch → 地平线图层上下偏移
刷新屏幕绘制动态人工地平线
主屏通过串口把角度转发给副屏,实现双屏同步显示
五、UI 视觉设计
复刻传统航空姿态指示器样式:
上半区域:天空(蓝色),下半区域:地面(棕黄色)
屏幕中心固定飞机十字标线(永不移动)
地平线跟随倾斜运动,直观模拟飞行器天地相对关系
刻度标识俯仰、横滚度数,和真实民航仪表视觉风格一致
六、应用场景
飞行模拟器外设:微软模拟飞行、X-Plane 外设仪表
航模地面姿态监测
赛车车载姿态水平仪
桌面创意电子仪表、创客展品
七、项目优势
✅ 硬件模块化,新手友好,不需要复杂姿态算法
✅ 完整开源:代码 + PCB+UI 源文件全部开放
✅ 原生支持双屏同步
✅ 两套配色方案,可自由修改 UI
✅ MIT 协议,允许个人 DIY、商业改造生产
八、可拓展方向
增加旋钮校准、背光亮度调节
接入飞行模拟器数据(SimConnect / X-Plane UDP),脱离独立 IMU,作为模拟器专用仪表
增加航向角 Yaw 显示,升级为完整姿态航向指示器 AHI
增加按键切换单位、滤波平滑参数
九、License
MIT license
