构建简易Arduino手持GPS导航器教程

下载需积分: 50 | ZIP格式 | 81KB | 更新于2024-11-15 | 104 浏览量 | 0 下载量 举报
1 收藏
该项目利用Arduino微控制器、UART接口的GPS模块以及诺基亚5110显示屏,创建了一个能够显示轨迹、移动方向、设定目标点和计算到目标点距离的导航设备。项目文件包含一个名为gps.ino的Arduino程序文件,第三方库文件(需要添加到Arduino主目录中以确保程序正常运行),以及图片转换脚本和其它相关资源。该导航器使用诺基亚5110显示屏的4、5、6、7、8、9号引脚(可以修改),IMEA UART GPS模块连接在2号和3号引脚上(不可更改),并使用三个按钮分别连接到10号、A5号和A4号引脚(也可以修改)来实现用户交互。" 知识点: 1. Arduino微控制器:一个开源的电子原型平台,提供了一套易用的硬件和软件系统。Arduino非常适合进行快速原型设计和学习数字编程。 2. UART GPS模块:通用异步接收/发送(UART)接口的全球定位系统模块,用于接收来自卫星的信号,并计算出设备的地理位置、速度和时间信息。 3. 诺基亚5110显示屏:一种小型的单色图形LCD显示屏,通常用于展示简单的文字和图形信息。由于其低功耗和易操作的特点,它在便携式和嵌入式系统中很受欢迎。 4. 轨迹显示功能:在导航器中显示过去记录的移动路径,通常用一系列的坐标点来表示。 5. 移动方向指示:利用箭头或其他符号直观显示当前的移动方向。 6. 自定义目标点设置:允许用户输入特定的目的地坐标,以便导航系统能够计算出当前点到目标点的方位和距离。 7. 距离计算:根据用户设定的目标点,计算并显示当前点与目标点之间的直线距离或实际行驶距离。 8. 点清除功能:用户可以清空之前记录的轨迹点,重新开始导航。 9. 当前点设为目标点:用户可以将当前位置设定为导航目标点,以进行下一步的导航操作。 10. Arduino第三方库:在Arduino编程中,第三方库是额外的代码集合,用于简化特定功能的实现,例如控制GPS模块或显示屏等。 11. 编程和硬件接口:项目涉及Arduino的编程技巧和硬件连接知识,包括如何通过引脚连接不同的模块和组件,并使用代码来控制它们。 12. 串行通信:UART GPS模块通过串行通信与Arduino微控制器连接,这是一种常见的硬件通信协议,用于数据传输。 13. 按钮输入:使用按钮作为用户输入设备,允许用户通过物理按压来控制导航器的各项功能。 14. 屏幕分辨率和驱动:诺基亚5110显示屏的驱动和编程需要考虑到其48x84像素的分辨率,以及如何有效地在显示屏上渲染文本和图形。 15. 硬件可定制性:描述中提到了某些连接引脚的可更改性,这表示项目硬件设计上具有一定的灵活性,便于根据实际情况调整硬件连接。 16. 俄语注释和描述:项目目前包含俄语注释和描述,对于不熟悉俄语的开发者来说,后续需要翻译或修正这些内容,以便更好地理解和使用项目。 17. Python脚本和图片转换:项目中可能包含了一个小型的Python脚本,用于将GIMP等图像处理软件生成的BMP图片转换成Arduino能够处理的字节数组字符串。 通过上述知识点,可以看出该项目涉及Arduino编程、硬件操作、用户接口设计和图像处理等多个方面,是一个综合性的硬件DIY项目。

相关推荐

filetype
制作一个基于arduino 和12864液晶模块的图形化显示GPS导航系统,作品效果和成本可能无法和TB上的导航产品媲美,但是动手过程会带给你乐趣和知识。 需要了解的背景知识: arduino 相关基础; 能使用12864 液晶模块; 能够用arduino 通过串口通信获取GPS模块定位信息; 能够用arduino 操作SD卡模块; 需要的主要硬件: arduino UNO 1片; 12864 液晶模块 1片; GPS模块1片; SD卡模块及SD卡 1套; 原理介绍: 将地图数据依据瓦片算法存储在SD卡中,通过串口获取GPS定位信息并从中解析出经纬度坐标,依据经纬度坐标读取相应地图数据显示在12864液晶模块上,同时显示定位坐标点。 1. 地图存储算法——瓦片系统(Maps Tile System) 本制作采用的地图数据和地图存储算法来源于微软的bing maps并做了相应修改,具体可参考: Bing Maps Tile System[1*] Virtual Earth Tile Image URI 参数解析 Goolge and Microsoft Map Url Parameters 在瓦片系统中地图采用金字塔式的分层存储结构,不同层具有不同级别的地图分辨率(地图精细程度),每一层地图被分割成等像素大小(256X256)的瓦片,算法要解决的问题就是给定经纬度坐标和缩放级别(层索引)得到具体相应的瓦片编号。 在连接[1*]的最后有算法实现的代码可共参考。 2. 针对12864液晶模块的设计 12864液晶模块是128像素宽64像素高的单色液晶显示模块,本制作为了适应模块显示做出了两个设计。 1). 将256X256像素的瓦片裁切成128X64像素大小的8份 子瓦片,如下图所示: 每层每个瓦片均做相应处理。 2). 通过阈值方法将8位png索引图像(bing maps 的道路数据)转换成二进制地图数据文件,为了能够显示原图中的文字信息,采用多阈值提取求或方法提取原地图中背景、地物和标注文字数据,由于标注文字和背景之间的扰动,提取效果有待改进。 显示效果: 生成地图程序(需要连接互联网): 通过设置地图范围经纬度信息获取要使用定位的区域,可通过google earth 等能显示经纬度的软件或网页获取经纬度的最大最小值(上大下小,右大左小), 缩放级别建议设置范围1~15,较大地图范围和较高缩放级别会增加地图下载、显示加载的时间。 arduino 代码说明: 1. 在“LCD12864RSPI” 文件中加入画点函数,减少重绘区域; 2. 使用占用内存小、具有只读能力的SD模块库“petit_fatfs”; 3. 分配1K内存用于地图数据缓存,由于SD卡库只支持8.3文件名,地图数据文件名采用十六进制不定长压缩编码方式命名。
790 浏览量
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部