34357| 10
|
[项目] 树莓派&全球定位系统 |
一、项目背景 全球定位系统(Global Positioning System,GPS)是一种以人造地球卫星为基础的高精度无线电导航定位系统,它在全球任何地方以及近地空间都能够提供准确的地理位置、精确及其他的信息。它是由空间卫星、地面监控和用户接收等三大部分组成。在太空中有24颗卫星组成一个分布网络,分别分布在6条离地面2万公里、倾斜角为55°的地球准同步轨道上,每条轨道上有4颗卫星。GPS卫星每隔12小时绕地球一周,使地球上任一地点能够同时接收7~9颗卫星的信号。地面共有1个主控站和5个监控站负责对卫星的监视、遥测、跟踪和控制。它们负责对每颗卫星进行观测,并向主控站提供观测数据。主控站收到数据后,计算出每颗卫星在每一时刻的精确位置,并通过3个注入站将它传送到卫星上去,卫星再将这些数据通过无线电波向地面发射至用户接收端设备。 本次案例模仿GPS系统,具体功能为1.GPS卫星定位,2.生成位置地图,3.谷歌浏览器自动打开地图。 二、硬件和软件 硬件: 1.树莓派4B2G版 *1 https://www.dfrobot.com.cn/goods-1976.html 2.GPS+BDS北斗双模卫星导航模块 *1 (需手工焊接针排,稍有难度,希望以后能给直接焊接好) https://www.dfrobot.com.cn/goods-2844.html 3.USB to Serial 转串口模块 *1集成了CP2103芯片,树莓派免驱动,即插即用 https://www.dfrobot.com.cn/goods-242.html 软件: 树莓派brust系统,Thonny编辑器或python3 三、知识准备 1.UART:一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。 2.serial串口:本次只用树莓派4B miniUSB串口UART测试。树莓派有两个串口可以使用,一个是硬件串口(/dev/ttyAMA0),另一个是mini串口(/dev/ttyS0)。硬件串口有单独的波特率时钟源,性能好,稳定性强;mini串口功能简单,稳定性较差,波特率由CPU内核时钟提供,受内核时钟影响。 3.pip 用来安装来自PyPI的python所有的依赖包,并且可以选择安装任何在PyPI上已上传的先前版本的依赖包; apt-get 用来安装软件、更新源、也可以用来更新自Ubuntu的典型依赖包,树莓派系统也可以使用该命令;典型安装即意味着它只是安装(最新发布或最近一个的)单一版本,并且我们不能决定我们要安装的依赖包的版本或选择它之前的版本。 4.注意:serial库和pyserial库不一样 卸载serial库(不删除后续会报错),安装pyserial库(python调用serial的API接口库) pyserial库python调用串口的API接口,可用pip3 list 命令查看,没有可以运行pip3 install pyserial安装 四、技术实现: 1.GPS模块修改串口+树莓派+python读取数据方案: 树莓派(3/4代)板载蓝牙模块,默认的硬件串口是分配给蓝牙模块使用的,我的树莓派声音输出是蓝牙音箱,正好冲突;而且该操作较为复杂,容易破坏树莓派,不适合初学者使用,所以果断放弃该方案。 2.GPS模块USB转串口+树莓派+python读取数据方案: 不需要复杂的调整,GPS模块直接和转接模块连接,防止插错GPIO口烧毁板子,数据交换简单高效。 硬件连接参考: GPS模块VCC连接USB转接模块的5V GPS模块GND连接USB转接模块的GND GPS模块TX连接USB转接模块的RX GPS模块RX连接USB转接模块的TX USB转接模块USB连接树莓派USB口 五、软件实现 1.运行lsusb命令看是否检测出来 2.安装串口工具 运行 sudo apt-get install minicom 运行串口工具 运行 minicom -b 9600 -o -D /dev/ttyUSB0 屏幕中可以收到大量信息 具体可参考模块的说明 https://www.dfrobot.com.cn/images/upload/File/20200807111306dx8497.pdf 注意1:模块首次启动定位时间:32 秒(也有可能是几分钟,要看具体环境而定),定位完成后模块的红色提示灯会一直闪动。 注意2.模块天线一定要放在窗外,做好在空地中做测试,可以减少卫星的遮挡,提高实验效率。 键盘CTRL+A,可以调出菜单;键盘X退出串口工具 3.代码解析 导入串口库,导入folium地图库,导入webbrowser库(调用浏览器打开生成地图网页)
打开串口,flag为标志为0时生成地图,1时不再重复生成
读取地理坐标
生成并打开地图
完整代码
六、整体测试代码 1.如果卫星信号不好,无法获取信息,程序会报错 2.地图文件生成和打开较慢,请耐心等待 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed