视觉巡线小车——STM32+OpenMV
系列文章目录
第一章:视觉巡线小车——STM32+OpenMV(一)
第二章:视觉巡线小车——STM32+OpenMV(二)
第三章:视觉巡线小车——STM32+OpenMV(三)
第四章:视觉巡线小车——STM32+OpenMV(四)
目录
系列文章目录
前言
一、开发环境
1、Keil
2、STM32Cube MX
3、OpenMV IDE
4、野火PID串口调试助手
二、硬件准备
1.单片机
2.OpenMV
3、减速电机
4、电机驱动
总结
前言
该系列文章主要介绍,如何使用STM32+OpenMV来实现一个基于视觉处理的自主巡线小车。主要包括,减速电机的驱动,速度采集,PID速度闭环控制,PID参数整定,OpenMV黑线视觉处理,串口数据解析,最后小车巡线闭环控制。功能还是比较单一,最终只实现了小车的巡线功能,其他功能可自行补充。
一、开发环境
1、Keil
主要对STM32进行逻辑代码的编写,以及调试。
2、STM32Cube MX
通过图形化的方式对STM32的外设进行配置,简单方便,节省时间。
3、OpenMV IDE
对OpenMV进行开发,主要使用Python语言。推荐参考内容:
OpenMV入门教程(非常详细)从零基础入门到精通,看完这一篇就够了_open mv
4、野火PID串口调试助手
通过使用该助手,可以观察实际值与目标值的曲线进行PID参数的调整,直观便捷。推荐参考内容:
1、野火多功能调试助手上位机 — 野火产品资料下载中心
2、野火电机驱动板 — 野火产品资料下载中心
二、硬件准备
1.单片机
采用STM32F103C8T6即可。STM32F103C8T6内部时钟为72MHz,64个引脚,支持SWD和JTAG下载。存储容量为512K的FLASH,以及64K的SRAM,能够为系统运行和数据存储提供充足的空间。同时STM32F103C8T6支持外部晶振,可做RTC时钟源。拥有11个定时器,其中4个为通用定时器,2个基本定时器和2个高级定时器,以及1个系统定时器和2个看门狗定时器。丰富的通信接口,如I2C,SPI、等,能够满足小车的通信要求。
2.OpenMV
OpenMV是由美国克里斯团队基于MicroPython发起的开源机器视觉项目,目的是创建低成本,可扩展,使用python驱动的机器视觉模块。OpenMV搭载了MicroPython解释器,使其可以在嵌入式端进行python开发。OpenMV基于32位,ARM Cortex-M7内核的OpenMV-H7,并结合各种摄像头,可以进行多种机器视觉应用的实现,比如人脸检测,物体分类等。
3、减速电机
减速电机需要自带编码器,方便测速。至少需要两个减速电机加一个万向轮进行辅助。
4、电机驱动
TB6612是一款功能强大的直流电机驱动器,其内部高度集成化,使其运用电路设计简单。
AIN1 | AIN2 | PWMA | Motor |
1 | 0 | 1 | 正转 |
0 | 1 | 1 | 反转 |
1 | 1 | 1 | 刹车 |
0 | 0 | 0 | 停车 |
X | X | X | 刹车 |
总结
文章可能不是很完善,有误之处望指正。
第一章:视觉巡线小车——STM32+OpenMV(一)
第二章:视觉巡线小车——STM32+OpenMV(二)
第三章:视觉巡线小车——STM32+OpenMV(三)
第四章:视觉巡线小车——STM32+OpenMV(四)
相关文章:
视觉巡线小车——STM32+OpenMV
系列文章目录 第一章:视觉巡线小车——STM32OpenMV(一) 第二章:视觉巡线小车——STM32OpenMV(二) 第三章:视觉巡线小车——STM32OpenMV(三) 第四章:视觉巡…...
升级TrinityCore 服务器硬件
升级服务器 原服务器架构:Ubuntu装VirtualBox装Ubuntu虚拟机 原配置: 宿主机 内存4G 内核4 usb外接硬盘 Ubuntu虚拟机 内存1756MB 内核4 ip 192.168.0.12 升级服务器架构:FreeBSD装bhyve装Ubuntu虚拟机 新配置:宿主机 内存…...
NVidia 的 gpu 开源 Linux Kernel Module Driver 编译 安装 使用
见面礼,动态查看gpu使用情况,每隔2秒钟自动执行一次 nvidia-smi $ watch -n 2 nvidia-smi 1,找一台nv kmd列表中支持的 GPU 的电脑,安装ubuntu22.04 列表见 github of the kmd source code。 因为 cuda sdk 12.3支持最高到 ubu…...
win7显卡驱动更新后msvcp140.dll丢失的解决方法
msvcp140.dll是一个 DLL(动态链接库)文件,它是 Microsoft Visual C 2015 Redistributable Package 的一部分。这个文件包含 C 应用程序在运行时所需的标准库函数,主要涉及执行与 C 编程语言相关的操作,如内存管理、数学…...
(11)Python引领金融前沿:投资组合优化实战案例
1. 前言 本篇文章为 Python 对金融的投资组合优化的示例。投资组合优化是从一组可用的投资组合中选择最佳投资组合的过程,目的是最大限度地提高回报和降低风险。 投资组合优化是从一组可用的投资组合中选择最佳投资组合的过程,目的是最大限度地提高回报…...
git删除本地远程分支
gitlab删除远程分支 要删除GitLab上的远程分支,你可以使用Git命令行工具。以下是删除远程分支的步骤和示例代码: 首先,确保你已经在本地删除了分支。删除本地分支的命令是: git branch -d <branch_name> 如果分支没有被合…...
前端-04-VScode敲击键盘有键入音效,怎么关闭
目录 问题解决办法 问题 今天正在VScode敲项目,不知道是按了什么快捷键还是什么的,敲击键盘有声音,超级烦人啊!!于是我上网查了一下,应该是开启了VScode的键入音效,下面是关闭键入音效的办法。…...
JMeter数据库连接操作及断言
一、数据库操作 应用场景: 接口自动化数据校验:用于验证接口返回的数据与数据库中的数据是否一致。特殊业务:处理一些与数据库相关的特殊业务逻辑。性能测试:测试数据库的性能,如查询、更新等操作的响应时间。 连接数…...
Maven settings.xml 私服上传和拉取配置
公司内部自行开发的依赖包需要上传到maven私服时,可以在项目的pom.xml中配置,也可以在本地计算机的maven目录settings.xml中配置。本文讲述的是如何在settings.xml中进行配置。 场景:有两个maven私服,其中一个为公司的࿰…...
【STM32】MPU内存保护单元
注:仅在F7和M7系列上使用介绍 功能: 设置不同存储区域的存储器访问权限(管理员、用户) 设置存储器(内存和外设)属性(可缓冲、可缓存、可共享) 优点:提高嵌入式系统的健壮…...
用Python爬虫能实现什么?
Python 是进行网络爬虫开发的一个非常流行和强大的语言,这主要得益于其丰富的库和框架,比如 requests、BeautifulSoup、Scrapy 等。下面我将简要介绍 Python 爬虫的基础知识和几个关键步骤。 1. 爬虫的基本原理 网络爬虫(Web Crawler&#…...
【QT】label中添加QImage图片并旋转(水平翻转、垂直翻转、顺时针旋转、逆时针旋转)
目录 0.简介 1.详细代码及解释 1)原label显示在界面上 2)水平翻转 3)垂直翻转 4)顺时针旋转45度 5)逆时针旋转 0.简介 环境:windows11 QtCreator 背景:demo,父类为QWidget&a…...
CSP-J模拟赛day1
yjq的吉祥数 文件读写 输入文件 a v o i d . i n avoid.in avoid.in 输出文件 a v o i d . o u t avoid.out avoid.out 限制 1000ms 512MB 题目描述 众所周知, 这个数字在有些时候不是很吉利,因为它谐音为 “散” 所以yjq认为只要是 的整数次幂的数…...
Docker构建LNMP环境并运行Wordpress平台
1.准备Nginx 上传文件 Dockerfile FROM centos:7 as firstADD nginx-1.24.0.tar.gz /opt/ COPY CentOS-Base.repo /etc/yum.repos.d/RUN yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c make && \useradd -M -s /sbin/nologin nginx && \cd /o…...
《峡谷小狐仙-多模态角色扮演游戏助手》复现流程
YongXie66/Honor-of-Kings_RolePlay: The Role Playing Project of Honor-of-Kings Based on LnternLM2。峡谷小狐仙--王者荣耀领域的角色扮演聊天机器人,结合多模态技术将英雄妲己的形象带入大模型中。 (github.com) https://github.com/chg0901/Honor_of_Kings…...
Qt 使用Installer Framework制作安装包
Qt 使用Installer Framework制作安装包 引言一、下载安装 Qt Installer Framework二、简单使用2.1 创建目录结构 (文件夹结构)2.2 制作程序压缩包2.3 制作程序安装包 引言 Qt Installer Framework (安装程序框架)是一个强大的工具集,用于创建自定义的在线和离线安装…...
Typora 1.5.8 版本安装下载教程 (轻量级 Markdown 编辑器),图文步骤详解,免费领取(软件可激活使用)
文章目录 软件介绍软件下载安装步骤激活步骤 软件介绍 Typora是一款基于Markdown语法的轻量级文本编辑器,它的主要目标是为用户提供一个简洁、高效的写作环境。以下是Typora的一些主要特点和功能: 实时预览:Typora支持实时预览功能࿰…...
linux代填密码切换用户
一、背景 linux用户账户密码复杂,在不考虑安全的情况下,想要使用命令自动切换用户 二、操作 通过 expect 工具来实现自动输入密码的效果 yum install expect创建switchRoot.exp文件,内容参考下面的 #!/usr/bin/expect set username root…...
防火墙的经典体系结构及其具体结构
防火墙的经典体系结构及其具体结构 防火墙是保护计算机网络安全的重要设备或软件,主要用于监控和控制进出网络流量,防止未经授权的访问。防火墙的经典体系结构主要包括包过滤防火墙、状态检测防火墙、代理防火墙和下一代防火墙(NGFW…...
【BUG】已解决:note: This is an issue with the package mentioned above,not pip.
已解决:note: This is an issue with the package mentioned above,not pip. 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷…...
【ARM】SMMU系统虚拟化整理
目录 1.MMU的基本介绍 1.1 特点梳理 2.功能 DVM interface PTW interface 2.1 操作流程 2.1.1 StreamID 2.1.2 安全状态: 2.1.3 HUM 2.1.4 可配置的操作特性 Outstanding transactions per TBU QoS 仲裁 2.2 Cache结构 2.2.1 Micro TLB 2.2.2 Macro…...
PYQT按键长按机制
长按按键不松开也会触发 keyReleaseEvent 事件,是由于操作系统的键盘事件处理机制。大多数操作系统在检测到键盘按键被长按时,会重复生成按键按下 (keyPressEvent) 和按键释放 (keyReleaseEvent) 事件。这种行为通常被称为“键盘自动重复”。 通过检测 …...
SAPUI5基础知识15 - 理解控件的本质
1. 背景 经过一系列的练习,通过不同的SAPUI5控件,我们完成了对应用程序界面的初步设计,在本篇博客中,让我们一起总结下SAPUI5控件的相关知识点,更深入地理解SAPUI5控件的本质。 通常而言,一个典型UI5应用…...
十七、【机器学习】【非监督学习】- K-均值 (K-Means)
系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…...
算法力扣刷题记录 五十六【501.二叉搜索树中的众数】
前言 二叉搜索树操作,继续。 记录 五十六【501.二叉搜索树中的众数】 一、题目阅读 给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)…...
分布式搜索引擎ES-Elasticsearch进阶
1.head与postman基于索引的操作 引入概念: 集群健康: green 所有的主分片和副本分片都正常运行。你的集群是100%可用 yellow 所有的主分片都正常运行,但不是所有的副本分片都正常运行。 red 有主分片没能正常运行。 查询es集群健康状态&…...
低代码与传统编程:快速高质量构建系统的比较与方法
在信息技术飞速发展的今天,企业对软件系统的需求不断增加。然而,如何在保证高质量的前提下快速构建系统成为了一个关键问题。本文将深入探讨低代码(Low-Code)开发与传统代码编程的区别,并探讨如何利用这两种方法快速高…...
WebRTC音视频-环境搭建
目录 期望效果 1:虚拟机和系统安装 2:WebRTC客户端环境搭建 2.1:VScode安装 2.2:MobaXterm安装 3:WebRTC服务器环境搭建 3.1:安装openssh服务器 3.2:安装Node.js 3.3:coturn穿透和转发服务器 3.3.1&a…...
Memcached开发(八):使用PHP进行操作
目录 1. 安装与配置 1.1 安装Memcached服务器 1.2 安装PHP的Memcached扩展 2. 基本操作 2.1 连接Memcached服务器 2.2 设置与获取数据 2.3 删除数据 2.4 检查数据是否存在 2.5 添加和替换数据 3. 高级操作 3.1 批量操作 3.2 数据计数器 3.3 CAS(Check …...
[Spring Boot]Protobuf解析MQTT消息体
简述 本文主要针对在MQTT场景下,使用Protobuf协议解析MQTT的消息体 Protobuf下载 官方下载 https://github.com/protocolbuffers/protobuf/releases网盘下载 链接:https://pan.baidu.com/s/1Uz7CZuOSwa8VCDl-6r2xzw?pwdanan 提取码:an…...
网站中文域名好不好/seo石家庄
1. 需求 目前我们开发的TCP服务端程序只能服务于一个客户端,如何开发一个多任务版的TCP服务端程序能够服务于多个客户端呢? 完成多任务,可以使用线程,比进程更加节省内存资源。 2. 具体实现步骤 编写一个TCP服务端程序,循环等…...
个人网站建设程序设计/google ads
Shell文本处理三剑客之一awk(2) 表达式与其他编程语言一样,awk表达式用于存储,操作和获取数据 一个awk表达式可由数值,字符常量,变量,操作符函数和正则表达式自由组合而成 变量是一个值的标识符,定义awk变量…...
做外贸没有网站需要注意什么/武汉seo顾问
一、搜索“无线诊断”应用程序 二、在“无线诊断”应用程序中找“嗅探器”...
防伪码网站怎么做/百度网站大全
声明:本文是《 Java 7 Concurrency Cookbook 》的第六章,作者: Javier Fernndez Gonzlez 译者:许巧辉 校对:方腾飞 在本章中,我们将包含: 使用非阻塞线程安全的列表使用阻塞线程安全的列表用…...
wordpress全局阴影/怎样申请网站注册
前言:这篇文章对于工作多年的可能用处不大,但对于刚刚接触Java的同学肯定是有一些帮助,现在我总结我接触liunx后常见的一些命令 1:日志查询常用的命令 ll:查询目录下所有的文件 ls -lht:查询目录下所有文件的大小 cd:切…...
python 做网站缺点/网站优化推广seo
前言 本篇文章继续我们的微软挖掘系列算法总结,前几篇文章已经将相关的主要算法做了详细的介绍,我为了展示方便,特地的整理了一个目录提纲篇:大数据时代:深入浅出微软数据挖掘算法总结连载, 有兴趣的童鞋可…...