之前弄过一个指南针,这次弄的是GPS,当然也包括了指南针在内,两个模块一起用。源码我是用香蕉派写的,然后前两天刷系统的时候忘记了源码也一起被抹掉了……只剩可执行程序在树莓派上……所以这次就直接发程序吧
先献上开发时的截图和作品……
这是树莓派,最上面是我自己用洞洞板制作的指南针模块和GPS模块的板子,实际上只是为了固定那两个模块而已,这个程序用了2个串口,一个是树莓派自身的串口/dev/ttyAMA0,这个是读取指南针模块时用的双向通讯,另一个是USB串口/dev/ttyUSB0,这个是用来读取GPS模块数据的,只用了RX,用来接收GPS模块数据。
同时因为我这个主要是用在自行车上,所以在板子上加了LED灯用于晚上骑车照明。
开灯的效果……
这个是早期版本的实际运行效果图,可以看到GPS定位的信息,主要是用来显示行驶速度和时间的,这个时间是UTC时间,没有转换到+8的中国时区,需要转的话可以自己修改gpsawk.sh脚本,因为这个程序的GPS数据是在接收到后传递给这个脚本进行处理然后再返回给程序的,至于为什么要这样做,因为C++我不太会……文本处理什么的我还是比较熟悉bash,所以就传递给bash处理了……这样修改也方便,该脚本就好了,不用再修改程序然后编译……
这是最终版本的效果图,添加了18B20温度显示,以及那个时速按钮的自定义功能按键,这里默认我是写的拍照,按一下时速按钮进行后台拍照,照片直接存储在/home/pokebox/camera/gpstake里。要修改的话直接修改gpsawk.sh脚本即可……
至于这个脚本,需要放在/home/pi/gpsawk.sh这里,不然无法运行……你可以用ln命令链接到那里,gps程序随便放在哪都可以。
以及在实际测试中发现有点小小的问题,就是那个粉色的航向指针没法正常工作,不知道是哪里出了问题,反正现在源码也木有了,要弄只能重写……
这是开发时的截图……
上机测试~
开发环境…………TAT脏乱差的桌面23333
对了,我来简单介绍一下这个程序的功能吧。
首先,程序运行后会出现主界面【废话】,可以点击菜单栏上的窗口选择全屏、最大化窗口,然后也能点击还原弹回原来的样子……
启动程序后,在主界面有个最大的仪表盘【如上图的橙色框内】,那个是速度表,模拟汽车的车速表……实际速度是通过GPS获取的,然后在下面的输入框显示出来,单位是KM/h。
然后,右边有2个仪表盘,蓝色指针的是指南针【白色框的】,指南针的更新速度可以通过菜单来选择更新速度,最上面的同步GPS就是和gps一起更新【也就是1秒更新一次】。粉色是当前航向【暂时没用】,下面的那个度也是当前航向的角度,也是暂时没用……
再是上面,显示00:00:00那的【图里的红框】是GPS时间,当GPS成功连接卫星后这里会显示时间,时区是UTC+0的,要转换到+8就自己在gpsawk.sh脚本里计算吧~
然后旁边的是天线高度,也可以看作是当前海拔高度,当然这个变化很大,估计是因为卫星一直在运行忽高忽低的……然后最旁边是当前GPS卫星连接个数,最大为12,实测连接5颗卫星就可以定位了,3颗卫星即可授时【就是时间显示框实时显示时间】
然后速度表旁边有2个框,最上面的是18B20的温度显示,这个也是通过脚本传递的数据,程序每15秒更新一次数据。需要注意的是脚本里写的18B20数据获取的地址是我的18B20的设备地址,你要自己修改为你的。至于什么意思就参考我曾经发过的帖子树莓派获取18B20温度数据吧。第二个框没用。
然后是下面,那个时速按钮,实际上是个自定义按钮,按下后会传递take参数给脚本,脚本通过获取这个参数来执行对应的操作,你可以自己写成其他的功能,比如关机或者其他什么的,这里我写的脚本是通过树莓派的raspistill命令拍照,然后保存……
最下面是经纬度的显示,这个大家都知道是什么了……
至于那个菜单的各种项目我就不多说了,大家自己探索吧……
最后还要说明一下,那个脚本,那个脚本可以自动记录有效GPS数据到/mnt/mmc/gps/gps.log文件里,这个文件就是你的航迹,你可以在骑车的时候使用这个程序记录下你的行驶轨迹,回来后把这个文件导出到电脑上,用谷歌地球查看你的航迹~
就像这样……
嗯……
楼主!打开了你这个软件!经常闪退·你的GPS模块串口速率和模块刷新率是多少啊
学习了
来一些制作过程中的花絮~
都是在制作时的一些截图和照片
调试指南针和GPS
调试GPS……
开发环境~23333,那个小屏幕是用来显示ftp服务器下载和上传程序到香蕉派和树莓派的……然后主屏幕连接香蕉派远程来编译和写程序……
这个是最初弄电子指南针时的截图……各种信号槽各种乱~~
制作GPS和指南针固定盘
用GPS上QQ空间,我的小伙伴们都惊呆了~
这个是实际GPS功能测试时在自行车上按下那个时速按钮拍的照片~还不错吧~