陀螺仪小车(Forerake-Car)

news2024/11/18 1:38:48

项目简介:搭建一辆有arduino UNO 与rnf24l01组成的小车;手部安装由arduino nano开发板、nrf24l01、imu构成的手势控制器,利用手势控制器检测手部状态、发送信号对小车进行前进,实现基于卡尔曼滤波的MPU6050姿态结算。

准备工作:

如果你想搭建一辆有Arduino UNO和nRF24L01组成的小车,并使用手势控制器来控制小车,你需要准备以下硬件:(制作步骤省略)

  1. Arduino UNO微控制器:用于控制小车的运动。

  2. NRF24L01模块:用于在小车和手势控制器之间进行无线通信。

  3. 小车底盘:用于支撑小车的结构和轮子。

  4. 马达:用于带动小车的运动。

  5. 电池:用于为小车提供电力。

  6. Arduino Nano开发板:用于控制手势控制器的运动。

  7. IMU传感器:用于检测手势控制器的状态。

这些硬件是搭建一辆有Arduino UNO和nRF24L01组成的小车所必需的。

陀螺仪小车是一种使用陀螺仪感测器控制方向的小车。要制作陀螺仪小车,你需要准备以下材料和工具:(制作步骤省略)

  1. 小车底盘:可以使用Lego(乐高)、Arduino、Raspberry Pi(树莓派)或其他工具制作。

  2. 电机和驱动板:可以使用直流电机(【Youtube搬运】直流电动机的工作原理【含中文字幕需手动开启】_哔哩哔哩_bilibili)或步进电机(【动画演示】步进电机的原理,学了这么多年电工,终于搞明白了_哔哩哔哩_bilibili),并使用驱动板来控制它们的转速和方向。

    简言之:步进电机是一种特殊的直流电机,转动受限,范围小,
    但精确度更高,适用于高精度转动的场合:机器人,3D打印机。

    步进电机与直流电机的优缺点,与伺服电机区别 - 21ic电子网

  3. 陀螺仪感测器:可以使用MPU6050、L3G4200D或其他类型的陀螺仪感测器。
    MPU6050和L3G4200D都是三轴陀螺仪传感器,可以测量旋转率和加速度。
    
    MPU6050是一款集成的加速度计和陀螺仪传感器,可以提供高精度的测量数据。
    它采用了微控制器的内部滤波器来减少噪声并提高精度。
    MPU6050还支持运动检测功能,可以检测到极小的运动并触发相应的事件。
    
    L3G4200D是一款独立的三轴陀螺仪传感器,它通过 I2C 或 SPI 接口与微控制器连接。
    L3G4200D可以测量高达 2000 dps 的旋转率,具有较高的精度和较快的采样速率。
    它还具有数据自动对齐功能,可以使得数据在不同的字节序中得到正确的对齐。
    
    在选择这两个传感器时,应考虑自己的应用场景,以及所需的精度和功能。
    如果需要一个集成的解决方案,则可以选择 MPU6050,但如果需要一个独立的陀螺仪传感器,则可以选择 L3G4200D。
  4. 电源:可以使用锂电池或其他类型的可充电电池来为小车提供电力。

  5. 开发板:可以使用Arduino、Raspberry Pi或其他类型的开发板来控制小车的电机和陀螺仪感测器。

  6. 编程工具:需要安装适用于你使用的开发板的编程工具。

开发板、驱动板、母板概念:

1.开发板,就是通常用作开发用途的PCB(未有安装元器件,只有布线电路图形的半成品板),通常上面载有一个或多个MCU(微控制单元,为芯片级的计算机,近似理解为cpu,俗称单片机(scm))/FPGA(由可编程互相连接的可配置逻辑块矩阵构成的半导体器件)等器件作为核心,以及一些外设例如Flash、SRAM、SDRAM、LED、数码管、TFT LCD等外设作为辅助开发,以及一些额外的引脚。

https://www.bilibili.com/video/BV193411y7TW/?spm_id_from=333.337.search-card.all.click&vd_source=a2417ade71290cd940c5e2edb896b97bhttps://www.bilibili.com/video/BV193411y7TW/?spm_id_from=333.337.search-card.all.click&vd_source=a2417ade71290cd940c5e2edb896b97b

2.驱动板,通常是用于驱动特定外设(驱动外接硬件,用来控制输出大电流大电压),例如大功率步进电机、大的液晶屏等。

3.母板,或者叫底板,通常将开发板或者是核心板插在其上,同时将驱动板也连接在其上,主要起到一个大型连接器的作用,当开发板或者说核心板上的外设不够时,也会部署一些额外的外设用来辅助开发并最终形成整个产品。

陀螺仪小车开发的注意内容

具体的,你需要在代码中读取陀螺仪感测器的数据,然后根据陀螺仪感测器的角度来控制电机的方向。你可以设置一个阈值,当陀螺仪感测器的角度大于阈值时,小车向左转;当陀螺仪感测器的角度小于阈值时,小车向右转。

你也可以设计其他的控制策略,比如根据陀螺仪感测器的加速度来控制小车的前进和后退。

在制作过程中,你可能会遇到各种问题,比如小车不能正常行驶、陀螺仪感测器的数据不准确等。在遇到这些问题时,你可以通过调试代码、检查电路连接、重新校准陀螺仪感测器等方式来解决问题。

NRF24L01

NRF24L01是一种无线收发模块,具有较高的传输速率和长距离传输能力,能够使用2.4GHz频段进行无线通信。它是一种低成本、低功耗(支持自动睡眠、待机和唤醒功能)的无线通信模块,支持多种通信协议,广泛应用于各种无线通信项目中。除了通信协议和接口之外,nRF24L01模块还具有其他一些特性:尺寸较小、支持多种通信模式、可配置的通信参数、支持硬件加密。

NRF24L01模块通常使用SPI接口与微控制器连接,可以使用Arduino、Raspberry Pi或其他类型的微控制器来控制它。

如果你想使用nRF24L01模块来开发无线通信应用,你可以考虑以下应用场景:

  1. 远程控制:nRF24L01模块可以用于实现远程控制功能。你可以使用模块来控制各种电子设备,比如灯、电视、空调等。

  2. 传感器网络:nRF24L01模块可以用于建立传感器网络。你可以使用模块来采集各种传感器的数据,并将数据传输到中央服务器。

  3. 无线网络:nRF24L01模块可以用于建立无线网络。

  4. 即时通讯:nRF24L01模块可以用于实现即时通讯功能。你可以使用模块来实现文本、语音和视频通信。

  5. 家庭自动化:nRF24L01模块可以用于实现家庭自动化功能。你可以使用模块来控制各种智能家居设备,比如门锁、窗帘、照明等。

  6. 远程监控:nRF24L01模块可以用于实现远程监控功能。你可以使用模块来监控各种环境参数,比如温度、湿度、气压等。

 正式内容:

流程:

arduino uno(①)和nrf24l01(①)控制小车;arduino uno(①)、nrf24l01(①)、mpu6050获取姿态解算数据。

1.手上姿态检测,控制mpu6050检测手部状态(运动数据及温度数据),利用其芯片内部的DMP模块,进行传感器数据处理,通过SPI协议向手势控制器中的arduino UNO(②)输出姿态结算后的数据;

2.编写代码,将NRF24L01模块连接到对应的Arduino开发板,arduino uno(②)将获取的数据通过nrf24l01(②)(发射器)无线传给nrf24l01(①)(接收器)一端。

3.arduino uno(①)要编写代码来接收 NRF24L01 (①)收到的信号,并根据信号来控制小车的运动(可以使用电机驱动器的相应函数来控制小车前进)。

(2条消息) Arduino开发板使用NRF24L01进行无线通信_sunshyman的博客-CSDN博客_arduino rf24l01

任务实现步骤:

首先,你需要将 Arduino UNO 和 NRF24L01 连接到小车上,并使用一些电机驱动器来控制小车的运动。具体来说,你可以使用 L298N 电机驱动器来控制小车的电机。(学习内容:连接电机驱动器和电机)

然后,你需要在 Arduino UNO (①)上编写代码来接收 NRF24L01(②) 收到的信号,并根据信号来控制小车的运动。(了解如何使用 NRF24L01 和 Arduino 进行无线通信)

接着,你需要在 Arduino uno (②) 上编写代码来控制 IMU 检测手部的状态,并使用 NRF24L01 将信号发送给 Arduino UNO。具体来说,你需要使用 IMU 库来读取 IMU 传感器的数据,并根据手部的状态来控制 NRF24L01 发送信号。

最后,你需要将所有部分整合起来,调试代码并确保所有功能都能正常工作。

IMU与MPU6050的关系

IMU 是一个通用术语,指的是任何可以测量和提供有关人体加速度和方向信息的设备,而 MPU6050 是由 InvenSense 制造的一种特定类型的 IMU。

MPU6050 是一个 6 轴 IMU,包含一个 3 轴加速度计和一个 3 轴陀螺仪。它用于测量和提供有关物体在 3D 空间中的加速度和角速度的信息。它通常用于无人机、机器人和其他类型的运动传感系统等应用。

相比之下,IMU 可以指任何能够测量和提供有关身体加速度和方向信息的设备,而不管它使用的传感器的具体类型或它具有的轴数。IMU 通常用于各种应用,包括机器人、航空航天和虚拟现实等。

控制电机的转速即控制PWM

控制电机的转速通常是通过调节电机的输入电压来实现的,而调节电机输入电压的一种常用方法就是使用脉冲宽度调制(PWM)控制。


PWM 控制方法通过不断地交替地打开和关闭电机的电源,达到调节电机输入电压的目的。具体来说,我们可以调节 PWM 信号的占空比(duty cycle)来控制电机的转速。占空比越大,电机所接受的电压就越大,电机的转速就越快;占空比越小,电机所接受的电压就越小,电机的转速就越慢。


使用 PWM 控制电机的转速的一个优点是,它可以提供较好的转速精度和响应速度。另外,PWM 控制还可以通过改变 PWM 信号的频率来控制电机的扭矩。
但是,使用 PWM 控制电机也有一些缺点。首先,PWM 控制需要使用控制电路来实现,这会增加系统的复杂度和成本。其次,PWM 控制可能会产生较大的电磁干扰,影响电机的寿命和系统的稳定性。


在选择控制电机的方式时,需要根据具体的应用场景来确定使用哪种控制方式。在一些情况下,使用 PWM 控制电机可能是最优的选择。但是,在一些应用场景中,其他控制方式可能更加适用。


例如,在需要提供较大扭矩和较高转速的应用场景中,可能会使用直流电机,并使用直流桥控制方式来控制电机的转速和扭矩。在需要提供较高精度和较低成本的应用场景中,可能会使用步进电机,并使用步进电机驱动器来控制电机的转速和位置。


总之,在控制电机的转速时,PWM 控制是一种常用的方法,但是并不是唯一的选择。根据具体的应用场景和需求,可以选择适合的控制方式来实现。

L298N驱动模块,用在控制小车电机的驱动和通过单片机PWM来控制电压输入脚已达到控制小车速度的目的 

代码实现模块:

参考: Arduino教程:MPU6050的数据获取、分析与处理 - 知乎摘要MPU6050是一种非常流行的空间运动传感器芯片,可以获取器件当前的三个加速度分量和三个旋转角速度。由于其体积小巧,功能强大,精度较高,不仅被广泛应用于工业,同时也是航模爱好者的神器,被安装在各类飞行…https://zhuanlan.zhihu.com/p/20082486

详解Arduino Uno开发板的引脚分配图及定义_全程站着的攻城师的博客-CSDN博客_arduino uno引脚图https://blog.csdn.net/it1988888/article/details/118087831(2条消息) Arduino开发板使用NRF24L01进行无线通信_sunshyman的博客-CSDN博客_arduino rf24l01https://blog.csdn.net/sunshyman/article/details/112977704?ops_request_misc=&request_id=&biz_id=102&utm_term=arduino%E5%92%8Cnrf24l01%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-112977704.142%5Ev68%5Ejs_top,201%5Ev4%5Eadd_ask,213%5Ev2%5Et3_esquery_v3&spm=1018.2226.3001.4187

详解PWM原理、频率与占空比 - 21ic电子网https://www.21ic.com/article/887609.html#:~:text=%E8%84%89%E5%86%B2%E5%AE%BD%E5%BA%A6%E8%B0%83%E5%88%B6%20%28PWM%29%EF%BC%8C%E6%98%AF%E8%8B%B1%E6%96%87%E2%80%9CPulse,Width%20Modulation%E2%80%9D%E7%9A%84%E7%BC%A9%E5%86%99%EF%BC%8C%E7%AE%80%E7%A7%B0%E8%84%89%E5%AE%BD%E8%B0%83%E5%88%B6%EF%BC%8C%E6%98%AF%E5%88%A9%E7%94%A8%E5%BE%AE%E5%A4%84%E7%90%86%E5%99%A8%E7%9A%84%E6%95%B0%E5%AD%97%E8%BE%93%E5%87%BA%E6%9D%A5%E5%AF%B9%E6%A8%A1%E6%8B%9F%E7%94%B5%E8%B7%AF%E8%BF%9B%E8%A1%8C%E6%8E%A7%E5%88%B6%E7%9A%84%E4%B8%80%E7%A7%8D%E9%9D%9E%E5%B8%B8%E6%9C%89%E6%95%88%E7%9A%84%E6%8A%80%E6%9C%AF%EF%BC%8C%E5%B9%BF%E6%B3%9B%E5%BA%94%E7%94%A8%E5%9C%A8%E4%BB%8E%E6%B5%8B%E9%87%8F%E3%80%81%E9%80%9A%E4%BF%A1%E5%88%B0%E5%8A%9F%E7%8E%87%E6%8E%A7%E5%88%B6%E4%B8%8E%E5%8F%98%E6%8D%A2%E7%9A%84%E8%AE%B8%E5%A4%9A%E9%A2%86%E5%9F%9F%E4%B8%AD%E3%80%82%20%E8%BF%99%E5%B0%B1%E6%98%AF%E5%8D%A0%E7%A9%BA%E6%AF%94%E4%B8%BA80%25%E7%9A%84%E8%84%89%E5%86%B2%E4%BF%A1%E5%8F%B7%E3%80%82

nRF24L01 – How It Works, Arduino Interface, Circuits, CodesIn this tutorial we will learn how to use the nRF24L01 RF transceiver module to make a wireless communication between two Arduino boards.https://howtomechatronics.com/tutorials/arduino/arduino-wireless-communication-nrf24l01-tutorial/

MPU6050姿态解算2-欧拉角&旋转矩阵 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/195683958

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

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

相关文章

蓝桥杯2023/3/2

1. 小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最…

格密码学习笔记(一):格的定义、基本区域和行列式

文章目录格的基本定义格的基本区域格的行列式致谢格的基本定义 定义1 给定nnn维实数空间Rn\mathbb{R}^nRn中的一组线性无关向量B{b1,…,bn}⊂Rn\bm{B} \{ \bm{b}_1, \dots, \bm{b}_n \} \subset \mathbb{R}^nB{b1​,…,bn​}⊂Rn,其整数系数线性组合构成的集合被称…

列表(list)、数组(numpy)、张量(tensor)、元组各自怎样查看形状

列表(list)、数组(numpy)、张量(tensor)、元组各自怎样查看形状 一、查看列表(list)的形状 1.shape import numpy as npL [[1,2],[3,4],[5,6],[7,8]] L np.array(L)print(L.sha…

大数据周会-本周学习内容总结04

目录 1、mysql数据同步到es 1.1、通过logstash同步数据 1.2、canal数据同步 1.3、通过logstash将本地文件导入es 2、git 1、mysql数据同步到es 1.1、通过logstash同步数据 elastic官方文档:如何使用Logstash和JDBC确保 Elasticsearch与关系型数据库保持同步&a…

5. unity之组件

1. 组件Component 物体可以挂载不同的组件以实现不同的功能,需要什么功能就添加什么组件。当我们选中一个物体后,就可以在右侧的属性窗口中添加组件,如下图所示: 2. AudioSource组件 使用这个组件可以为模型添加音乐或者声效效…

32- PyTorch基础 (PyTorch系列) (深度学习)

知识要点 PyTorch可以说是现阶段主流的深度学习框架 . 1 PyTorch入门 1.1 PyTorch概述 Torch是什么?一个火炬!其实跟Tensorflow中Tensor是一个意思,可以当做是能在GPU中计算的矩阵.,也可以当做是ndarray的GPU版! PyT…

Aspose.Words for JasperReports Crack

Aspose.Words for JasperReports Crack 添加了在文档中指定字符间距的功能。 添加了文档样式选项,允许您指定是否自动重新定义样式。 显著改进了图表渲染: 渲染径向渐变笔刷时添加了相对坐标支持。 增加了对呈现趋势线和趋势线R平方的支持。 增加了对渲染…

zabbix自定义模版Templates和监控项items

注:此处使用的客户端和服务端版本均为 ubuntu 2204 自定义模板和监控项实现过程 在Zabbix 被监控主机上编写自定义监控项的取值的脚本,并加执行权限在Zabbix 被监控主机上的配置文件中添加自定义监控项,指定 key 和 对 key 赋值的脚本及参数在Zabbix Server 上使用…

docker环境安装tomcat

一 安装tomcat 1. 查找tomcat镜像 docker search tomcat 2. 安装指定版本的tomcat镜像 docker pull tomcat:9.0 二 启动tomcat镜像 docker run -d -p 8080:8080 --name tomcat tomcat:9.0 三 访问tomcat页面 http://ip:8080 第一访问会出现下面的情况 四 解决上述问题 进入…

C语言-基础了解-12-C数组

C数组 一、C数组 C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量,比如 runoob0、runoob1、…、runoo…

SpringBoot_第五章(Web和原理分析)

目录 1:静态资源 1.1:静态资源访问 1.2:静态资源源码解析-到WebMvcAutoConfiguration 2:Rest请求绑定(设置put和delete) 2.1:代码实例 2.2:源码分析到-WebMvcAutoConfiguratio…

穿越时空:当ChatGPT遇见stable-diffusion,你不敢相信的创意艺术之旅!

前言 欢迎来到一场创意的旅程,这里将聚焦于 ChatGPT 和 stable-diffusion 这两个令人激动的技术。在这篇文章中,我们将会探索这两种技术如何结合使用,为艺术创作带来全新的可能性。我们将探讨如何利用 ChatGPT 生成富有想象力的创意&#xf…

Mac Book pro(M1)使用总结

1、拿到电脑激活的时候,一定要记住账号密码及安全问题的答案。 2、显示隐藏文件夹: 3、显示.git或者gitignore等隐藏后缀的文件: 打开终端 defaults write com.apple.finder AppleShowAllFiles TRUE重启Finder在终端输入 killall Finder …

如何在虚拟机中安装ikuai软路由系统

首先访问ikuai官网下载固件固件下载-爱快 iKuai-商业场景网络解决方案提供商 (ikuai8.com) 根据需求下载 然后创建一个虚拟机,点击下一步 选择更下载的ISO映像文件,点击下一步 点击下一步 设置一下名称和储存位置,点击下一步 根据需求设置&a…

k8s集群调度

1、调度约束Kubernetes 是通过 List-Watch 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。1.1 List-Watch 用户通过kubectl命令提交请求交给apiserver创建pod,然后apiserver将pod信息存放到etcd中,之后…

并发编程——ReentrantLock

如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:耶瞳空间 一:基本介绍 从Java 5开始,引入了一个高级的处理并发的java.util.concurrent包,它提供了大量更高级的并发功能,能大大简化多线程程序的编写…

shell基础(5)算数计算:运算语法、自增自减

文章目录1. shell算数运算的特点2. 运算符一览3. 运算语法3.1 整形运算3.2. 小数运算 ing4. 自增自减4.1. a与a4.2. 自加1. shell算数运算的特点 Shell 和其它编程语言不同,Shell 不能直接进行算数运算,必须使用数学计算命令。Shell只支持整数运算&#…

C++017-C++冒泡排序与插入排序

文章目录C017-C冒泡排序与插入排序冒泡排序与插入排序目标冒泡排序排序规则冒泡排序优化插入排序题目描述在线练习:总结C017-C冒泡排序与插入排序 在线练习: http://noi.openjudge.cn/ https://www.luogu.com.cn/ 冒泡排序与插入排序 参考:…

详解基于 Celestia、Eclipse 构建的首个Layer3 链 Nautilus Chain

以流支付为主要概念的Zebec生态,正在推动流支付这种新兴的支付方式向更远的方向发展,该生态最初以Zebec Protocol的形态发展,并从初期的Solana进一步拓展至BNB Chian以及Near上。与此同时,Zebec生态也在积极的寻求从协议形态向公链…

【PyTorch】教程:torch.nn.Hardsigmoid

torch.nn.Hardsigmoid 原型 CLASS torch.nn.Hardsigmoid(inplaceFalse) 参数 inplace (bool) – 默认为 False 定义 Hardsigmoid(x){0if x≤−3,1if x≥3,x/61/2otherwise\text{Hardsigmoid}(x) \begin{cases} 0 & \text{if~} x \le -3, \\ 1 & \text{if~} x \ge 3…