STM32的电动自行车信息采集上报系统(学习)

摘要

针对电动自行车实时监管不便的问题,设计了一种基于STM32的电动自行车信息采集系统,通过获取电池、位置和行驶状态信息并上报到服务器中,实现实时监管。

通过多路串口请求电池、行驶状态和位置信息,以并发方式进行数据接收、解析、模块控制和数据上报等操作;

为方便系统软件升级,将系统存储器分为Bootloader区、APP区、Download区和数据区,并设计了Bootloader,使系统具有在线升级功能。

引言

目前,电动自行车在我国市场上有很大的保有量,给人们的生产生活带来了便利,但也存在违规停放、超速、被盗等问题,因此如何实时监督电动自行车是当下亟待解决的问题。

监管电动自行车需要实时获取它们的位置、行驶状态、电池状态等信息由电池管理系统输出。

根据STM32单片机高性能、低功耗的特点,结合开源嵌入式操作系统RT-Thread上下文切换速度快、体积小、实时性好的优势,利用STM32搭载RT-Thread操作系统,以并发的方式采集和缓存位置、行驶状态、电池状态等相关数据后上报到服务器中并监测,实现了电动自行车的实时监管。

总体设计

系统可以分为主控模块、蓝牙广播模块、GPS模块、4G模块、内部电压监测模块。

主控模块包括单片机、外部FLASH和RS485接口电路,负责解析接收的数据,缓存后发送至上传模块,同时控制系统通过串口进行本地升级或通过4G网络进行在线升级。

行驶里程和登录服务器的账号密码是系统掉电后不能消失的数据,需要保存到外部Flash中。

单片机通过RS485串口发送请求帧,向控制器和电池管理系统请求数据,在接收到控制器和电池管理系统发送的数据帧后进行解码,获取行驶状态和电池状态等。

GPS模块使用GPS获取系统当前位置信息,通过串口发送至主控模块,主控模块将数据解码后获取电动自行车的位置信息。

由于系统每次上传的数据量少,场景变化大且要尽量节省流量,因此使用MQTT协议进行数据传输。
4G模块在4G网络下通过MQTT协议将主控模块发送的数据上传到服务器中,考虑功耗因素,每30s上报一次。

加入内部电池使系统在电动车停车或故障后依然可以工作。
ACC有效时,外部电池给系统供电,同时主控模块开启充电模块,内部电池充电;ACC无效时关闭充电模块。

电压监测模块负责监测内部电池电压,由单片机通过IIC接口控制,在内部电池电量低于20%时,关闭内部电池供电,防止内部电池过度放电。

在这里插入图片描述
分区设计
首先对存储程序和数据的Flash进行分区

在这里插入图片描述

Bootloader程序设计

Bootloader是一段被固化在内部Flash的APP区,是系统上电复位后最先执行的程序。

上电复位后,首先检查更新标志位,如果有更新标志,将程序从外部Flash的Download区复制到内部Flash的APP区,再关闭所有中断,防止由于静电干扰触发中断信号导致跳转失败,然后跳转到APP区的起始地址。

在这里插入图片描述

盲区缓存程序设计

如果设备进入网络盲区,采集到的数据便无法发出,影响电动自行车的监测,所以需要保存盲区中的数据并在离开网络盲区后依次发送。

考虑到电动自行车大多在有网络覆盖的区域行驶,进入盲区的时间很少,所以在盲区中保存200帧每种类型的数据,即保存100分钟的数据。当数据多于200帧后,从第1帧开始依次覆盖。设备离开盲区后依次发出缓存的数据,如果在发送过程中采集到了新的数据,则先将新数据保存,等盲区中的数据发送完成后再发送新数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/60914.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习概述及其主要算法

目录 1、什么是机器学习 2、数据集 2.1、结构 3、算法分类 4、算法简介 4.1、K-近邻算法 4.2、贝叶斯分类 4.3、决策树和随机森林 4.4、逻辑回归 4.5、神经网络 4.6、线性回归 4.7、岭回归 4.8、K-means 5、机器学习开发流程 6、学习框架 1、什么是机器学习 机器…

Linux命令200例:用Look一个进行文本搜索工具

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已…

Web压测工具http_load原理分析

01、前言 http_load是一款测试web服务器性能的开源工具,从下面的网址可以下载到最新版本的http_load: http://www.acme.com/software/http_load/ 这个软件一直在保持着更新(不像webbench,已经是十年的老古董了。 webbench的源…

Pandas

系列文章目录 第一章 python数据挖掘基础环境安装和使用 第二章 Matplotlib 第三章 Numpy 文章目录 系列文章目录一、介绍1.1 为什么用Pandas?1.2 核心数据结构1.3 DataFrame1.3.1 结构1.3.2 常用属性1.3.3 常用方法1.3.4 DataFrame索引的设置修改行列索引值重设索…

小白电脑装机(自用)

几个月前买了配件想自己装电脑,结果最后无法成功点亮,出现的问题是主板上的DebugLED黄灯常亮,即DRAM灯亮。对于微星主板的Debug灯,其含义这篇博文中有说明。 根据另一篇博文,有两种可能。 我这边曾将内存条和主板一块…

gin框架学习

文章目录 配置go环境实现一个简单的web响应服务验证功能gin增加页面以及传递数据 配置go环境 去go官网下载对应的版本 go下载地址 tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz 我们可以编辑 ~/.bash_profile 或者 /etc/profile,并将以下命令添加该文件的末…

【新版系统架构补充】-传输介质、子网划分

传输介质 双绞线:无屏蔽双绞线UTP和屏蔽双绞线STP,传输距离在100m内 网线安装标准: 光纤:由纤芯和包层组成,分多模光纤MMF、单模光纤SMF 无线信道:分为无线电波和红外光波 通信方式和交换方式 单工…

使用隧道HTTP时如何解决网站验证码的问题?

使用代理时,有时候会遇到网站验证码的问题。验证码是为了防止机器人访问或恶意行为而设置的一种验证机制。当使用代理时,由于请求的源IP地址被更改,可能会触发网站的验证码机制。以下是解决网站验证码问题的几种方法: 1. 使用高匿…

Golang 函数参数的传递方式 值传递,引用传递

基本介绍 我们在讲解函数注意事项和使用细节时,已经讲过值类型和引用类型了,这里我们再系统总结一下,因为这是重难点,值类型参数默认就是值传递,而引用类型参数默认就是引用传递。 两种传递方式(函数默认都…

前端主题切换方案——CSS变量

前言 主题切换是前端开发中老生常谈的问题,本文将介绍主流的前端主题切换实现方案——CSS变量 CSS变量 简介 编写CSS样式时,为了避免代码冗余,降低维护成本,一些CSS预编译工具(Sass/Less/Stylus)等都支…

安防监控国标GB28181平台EasyGBS视频快照无法显示是什么原因?如何解决?

安防视频监控国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入,并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发&#xff…

nginx的优化和防盗链 重要!!!

实验一、隐藏版本号 要把nginx的版本号隐藏起来,防止恶意攻击 方法一:修改配置文件 在http模块中加入一个命令 server_token off; 过程: 备份,改配置文件一定要备份 修改配置文件 在http模块中添加 server_tokens …

嵌入式开发学习(STC51-6-独立按键)

内容 通过开发板上的独立按键K1控制D1指示灯亮灭 按键简介 按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时,开关断开; 通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,…

非阻塞IO

非阻塞IO fcntl 一个文件描述符, 默认都是阻塞IO。fcntl可以将某个文件描述符设置为非阻塞IO,先看一下文档介绍。 传入的cmd的值不同,后面追加的参数也不相同。 fcntl函数有5种功能: 复制一个现有的描述符(cmd F_DUPFD)。获得…

Unity面板究极优化

首先对于大项目来说UI首选一定的UGUI,目前没有啥可选的余地。多一点都是对性能的负担,UGUI底层基于多线程技术,可以有效分担压力,对于一些不是那么重的面板几乎无感。 无论其他面板只是在此基础上修改的,但每多一层&am…

图解架构 | SaaS、PaaS、IaaS/aPaaS平台是什么?aPaaS与PaaS有什么区别?

参考 图解架构 | SaaS、PaaS、IaaS:https://www.51cto.com/article/717315.html aPaaS平台是什么?aPaaS与PaaS有什么区别?:https://developer.aliyun.com/article/718714 aPaaS和PaaS的区别是什么? aPaaS和PaaS都可以完成软件的…

Redis 双写一致性实践及案例

面试问题: 你只要用缓存,就可能会涉及到redis缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?双写一致性,你先动缓存redis还是数据库mysql哪一个&…

Linux从安装到实战 常用命令 Bash常用功能 用户和组管理

1.0初识Linux 1.1虚拟机介绍 1.2VMware Workstation虚拟化软件 下载CentOS; 1.3远程链接Linux系统 &FinalShell 链接finalshell半天没连接进去 他说ip adress 看IP地址是在虚拟机上 win11主机是 终端输入: ifconfig VMware虚拟机的设置 & ssh连接_snge…

Word中如何断开表格中线段

Word中如何断开表格中线段_word表格断线怎么弄_仰望星空_LiDAR的博客-CSDN博客有时候为了美观,需要实现如下的效果,即第2条线段被断开成3段步骤如下:选中需要断开的格网,如下,再选择段落、针对下框标即可。_word表格断…

组件(lvs,keeplive,orm,mysql,分布式事务)

lvs LVS 已经集成到Linux内核系统中,ipvsadm 是 LVS 的命令行管理工具。 目前有三种 IP 负载均衡技术( VS/NAT 网络地址转换 、VS/TUN IP 隧道技术实现虚拟服务器 和 VS/DR 直接路由); 八种调度算法:轮询 …