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

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

3天内不再提示

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

合宙LuatOS 来源:@W_Linus 作者:@W_Linus 2023-09-22 12:10 次阅读

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

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

项目主要准备工作

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

- 主要物料 -

01. GNSS模块:合宙Air530Z

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

aaab5f2c-58fd-11ee-939d-92fbcf53809c.png

02. 单片机:STM32G030F6P6

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

03. 屏幕:0.96寸 ST7735 LCD

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

ab68e6c8-58fd-11ee-939d-92fbcf53809c.png

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

- 硬件设计 -

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

abf7f41c-58fd-11ee-939d-92fbcf53809c.png

ac42b54c-58fd-11ee-939d-92fbcf53809c.png

- 程序开发 -

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

ac91aefe-58fd-11ee-939d-92fbcf53809c.jpg

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

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

acc9dbb2-58fd-11ee-939d-92fbcf53809c.jpg

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

- 硬件制作 -

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

ad05ca00-58fd-11ee-939d-92fbcf53809c.png

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

ada228b4-58fd-11ee-939d-92fbcf53809c.png

2

主要功能及开源交流

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

- 主要功能 -

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

01.启动界面

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

ae740c4e-58fd-11ee-939d-92fbcf53809c.png

02.详细信息首界面

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

af24483e-58fd-11ee-939d-92fbcf53809c.gif

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

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

afd0616e-58fd-11ee-939d-92fbcf53809c.gif

04.速度专题显示界面

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

b0cfc956-58fd-11ee-939d-92fbcf53809c.png

05.系统信息显示界面

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

b1954492-58fd-11ee-939d-92fbcf53809c.png

06.报文信息显示界面

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

b254b7a0-58fd-11ee-939d-92fbcf53809c.gif

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

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

- 开源交流 -

同时我也正在学习SolidWorks软件的使用,想给这个小玩具做一个3D打印的外壳。目前本项目已开源,欢迎感兴趣的朋友一起来交流。

特别感谢@W_Linus大佬
期待更多精彩作品

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

    关注

    146

    文章

    17040

    浏览量

    350511
  • STM32
    +关注

    关注

    2266

    文章

    10880

    浏览量

    355082
  • 定位器
    +关注

    关注

    2

    文章

    164

    浏览量

    17455
  • GNSS
    +关注

    关注

    9

    文章

    761

    浏览量

    47857
  • 合宙通信
    +关注

    关注

    0

    文章

    147

    浏览量

    1730

原文标题:开源 | 合宙Air530Z+STM32,自制GNSS定位器&授时器

文章出处:【微信号:HelloLuatOS,微信公众号:合宙LuatOS】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Air201资产定位模组LuatOS课程(六):PWRKEY控制解决关机难问题

    ​ 经过前面5期的课程:从hello world初体验,到点灯、远程控制,再到定位,扩展功能,是不是有点上瘾了?Air201,如同我们一路升级打怪的得力法器,让开发愈发得心应手。
    的头像 发表于 09-18 07:06 382次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>201资产<b class='flag-5'>定位</b>模组LuatOS课程(六):PWRKEY控制解决关机难问题

    Air201资产定位模组LuatOS快速入门(五):玩转扩展库,温湿度传感篇!

    、I2C、UART等多种接口全部支持。 本期,我们将学习Air201的扩展应用之一 ——I2C驱动AHT10温湿度传感 Air201驱
    的头像 发表于 09-18 07:05 296次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>201资产<b class='flag-5'>定位</b>模组LuatOS快速入门(五):玩转扩展库,温湿度传感<b class='flag-5'>器</b>篇!

    Air201资产定位模组LuatOS课程:点灯仪式

    定位模组——是一个集成超低功耗4G通信、语音通话、超低功耗定位、计步、震动、Type-C、充电、放音、录音等功能的超小PCBA。 内部集成高效、简单、可靠的LuatOS语言,旨在帮助客户降低开发难度,降低研发成本,以及打造超小超低功耗的精品产品。
    的头像 发表于 09-14 16:24 285次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>201资产<b class='flag-5'>定位</b>模组LuatOS课程:点灯仪式

    Air201资产定位模组LuatOS快速入门:GPS/LBS/Wi-Fi定位,全安排!​

    ​  经过三期的学习:hello world、点灯、远程控制,小伙伴们是不是收获满满呢?更高阶的应用来啦! 本期,我们将学习Air201的核心功能之一 ——定位功能  
    的头像 发表于 09-14 07:56 381次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>201资产<b class='flag-5'>定位</b>模组LuatOS快速入门:GPS/LBS/Wi-Fi<b class='flag-5'>定位</b>,全安排!​

    资产定位 | Air201模组LuatOS快速入门01-hello world

    Air201模组,功耗低,品质稳定,购买样品也方便,且资料全开放。
    的头像 发表于 09-13 15:21 326次阅读
    资产<b class='flag-5'>定位</b> | <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>201模组LuatOS快速入门01-hello world

    玩转扩展库,温湿度传感篇!—Air201资产定位模组LuatOS快速入门05

    随着LuatOS快速入门系列教程的推出,小伙伴们学习热情高涨。 Air201不仅支持三种定位方式,还具有丰富的扩展功能,通过外扩BTB链接方案,最多可支持21个IO接口:SPI、I
    的头像 发表于 09-12 12:11 390次阅读
    玩转扩展库,温湿度传感<b class='flag-5'>器</b>篇!—<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>201资产<b class='flag-5'>定位</b>模组LuatOS快速入门05

    GPS/LBS/Wi-Fi定位,全安排!—Air201资产定位模组LuatOS快速入门04

    经历了hello world、点灯、远程控制三期基础教程,小伙伴们是不是收获满满,期待更高阶的应用呢? 本期,我们将学习Air201的核心功能之一 ——定位功能! 文末阅读原文,下
    的头像 发表于 09-12 12:04 1104次阅读
    GPS/LBS/Wi-Fi<b class='flag-5'>定位</b>,全安排!—<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>201资产<b class='flag-5'>定位</b>模组LuatOS快速入门04

    Air780E硬件设计手册02

    低功耗4G模组Air780E硬件设计介绍
    的头像 发表于 09-06 12:02 420次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>780E硬件设计手册02

    Air700EAQ硬件设计手册——应用接口2

    Air700EAQ硬件设计的详细介绍
    的头像 发表于 08-27 14:23 388次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>700EAQ硬件设计手册——应用接口2

    Air700EAQ硬件设计手册——应用接口1

    本文主要介绍Air700EAQ的硬件设计中的应用接口部分。
    的头像 发表于 08-26 17:13 452次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>700EAQ硬件设计手册——应用接口1

    Air700ECQ硬件设计手册——应用接口3

    Air700ECQ硬件设计手册——应用接口部分介绍
    的头像 发表于 08-22 18:34 415次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>700ECQ硬件设计手册——应用接口3

    Air700ECQ硬件设计手册——应用接口1

    Air700ECQ硬件设计手册——应用接口1
    的头像 发表于 08-21 18:46 348次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>700ECQ硬件设计手册——应用接口1

    Air201定位模组,千万不要忘记设置这个......

    Air201定位模组,千万不要忘记设置这个:AT+WIFILOC设置wifi定位优先
    的头像 发表于 08-09 18:01 1402次阅读
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>201<b class='flag-5'>定位</b>模组,千万不要忘记设置这个......

    MQTT应用看这篇!Air780EP_LuatOS_MQTT应用指南

    Air780EP 是的低功耗4G模组之一,支持LuatOS的脚本二次开发,即使是不太懂技术的老板,也能轻松使用 Air780EP开发产品。 本文应各位
    的头像 发表于 08-08 17:13 1791次阅读
    MQTT应用看这篇!<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>780EP_LuatOS_MQTT应用指南

    用3.8元国产芯片Air32自制轮腿机器人,靠谱吗?!

    在漫天飞舞的银杏叶中,为你跳“华尔兹”的可能是——可爱的机器人小伙伴?闪耀的科技之光,让梦想照进现实。今天 特别分享 @维少爷的极客小窝大佬 的最新佳作,愿你也喜欢。 Air32国
    的头像 发表于 12-22 12:20 929次阅读
    用3.8元国产芯片<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air</b>32<b class='flag-5'>自制</b>轮腿机器人,靠谱吗?!