基于单片机stm32的GPS定位位置记录系统 - 物联网 嵌入式 (含代码)
ninehua 2024-12-05 15:09 26 浏览
**基于单片机的GPS定位位置记录系统 *难度系数:4分
- 工作量:4分
- 创新点:3分
1 简介
基于stm32单片机丰富的板载资源,并结合GPS模块及显示等其他模块,在方便记录轨迹的同时,提供校为便利的用户交互体验(如声音提示和用户按键交互,及屏幕显示)。项目可用于运动轨迹记录,及实时显示速度等展示,及其他应用领域,解决部分场景下位置记录实时查看不便或需要借助其他功耗相对较高的记录设备的问题,同时增加生活的趣味性。
2 主要器件
- stm32单片机
- RT-Thread物联网操作系统
- SSD1306 OLED显示屏
- GPS模块(支持北斗和GSP双模定位)
- SD卡
- 按键、LED灯
3 实现效果
定位界面
系统日期和时间界面 (GPS校时后)
经纬度界面
实时速度于定位距离界面
系统日期时间界面,GPS轨迹录制状态显示
GPS轨迹查看
4 硬件设计
概述
整体硬件由4部分组成:
stm32单片机、SSD1306 OLED显示屏、GPS模块(支持北斗和GSP双模定位)和SD卡
注:其中开发板还用到了GREEN和RED灯,和S2及S3按键
硬件示意图
硬件整体外观如下图所示
硬件模块的连接
SSD1306 OLED显示屏(II2C)引脚连接
PE3 - OLED SCL、PE2 - OLED SDA、电源引脚
GPS模块引脚连接(串口)
PA4 - GPS RX、PA3 - GPS TX、电源引脚
OLED和GPS模块电源引脚连接
模块供电,均采用开发板提供的3.3V电源引脚
AB32VG1主控MCU
简介
开发板采用中科蓝讯的32位RISC-V指令集的AB32VG1型号MCU,主频120M。MCU有8M的Flash,和192K SRAM。支持3.0V-5.0V供电。
与一般MCU不同的是,这款MCU具有MPU模块,就是电源管理模块,支持Charge电路、BUCK电路、LDO电路等等,手册第十页给出了MPU模块的详细参数。
开发环境搭建
根据官方的指导,使用的是RT-thread官方stduio平台,先更新软件源代码至最新版,下载中科蓝讯软件包,下载RISC-V-GCC工具链,编译程序会用到。
软件包配置
接下来选择我们本次实验用到的软件包,wavplayer软件包、optparse软件包和multibutton软件包,实现通过板载按键控制声音的播放语音量的增减。
然后对软件包进行简单配置,按键的示例代码可以勾选也可以不勾选,后面要对此进行修改,改为评测板上的用户按键,optparse软件包默认即可。
5 软件说明
项目的软件采用RT-Thread官方提供的IDE RT-ThreadStudio开发,SDK基于AB32VG1-AB-PROUGEN,同时部分模块采用官方软件包,如ssd1306软件包,也移植了部分软件,如TinyGPS++和GPX(该部分开源软件主要由C++编写,移植采用C实现,并修改部分BUG),GPS记录后的轨迹符合GPX规范,可以用GPXSee(http://www.gpxsee.org) 软件查看。
软件框架
6 部分核心代码
核心数据结构和API如下:
/* Clock */
typedef struct{
uint16_t year;
uint8_t month;
uint8_t day;
uint8_t week;
uint8_t hour;
uint8_t minute;
uint8_t second;
uint16_t millisecond;
} Clock_Info_t;
/* GPS */
typedef struct{
bool isVaild;
float longitude;
float latitude;
float altitude;
float course;
float speed;
int16_t satellites;
Clock_Info_t clock;
} GPS_Info_t;
/* GPS 数据回调 */
typedef rt_int32_t (*gps_callback_t)(GPS_Info_t info);
int gps_init(gps_callback_t callback);
bool gps_get_info(GPS_Info_t* info);
float gps_get_distance(GPS_Info_t* info, float preLong, float preLat);
page.c (page.h) - OLED界面
OLED界面主要实现:系统本地日期时间显示、定位状态显示、当前经纬度和实时速度及已经定位的距离
头文件定义:
typedef enum _page_type {
PAGE_STARTUP = 0,
PAGE_DATE_TIME,
PAGE_LOCATION,
PAGE_SPEED,
PAGE_MAX,
}page_type_t;
typedef enum _page_state {
PAGE_STATE_LOCATION = 0x1,
PAGE_STATE_TRACK = 0x2,
}page_state_t;
void page_init();
void page_switch(rt_int32_t index);
void page_update();
完整代码可进群免费领取。
7 最后
嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击下方链接,0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!
点击这里找小助理0元领取:扫码进群领资料
相关推荐
- 最简单的大白菜U盘装系统教程(2021大白菜u盘装系统教程)
-
今天我们介绍如何使用大白菜U盘启动重装系统,这里主要是使用win10系统作为教程。首先在装系统之前你需要准备以下的必备工具:8G以上的U盘电脑(台式,笔记本均可)下载U盘启动制作工具接下来我们首先来制...
- 如何实现黑客系统Kali linux系统下的U盘启动(小白指导)
-
按照官方网站的定义,KaliLinux是一个高级渗透测试和安全审计Linux发行版。作为使用者,我简单的把它理解为,一个特殊的Linux发行版,集成了精心挑选的渗透测试和安全审计的工具,供渗透测试和...
- 树莓派4B初级6-移植bootloader和rootfs
-
后面想使用buildroot和yocto来构建raspberryos。这里用手动的方式来移植bootloader和rootfs,通过这种方式和自动化方式做对比,更能突出后者的优势。系统从上电到界面显...
- u盘启动盘重装win8,u盘一键安装windows8系统
-
win8系统使用的人不多,很多人基本都是通过u盘重装win8系统的方法使用上win8.有些网友想了解如何重装win8系统,下面小编就给大家介绍一个简单的u盘启动盘制作工具如何重装win8系统_小白一键...
- 秒杀一众PE系统,制作强大的U盘启动系统,自制新一代装机神器
-
安装电脑系统的方式有很多,是一个既复杂又简单的工作,有时候几分钟就可以装好,而有些时候却要折腾几个小时。重装系统的时候有很大一部分原因就是因为系统损坏,无法正常进入系统才选择的重装,就拿以前安装原版W...
- 闲置U盘变废为宝!电脑系统出了问题再也不求人|启动U盘制作教程
-
经常和电脑打交道的朋友,大约多多少少碰到过硬件故障或者系统故障吧。普通的用户,在电脑软硬件出现问题的时候,限于技术难度,只能求助于别人,而不能自己动手解决。但实际上,对于一些简单的电脑故障,我们自己完...
- 自己想装电脑系统的福音 看看U盘启动大全
-
现在自己想给点安装系统的人很多。因为现在安装系统简单了,系统能进去的有硬盘安装法。系统不能进去的有U盘安装法。那么U盘安装法的步骤是什么呢?首先准备一个U盘制作成U盘启动盘。u盘启动软件网上搜索一下很...
- 如何安装电脑系统,使用Ventoy打造多系统启动U盘
-
大家好,我是眼睛君。上一篇内容分享了如何使用微软官方的WindowsMediaCreationTool制作Windows10/11的安装启动U盘,对于偶尔需要重装系统的普通用户来说,官方工具在使...
- 3种可快速查出电脑如何一键U盘启动的方法送给大家!
-
在进行系统重装或维护的时候,除了自己熟悉的电脑,大部分的人都需要查询下目标电脑的一键U盘启动快捷键是什么,高手还好说,对新手而言,时常是百度几番查,依旧心茫然,有木有?因此,小编特别整理了3种可快速查...
- U盘+Ventoy工具,让电脑多系统启动变得更加丰富
-
前言Ventoy是一款开源免费的多合一系统安装盘/启动盘制作工具,支持Windows系列与Linux几乎所有主流发行版。它最大的作用在于,可以在1个U盘或移动硬盘里集成N款不同类型的操作系统安...
- 电脑装系统制作U盘启动详细教程,免费帮大家解决装系统难题!
-
现在一些小白还在为装系统到电脑城装操作系统为难,笔者教大家不用出门求别人免费在家就可以自己装操作系统。一、准备工作:1、先准备一个32G或64G的U盘(越大越好,多存几个操作系统,方便以后灵活安装操作...
- 百毒不侵!软碟通制作隐藏PE启动U盘教程
-
下载一个WinPE的ISO光盘镜像想写入到U盘制作成WinPE启动U盘?或者说,下载了一个原版的Windows的ISO光盘镜像文件想将写入到U盘里做成一个Windows系统安装U盘?或者你就想知道,用...
- Dell戴尔进入新版bios设置u盘启动教程
-
Dell戴尔电脑新版bios与其他旧版的不一样,用户设置更方便简单,但是在一定程度上区别了老版的Bios。 Dell戴尔进入新版bios设置u盘启动 1、开机按F2进入BIOS设置界面,打开S...
- 教你如何用U盘启动盘装系统(用u盘启动怎样安装系统教程)
-
电脑重装系统其实是一件很简单的事,但是如果电脑没有光驱或者没有系统光盘,那么要重装系统却是非常难的。那么怎么才能比较简单的重装系统呢?这里给大家介绍一下如何用U盘启动盘装系统。首先需要准备好我们需...
- 如何制作macOS Big Sur 系统启动U盘
-
制作可引导macOSBigSurU盘启动是一种在Mac电脑上安装macOS新副本快速、便捷又干净的方法。制作macOSBigSur启动盘,有备无患。U盘在创建macOSU盘启动之前,...