【已开源】​基于stm32f103的爬墙小车

news2025/1/23 4:47:05

​基于stm32f103的遥控器无线控制爬墙小车,实现功能为可平衡在竖直墙面上,并进行移动和转向,具有超声波防撞功能。

直接上:
在这里插入图片描述
演示视频如:哔哩哔哩】 https://b23.tv/BzVTymO

项目说明:

在这个项目中,我们将利用STM32F103单片机来制作一个能够在竖直墙面上移动、转向并保持平衡的爬墙小车。该小车装备了超声波传感器HC-SR04用于避障,以及两个电机和相应的驱动电路TC118S来控制小车的运动。以下是项目的详细步骤。

硬件清单

  • STM32F103开发板
  • TC118S电机驱动模块
  • 两个直流减速电机(带齿轮箱)
  • HC-SR04超声波距离传感器
  • 电池(建议使用锂聚合物电池)
  • 电机支架和轮子
  • 螺丝、螺母、焊接材料等安装配件

电路设计

在这里插入图片描述

  1. STM32F103与电机驱动模块连接

    • 将STM32F103的PWM输出引脚连接到TC118S的IN1和IN2控制电机的转动。
    • 连接STM32F103的GND到TC118S和电机的公共接地点。
    • 将电机电源线连接到电池,并将电池正极连接到TC118S的VCC,负极连接到GND。
  2. 超声波传感器HC-SR04连接

    • HC-SR04的VCC接到STM32F103的3.3V或5V输出(根据模块要求)。
    • TRIG引脚接到STM32F103的一个GPIO输出。
    • ECHO引脚接到STM32F103的一个GPIO输入。
    • 将超声波传感器的GND接到STM32F103的GND。
  3. 电源管理

    • 确保电池电压适合STM32F103和TC118S模块。
    • 可能需要添加电压调节电路,如果电池电压高于模块要求。

软件设计

  1. 初始化代码

    • 配置STM32F103的时钟、GPIO、PWM和外部中断。
    • 初始化超声波传感器HC-SR04。
  2. 主程序循环

    • 不断读取超声波传感器的数据以检测障碍物。
    • 根据传感器数据和预设的逻辑调整电机的速度和方向,以维持平衡和避障。
    • 通过PID控制算法调节电机速度,以实现稳定的墙面爬行。
  3. PID控制算法

    • 设计合适的PID控制器来调整电机速度,保持小车的平衡和响应方向变化。
    • 根据传感器反馈和小车状态调整PID参数。
  4. 超声波防撞功能

    • 当超声波传感器检测到前方有障碍物时,发送指令给电机驱动模块,使小车停止或改变方向。
  5. 调试与优化

    • 通过串口打印调试信息,观察小车的行为和传感器数据。
    • 根据测试结果调整PID参数,优化小车的性能。

注意事项

  • 确保所有连接都牢固可靠。
  • 在初次测试时,应在安全环境下操作。
  • PID参数需要根据实际情况进行调整,可能需要多次尝试才能达到最佳效果。

完成以上步骤后,你就能得到一个能够在竖直墙面上移动、转向并保持平衡的爬墙小车。记得在实际使用前进行充分的测试和调整,确保小车的稳定性和可靠性。

主要程序:

#include "Systick.h"
#include "USART.h"
#include "IR.h"
#include "Timer.h"
#include "UltrasonicWave.h"


int main()
{
	Systick_Init(72);
	
	SCB->AIRCR=0x05fa0500;
	NVIC->ISER[1]|=1<<5;
	NVIC->IP[37]=0x00;

	IR_Init();
	Timer2_Init();
	Timer4_Init();
	UW_GPIO_Init();
	
	while(1)
	{
		if(safety > 500)
		{
				switch(IR_R)
				{
					case 0x43://start
							TIM2->CCR3=3500;//右
							TIM2->CCR4=3500;	//左		
						break;
						
					case 0x09://EQ
							TIM2->CCR3=0;
							TIM2->CCR4=0;
						break;
					
					case 0x08://4
							TIM2->CCR3=3500;
							TIM2->CCR4=0;
						break;
						
					case 0x5a://6
							TIM2->CCR3=0;
							TIM2->CCR4=3500;
						break;
				}//switch
//				if(IR_R == 0x43)
//				{
//					TIM2->CCR3=25000;//右
//					TIM2->CCR4=20000;	//左
//				}
//				else if(IR_R == 0x09)
//				{
//					TIM2->CCR3=0;
//					TIM2->CCR4=0;
//				}
//				else if(IR_R == 0x08)
//				{
//					TIM2->CCR3=20000;
//					TIM2->CCR4=15000;
//				}
//				else if(IR_R == 0x5a)
//				{
//					TIM2->CCR3=15000;
//					TIM2->CCR4=20000;
//				}
		}
		else
		{
			TIM2->CCR3=0;
			TIM2->CCR4=0;
		}
		UW_Start(&safety);
	}
}


资料获取,公众【一起来学习哟】回复‘爬墙小车’获取完整资料

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

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

相关文章

前端开发攻略---从源码角度分析Vue3的Propy比Vue2的defineproperty到底好在哪里。一篇文章让你彻底弄懂响应式原理。

1、思考 Vue的响应式到底要干什么&#xff1f; 无非就是要知道当你读取对象的时候&#xff0c;要知道它读了。要做一些别的事情无非就是要知道当你修改对象的时候&#xff0c;要知道它改了。要做一些别的事情所以要想一个办法&#xff0c;把读取和修改的动作变成一个函数&#…

ESXi 无法启动NTP守护进程

在VMware ESXi环境中如果遇到无法启动NTP&#xff08;Network Time Protocol&#xff09;守护进程的问题&#xff0c;可以通过以下步骤进行排查和解决&#xff1a; 步骤1&#xff1a;检查与修复配置文件 登录到ESXi Shell&#xff08;SSH&#xff09;。编辑 /etc/ntp.conf 配…

北京InfoComm展推出500款新品,覆盖30个市场,助力行业未来

【2024年4月17日——北京讯】亚太区首屈一指的专业视听和集成体验解决方案展北京InfoComm China 2024 今天在北京的国家会议中心 (CNCC) 盛大开幕&#xff0c;展开为期三天的商贸展会和高峰会议。作为行业产品发布的首要平台&#xff0c;北京InfoComm China吸引众多展商携新品推…

使用vite从头搭建一个vue3项目(二)创建目录文件夹以及添加vue-router

目录 一、创建 vue3 项目 vite-vue3-project-js二、创建项目目录三、创建Home、About组件以及 vue-router 配置路由四、修改完成后页面 一、创建 vue3 项目 vite-vue3-project-js 使用 vite 创建一个极简 vue3 项目请参考此文章&#xff1a;使用vite从头搭建一个vue3项目&…

Android 使用ping命令判断当前网络状态

一. 介绍 ping命令是用来测试和诊断网络连接问题的基本命令&#xff0c;当然我们的终端设备&#xff08;手机/平板/车机&#xff09;都可以用这个命令来判断当前网络是否有流量的状态&#xff0c;本篇文章主要介绍Linux的ping命令&#xff0c;因为Android系统也是使用了Linux内…

Latex学习(从入门到入土)2

第一章 &#xff1a;插图 在LaTeX中插入插图可以通过graphicx宏包来实现&#xff0c;这个宏包提供了强大的图像处理功能。以下是如何使用graphicx宏包插入图像的基本步骤&#xff1a; ### 1. 加载宏包 在文档的序言部分&#xff08;\begin{document}之前&#xff09;&#x…

char和varchar的区别?

一、问题解析 char和varchar都是用于在数据库中存储字符串的数据类型。它们之间的主要区别在于存储空间的使用方式&#xff1a; char是一种定长的数据类型&#xff0c;它的长度固定且在存储时会自动在结尾添加空格来将字符串填满指定的长度。char的长度范围是0-255&#xff0c…

Redis之路系列(3)纸上得来终觉浅(下)

03 纸上得来终觉浅(下) 基于Redis6&#xff0c;本章节主要介绍了Rdis的一些主要应用场景&#xff0c;包含了&#xff1a;大数据的过滤&#xff0c;分布式锁设计&#xff0c;并讲解了有趣的布隆过滤器原理&#xff0c;HyperLogLog 原理&#xff0c;二进制位数与存储大小计算的常…

MinlO以及阿里云OSS对象存储服务

MinlO MinIO是一个开源的对象存储系统&#xff0c;专为云原生和容器化环境而设计。它使用分布式架构来存储和管理大规模的非结构化数据&#xff0c;例如图片、视频、日志文件等。MinIO基于Amazon S3协议&#xff0c;并提供了与S3兼容的API&#xff0c;这使得它能够与现有的S3生…

2.6 类型安全配置属性

无论是Propertes配置还是YAML配置&#xff0c;最终都会被加载到Spring Environment中。 Spring提供了注解Value以及EnvironmentAware接口来将Spring Environment 中的数据注入到属性上&#xff0c;SpringBoot对此进一步提出了类型安全配置属性(Type-safeConfiguration Propert…

「每日跟读」英语常用句型公式 第14篇

「每日跟读」英语常用句型公式 第14篇 1. As far as __ is concerned 就__ 而言 As far as the project timeline is concerned, we’re running ahead of schedule. &#xff08;就项目时间表而言&#xff0c;我们进度超前了。&#xff09; As far as the exam results ar…

mysql performance schema 实践

参考MySQL调优性能监控之performance schema,做了一些扩展 1 2、哪类SQL的平均响应时间最多 SUM_NO_INDEX_USED>0用来过滤那些没有使用的查询。 SELECT SCHEMA_NAME,DIGEST_TEXT,AVG_TIMER_WAIT,MAX_TIMER_WAIT,SUM_LOCK_TIME,SUM_ERRORS ,SUM_SELECT_FULL_JOIN,SUM_NO_IND…

App Inventor 2 块拓展之:最大值、创建多项列表

什么是块拓展&#xff1f; App Inventor 2 引入了一项新功能&#xff0c;允许某些块扩展、收缩甚至更改其功能。 顶部具有蓝色框白色齿轮的代码块都是可拓展块。 块拓展用法 块扩展可以改变形状&#xff0c;通过单击蓝色图标&#xff0c;用户可以将较小的块拖到较大的块中&am…

刷题。。。。。。

1.ezmd5 根据题目提示 我们知道应该是要上传两张md5值相同的图片 根据原文链接&#xff1a;cryptanalysis - Are there two known strings which have the same MD5 hash value? - Cryptography Stack Exchange 把保存下来的图片上传一下 得到flag 2.ezhttp 根据原文链接&…

SSH安全设置

今天发现自己的公有云服务器被攻击了 然后查看了登录日志&#xff0c;如上图 ls -sh /var/log/secure vim /var/log/secure然后增加了安全相关的设置 具体可以从以下方面增加安全性&#xff1a; 修改默认SSH端口公有云修改安全组策略及防火墙端口设置登录失败次数锁定用户及限…

[dvwa] sql injection(Blind)

blind 0x01 low 1’ and length(version()) 6 # syntax: substr(string , from<start from 1>, cut length) 1’ and substr(version(),1,1) ‘5’ # 1’ and substr(version(),2,1) ‘.’ # 1’ and substr(version(),3,1) ‘7’ # 1’ and substr(version(),4,…

废液收集系统物联网远程监控解决方案

废液收集系统物联网远程监控解决方案 在面对日益严峻的环保压力和严格的法律法规要求下&#xff0c;构建一套高效、智能的废液收集系统物联网远程监控解决方案显得尤为重要。该方案旨在通过深度融合物联网技术、云计算、大数据分析等先进手段&#xff0c;实现对废液收集系统的…

麻将的玩法及技巧

麻将是一种古老而受欢迎的博弈游戏&#xff0c;其玩法和技巧多种多样&#xff0c;因地区和玩家习惯的不同而有所差异。以下是一些通用的麻将玩法和技巧&#xff1a; 一、玩法 洗牌与码牌&#xff1a;玩家双手搓动牌&#xff0c;使牌均匀而无序地运动&#xff0c;称为“洗牌”。…

前端常见面试题:HTML+CSS

1. title与h1的区别、b与strong的区别、i与em的区别&#xff1f; title与h1的区别&#xff1a; title标签用于定义整个HTML文档的标题&#xff0c;它显示在浏览器窗口的标题栏或者标签页上。每个HTML文档只应该有一个title标签&#xff0c;它对搜索引擎优化&#xff08;SEO&a…

前端开发攻略---实现与ChatGPT同款光标闪烁打字效果。

1、演示 2、实现代码 <!DOCTYPE html> <html lang"ch-ZN"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widt…