0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

合宙Air530Z+STM32,自制GNSS定位器&授时器

合宙LuatOS 2023-09-23 08:05 次阅读

不少新朋友来问,有没有好玩的GNSS定位应用推荐?那么不妨基于小巧易用的合宙Air530Z模组,来简单做一个业余无线电相关的GNSS小玩具。

今天特别分享@W_Linus大佬的开源作品——基于合宙Air530Z的定位器&授时器

1

项目主要准备工作


基于合宙Air530Z的定位器&授时器,使用STM32G030F6P6单片机进行数据处理以及显示,使用0.96寸ST7735屏幕作为显示终端,同时将GNRMC数据通过串口发送到电脑,供上位机处理,使用按键进行交互。

- 主要物料 -

01. GNSS模块:合宙Air530Z

GNSS模块我选用了合宙的Air530Z,原因是这个模块使用较为方便,原生支持有源GPS天线,效果OK。同时支持北斗三号、GPS以及格洛纳斯系统。

02. 单片机:STM32G030F6P6

对我来说方便开发,资源充足是很重要的因素。所以我决定在STM32系列MCU里面进行选择,项目制作前期STM32的价格一直居高不下,不过STM32G0系列却是一股清流。粗略估计了下所需要的资源后,我最终选择了STM32G030F6P6

03. 屏幕:0.96寸 ST7735 LCD

至于信息的显示,肯定需要使用屏幕。不过是使用LCD还是OLED屏幕呢?我最终决定使用LCD屏幕。原因也很简单:它可以显示不同的色彩,制作出来的界面更加漂亮。所以,屏幕最终定型为0.96寸 ST7735 LCD屏幕。

f29a2a5a-59a4-11ee-9788-92fbcf53809c.png

04. 其他元器件参见文末原工程链接BOM表

- 硬件设计 -

大框架定下来了,我便着手进行PCB的绘制。到目前为止,我已经绘制了3个版本的PCB。每一次迭代的原因几乎都是发现了一些之前忽略掉的,而现在发现了能难受半天的小缺陷。不过,每个版本都是可以正常使用的。

f2a23010-59a4-11ee-9788-92fbcf53809c.png

f2b95f56-59a4-11ee-9788-92fbcf53809c.png

- 程序开发 -

至于程序,得益于之前玩GNSS模块的成果,没有费多大功夫就写出了初版基本可用的程序。使用STM32CubeMX工具和MDK工具链进行开发,是大多数像我一样的新手的选择罢:

f2c004a0-59a4-11ee-9788-92fbcf53809c.jpg

一开始我想着是准备上RT-Thread实时系统的,后面又想了想感觉没多大必要,于是就采取了裸机跑程序的方案。事实证明,没有外加存储器的情况下,屏幕所使用的字库非常占用Flash空间。

当前版本下采用O1优化,程序大小已经来到了惊人的31.54KB,距离塞满我这颗32KB ROM的MCU只差一步之遥。

f2cdbf6e-59a4-11ee-9788-92fbcf53809c.jpg

MCU开了两个串口,一个用于和模块通信,另一个与上位机进行通信。与模块之间的数据流是持续不断的,所以我在这里使用了DMA来进行串口的数据接收以减轻CPU的负担,同时避免丢失数据包。

- 硬件制作 -

既然程序准备OK了,那么就等待PCB到货进行焊接制作了。全贴片方案果然还是使用加热台来进行焊接最安逸了 :

f2d49960-59a4-11ee-9788-92fbcf53809c.png

焊接完成并且烧录程序后,我们就得到了这样的成果:

f3052e5e-59a4-11ee-9788-92fbcf53809c.png

2

主要功能及开源交流


合宙Air530Z模块在使用有源天线以及在存在后备电源供电的情况下时,热启动定位非常迅速,几乎可以说是秒定位。不过当模块内存储的历书过期后,使用冷启动就要稍微慢一些了。

f30fa866-59a4-11ee-9788-92fbcf53809c.gif 

- 主要功能 -

根据功能内容的实现和显示差异,我将程序分为了如下几个功能界面:

01.启动界面

上电时,我们会看到一个启动界面(飞机上未录制,此处使用之前的图片素材)。

f3219c74-59a4-11ee-9788-92fbcf53809c.png

02.详细信息首界面

开机后默认会进入详细信息界面:系统将会显示当前时间、速度、经纬度以及梅登海德网格。最上方的状态栏则指示了当前定位情况、系统温度(MCU内置的温度传感器,使用了工厂校准值)和电池剩余电量指示(电压估算,没有使用库仑计,因此并不精准,只能作为参考)。

f329e5f0-59a4-11ee-9788-92fbcf53809c.gif

03.日期与时间专题显示界面

通过PCB顶部的右侧按钮可以进行翻页,进入日期与时间的专题显示。此时还可以通过顶部的左侧按钮,切换UTC时间与CST(即北京时间)。

f34910a6-59a4-11ee-9788-92fbcf53809c.gif

04.速度专题显示界面

接下来的一页是速度的专题显示,一共三组数值:分别是km/h、m/s和节。事实上显示的速度换算关系并不精准,原因是内容刷新时间并不一致。刷新存在先后关系,导致并非展示同一时刻下的数据。

f353db3a-59a4-11ee-9788-92fbcf53809c.png

05.系统信息显示界面

再接下来的一页是系统信息的展示,内容有当前系统温度(对,和状态栏上那个是一样的)、当前系统工作电压(通过使用ADC对内置的Vrefint通道进行采样,再通过内置的通道校准值来计算实际的3.3V供电电压)、当前电池电压以及固件版本。

f3900a24-59a4-11ee-9788-92fbcf53809c.png

06.报文信息显示界面

最后一页是原始的GNSS报文展示,我这里为了解析方便,设定了模块只使用GNRMC报文。GNRMC已经足够使用,缺点则是没有高程信息以及卫星数量的报告。后面如果有时间,我再尝试加上其它报文(如GNGLL、GNGGA等)的解析功能吧。

f39ca54a-59a4-11ee-9788-92fbcf53809c.gif

在屏幕展示这些数据的同时,MCU与上位机通信的串口也不会闲着。它会实时转发模块发来的GNRMC数据包,这样,我们将这个设备插上电脑(它自带了CH340N芯片),便可以同步使用例如BktTimeSync之类的软件,来利用GNSS系统对电脑进行授时了。这对于在野外操作FT8等严格要求时序的通联模式有较大帮助。

现在的固件只包含了以上功能,接下来我会尝试继续完善这个小玩具。比如增加更多报文的解析、自定义启动屏幕的呼号显示等功能,再将现在的GUI美化一下。希望剩余的ROM还能支持我这么干~

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2240

    文章

    10674

    浏览量

    348809
  • 定位器
    +关注

    关注

    2

    文章

    155

    浏览量

    16500
  • GNSS
    +关注

    关注

    9

    文章

    623

    浏览量

    47257
收藏 人收藏

    评论

    相关推荐

    在TSMaster中加载基于DotNet平台的Seed&Key

    在UDS诊断过程中,会涉及到安全访问的问题,也就是所谓的Seed&Key。TSMaster诊断模块支持通过.dll文件载入Seed&Key算法用于安全访问解锁。在最近发布
    的头像 发表于 04-02 08:20 84次阅读
    在TSMaster中加载基于DotNet平台的Seed&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;Key

    安富利带你揭秘IP&amp;amp;E元器件的赋能之路

    IP&amp;E,是Interconnect(互连)、Passive(无源)和Electromechanical(机电)的缩写,代表着电子元器件中最为基础和重要的分支之一。
    的头像 发表于 03-26 18:18 578次阅读

    Open RAN的未来及其对AT&amp;amp;T的意义

    3月14日消息,在“Connected America 2024”会议上,AT&amp;T高级副总裁兼网络首席技术官Yigal Elbaz讨论了Open RAN 的未来及其对AT&amp;T的意义。
    的头像 发表于 03-14 14:40 195次阅读

    【电磁兼容技术文档分享】频谱仪应用案例&amp;amp;amp;简易探头的制作

    【电磁兼容技术文档分享】频谱仪应用案例&amp;简易探头的制作
    的头像 发表于 02-19 13:20 187次阅读
    【电磁兼容技术文档分享】频谱仪应用案例&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;简易探头的制作

    R&amp;amp;S和Applus在EMC测试环境中完成eCall测试

    罗德与施瓦茨(以下简称R&amp;S)和Applus Laboratories完成电磁兼容性 (EMC) 测试环境中 eCall 测试。
    的头像 发表于 01-12 09:12 941次阅读
    R&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;S和Applus在EMC测试环境中完成eCall测试

    罗德与施瓦茨推出获得CTIA认证的5G FR1 A-GNSS OTA测试解决方案

    罗德与施瓦茨(以下简称R&amp;S)的over-the-air (OTA)测试系统R&amp;S TS8991是首个获得 CTIA 认证的5G A-GNSS 天线性能测试系统。
    的头像 发表于 12-14 16:24 310次阅读

    森木磊石CPEEC&amp;amp;amp;CPSSC 2023 展会圆满收官!

    2023中国电力电子与能量转换大会暨中国电源学会第二十六届学术年会及展览会(CPEEC&amp;CPSSC2023)是中国电源学会成立40周年纪念活动的重要环节。会议旨在促进电源、电力电子与能量转换
    的头像 发表于 11-16 08:22 257次阅读
    森木磊石CPEEC&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;CPSSC 2023 展会圆满收官!

    炫酷好玩的像素时钟&amp;amp;amp;音乐频谱,合宙ESP32-C3开发板创意DIY分享

    分享@亚里士不可得大佬的开源佳作——使用合宙ESP32-C3开发板自制像素时钟&amp;音乐频谱。在变幻的时间和跳跃的频谱中,开启属于你的秋日浪漫……像素时钟&amp;音乐频谱开源分
    的头像 发表于 10-21 08:04 502次阅读
    炫酷好玩的像素时钟&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;音乐频谱,合宙ESP32-C3开发板创意DIY分享

    大佬自制GNSS定位器 授时器 基于合宙Air530Z+STM32

    基于合宙Air530Z的定位器&amp;授时器,使用STM32G030F6P6单片机进行数据处理以及显示,使用0.96寸ST7735屏幕作为
    的头像 发表于 09-22 12:10 2530次阅读
    大佬<b class='flag-5'>自制</b><b class='flag-5'>GNSS</b><b class='flag-5'>定位器</b> <b class='flag-5'>授时</b>器 基于合宙<b class='flag-5'>Air530Z+STM32</b>

    一个严谨的STM32串口DMA发送&amp;amp;接收(1.5Mbps波特率)机制

    一个严谨的STM32串口DMA发送&amp;接收(1.5Mbps波特率)机制
    的头像 发表于 09-18 10:58 1719次阅读
    一个严谨的<b class='flag-5'>STM32</b>串口DMA发送&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;接收(1.5Mbps波特率)机制

    干簧技术-斯丹麦德液位传感器&amp;amp;浮子手册(新)

    电子发烧友网站提供《干簧技术-斯丹麦德液位传感器&amp;浮子手册(新).pdf》资料免费下载
    发表于 09-12 11:49 0次下载

    Air001在Arduino下的测试IIC工程

    本帖最后由 大懒猫54 于 2023-8-23 11:57 编辑 测试使用Air001开发板,使用PF0,PF1对应的IIC接口,测试0.96英寸的OLED。下载器使用
    发表于 08-23 11:56

    以太网&amp;amp;MVB从站转CAN网关功能简介

    NETMVBCANCOM系列是广州众志诚信息科技有限公司生产的以太网&amp;MVB转CAN&amp;串行接口系列协议转换模块。可以将以太网M12接口或者MVB的EMD接口或者ESD+接口转换为CAN或者RS232、RS485(ModBus协议)。
    发表于 08-01 14:43 1388次阅读
    以太网&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;MVB从站转CAN网关功能简介

    你使用shell脚本中的2&amp;gt;&amp;amp;1了吗?

    run_cmax > ./starrc_cmax.logs 2>&amp;1中的 2>&amp;1是啥意思?
    的头像 发表于 07-30 14:44 1071次阅读

    if(a==1 &amp;amp;&amp;amp; a==2 &amp;amp;&amp;amp; a==3),为true,你敢信?

    接下来咱们来尝试解决这个问题。假设 if(a==1&amp;&amp;a==12)是等于 true的,那么a肯定不可能是一个“普通的变量”。它势必要有能力在执行的时候能够动态改动值。
    的头像 发表于 05-08 11:01 755次阅读
    if(a==1 &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>; a==2 &<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>; a==3),为true,你敢信?