chenzhufly 发表于 2020-3-17 23:01

“玩板”+ 共享单车控制板-GPS模块ublox MAX-M8Q

<div class='showpostmsg'><p><span style="font-size:20px;">这种板子上的GPS模块有两种,一种是ublox的 MAX-M8Q,还有一种是LYNQ的N10,调试的时候我还是选择的ublox的 MAX-M8Q。</span></p>

<p>.</p>

<p><span style="font-size:20px;">测试的时候使用串口透传模式,打通UART2&lt;---&gt;UART3,GPS模块是接在UART3上,波特率是9600. 上位机使用u-box的u-center软件,还是挺方便的。</span></p>

<p><br />
<span style="font-size:20px;">接下来将考虑一下,如何解析这些数据,继续加油。</span></p>

<p>&nbsp;</p>

<p><span style="font-size:20px;">上传一些&nbsp;MAX-M8Q的参考资料:</span></p>

<p><br />
<br />
<b><font color="#5E7384">此内容由EEWORLD论坛网友<font size="3">chenzhufly</font>原创,如需转载或用于商业用途需征得作者同意并注明出处</font></b></p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

00750 发表于 2020-3-18 09:03

<p>很好!</p>

chenzhufly 发表于 2020-3-18 10:02

<p>收到的格式类似这样的</p>

<p>// $GNRMC,092846.400,A,3029.7317,N,10404.1784,E,000.0,183.8,070417,,,A*73</p>

<p>/*<br />
$GNRMC,<br />
092846.400, // UTC时间,hhmmss.sss(时分秒.毫秒)格式<br />
A, // 定位状态,A=有效定位,V=无效定位<br />
3029.7317,N, // 纬度<br />
10404.1784,E, // 经度<br />
000.0, // 地面速率<br />
183.8, // 地面航向<br />
070417, // UTC日期<br />
, // 磁俯角<br />
, // 磁方向角<br />
A*73 // 模式指示<br />
*/</p>

chenzhufly 发表于 2020-3-18 22:42

<p>通过UART3接收GPS的数据,然后解析精度和维度,解析GNRMC 协议帧</p>

<pre>
<code>uint8_t parseGpsData(char* buffer, GPS_INFO* gps, GPS_DATA_TYPE type)
{
        uint8_t ch, status, tmp;
        char* buf = buffer;
       

        int len = 0;
    int commaCount = 0;

    while (buf != '\0')
    {
      if (buf == ',')
      {
            commaCount++;
      }
      len++;
    }

    if (commaCount != 12)
    {
      return 0;
    }
       
    if (!((buf == '$') &amp;&amp; (buf == 'G') &amp;&amp; (buf == 'N') &amp;&amp; (buf == 'R') &amp;&amp; (buf == 'M') &amp;&amp; (buf == 'C')))
    {
      return 0;
    }       
               

        if ( type == (GPS_DATA_TYPE)GNRMC )
                status = buf;                       
       

    if ( status == 'A' )       
        {
                       
                getStringNumber(&amp;buf, gps-&gt;latitude);
                getStringNumber(&amp;buf, gps-&gt;longitude);                                       
                return 1;
        }

        return 0;
}</code></pre>

<p>&nbsp;</p>

chenzhufly 发表于 2020-3-18 22:45

<h1>GPRM/GNRMC定位信息的读取与解析</h1>

<table border="1" cellpadding="0" cellspacing="0">
        <tbody>
                <tr>
                        <td valign="top" width="56">
                        <p align="center">帧头</p>
                        </td>
                        <td valign="top" width="81">
                        <p align="center">UTC时间</p>
                        </td>
                        <td valign="top" width="52">
                        <p align="center">状态</p>
                        </td>
                        <td valign="top" width="76">
                        <p align="center">纬度</p>
                        </td>
                        <td valign="top" width="76">
                        <p align="center">北纬/南纬</p>
                        </td>
                        <td valign="top" width="76">
                        <p align="center">经度</p>
                        </td>
                        <td valign="top" width="75">
                        <p align="center">东经/西经</p>
                        </td>
                        <td valign="top" width="76">
                        <p align="center">速度</p>
                        </td>
                </tr>
                <tr>
                        <td valign="top" width="56">
                        <p align="center">$GPRMC</p>
                        </td>
                        <td valign="top" width="81">
                        <p align="center">hhmmss.sss</p>
                        </td>
                        <td valign="top" width="52">
                        <p align="center">A/V</p>
                        </td>
                        <td valign="top" width="76">
                        <p align="center">ddmm.mmmm</p>
                        </td>
                        <td valign="top" width="76">
                        <p align="center">N/S</p>
                        </td>
                        <td valign="top" width="76">
                        <p align="center">dddmm.mmmm</p>
                        </td>
                        <td valign="top" width="75">
                        <p align="center">E/W</p>
                        </td>
                        <td valign="top" width="76">
                        <p align="center">节</p>
                        </td>
                </tr>
        </tbody>
</table>

<p>&nbsp;</p>

<table border="1" cellpadding="0" cellspacing="0">
        <tbody>
                <tr>
                        <td valign="top" width="73">
                        <p align="center">方位角</p>
                        </td>
                        <td valign="top" width="87">
                        <p align="center">UTC日期</p>
                        </td>
                        <td valign="top" width="95">
                        <p align="center">磁偏角</p>
                        </td>
                        <td valign="top" width="85">
                        <p align="center">磁偏角方向</p>
                        </td>
                        <td valign="top" width="92">
                        <p align="center">模式</p>
                        </td>
                        <td valign="top" width="66">
                        <p align="center">校验</p>
                        </td>
                        <td valign="top" width="70">
                        <p align="center">回车换行</p>
                        </td>
                </tr>
                <tr>
                        <td valign="top" width="73">
                        <p align="center">度</p>
                        </td>
                        <td valign="top" width="87">
                        <p align="center">ddmmyy</p>
                        </td>
                        <td valign="top" width="95">
                        <p align="center">000 - 180</p>
                        </td>
                        <td valign="top" width="85">
                        <p align="center">E/W</p>
                        </td>
                        <td valign="top" width="92">
                        <p align="center">A/D/E/N</p>
                        </td>
                        <td valign="top" width="66">
                        <p align="center">*hh</p>
                        </td>
                        <td valign="top" width="70">
                        <p align="center">CR+LF</p>

                        <p>&nbsp;</p>
                        </td>
                </tr>
        </tbody>
</table>

<p>&nbsp;</p>

<p>格&nbsp;式:&nbsp;$GPRMC,&lt;1&gt;,&lt;2&gt;,&lt;3&gt;,&lt;4&gt;,&lt;5&gt;,&lt;6&gt;,&lt;7&gt;,&lt;8&gt;,&lt;9&gt;,&lt;10&gt;,&lt;11&gt;,&lt;12&gt;*hh&lt;CR&gt;&lt;LF&gt;<br />
$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50<br />
说&nbsp;明:<br />
字段 0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐最小定位信息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字段 1:UTC时间,hhmmss.sss格式<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字段 2:状态,A=定位,V=未定位<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字段 3:纬度ddmm.mmmm,度分格式(前导位数不足则补0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字段 4:纬度N(北纬)或S(南纬)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字段 5:经度dddmm.mmmm,度分格式(前导位数不足则补0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字段 6:经度E(东经)或W(西经)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字段 7:速度,节,Knots(一节也是1.852千米/小时)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字段 8:方位角,度(二维方向指向,相当于二维罗盘)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字段 9:UTC日期,DDMMYY格式<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字段10:磁偏角,(000 - 180)度(前导位数不足则补0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字段11:磁偏角方向,E=东,W=西<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字段12:模式,A=自动,D=差分,E=估测,N=数据无效(3.0协议内容)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字段13:校验值</p>

chenzhufly 发表于 2020-3-18 23:09

<p>解析经纬度暴露位置了,哈哈哈,解析时间就挺好的</p>

<pre>
<code>                        tmp = getComma(1, buf);                       
                        gps-&gt;DT.hour                = (buf - '0') * 10 + (buf - '0');
                        gps-&gt;DT.minute        = (buf - '0') * 10 + (buf - '0');
                        gps-&gt;DT.second        = (buf - '0') * 10 + (buf - '0');
                        tmp = getComma(9, buf);
                        gps-&gt;DT.day                = (buf - '0') * 10 + (buf - '0');
                        gps-&gt;DT.month        = (buf - '0') * 10 + (buf - '0');
                        gps-&gt;DT.year        = (buf - '0') * 10 + (buf - '0') + 2000;</code></pre>

<p></p>

Yao2019 发表于 2020-6-19 14:36

<p>使用UBX协议不更简单吗?</p>

lxpkfc111 发表于 2021-9-14 10:23

用的是有源天线还是无源天线?

梭罗瓦尔登 发表于 2024-7-4 22:03

感谢分享 谢谢

wdzfd 发表于 2024-11-3 20:39

<p>感谢分享!!!!!!</p>
页: [1]
查看完整版本: “玩板”+ 共享单车控制板-GPS模块ublox MAX-M8Q