项目简介
本项目致力于解决MIT校园复杂布局导致的导航难题,为不熟悉校园的行人打造导航设备。设备由ESP32微控制器、MPU9250惯性测量单元、LCD和输入按钮构成。通过测量附近WiFi信号强度,结合Google API确定位置,向服务器查询最短路径信息,最终在LCD上为用户提供导航指引。项目包含客户端和服务器两部分,客户端以ESP32作为用户交互界面,服务器负责复杂计算任务。
项目的主要特性和功能
- 便捷的目的地选择:用户倾斜设备滚动列表、短按按钮即可选择目的地建筑和楼层。
- 实时导航指引:LCD实时显示最终目的地、当前建筑位置、预计到达时间和指向最佳路径方向的箭头。
- 导航取消功能:导航中长按按钮可取消当前导航。
- 到达提醒:到达目的地后显示到达信息。
- 精准定位:利用Google API和WiFi信号强度确定设备位置。
- 服务器优化:服务器端采用缓存机制,将图的表示和最短路径结果缓存为JSON文件,提升响应速度。
- 多楼层支持:支持多楼层导航,标准化节点和边文件命名,便于添加新楼层和节点。
安装使用步骤
硬件组装
若已下载项目源码文件,需先进行硬件组装。准备好ESP32、TFT LCD、MPU9250 IMU、按钮和微型USB电池组,按电路连接图连接各组件。
客户端设置
- 打开Arduino IDE,导入项目中src文件夹下的客户端代码。
- 配置WiFi信息:在ApiClient类中,将network和password变量设为实际的WiFi网络名称和密码。
- 将客户端代码上传到ESP32开发板。
服务器设置
- 确保服务器安装Python环境。
- 安装必要的Python库,如
dataclasses
、enum
、json
等。 - 将项目中的服务器代码(graph.py、request_handler.py等)复制到服务器指定目录。
- 在终端执行
python request_handler.py
启动服务器。
系统使用
- 给ESP32设备供电,启动后显示欢迎界面。
- 短按按钮选择激活导航或校准罗盘。
- 进入目的地选择状态,倾斜设备滚动列表选择目的地建筑和楼层,短按按钮确认。
- 开始导航后,LCD显示导航信息,用户按箭头指示方向行走。
- 需取消导航时,长按按钮并在确认界面选择取消。
- 到达目的地后,设备显示到达信息,短按按钮可重新开始导航。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】