基于Arduino的GPS与单片机通信 GPS与PC机的通信

阅读: 评论:0

基于Arduino的GPS与单片机通信   GPS与PC机的通信

基于Arduino的GPS与单片机通信 GPS与PC机的通信

转载请注明出处:

 

使用到的主要材料:   

               1.VK16E GMOUSE GPS模组 SIRF3芯片 陶瓷天线 TTL信号 9600波特率


 型号:VK16E
主芯片:SiRF Ⅲ
C/A 码,1.023MHz码流
接收频段:L1 [1575.42MHz]
跟踪通道:20个
支持DGPS[WAAS, EGNOS 和 MSAS]
定位性能
<10米(独立定位)
<5米(WAAS)
漂移:<0.02m/s
授时精度:1us
参照坐标系:WGS-84
最大海拔高度:18000米
最大速度:500m/s
加速度:<4g
电性能:
跟踪灵敏度:-159dBm
捕获灵敏度:-153dBm
冷启动时间:39s[平均]
温启动时间:37s[平均]
热启动时间:1s[平均]
再捕获时间:0.1s[平均]
操作温度:
-30℃ to +80℃
封装尺寸:
28*28*8.4mm;

接口电性能:
宽电压范围:主电源为+3.5V~+5.0V,自备RTC电源
底部:25*25*4mm陶瓷天线
输出数据波特率4800bps或9600bps或根据客户要求定制
输出SiRF二进制数据式或NMEA 0183 V3.0(GGA,GSA,GSV,RMC,VTG)协议数据

                                                ------以上VK16E资料来自   .htm?id=16613075728

 

 

 

 

 

 

                 2.Arduino UNO R3 开发板

Arduino,满足您创新创意的需要! 中文名:阿德伟诺 Arduino 是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的 arduino板)和软件(arduino IDE)。它适用于艺术家、设计师、爱好者和对于“互动”有       兴   趣的朋友们。 Arduino,是一个基于开放原始码的软硬体平台,构建于开放原始码simple I/O介面版,并且具有使用类似Java,C语言的Processing/Wiring开发环境。 [

 

                                                                      

                                                                                  -----以上Arduino资料  来自百度百科

                               =SDggXxohRgrthxwRqjLW65Zu9SbM5f_WcZI7Jp7Ib7ic9LWuhvBdaTrXYrnsaM49SJf9BdlykvKHJdwY4sD6HK

 

 

 

 

 

 

 

 

            3.软件:SiRFDemo    (软件使用说明:.html)

                           本软件为GPS模块:VK16E与PC机通信时的上位机,使用简单方便,适合初学者使用。

                   使用时将VK16E的TXD,RXD通过USB转串口连接至PC机进行通信,然后打开软件进行三个

                   简单的选择即可使用。后面将详细说明。

 

 

 

 

 

 

           4.软件:Arduino  (资料和软件下载地址:(英文)   .php?id=arduino:arduino_language_reference:attachinterrupt(中文))

                          本软件用于给Arduino单片机写程序,本身自带串口监视程序,简单易用,通信与供电同一根USB线即可。下载时自带一部分底层库文件,

                如果有扩展使用想法,可登陆以上所述的两个网站下载库文件。

 

 

          5.USB转串口/下载器/模块 CH340T ISP下载模块 USB转TTL

 

 

 

/*******************************************************************************************************************************************************************************/

/*******************************************************************************************************************************************************************************/

材料准备好啦~  下面可以开始干了。

   

          1.当材料中的硬件1、5到货后,安装好材料中的软件3。就可以把你的电脑变成一个车载GPS啦。可以不上网就测出你的电脑所在的经度纬度时间等等~

 

           详细情况如下:

                       先将VK16E的TXD,RXD分别和USB转串口的RXD,TXD连接。

                       然后给VK16E供4V左右电压。

                      接着将USB转串口插在电脑上,在设备与管理器中找到com口号。

                      最后打开SiRFDemo软件,选择com口号,波特率。如图:

                     点击 OK键,再点击下图中圈出来的图标,即可。

                     

                   注意:测试过程中以陶瓷面朝上,而且必须在室外进行测试,否则无法出现需要的数据。

                    GPS摆放如图:

 

 

          2.调完VK16E与PC机通信后,就要开始更近一步,让VK16E与单片机Arduino通信。步骤还是和以上一样简单的。

        

         详细情况如下:

                     由于软件Arduino本来就有串口调试窗口,那么我们现在做的事就是把VK16E传输给Arduino的数据解码出来,提取对自己有用的一部分,因为后续

         准备将GPS和四轴飞行器搭配起来,所以我在Arduino写的程序中提取了时间,纬度,经度这三个数据,后期还会增加一个海拔高度数据,让GPS能在一个

         三维空间里指挥四轴飞行器的移动。

                    话不多说,将VK16E的TXD连接到Arduino的RXD上(注:最好不要连接Arduino的TXD,因为发送数据给串口的时候容易混乱。)

      

char buff;
int count = 0 , i;
int vis = 0,vis_time = 0,vis_ang_N = 0,vis_ang_E = 0;
char h[3],m[3],s[3];  //time
char ang_N[5],ang_E[6];//latitude  longitude height
char buff_before_1 = '~' ;void setup() {// put your setup code here, to run once:Serial.begin(9600);
}void loop() {// put your main code here, to run repeatedly:    if(Serial.available() > 0){buff = ad(); /******** DECIDE IS GPGGA? ********/if(buff_before_1 == 'G' && buff == 'A')vis = 1;if(count == 12){count == 0; vis = 0;vis_ang_N = 0;vis_ang_E = 0;i = 0;}/********* LAY IN DATA_2 ***********/
//       Serial.print(buff);             //   OUTOPUT  test if(buff_before_1 != buff)buff_before_1 = buff;/********** COUNT FOR ',' **********/if(vis == 1 && buff == ','){count++;}/*********** GET  DATA FROM SBUFF***********/switch(count){case 1 : if(vis_time == 0)  {if(i == 1)  h[0] = buff;if(i == 2)h[1] = buff;if(i == 3)m[0] = buff;if(i == 4)m[1] = buff;if(i == 5)s[0] = buff;if(i == 6)s[1] = buff , i = -1 , vis_time = 1; i++; }  break;  //time case 2 : if(vis_ang_N == 0){if(i == 1) ang_N[0] = buff;if(i == 2)ang_N[1] = buff;if(i == 3)ang_N[2] = buff;if(i == 4)ang_N[3] = buff , i = -1 , vis_ang_N = 1; i++;  }  break;  //latitude   Ncase 4 : if(vis_ang_E == 0){if(i == 1)ang_E[0] = buff;if(i == 2)ang_E[1] = buff;if(i == 3)ang_E[2] = buff;if(i == 4)ang_E[3] = buff;if(i == 5)ang_E[4] = buff , i = -1 , vis_ang_E = 1;i++;  }  break;  //longtitude  Edefault : break;} /*******************************************/      Serial.print("ang_N = ");   Serial.println(ang_N);Serial.print("ang_E = ");   Serial.println(ang_E);Serial.print("time = ");  Serial.print(h); Serial.print(m);Serial.println(s);} }

 

        打开串口调试串口 ,选择9600波特率。按下Arduino上的复位键,即可在串口上看到自己想了解的数据了。

 

 

 

 

                                                      至此 ,简单的GPS和单片机    GPS和PC机通信就完毕了。    

 

                                                                                                            --------    博主QQ:416815882

                                                                                                           

                                                                                                           

 

本文发布于:2024-02-01 04:20:05,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170673240533810.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:通信   单片机   Arduino   GPS   PC
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23