STM32 | 超声波避障小车

超声波避障小车

一、项目背题

由于超声波测距是一种非接触检测技术,不受光线、被测对象颜色等的影响,较其它仪器更卫生,更耐潮湿、粉尘、高温、腐蚀气体等恶劣环境,具有少维护、不污染、高可靠、长寿命等特点。因此可广泛应用于纸业、矿业、电厂、化工业、水处理厂、污水处理厂、农业用水、环保检测、食品(酒业、饮料业、添加剂、食用油、奶制品)、防汛、水文、明渠、空间定位、公路限高等行业中。可在不同环境中进行距离准确度在线标定,可直接用于水、酒、糖、饮料等液位控制,可进行差值设定,直接显示各种液位罐的液位、料位高度。因此,超声波在特殊环境下有较广泛的测距应用。利用超声波检测往往比较迅速、方便、计算简单、易于实现实时控制,并且在测量精度方面能达到工业实用的指标要求,所以为了使移动机器人能够自动躲避障碍物行走,就必须装备测距系统,以使其及时获取距障碍物的位置信息(距离和方向)。这样超声波测距在移动机器人的研究上就有着深远的意义。同时基于超声波测距系统具有以上的种种优点,在汽车前进、倒车防撞测距的研制方面也得到了广泛的应用。

二、功能要求

1、可通过手机APP控制小车前进、后退、左转、右转、加速、减速功能

2、小车可通过手机设定为自动行走模式(自动避障)

3、小车具有实时检测前方距离功能,当小于设定安全距离,小车则向左转动,再检测,直到检测到没有障碍物才直走(避开障碍物)

4、可通过按键或者手机设定超声波检测的安全距离,安全距离写入AT24C02

5、小车的检测距离、设定的安全距离、速度(模拟)实时显示在OLED中

6、可航机控制超声波方向

扩展功能:支持OTA升级

三、元件购买地址

1、小车底盘

https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-14787471870.21.325668656jJNSb&id=17296343716

https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-14787471870.12.20b06865Hq5d5c&id=20088336267

2、电池模块

https://item.taobao.com/item.htm?spm=a230r.1.14.40.10327fb3moCzh1&id=527155819675&ns=1&abbucket=4#detail(3节12V配充电器电池有充电头)

3、超声波:

https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-14787471870.57.43fb6865alQJlD&id=3125174163(新版)

4、OLED(IIC)

https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-14787471870.15.44806865TkULtt&id=575274211818(白色)

5、电机驱动模块

https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-14787471870.33.30526865FPqIwF&id=16548618931

7、舵机

https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-14787471870.15.4e3e6865VWEoD9&id=524239871002

小车高级版本

麦克纳姆轮铝合金小车底盘:https://m.tb.cn/h.fSulwPW?sm=bf32de
四路驱动:https://m.tb.cn/h.f7F5ktS?sm=9504c4

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第6章:TDengine 标签索引和删除数据

TDengine 标签索引和删除数据 目标 掌握标签索引的创建、删除掌握超表、子表创建以及数据删除删除数据 删除数据是 TDengine 提供的根据指定时间段删除指定表或超级表中数据记录的功能,方便用户清理由于设备故障等原因产生的异常数据。 注意:删除数据并不会立即释放该表所…

微澜:用 OceanBase 搭建基于知识图谱的实时资讯流的应用实践

本文作者: 北京深鉴智源科技有限公司架构师 郑荣凯 本文整理自北京深鉴智源科技有限公司架构师郑荣凯,在《深入浅出 OceanBase 第四期》的分享。 知识图谱是一项综合性的系统工程,需要在在各种应用场景中向用户展示经过分页的一度关系。 微…

多轮对话中让AI保持长期记忆的8种优化方式篇

多轮对话中让AI保持长期记忆的8种优化方式篇 一、前言 在基于大模型的 Agent 中,长期记忆的状态维护至关重要,在 OpenAI AI 应用研究主管 Lilian Weng 的博客《基于大模型的 Agent 构成》[1]中,将记忆视为关键的组件之一,下面我…

消息中间件分类

消息中间件(Message Middleware)是一种在分布式系统中实现跨平台、跨应用通信的软件架构。它基于消息传递机制,允许不同系统、不同编程语言的应用之间进行异步通信。 常见的消息中间件类型包括: 1. JMS(Java Message S…

aws-athena查询语句总结

完全归于本人mysql语句小白,是一点也写不出来,故汇总到此 1. cloudtrail ## 查询事件排序 SELECT eventname,eventtime,count(eventname) as num FROM your_athena_tablename where eventtime between 2024-11-10 and 2024-11-11 group by eventname…

Swift的可选绑定(Optional binding)

在Swift中,有一种变量称为可选变量(Optional),具体说明见Swift初步入门。这种变量的值可以存在也可以为空(nil)。在Swift中,可以通过将if语句和赋值语句结合,有条件地展开&#xff0…

关键JavaScript进行表单验证:提升用户体验与数据完整性

关键JavaScript进行表单验证:提升用户体验与数据完整性 在网页开发中,表单验证是确保用户输入有效数据的重要步骤。有效的表单验证不仅可以提高用户体验,还可以减少服务器端处理无效或错误数据的负担。本文将通过一个简单的示例,…

java集合—List常用的方法

Java集合中的List是一种有序的集合,可以通过索引访问元素。以下是List常用的方法: 添加元素: add(E element):将指定的元素追加到列表的末尾。add(int index, E element):将指定的元素插入到列表的指定位置。 获取元…

3D Gaussian Splatting 代码层理解之Part3

最后,内容到达了高斯泼溅过程中最有趣的阶段:渲染!这一步可以说是最关键的,因为它决定了模型的真实性。然而,它也可能是最简单的。在本系列的Part 1和Part2,文章演示了如何将 Raw 3D椭球 转换为可渲染的格式,但现在我们实际上必须完成这项工作并渲染到一组固定的像素上。…

【Bluedroid】A2dp初始化流程源码分析

一、概述 Bluedroid是Android系统中用于蓝牙通信的底层协议栈,它支持多种蓝牙协议,包括A2DP(Advanced Audio Distribution Profile,高级音频分发协议)。A2DP主要用于通过蓝牙传输高质量音频,如立体声音乐。以下是Bluedroid中A2DP初始化的基本流程。 1.1. 启动Bluetooth…

Mac上详细配置java开发环境和软件(更新中)

文章目录 概要JDK的配置JDK下载安装配置JDK环境变量文件 Idea的安装Mysql安装和配置Navicat Premium16.1安装安装Vscode安装和配置Maven配置本地仓库配置阿里云私服Idea集成Maven 概要 这里使用的是M3型片 14.6版本的Mac 用到的资源放在网盘 链接: https://pan.baidu.com/s/17…

[⑧5G NR]: PBCH payload生成

本篇博客记录下5G PBCH信道中payload数据的生成方式。PBCH payload一共32个比特,基本结构如下图: 根据SSB PDU中bchPayloadFlag的值有三种方式得到PBCH payload。 bchPayloadFlag 0:全部32比特由MAC层提供。 bchPayloadFlag 1:M…

预处理(1)(手绘)

大家好,今天给大家分享一下编译器预处理阶段,那么我们来看看。 上面是一些预处理阶段的知识,那么明天给大家讲讲宏吧。 今天分享就到这里,谢谢大家!!

IP地址查询——IP归属地离线库

自从网络监管部门将现实IP地址列入监管条例,IP地址的离线库变成网络企业发展业务的不可或缺的一部分,那么IP地址离线库是什么,又能够给我们带来什么呢? 什么是IP地址离线库? IP地址离线库是IP地址服务商将通过各种合…

EEG+EMG学习系列 (2) :实时 EEG-EMG 人机界面的下肢外骨骼控制系统

[TOC]( EEGEMG学习系列(2):实时 EEG-EMG 人机界面的下肢外骨骼控制系统) 论文地址:https://ieeexplore.ieee.org/abstract/document/9084126 论文题目:Real-Time EEG–EMG Human–Machine Interface-Based Control System for a Lower-Limb Exoskeleton …

C# 如何动态加载程序集

程序集的加载,默认是从当前目录下查找,如果当前目录查找不到,然后再去系统目录中查找,依然查找不到就会从环境变量中查找,如果依然找不到,则会抛出一个异常 FileNotFoundException。 托管代码中&#xff0…

深入理解 SQL_MODE 之 ANSI_QUOTES

引言 在 MySQL 数据库中,sql_mode 是一个重要的配置参数,它定义了 MySQL 应该遵循的 SQL 语法标准以及数据验证规则。其中,ANSI_QUOTES 是 sql_mode 中的一个重要选项,它改变了 MySQL 对于字符串和标识符的识别方式,使…

mac终端使用pytest执行iOS UI自动化测试方法

1、安装pytest-repeat插件: pip install pytest-repeat 2、安装allure-pytest插件: pip install allure-pytest 3、打开终端: pytest -q -s -ra --count100 test_open_stream.py --alluredir./report/CXL -q:表示“quiet mo…

用指针遍历数组

#include<stdio.h> int main() {//定义一个二维数组int arr[3][4] {{1,2,3,4},{2,3,4,5},{3,4,5,6},};//获取二维数组的指针int (*p)[4] arr;//二维数组里存的是一维数组int[4]for (int i 0; i < 3; i){//遍历一维数组for (int j 0; j <4; j){printf("%d &…

动态规划子数组系列(二) 环形子数组的最大和

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; public int maxSubarraySumCircular(int[] nums) {int sum 0;int n nums.length;int[] f new int[n1];int[] g new int[n1];int ret 0, fmax -0x3f3f3f3f, gmin Integer.MAX_VALUE;for(int i 1; i < n; i)…