使用ESP32制作一个航空电子模拟器
本项目的设计灵感源自经典飞机驾驶舱仪表,这些仪表用于导航、定位和飞行监控。在航空领域,人工水平仪、磁罗盘、高度计和姿态指示器等仪器发挥着关键作用,为飞行员提供有关飞机姿态、航向和高度的实时信息。
系统以CrowPanel 2.1英寸HMI ESP32旋转显示屏为核心,集成了ESP32-S3微控制器、480×480像素IPS圆形显示屏、带按钮功能的旋转编码器,以及用于连接外部外设的扩展接口。
这些特性使该模块特别适合用于紧凑型仪器和图形控制系统的实现。
本项目由PCBWay赞助。从概念到生产,PCBWay为全球创新者提供前沿的电子设计解决方案,涵盖硬件设计、软件开发、机械设计、产品测试与认证。PCBWay工程团队由在电子、嵌入式系统和产品开发领域经验丰富的工程师组成,已成功交付了数百个涵盖医疗设备、工业自动化、消费电子、智能家居及物联网等行业的项目。
MPU6050六轴加速度计和陀螺仪模块可提供模型俯仰和横滚姿态的信息。这些测量值经过处理后,会以图形形式显示在屏幕上。
此外,还实现了对QMC5883L/HMC5883L磁力罗盘传感器的支持,以为罗盘仪器提供航向信息。
人工地平线仪器:
第一个实现的仪器是人工地平线仪,也称为姿态指示器。它显示一个蓝色的上部区域代表天空,一个棕色的下部区域代表地面。MPU6050传感器持续测量模型的俯仰和横滚角度,这些数值用于动态旋转和移动地平线。显示屏中央始终固定显示一个黄色的飞机符号,而地平线则相对于飞机位置移动,真实模拟了航空器姿态指示器的行为。其他视觉元素包括俯仰参考标记、地平线刻度、虚拟跑道表示以及位于仪器顶部的滚转角度指示器。当模型机头抬起时,地平线在屏幕上向下移动;反之,当机头下降时,地平线向上移动。将模型左右滚动时,整个地平线会相应旋转。
磁罗盘仪器:
第二种仪器是一种图形磁罗盘。它由一个圆形的罗盘卡组成,卡上显示了方位角和沿周长分布的角度标记。显示屏中央固定有飞机符号,而罗盘卡则根据磁力传感器获取的航向信息进行旋转。尽管当前的实现主要作为模拟器而非精密导航设备,但它展示了通过I2C通信集成数字磁力计,并在圆形显示屏上以图形方式呈现航向信息的技术。
高度计仪器:
第三种仪器是一种模拟传统机械高度指示器的航空式模拟高度计。它采用圆形刻度和两个类似钟表机芯指针的指针。模拟的高度初始值为6300英尺,随后根据MPU6050传感器测得的俯仰角动态变化。模型前部抬起时,指示高度逐渐上升;后部下压时则下降。高度变化速率与测得的俯仰角成正比,从而真实地模拟飞机爬升和下降的行为。这种方法展示了如何将传感器数据转化为具有航空风格的有意义仪表读数,而无需配备实际的海拔传感器。
飞机姿态可视化屏幕:
已实现第四种显示模式,用于直接图形化呈现MPU6050的测量数据。该屏幕显示一个简化后的飞机模型,其绕测得的滚转角旋转,并根据俯仰角垂直移动。
该可视化既可作为演示工具,也可用于诊断,可实时轻松验证传感器的工作状态和飞机姿态。
用户界面与控制:
集成在CrowPanel模块中的旋转编码器通过PWM控制来调节显示屏背光亮度。编码器按钮可让用户在不同仪器屏幕上进行切换,使设备转变为多功能航空电子显示系统。该方案提供了直观且实用的用户界面,同时仅需极少的外部硬件。
软件架构:
该软件基于ESP32-S3的Arduino框架开发。图形渲染使用Arduino_GFX库,并结合自定义的帧缓冲区实现,可流畅绘制圆形仪表和动态图形元素。程序结构围绕多种显示模式组织,每个模式均由独立的绘图函数表示。这种模块化设计便于后续代码的扩展与维护。通过添加新的显示屏并将其连接到现有的菜单系统,可轻松增加其他仪表。传感器采集、图形渲染、用户输入处理以及显示更新均在程序的不同逻辑部分中分别执行,从而提升了代码的可读性和可扩展性。
结论:
该项目成功实现了图形用户界面、I2C传感器和ESP32-S3微控制器的集成,构建出一款紧凑型航空电子仪器模拟器。
这款CrowPanel显示屏凭借其集成的圆形显示、旋转编码器、强大的处理能力以及通过外部传感器实现的可扩展性,成为此类应用的理想平台。
本文编译自hackster.io





