当前位置: 首页 > news >正文

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帧开始依次覆盖。设备离开盲区后依次发出缓存的数据,如果在发送过程中采集到了新的数据,则先将新数据保存,等盲区中的数据发送完成后再发送新数据。

相关文章:

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

摘要 针对电动自行车实时监管不便的问题,设计了一种基于STM32的电动自行车信息采集系统,通过获取电池、位置和行驶状态信息并上报到服务器中,实现实时监管。 通过多路串口请求电池、行驶状态和位置信息,以并发方式进行数据接收、…...

蓝桥杯上岸每日N题 第七期(小猫爬山)!!!

蓝桥杯上岸每日N题 第七期(小猫爬山)!!! 同步收录 👇 蓝桥杯上岸必背!!!(第四期DFS) 大家好 我是寸铁💪 冲刺蓝桥杯省一模板大全来啦 🔥 蓝桥杯4月8号就要开始了 &a…...

【Linux系统编程】冯诺依曼体系结构

目录 前言 什么是冯诺依曼体系结构? 冯诺依曼体系结构如何进行数据处理的? 存储器在冯诺依曼体系中有什么作用? 冯诺依曼体系结构为什么要这样设计? 冯诺依曼结构总结 前言 相信对于冯诺依曼这个人的名字大家一定不会感到陌…...

数据结构--动态顺序表

文章目录 线性表动态顺序表数组与顺序表 接口实现初始化:尾插:尾删头插头删指定位置插入指定位置删除查找摧毁 完整代码 线性表 线性表是数据结构中最基本、最简单也是最常用的一种数据结构。线性表是指由n个具有相同数据类型的元素组成的有限序列。 线…...

笔试数据结构选填题

目录 卡特兰数Catalan:出栈序列/二叉树数 树 二叉树 N01N2 哈夫曼树(最优二叉树)Huffman 度m的哈夫曼树只有度为0和m的结点:Nm(n-1)/(m-1) 平衡二叉树AVL Nh表示深度为h最少结点数,则N00,N11&#…...

# 鸢尾花的案例学习

# 鸢尾花的案例学习 # 1. 导入小型的数据 from sklearn.datasets import load_iris import numpy as np import pandas as pd import seaborn as sbn import matplotlib.pyplot as plt # 2. 获取数据 irisload_iris() # 3.查看数据print("数据集\n ",len(iris.d…...

线程、进程的区别

线程、进程的区别 在开发中,我们经常听到线程和进程两个概念,它们都是操作系统的基本概念,操作系统以进程为基本单位分配存储器,以线程为基本单位分配CPU。虽然它们有很多相似之处,但是它们也有很大的区别。本文将详细…...

在 Ubuntu 上安装 Docker 桌面

Ubuntu 22.04 (LTS) 安装 Docker 桌面 要成功安装 Docker Desktop,您必须: 满足系统要求拥有 64 位版本的 Ubuntu Jammy Jellyfish 22.04 (LTS) 或 Ubuntu Impish Indri 21.10。对于非 Gnome 桌面环境,必须安装 gnome-terminal:…...

【WebRTC---序篇】(七)RTC多人连麦方案

服务端可以选择mediasoup,作为SFU服务器,只负责转发数据 下图举例三个Client (browser或者客户端)同时加入一个房间,每个app同时发布一路视频和一路音频,并且接受来自其他app的音视频流,mediasoup内部的结构如下&…...

【Java可执行命令】(十六)诊断命令请求发送工具 jcmd:提供一种简单而强大的方式来管理和监控 Java 进程 ~

Java可执行命令之jcmd 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.2 jcmd -l&#xff1a;列出正在运行的 Java 进程3.3 jcmd < pid> help&#xff1a;列出特定进程的诊断命令列表3.4 jcmd < pid> < command>&#xff1a;执行诊断命令 4️⃣ 应用场景…...

如何创建无序列表和有序列表?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 无序列表⭐ 无序列表⭐ 注意事项⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴…...

【MongoDB】初识、安装MongoDB

目录 一、MongoDB主要应用场景 二、MongoDB简介 三、MongoDB相关特点 四、MongoDB的安装 一、MongoDB主要应用场景 传统的数据库如MySQL在应对三高场景时显得力不从心 三高&#xff1a; High performance 对数据库高并发读写的需求 High Storage 对海量数据的高效率存储和 …...

方法区内存溢出及常量池

22 方法区-定义 是所有线程共享的一块区域。 存储了和类结构相关信息。运行时常量池&#xff0c; 方法区在虚拟机启动时被创建&#xff0c;逻辑上是堆的组成部分。方法区内存不足&#xff0c;也会导致oom异常。 是一个概念上的东西&#xff0c; 1.6使用永久代作为方法区&#…...

【MTK平台】【wpa_supplicant】关于wpa_supplicant_8/src/p2p/p2p_invitation.c文件的介绍

本文主要介绍external/wpa_supplicant_8/src/p2p/p2p_invitation.c文件 这里主要介绍6个方法 1.p2p_invite //p2p邀请调用此方法 2.p2p_invite_send //对p2p_invite方法进行补充 3. p2p_process_invitation_resp 4.p2p_process_invitation_req 5.p2p_build_invitation_re…...

智能仪表板DevExpress Dashboard v23.1亮点 - 增强对自定义导出的支持

DevExpress Dashboard v23.1版本增强了自定义导出到Excel的功能等&#xff0c;欢迎下载最新版本体验&#xff01; DevExpress Dashboard v23.1正式版下载(Q技术交流&#xff1a;523159565&#xff09; 所有平台 导出自定义仪表板项目到Excel 用户现在可以在WinForms和Web应…...

分布式应用:ELK企业级日志分析系统

目录 一、理论 1.ELK 2.ELK场景 3.完整日志系统基本特征 4.ELK 的工作原理 5.ELK集群准备 6.Elasticsearch部署&#xff08;在Node1、Node2节点上操作&#xff09; 7.Logstash 部署&#xff08;在 Apache 节点上操作&#xff09; 8.Kiabana 部署&#xff08;在 Node1 节点…...

Mac与windows传文件(超过4G且速度超快,非共享)

MAC与Windows文件互传 背景 尝试了网上的一些方法&#xff0c;诸如设置共享文件夹方法等&#xff0c;但是实际使用中感觉效果一般&#xff0c;对于一些小的文件共同编辑速度还可以。但是在备份或者传递一些较大文件或者很多细小文件的时候就有点捉襟见肘了。制作了一个MAC可读…...

2023年第四届“华数杯”数学建模思路 - 案例:退火算法

## 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 退火算法原理 1.1 物理背景 在热力学上&#xff0c;退火&#xff08;annealing&#xff09;现象指物体逐渐降温的物理现象&#xff0c;温度愈低&#…...

STM32 UDS Bootloader开发-上位机篇-CANoe制作(3)

文章目录 前言刷写脚本34服务写入数据的实现定时函数writeBlockData函数Checksum总结前言 上一篇文章中介绍了CAPL刷写脚本的大部分内容,本文继续介绍34,36,37服务的实现,及checksum中遇到的坑 刷写脚本 34服务 void requestDownLoad(struct Block hexfile) {gTxBuffer[…...

GO语言的垃圾回收机制

内存垃圾的产生 程序在内存上被分为堆区、栈区、全局数据区、代码段、数据区五个部分。对于C等早期编程语言栈上的内存回由编译器负责管理回收&#xff0c;而堆上的内存空间需要编程人员负责申请和释放。在Go中栈上内存仍由编译器负责管理回收&#xff0c;而堆上的内存由编译器…...

如何彻底释放惠普OMEN游戏本性能:终极免费硬件控制工具指南

如何彻底释放惠普OMEN游戏本性能&#xff1a;终极免费硬件控制工具指南 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度&#xff0c;自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还在为惠普OMEN游戏本官方软件臃肿…...

量子电路反编译与遗传编程在量子计算中的应用

1. 量子电路反编译&#xff1a;从黑箱到透明设计的革命性跨越量子计算正经历着从实验室走向实际应用的关键转型期。在这个被称为"嘈杂中等规模量子"&#xff08;NISQ&#xff09;的时代&#xff0c;量子架构搜索&#xff08;QAS&#xff09;已成为设计高效量子算法的…...

从雷达、声呐到5G和Wi-Fi 7:波束成形技术的前世今生与应用实战

从雷达、声呐到5G和Wi-Fi 7&#xff1a;波束成形技术的前世今生与应用实战 想象一下&#xff0c;你正站在一个嘈杂的鸡尾酒会上&#xff0c;周围人声鼎沸&#xff0c;但你却能清晰地听到对面朋友的每一句话——这就像波束成形技术为现代通信系统带来的"超能力"。这项…...

AI智能体容器化开发实践:基于AgentBox构建安全可复现的沙盒环境

1. 项目概述&#xff1a;AgentBox&#xff0c;一个为AI智能体打造的“沙盒”开发环境最近在折腾AI智能体&#xff08;Agent&#xff09;的开发&#xff0c;发现一个挺有意思的现象&#xff1a;很多开发者&#xff0c;包括我自己在内&#xff0c;在初期搭建智能体应用时&#xf…...

构建多链资产追踪器:Node.js与React实现链上资产聚合与估值

1. 项目概述&#xff1a;一个链上资产追踪器的诞生最近在整理自己的数字资产时&#xff0c;发现了一个挺普遍但有点烦人的问题&#xff1a;当你在不同的区块链网络&#xff08;比如以太坊、BSC、Polygon&#xff09;上持有多种代币&#xff08;Token&#xff09;和NFT时&#x…...

2026年主流抓娃娃App大对比,哪个才是你的“抓宝神器”?

在当今快节奏的生活中&#xff0c;年轻人面临着来自学业、工作、社交等多方面的压力。为了缓解这些压力&#xff0c;寻找适合的解压方式成为了大家的共同需求。抓娃娃App作为一种新兴的娱乐方式&#xff0c;正逐渐受到年轻人的喜爱。下面我们就从潮流趋势、科技前沿、行业洞察等…...

婚礼技能库:用开源协作与项目管理思维打造个性化婚礼

1. 项目概述&#xff1a;婚礼技能库的诞生与价值婚礼&#xff0c;对大多数人来说&#xff0c;是人生中为数不多的、需要同时扮演项目经理、创意总监、财务主管和情感联络员的高压事件。筹备过程琐碎繁杂&#xff0c;从场地布置、流程设计&#xff0c;到妆发造型、摄影摄像&…...

LrcHelper:3分钟掌握网易云音乐双语歌词下载,告别歌词烦恼

LrcHelper&#xff1a;3分钟掌握网易云音乐双语歌词下载&#xff0c;告别歌词烦恼 【免费下载链接】LrcHelper 从网易云音乐下载带翻译的歌词 Walkman 适配 项目地址: https://gitcode.com/gh_mirrors/lr/LrcHelper 你是否曾为找不到心爱歌曲的歌词而烦恼&#xff1f;或…...

Go语言实现跨平台系统更新检查器:自动化运维与安全监控实践

1. 项目概述&#xff1a;一个被低估的系统运维“哨兵”在服务器和桌面系统的日常运维中&#xff0c;有一个场景大家一定不陌生&#xff1a;某天&#xff0c;你管理的服务器突然因为一个已知漏洞被攻击&#xff0c;事后排查发现&#xff0c;相关的安全补丁其实在几周前就已经发布…...

Cursor编辑器性能优化:精准重置缓存与进程的开发者效率工具

1. 项目概述&#xff1a;一个被低估的开发者效率工具如果你是一名开发者&#xff0c;尤其是深度使用 Cursor 这类 AI 驱动的代码编辑器&#xff0c;那么你一定遇到过这样的场景&#xff1a;编辑器突然变得卡顿、代码补全失灵、AI 建议变得驴唇不对马嘴&#xff0c;或者插件行为…...