非线性动态逆 发表于 2014-1-8 20:31:57

求助arduino接ublox neo-6MGPS

为什么用串口调试打开9600波特率没有读数啊?求教
连接:
arduino   GPS
3.3V         VCC
RX            TX
GND         GND
代码:
#include <Arduino.h>
        char Latitude;
        char Latitude_N_or_S;

        char Longitude;
        char Longitude_E_or_W;

        char Altitude;

        char Speed;


        char Uart_Buffer;
        char GPS_COM;                        //存放当前GPS指令名称,例如:$GPGGA
        //char RX_GPGGA_Buffer;
        char RX_GPRMC_Buffer;
       
        unsigned char RX_Count;
        bool Flag_GPGGA_OK;
        bool Flag_GPRMC_OK;
        bool Flag_GPS_OK;

void setup()
{        Flag_GPGGA_OK = 0;
        RX_Count = 0;
        Uart_Buffer = 0;
        Serial.begin(9600);                        //设置波特率9600和GPS模块一致
               
}

void loop()
{
        unsigned char i = 0;
        while(Serial.available() > 0)
        {               
                Uart_Buffer = Serial.read();        //获取GPS信息
                //Serial.write(Uart_Buffer);                        //测试使用

                if(Uart_Buffer == '$')
                {
                        RX_Count = 0;
                        //Flag_GPS_OK = 0;
                }
               
                if(RX_Count < 6)
                {
                        GPS_COM = Uart_Buffer;
                }

                else if( GPS_COM == '$' && GPS_COM == 'G'&& GPS_COM == 'P'&& GPS_COM == 'R'&& GPS_COM == 'M'&& GPS_COM == 'C' )        //获取GPRMC数据
                {
                        RX_GPRMC_Buffer = Uart_Buffer;
                        if(RX_GPRMC_Buffer == '\n')
                        {
                                Flag_GPRMC_OK = 1;
                               
                        }
                        else
                        {
                                RX_Count++;
                        }                       
                }
                else if( GPS_COM == '$' && GPS_COM == 'G'&& GPS_COM == 'P'&& GPS_COM == 'G'&& GPS_COM == 'L'&& GPS_COM == 'L' )        //获取GPGLL数据
                {
                        if(Uart_Buffer == '\n')
                        {
                                Flag_GPS_OK = 1;                                                        //一组数据都是最后一帧是GPGLL,接收完GPGLL说明接收数据完成               
                        }
                }
               

        }

        if(Flag_GPS_OK == 1)
        {
                Flag_GPS_OK = 0;
                Serial.print("**\n");
                if(Flag_GPGGA_OK == 1)
                {


                }

                if(Flag_GPRMC_OK == 1)
                {
                        Serial.print("Latitude: ");
                        Latitude_N_or_S = RX_GPRMC_Buffer;                                        //纬度
                        Serial.print(Latitude_N_or_S);
                        Serial.print(" ");
                        for(i = 0;i<10;i++)
                        {
                                //if(i==4) continue;
                                Latitude=RX_GPRMC_Buffer;
                                Serial.print(Latitude);
                        }
                        Serial.print("\n");



                        Serial.print("Longitude: ");
                        Longitude_E_or_W = RX_GPRMC_Buffer;                                        //经度
                        Serial.print(Longitude_E_or_W);
                        Serial.print(" ");
                        for(i = 0;i<11;i++)
                        {
                                //if(i==6) continue;
                                Longitude=RX_GPRMC_Buffer;
                                Serial.print(Longitude);
                        }
                        Serial.print("\n");

                                                       
                        Serial.print("Speed: ");        //速度
                        for(i=0;i<5;i++)
                        {
                                Speed=RX_GPRMC_Buffer;
                                Serial.print(Speed);
                        }
                        Serial.print(" m/s");
                        Serial.print("\n");                       
                }



        }
}

zoologist 发表于 2014-1-8 20:52:23

1.确认不上gps的时候能否工作正常
2.gps是不是占用你的串口了?

suoma 发表于 2014-12-25 20:39:42

你好,问题解决了吗?我也遇到了这个问题,请指点一下

suoma 发表于 2014-12-25 20:56:55

78-82为什么是空语句?

maxims 发表于 2014-12-25 21:55:35

1、单独把GPS模块通过usb-ttl连接起来,电脑用串口软件应该能读到数据。
2、把GPS和Arduino连接起来,Arduino必须用软串口,硬件0-1引脚被系统占用了的。
3、如果还不行,请交换一下GPS连到Arduino的TX-RX引线。

Ps:不论GPS是否有信号,它都会输出一些固定格式的信息。
Pss:请一定注意波特率的问题。
页: [1]
查看完整版本: 求助arduino接ublox neo-6MGPS