遥控小车日志

2023-05-16

上周六,我的老师扔给我一台四轮普通直流电机小车(下图,已组装好),叫我实现无线控制功能,由PC端或手机端发送指令。由于我曾经做过步进电机小车的控制,同时最近学习了一下Stm32CubeMx,想要实战一下,就欣然答应了。后来事实证明,我还是太年轻了/捂脸。

9/15
小车使用是Stm32F103ZET6作为核心板,因为才接触CubeMx没多久,我就先点了个灯看看效果。复位后灯开始闪烁,单片机没有问题。然后,就开始着手写电机驱动代码。
小车用的是普通直流电机,用于驱动的IO口也是普通IO,只能输出高低电平。我疑惑电机不都是用PWM波驱动的吗,如果不用PWM波,只用高低电平驱动,那怎么控制速度?我马上将这个问题发给了老师,老师却说,利用普通IO口也能实现类似PWM波的功能,可以初始化一个时钟,将时钟周期设置成50ms,在这50ms中控制高电平占总周期时长的比例,这样就能控制电机的转速。果然,不仅仅是贫穷限制了我的想象力,还有智商。
因为主要任务是做到遥控控制,所以先将控速功能搁置,只用单纯的输出高电平实现电机的转动。
可就在我敲完代码,点击烧写按钮之后,Keil突然提示“No target connected”,我?????stlink接的好好的,检查设备管理器,没有问题,我????????不慌,拔掉重新连接,没用,换一个stlink,还是没用。难不成单片机烧了?我怎么成了单片机杀手了,我又将这个问题发给了老师。嗯,单片机没坏,是我脑子坏了。
我遇到的这个问题是使用CubeMx进行单片机配置经常会遇到的问题。在配置引脚时,不小心将连接SWD总线上的两个端口都配置了,导致烧写成功一次之后就再也不能烧写了。解决的方法如下:先长按STM32的复位键,再点击下载按钮,再松开复位键(注意并不是一次就能成功,需要重复几次,而且__每次按住复位键的时长都不同__我就是因为每次按住时间过长,导致尝试了很多次都没有成功,最后心灰意冷之际瞎按了一通再点击下载,结果竟然成功了,我????敲代码真是件玄学的事情,不过还是很开心),已经晚上十点了,明天再继续,明天要完成上位机程序,实现蓝牙通信。

9/16
因为之前照着网上的教程学习过一段时间的C#窗体开发,也尝试做过低配版的串口调试助手,实现了基本的收发功能,所以我使用C#窗体来编写上位机程序。具体怎么做,可以去网上找找教程,我觉得是挺简单的,不过前提是得掌握一些C#基本的语法。
当前的界面如下
界面上有方向控制按钮,在实际操作中,我还是倾向于使用按键控制小车
接下来就是蓝牙模块的设置了。初次接触蓝牙,感觉有点陌生,不过还好,只要将两个蓝牙配对成功,就可以将其像串口一样使用了。嗯,说起来容易,我可是调了一下午的。具体操作还是继续百度吧。
花了一个上午和一个下午,才实现这两个简单的功能。看起来是挺浪费时间的,不过在这段时间里,我完成了两项以前从未做成的事,以后遇到同样的事多少可以节省一些时间了

9/17
今天周一,白天要上课,只有晚上有时间做小车,所以今天只完成了测速功能
待续

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

遥控小车日志 的相关文章

  • 语音信号处理 | 使用短时能量和谱质心特征进行端点检测

    文章目录 概述原理及MATLAB实现基本流程特征提取短时能量谱质心 阈值估计和阈值化处理提取语音片段 MATLAB2020a中的VAD函数参考 概述 在复杂的应用环境下 xff0c 从音频中分割出语音信号和和非语音信号 xff0c 是一个很
  • 语音信号处理 | 傅里叶变换、短时傅里叶变换、小波变换、希尔伯特变换、希尔伯特黄变换

    在信号处理领域 xff0c 存在诸多变换 xff0c 比如标题中的五个变换 本文将对这五个变换进行介绍和比较 在开始之前 xff0c 我们需要先理清什么是平稳信号 xff0c 什么是非平稳信号 我们知道 xff0c 自然界中几乎所有信号都是
  • clang-format格式文件。可以直接复制引用

    Language Cpp BasedOnStyle LLVM AccessModifierOffset 2 AlignAfterOpenBracket Align AlignConsecutiveMacros false AlignCons
  • 多线程之多核线上考试试题瞎解

    匆忙的大三早已结束 xff0c 时隔两月 xff0c 再以此文祭奠我炸掉的多核考试 这次考试真正能写出来的也就两道题 xff0c 以下简单地记录一下 第二题 随机产生2个10 10的浮点数矩阵A和B xff0c 先将矩阵A和B作转置 xff
  • 视觉SLAM | RealsenseD435i相机标定

    在运行VINS MONO VINS Fusion等SLAM方案的时候 xff0c 需要很准确的相机参数 xff0c 否则很容易漂移 本文是RealsenseD435i相机标定过程的记录 xff0c 标定主要有三个步骤 IMU标定相机标定IM
  • 视觉SLAM | 使用RealsenseD435i运行VINS-Fusion

    使用RealsenseD435i运行VINS Fusion VINS Fusion是基于双目的视觉惯导方案 xff0c 不太符合我目前的需求 xff0c 但这是我使用的第一个视觉SLAM方案 xff0c 接下来还是简单记录下 运行环境 硬件
  • 视觉SLAM | 在ROS上运行ORB-SLAM2

    本文直接使用的github上的orb slam 2 ros实现在ROS上运行ORB SLAM2 xff0c 这个ros包能够得到相机的位姿以及稀疏点云 xff0c 而且删掉了对Pangolin的依赖 xff0c 进行可视化时要用RViz 运
  • ROS报错记录及解决方法(不定期更新)

    ROS下载缓慢 如果是在国内安装 xff0c 建议在安装之前先配置国内的镜像源 xff0c 在软件和更新进行更改即可 参考 xff1a Ubuntu18 04下安装ROS 由于没有公钥 xff0c 无法验证下列签名 安装ROS时报错 xff
  • ROS与STM32通信

    ROS与STM32是用串口进行通信的 xff0c 主要有两种方式 xff0c 一是将STM32作为一个节点 xff0c 二是制作一个上位机节点 负责与STM32进行串口通信 xff0e 第一种方式需要专门的硬件 xff0c 所以我选择第二种
  • 使用VScode搭建ROS开发环境

    俗话说 xff02 工欲善其事必先利其器 xff02 xff0c 之前在Ubuntu上运行的ROS项目都是用vim或者gedit编写和修改代码 xff0c 然后在终端编译运行 xff0c 很不方便 xff0c 函数跳转查看都没办法实现 所以
  • TCP实时图像传输

    之前尝试过使用UDP进行图像传输 xff0c 而UDP协议要求包小于64K xff0c 对于较大的图像 xff0c 需要使用分片压缩的方式进行传输 xff0c 操作较复杂 xff0c 同时不能保证图片的每一部分都能够正确传输 详见 xff1
  • STM32部分BUG及解决方法记录(不定期更新)

    1 编译使用CubeMX生成的代码时报错 Error L6218E Undefined symbol HAL PWREx DisableUCPDDeadBattery referred from stm32g4xx hal msp o 解决
  • 语音信号处理 | Python实现端点检测

    由于项目需要 xff0c 我要使用Python对语音进行端点检测 xff0c 在之前的博客使用短时能量和谱质心特征进行端点检测中 xff0c 我使用MATLAB实现了一个语音端点检测算法 xff0c 下面我将使用Python重新实现这个这个
  • 进程,线程,应用程序。概念理解

    简单的说 xff0c 进程 可以承载一组相关的 NET 程序集 xff0c 而 应用程序域 xff08 简称AppDomain xff09 是对该进程的逻辑细分 一个应用程序域进一步被细分成多个 上下文边界 xff0c 这些边界用来分组目的
  • 搭建STM32开发环境

    安装keil 点击这里下载安装最新版的keil 破解 以管理员身份运行keil xff0c 打开File gt License Management 复制CID xff0c 如下 xff1a 运行keygen2032 exe xff0c 修
  • 路径规划 | 图搜索算法:DFS、BFS、GBFS、Dijkstra、A*

    地图数据常常可以用图 Graph 这类数据结构表示 xff0c 那么在图结构中常用的搜索算法也可以应用到路径规划中 本文将从图搜索算法的基本流程入手 xff0c 层层递进地介绍几种图搜索算法 首先是两种针对无权图的基本图搜索算法 xff1a
  • 移动机器人中地图的表示

    在学习算法之前 xff0c 首先要做的是理解数据 xff0c 所以本专栏在开始介绍运动规划算法前 xff0c 首先介绍一下地图的数据形式 地图有很多种表示形式 xff0c 在移动机器人中比较常用的是尺度地图 拓扑地图 语义地图 尺度地图 x
  • 路径规划 | 随机采样算法:PRM、RRT、RRT-Connect、RRT*

    基于图搜索的路径规划算法主要用于低维度空间上的路径规划问题 xff0c 它在这类问题中往往具有较好的完备性 xff0c 但是需要对环境进行完整的建模工作 xff0c 在高维度空间中往往会出现维数灾难 为了解决这些问题 xff0c 本文将介绍
  • ROS多机通信

    配置主从机IP地址 分别使用sudo vi etc hosts在主从机的 etc hosts文件中添加下面的代码 xff0c 其中pi是主机的用户名 xff0c esdc是从机的用户名 ip要相应的进行更改 xff0c 可以使用ifconf

随机推荐

  • 路径规划 | 图搜索算法:JPS

    JPS算法全称为Jump Point Search xff0c 也就是跳点算法 xff0c 可以视为A 算法的一种改进算法 xff0c 它保留了A 算法的主体框架 xff0c 区别在于 xff1a A 算法是将当前节点的所有未访问邻居节点加
  • 路径规划 | 随机采样算法:Informed-RRT*

    在文章路径规划 随机采样算法 xff1a PRM RRT RRT Connect RRT 中 xff0c 介绍了具备渐近最优性的RRT 算法 随着采样点数的增多 xff0c RRT 算法的规划结果会逐渐收敛到最优 但是可以观察到 xff0c
  • Ubuntu20安装ROS noetic

    Ubuntu20对应的ROS版本为ROS noetic xff0c 安装过程如下 xff1a 1 打开Software amp Updates xff0c 勾选main universe restricted multiverse这四项 2
  • 使用VSCode进行远程C++开发

    本文以Windows连接Ubuntu子系统 WSL 为例来介绍VSCode的远程开发流程 首先在VSCode中安装Remote WSL插件 xff0c 重启VSCode xff0c 如下图所示 xff0c 连接WSL 如果是其他远程 xff
  • ROS话题发布和订阅节点的C++&Python实现

    本文将分别使用C 43 43 和Python来实现话题发布者和订阅者 xff0c 首先创建一个功能包 xff0c 命名为topic pub sub xff0c 添加roscpp xff0c rospy等依赖项 C 43 43 实现 创建话题
  • 只要活着,我愿意一辈子都做程序员

    前不久 xff0c 我看过一个有意思的帖子 xff0c 标题是 35岁是程序员的终点 作者列举了35岁的年龄已经不适合继续做程序员的种种原因 xff0c 试图说服在这个年龄段的程序员做出改变 xff0c 初一看 xff0c 我自己也觉得很有
  • 机器人自主导航 | ROS与移动底盘通信

    本实验是实现机器人自主导航的重要步骤 xff0c 对于轮式机器人 xff0c 可以通过在底盘加装轮式里程计的方式来获得机器人的速度数据 xff0c 这些数据可以用来辅助机器人实现自主定位 xff0c 同时机器人还需要将控制指令发送给移动底盘
  • 使用C++调用Python模块(Linux)

    使用Python调用C 43 43 库见 xff1a 我的另一篇博客 工程配置 本文使用的项目构建工具为CMake xff0c 使用FindPython工具在CMake工程中找到Python库 xff0c 注意CMake最低版本为3 12
  • ROS开机自启设置

    使用robot upstart功能包即可实现节点的开机自启 安装功能包 安装robot upstart功能包 xff0c 本文使用的Ubuntu20对应的ROS版本为noetic span class token function sudo
  • 信号处理 | 维纳滤波推导

    首先给出互相关函数定义 xff1a r s x m
  • 信号处理 | AR模型与Levinson-Durbin递推

    模型形式 由高斯白噪声驱动的全极点模型表示如下 xff1a e n
  • 使用Python调用C++库(基于pybind11)

    本文将用C 43 43 编写一个简单的向量运算库 xff0c 然后使用pybind11将其封装为python包 xff0c 再使用python调用 C 43 43 程序使用CMake构建 使用C 43 43 调用Python模块见 xff1
  • FTP实现Ubuntu与Windows文件互传

    FTP实现window与ubuntu文件互传 本文将介绍如何使用FTP实现Ubuntu和Windows间的文件互传 xff0c 基本方法是在Ubuntu主机上安装FTP服务端 xff0c 在其他设备 Windows 上安装FTP客户端 以下
  • KD-Tree详解: 从原理到编程实现

    C 43 43 实现链接 https gitee com ghowoght kd tree 在点云操作中 xff0c 常常需要从大量点云中找到距离输入点最近的点 xff0c 如果使用线性搜索 xff0c 逐个判断与输入点的距离 xff0c
  • FRP + NoMachine远程桌面开发指南

    在FRP内网穿透 远程ssh终端 43 rdp桌面配置 中介绍了如何远程使用FRP 43 RDP进行外网远程桌面访问 xff0c 但是实测很卡 在两台Ubuntu主机上进行了测试 xff0c 云服务器有8M带宽 xff0c 所以对这种远程桌
  • 升级!!!运用select实现一个简单的TCP通信!

    升级 xff01 xff01 xff01 运用select实现一个简单的TCP通信 多路转接模型select模型select模型的操作流程简介 TCP的实现封装一个TCP服务端封装一个select类main程序 多路转接模型 多路转接IO
  • 嵌入式部分BUG与解决方法记录(不定期更新)

    关闭串口缓存 在使用422转USB数据线采集IMU数据时 xff0c 上位机的USB驱动程序会对接收到的数据进行缓存 xff0c 表现在于IMU使用200Hz的频率发送IMU数据 xff0c 而采集到的IMU数据的时间戳间隔并不是5ms x
  • Windows的C++开发环境搭建(基于vcpkg+CMake)

    一直以来 xff0c 笔者都认为在windows中使用cmake开发C 43 43 是一件很难搞的事 xff0c windows不像linux那样能方便地对各种C 43 43 软件包进行管理 xff0c 直到发现了vcpkg这个包管理器 x
  • C++/Python文件读写

    C 43 43 为了方便开发 xff0c 写了一个文本读写程序 xff0c 能够读写二进制 文本格式的文件 xff0c 程序只由一个头文件组成 xff0c 可以很方便地加入到现有程序 完整程序如下 xff1a span class toke
  • 遥控小车日志

    上周六 xff0c 我的老师扔给我一台四轮普通直流电机小车 xff08 下图 xff0c 已组装好 xff09 xff0c 叫我实现无线控制功能 xff0c 由PC端或手机端发送指令 由于我曾经做过步进电机小车的控制 xff0c 同时最近学