Arduino智能小车随笔(一)

2023-11-20

Arduino智能小车随笔(一)

看到小孩的各种STEM课程很火,收费又老贵,就想着不如自己和小孩一起学着做个arduino智能小车,即能让女儿学点编程,又能省了智商税,一举两得。然而到了后面女儿基本上只帮我接线,arduBlock实在无法支持她和我完成这个小目标。最后就是我做她玩>__<

目标:
做一个小车:
基本功能(已基本实现):

  1. 可遥控
  2. 可自(sui)主(ji)移动
  3. 可调速
  4. 会避障(不会撞墙)
  5. 会探测前方悬空(不会跳楼)
    进阶功能(计划中):
  6. 会知道各个轮子转速
    • 探测轮子卡壳
    • 保持四轮匀速
    • 控制转弯角度
      高级功能(在热情熄灭前不知道能不能开始):
  7. 视觉识别+跟踪

硬件方面(只实现基本功能):
智能小车车架+编码电机+电池组
Arduino mega 一块 (uno主要考虑中断口不够难以测速)
L298N两块 (一块可以驱动两个电机)
某宝电源模块一个(提供多个电源针口,3路直接输出,3路5V输出,3路3V输出)
超声波测距HC-SR04四个
蓝牙HC-06模块一个,用于遥控
亚克力板
杜邦线

基本功能

智能小车首先得有个底盘,摆着要么不做要做就做个霸气的,先去某宝淘了个看起来很NB的底盘+电机+电池,花了600大洋,就冲着这不明觉厉的麦轮四驱和悬挂,值了 (某方机器人,广告费免了)
在这里插入图片描述

这个底盘跟了四个编码电机,每个电机两个霍尔输出可用于测速,可用于进阶中的测速和实现相关功能。板上空间目测也够大,能够放很多智(dian)能(zi)元(wan)件(ju)。

车架到手之后,迅速搭好。麦轮放了X型,可以通过调整电机方向来达到不同的运动状态。麦轮好处明显,往哪个方向运动都行,但有个问题是轮子的受力方向也比普通轮子多。尤其是运动导致轮子受水平方向向外的力较大时,减速电机输出轴和联轴器的连接如果不够牢固,轮子容易飞脱。这个问题还在解决中。另外麦轮不同方向运动所需的转速不同,实测我这个电机pwm 120时,前进后退都正常,左右位移就很困难,要差不多180的时候才顺畅。

电池用铜柱和两片车架的副翼固定住,放在了底盘下面,把充电线绕到了车屁股上,突然觉得很有赛车的感觉哈。
在这里插入图片描述

arduino mega用铜柱固定在车架上,在上方也用铜柱架起来,以后可以在顶上放块亚克力板,继续堆个树莓派搞视觉识别。

在这里插入图片描述

L298N的放置花了好久才想好。如果水平放置的话,占空间太大,而且需要四根铜柱固定,放两个基本上这车上就没位置放别的了。最后发现散热片上有个m3螺丝和螺纹孔,就换了个16mm的m3螺丝,把它垂直固定在了板上。

在这里插入图片描述

电源模块没有固定孔,没啥好的固定方法,只好弄了那种宝宝防撞条的双面贴纸(很厚的)贴在下面。自行裁剪了一小块亚克力板,用铜柱架起来,用来粘电源模块。自己加工螺丝孔的精度真是惨不忍睹。

在这里插入图片描述
这个车架前后左右都有一个副翼,用了塑料束带把超声波模块HC-SR04固定在上面。蓝牙直接插在了后副翼的孔里。

在这里插入图片描述

至此各个元件的位置基本固定了。然后就是用杜邦线连起来,深深地感受到了集成电路的必要性。在基本功能和进阶功能完成后,我要把线扎起来,用洞洞板焊起来 =.=。

基本功能程序篇

L298N来控制电机的原理:用使能端连pwm调速,两个逻辑输入控制旋转方向,就可实现各个电机转向和速度的控制。这个小车由于四轮驱动和麦轮运动状态的多样性,导致编程时容易混乱,用有意义的常量名来代替实际端口和运动状态是个比较好的做法。顺便鄙视下arduino的IDE。除了关键词变色其他代码补全啥的全都没有,简直是对21世纪编程环境的侮辱。。。

定义各路端口(使能端用pwm端口):

// Define motor control pins
int LEFT_FRONT_MOTOR_ENABLE = 9;
int LEFT_FRONT_MOTOR_IN1 = 26;
int LEFT_FRONT_MOTOR_IN2 = 27;
int LEFT_REAR_MOTOR_ENABLE = 8;
int LEFT_REAR_MOTOR_IN1 = 24;
int LEFT_REAR_MOTOR_IN2 = 25;
int RIGHT_FRONT_MOTOR_ENABLE = 10;
int RIGHT_FRONT_MOTOR_IN1 = 28;
int RIGHT_FRONT_MOTOR_IN2 = 29;
int RIGHT_REAR_MOTOR_ENABLE = 11;
int RIGHT_REAR_MOTOR_IN1 = 30;
int RIGHT_REAR_MOTOR_IN2 = 31;

定义电机转动方向:

// Define motor rotate direction
int MOTOR_ROTATE_FORWARD = 1;
int MOTOR_ROTATE_BACKWARD = -1;
int MOTOR_ROTATE_STOP = 0;

定义小车运动状态:

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

Arduino智能小车随笔(一) 的相关文章

  • android BluetoothChat 使用来自另一个类的发送接收方法

    您好 我使用 BluetoothChat 示例来与 arduino 进行通信 到目前为止 一切正常 现在我想访问 sendMessage 方法 以便能够不从主类发送数据 而是从我创建的另一个类发送数据 这是BluetoothChat jav
  • 将 Arduino RGB LED 从一种颜色渐变为另一种颜色?

    目前 我已成功让 LED 灯循环显示我选择的八种颜色 一切都工作正常 除了我想要一种更自然的感觉 并且想要从一种颜色褪色 过渡到下一种颜色 而不是让它们互相替换 到目前为止 这是我的代码 int redPin 11 int greenPin
  • Arduino“SerialEvent”示例代码无法在我的 Arduino Nano 上运行。我无法接收串行数据。为什么?

    我正在按照教程进行操作串行事件 https www arduino cc en Tutorial BuiltInExamples SerialEvent我正在尝试这段代码 然而 当我发送我的Arduino 纳米 https en wikip
  • Arduino Python3 脚本

    我正在尝试使用 Python3 脚本来控制 Arduino Mega 这是一个简单的脚本 用于从键盘获取一行并通过 Arduino 回显它 我从一个可用的 Python 2 脚本开始http petrimaki wordpress com
  • Mac OS 10.9 不显示 Arduino 的 USB 调制解调器

    我正在尝试选择 dev tty usbmodem on my Arduino Lenardo设备 操作系统是Mac OSX 10 9 问题是它没有显示 我什至尝试安装FTDI http www ftdichip com Drivers VC
  • Arduino I2S 正弦波

    我正在开发一个项目 我想通过组合不同的正弦波来生成 简单 声音 我使用的是 arduino mkrZero 因为它内置了 I2S 接口 并且似乎有足够的处理能力来满足我的需求 I have wired my system exactly l
  • Arduino:使用串口和软件串口与蓝牙模块

    我的目的是使用 Arduino 通过 HC 05 蓝牙模块在 PC 和 Android 设备之间建立通信 我使用 PC 和 Arduino 串行监视器 之间的 USB 通信以及 SoftwareSerial 来连接到 HC 05 我的问题是
  • Java RXTX 库不加载本机库

    基本上我想使用 Arduino 编写一个简单的通信工具java 的 RXTX 库 http rxtx qbang org wiki index php Main Page并且在加载动态库时严重失败 我的系统规格 操作系统 OS X 优胜美地
  • 经典蓝牙 (2.1) 设备可实现的最小数据包延迟是多少?

    我正在使用 RN42 http www microchip com wwwproducts en RN42 http www microchip com wwwproducts en RN42 蓝牙模块以 115200 波特率 UART S
  • ESP32 Arduino-ide如何获取唯一id

    我试图自动为每个 esp32 设置一个唯一的 id 在我使用提供该方法的 ESP IDF 框架对设备进行编程之前esp efuse mac get default 这将返回一个 8 字节值 该值在我手上的所有设备上都是唯一的 在arduin
  • 在Python中快速绘制数据

    我正在尝试使用 arduino 绘制来自 mpu6050 imu 的数据 MPU6050 发送数据的速度比绘图快 Arduino 代码从串口提供 6 个数据 即偏航 俯仰 滚动 轴 ay 和 az 我需要快速情节的建议 Python代码 i
  • 终止导致设备或资源繁忙的进程:“/dev/ttyUSB0”?

    我使用以下 Python 代码连接到我的 Arduino 板 device glob glob dev ttyUSB 0 time sleep 1 arduino serial Serial device 115200 timeout 5
  • 带/不带类的回调函数指针 C++

    我被困 我正在尝试形成一个函数 它将吃掉无类函数指针和对象中的函数指针 这是我当前的代码 希望能解释更多 它应该在 Arduino 上运行 所以我不能使用大型库 首先 我在 Arduino 上使用这个库 SimpleTimer A time
  • C#读取Arduino

    我正在尝试制作一个从 Arduino 读取传出信号的应用程序 但我无法使其在 C 中工作Windows 窗体 http en wikipedia org wiki Windows Forms 仅在控制台中 我的 C Windows 窗体代码
  • Arduino:连接字符串时崩溃和错误

    我尝试将 AES 256 加密的输出连接到一个字符串 将此字符串与从 Android 手机发送的加密字符串进行比较 基本上 连接似乎有效 但在几次运行后会出现错误 不可读的字符 字符串变得更短而不是更长 或崩溃 它是可重现的 重启后在同一点
  • pySerial 与 python 2.7 和 3.4 的差异

    我正在开发一个项目 需要通过串口将一些数字从 Windows 10 中的 python 发送到 arduino uno 作为一个简单的测试 我只想通过发送 2 来打开 LED 并通过从命令提示符发送 4 来关闭 LED 尽管我希望最终能够将
  • SIM900 GSM/GPRS 未获得正确的 AT+CREG?回答

    我使用的是带有 IComsat SIM900 GSM GPRS 扩展板的 Arduino UNO 使用以下教程 Arduino 实时 GPS 追踪器 http www samaria me uk 2011 12 arduino live g
  • 使用 Ardulink 命令 Arduino Uno

    我试图在我的 JAVA 应用程序中使用 Ardulink 库来命令我的 Arduino Uno 但没有成功 我不知道我错过了什么 这是我的代码 Link link Link getDefaultInstance boolean connec
  • 当我启动程序时,Arduino IDE (Win10) 崩溃

    我的 Arduino IDE Win10 上的版本为 1 8 12 在启动时崩溃 运行arduino debug exe我收到此错误消息 C Program Files x86 Arduino gt arduino debug exe Se
  • Arduino 高低

    我有一个 Arduino 我想知道到底是什么HIGH and LOW意思是 就实际值而言 它们是否有符号ints unsigned ints unsigned char是 他们的价值观是什么 我猜HIGH and LOW可能是unsigne

随机推荐

  • Spring Boot(十):Druid的监控统计和多数据源配置

    Druid的监控统计 Druid内置提供一个StatFilter 用于统计监控信息 下面我们就来做一些配置 启动Druid的监控 1 配置pom xml
  • JS阻止事件冒泡的几种方式

    JS阻止事件冒泡的几种方式 事件委托 将元素的绑定事件写起其父元素上 防止事件冒泡 example div div div div 将事件绑定在父元素上 不管子元素是不是动态生成的 将第一种绑定事件写成第二种方式 son click fun
  • Tomcat启动乱码

    修改tomcat的conf下的logging properties中的参数 java util logging ConsoleHandler encoding GBK 将UTF 8改到GBK就行了保存后重启tomcat就正常了
  • 如何调整oracle参数,使它支持更多的用户连接

    在参数文件中有三个参数 processes license max sessions license max users 这三个参数相互作用影响着用户连接数 license max sessions 同时连接数据库的会话数 license
  • 手把手教你通过端口映射,轻松搭建Windows远程桌面

    市面上有很多的远程桌面软件 如TeamViewer 向日葵等 但无一例外 它们提供的免费服务连接质量普遍不高 而付费服务价格又偏高 并不能使人满意 但众所周知 微软自带的Windows远程桌面其实在连接质量和稳定性方面一点都不输给第三方软件
  • jquery中$()的使用

    在jquery中最常使用的就是 这个符号了 在我没有系统的学习jquery之前 我用到的 都是用于对元素的选择 而这只是 的很简单的用法 在jquery 函数一共有三种用法 selector context 在这个方法中selector是选
  • error: GLES2/gl2.h: No such file or directory

    最近一个朋友让帮忙编译android程序 中间遇到了很多问题 大概都解决了 最后又遇到了一个问题 GLES2 gl2 h No such file or directory 这个问题 我大概知道是怎么回事 关键是没有指定ndk的编译版本号
  • 公司刚上市就来了个从字节拿28K的人,让我见识到了什么才是测试天花板···

    5年测试 应该是能达到资深测试的水准 即不仅能熟练地开发业务 而且还能熟悉项目开发 测试 调试和发布的流程 而且还应该能全面掌握数据库等方面的技能 如果技能再高些的话 甚至熟悉分布式组件等高级技能 或者说 做个项目小组长 管个3 4号人 应
  • router-link 和 router-view 的 关系

  • vue整合ueditor

    一 前端代码 Ueditor官网地址为 http ueditor baidu com website download html ueditor 下载好之后 将Jsp版本解压 解压后文件夹改名为ueditor 将文件夹中的jsp目录删掉 之
  • Elasticsearch7 清空指定Index 相关数据

    注意 Elasticsearch7 起 Index索引已经不支持创建指定Type 类型 默认取值为 doc Elasticsearch7 清空指定Index 语法 POST 请求 http es 服务器地址 索引名称 delete by q
  • go 进阶 gin实战相关: 五. gin_scaffold 企业脚手架

    目录 一 gin scaffold 企业级脚手架 二 gin scaffold 脚手架安装及使用演示 文件分层解释 开始使用 1 配置开启go mod 功能 2 下载 安装 gin scaffold 3 整合 golang common 4
  • 原生js php ajax,原生Ajax怎么写

    写原生Ajax的方法 首先创建XMLHttpRequest对象 然后编写回调函数onreadystatechange 接着配置请求信息 最后发送请求即可 Ajax Asynchronous JavaScript and XML的缩写 是一种
  • C#使用NuGet包播放视频之二————读取RTSP流

    RTSP流的读取 上篇文章做到读取本地摄像头 基本事都做完了 这篇文章将RTSP流加进去 双击窗体中ToolStrip的RTSP 为之添加事件 事件中编写代码如下
  • Yii2框架(一)安装及目录结构

    如题 对 你要相信自己的眼睛 你没看错确实是Yii2框架 现在都2020年了 刚刚开始折腾Yii2框架难免有些过时 但是没办法 公司目前的项目是基于Yii2开发的 嘿 你说怎么这么巧 我还没用过Yii2框架 没办法 看手册呗 这玩意 万变不
  • Vue2运行报错SyntaxError: Cannot use import statement outside a module

    问题描述 像配置vue3那样配置vue config js的路径代理 代替src后 报错 语法错误 不能在模块外部使用导入语句 原因 模块语法一个是CommonJS module 一个是 ES6 module vue config js里的
  • Google Voice账号的具体保号教程

    Google Voice 官方号码回收规则 https www google com intl zh CN googlevoice program policies html 在9个月内你的Google Voice没拔打电话或接收短信 你的
  • Hbase使用shell命令报错大集锦:

    一 Hbase使用shell命令出现报错 PleaseHoldException Master is initializing 解决办法 0 保证hbase运行着的 1 删除HDFS里hbase文件夹 hdfs dfs rm r hbase
  • 蓝牙BLE连接设备报错onClientConnectionState() - status=133解决方法

    S905平台 Android 5 1 1 WIFI 蓝牙芯片AP6255 客户某蓝牙设备使用他们专用的APK连接不上 查logcat信息如下 D BluetoothAdapter 5097 stopLeScan D BluetoothAda
  • Arduino智能小车随笔(一)

    Arduino智能小车随笔 一 看到小孩的各种STEM课程很火 收费又老贵 就想着不如自己和小孩一起学着做个arduino智能小车 即能让女儿学点编程 又能省了智商税 一举两得 然而到了后面女儿基本上只帮我接线 arduBlock实在无法支