基于51单片机的智能小车

news2024/12/23 9:30:48

一、安装

二、电机模块

1.L9110S电机控制器接线

实物接线:

2.L9110前后左右控制小车

2.1分文件编写

2.2使用串口发送以及使用中断优化

中断:

2.3增加蓝牙控制

2.4设置点动的效果

2.5软件调速的原理(参考PWM波)

原理:

代码

2.6左右电机的各自调速管理

原理

代码:

同时头文件也要加进来

配置定时器:

三、循迹小车

3.1模块的原理分析:

3.2 循迹小车的原理分析

代码(能动,目的为了搞清楚循迹传感器的作用)

至此,其实可以循迹了,只是有点不太灵敏的亚子,因为转弯的时候是靠一个轮动一个不动带过去的。

3.2.1 优化转弯

引入PWM调速,转弯的时候一边快一点一边慢一点

四、跟随小车

4.1 红外线模块原理 分析

4.2 小车跟随的原理分析

代码

五、摇头测距小车

5.1 舵机和超声波的封装

超声波

封装的以前的代码(垃圾桶感应开盖)

舵机

main

5.2实现小车的疯狂摇头(左转 中间 右转,共3个位置)

实现代码:此时是没有假如超声波测距的,只有疯狂摇头

5.3 测距摇头

实现代码,定义了方向

5.4 测距+电机驱动

六、测速小车

6.1测速模块

6.2代码编写(定时器,串口那部分的代码拿来改改)

发现一个bug

更正后的bug,数据类型更正

也可以通过串口来发送数据给小车进行前后左右移动

------------------------------------------------------------------------------------------------------------------------------

七、使用OLED、蓝牙显示速度

mian

使用蓝牙显示速度

八、WIFI控制小车并发送速度

8.1配置AP模式(WIFI模块当作服务器使用)

WIFI模块发送数据之前必须要进行的一步

还有一点要注意的是,因为发送的时候设置的是5个字节,所以“speed:%d cm/s”显示不完全

只需要发核心的数据“%d cm/s”即可

此接口是给手机APP准备的,通过网络连接,只不过现在是用网络调试助手来模拟

APP要实现的功能。手指按下才发送运动,松开就是停止(参考点动的代码)

---------------------------------------------------------------------------------------------------------------------------------

九、4G模块控制小车
(见资料代码,基于蓝牙部分修改,只比蓝牙多了一个穿透而已)

---------------------------------------------------------------------------------------------------------------------------------

十、语音模块控制小车

10.1使用SU-03T配置语音指令

10.2训循迹模式(参考上面的代码)

10.3 跟随模式

10.4避障模式

10.5定义语音模块里面的指令

10.6 main函数里面实现各个功能

并且实现OLED显示当前的功能名称

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

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

相关文章

OpenHarmony轻量系统开发【6】驱动之ADC按键

摘要:本文简单介绍如何操作ADC去读取电压,并且实现开发板上3个ADC按键检测的功能 适合群体:适用于润和Hi3861开发板,L0轻量系统驱动开发 文中所有代码仓库:https://gitee.com/qidiyun/hihope-3861-smart-home-kit 6…

libVLC Ubuntu编译详解

1.简介 有时候,windows上开发不满足项目需求,需要移植到linux上,不得不自行编译libvlc,编译libvlc相对而言稍微麻烦一点。 我使用的操作系统:Ubuntu20.04 查看系统命令lsb_release -a libvlc版本: 3.0.1…

cookie与session及其区别

一、cookie 1. 为什么需要cookie? web程序使用HTTP协议进行传输,而HTTP协议是无状态的协议(即对事务处理无记忆性,如果后续处理需要使用前面的信息,只能重传,导致每次连接传送的数据量增大)。c…

Spring配置类解析与Bean扫描过程源码分析

文章目录 一、注册ConfigurationClassPostProcessor二、postProcessBeanDefinitionRegistry方法1、processConfigBeanDefinitions方法2、流程梳理3、postProcessBeanFactory方法 后记 一、注册ConfigurationClassPostProcessor Spring启动之前,构造AnnotatedBeanDe…

1046: 链栈基本操作的实现

解法&#xff1a;学习版看刚开始的文章 #include<iostream> #include<stack> using namespace std; #define int long long signed main() {int n, a, k;stack<int> sk;cin >> n;while (n--) {cin >> a;sk.push(a);}cin >> k;if (k >…

YOLOV5检测界面搭建+bug解决

目录 一、环境搭建 二、界面运行bug解决 三、界面 先给出Github链接&#xff1a;https://github.com/Javacr/PyQt5-YOLOv5 大佬链接&#xff1a;大佬 一、环境搭建 下载完项目后&#xff0c;需要配置环境&#xff1a; conda create -n yolov5_pyqt5 python3.8 conda act…

【洛谷 P8802】[蓝桥杯 2022 国 B] 出差 题解(带权无向图+单源最短路+Dijkstra算法+链式前向星+最小堆)

[蓝桥杯 2022 国 B] 出差 题目描述 A \mathrm{A} A 国有 N N N 个城市&#xff0c;编号为 1 … N 1 \ldots N 1…N 小明是编号为 1 1 1 的城市中一家公司的员工&#xff0c;今天突然接到了上级通知需要去编号为 N N N 的城市出差。 由于疫情原因&#xff0c;很多直达的交…

【Java开发指南 | 第六篇】Java成员变量(实例变量)、 类变量(静态变量)

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 成员变量&#xff08;实例变量&#xff09;类变量&#xff08;静态变量&#xff09;定义方式静态变量的使用场景 成员变量&#xff08;实例变量&#xff09; 成员变量声明在一个类中&#xff0c;但在方法、构造…

SpringCloud之LoadBalancer自定义负载均衡算法,基于nacos权重

LoadBalancer基于Nacos权重自定义负载算法 ReactorLoadBalancer接口&#xff0c;实现自定义负载算法需要实现该接口&#xff0c;并实现choose逻辑&#xff0c;选取对应的节点 public interface ReactorLoadBalancer<T> extends ReactiveLoadBalancer<T> {Mono<…

(一)基于IDEA的JAVA基础16(end)

二维数组 二维数组就是数组里面再放一个数组 语法: <数据类型> [] [] 数组名&#xff1b; 或: <数据类型> 数组名 [] []&#xff1b; 比如这里有5个单位&#xff0c;每个单位员工有20个&#xff0c;他们都在忙几个相同的项目&#xff0c;现在要对某项项目进行操…

js 写 视频轮播

html代码 <div class"test_box"> <div class"test"> <a href"#"> <div class"test_a_box"> <div class"test_a_mask"></div> <div class"test_a_layer"> <div cla…

2024蓝桥A组D题

团建 问题描述格式输入格式输出样例输入样例输出评测用例规模与约定解析参考程序难度等级 问题描述 格式输入 输入的第一行包含两个正整数n,m&#xff0c;用一个空格分隔。 第二行包含n个正整数c1,c2, ,cn&#xff0c;相邻整数之间使用一个空格分隔&#xff0c; 其中ci表示第一…

idea新建一个springboot项目

本文分为几个部分&#xff0c; 首先是在idea中新建项目&#xff0c; 然后是配置 项目的目录&#xff08;新建controller、service、dao等&#xff09;&#xff0c; 然后是自定义的一些工具类&#xff08;比如启动后打印地址等&#xff09;。 1.、创建篇 新建项目&#xff0…

毕设选51还是stm32?51太简单?

如果你更倾向于挑战和深入学习&#xff0c;STM32可能是更好的选择。如果你希望更专注于底层硬件原理&#xff0c;51可能更适合。我这里有一套嵌入式入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习嵌入式&#xff0c;不妨点个关注&#xff…

bestvike 资料 --Spring Boot 2.5.0

Spring Boot 2.5.0 SSM环境搭建 springspringmvcmybatisspring springmvc mybatis # 项目 - 需求分析 概要设计(库表设计) 详细设计(验证库表正确性) 编码(环境搭建业务代码) 测试 部署上线# 员工添加 查询所有功能 SSM - 库表 库: ssm 数据库:mysql 表: id na…

【教程】将Vue项目打包为exe项目的教程-我的第一个原生Vue项目

文章目录 前言项目介绍正文&#xff1a;Vue打包exe过程及注意事项1. &#xff08;重要&#xff09;进入我们自己的项目&#xff0c;修改公共路径为相对路径2. &#xff08;重要&#xff09;关于VueRouter的必要修改3. 前端打包4. 拉取electron-quick-start项目5. 修改配置文件6…

【高阶数据结构】哈希表 {哈希函数和哈希冲突;哈希冲突的解决方案:开放地址法,拉链法;红黑树结构 VS 哈希结构}

一、哈希表的概念 顺序结构以及平衡树 顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间没有对应的关系。因此在查找一个元素时&#xff0c;必须要经过关键码的多次比较。顺序查找时间复杂度为O(N)&#xff1b;平衡树中为树的高度&#xff0c;即O(log_2 N)&#xf…

【python】项目实战

启动一个项目对于新手都是不容易的事情 在哪 对于Windows平台&#xff0c;打开cmd 使用命令py -0p 【其中0是零】 显示已安装的 python 版本且带路径的列表 切换python3命令 在Windows下&#xff0c;可以使用cmd下使用mklink命令创建“软链接”更好一些。 例如&#xf…

weblogic oracle数据源配置

在weblogic console中配置jdbc oracle数据源 1. base_domain->Service->DataSources 在Summary of JDBC Data Sources中&#xff0c;点击New, 选择【Generic Data Source】通用数据源。 2. 设置数据源Name和JNDI name 注&#xff1a;设置的JNDI Name是Java AP中连接…

正则匹配密码 - 使用正向先行断言

代码 import redef password_is_ok(password: str) -> bool:"""1. 密码只能是字母数字组合2. 密码必须包含大小写字母以及数字"""result re.findall(^(?.*\d)(?.*[a-z])(?.*[A-Z])[0-9a-zA-Z]{8,16}$, password)return True if result e…