基于Arduino的智能避障小车
创作时间:
作者:
@小白创作中心
基于Arduino的智能避障小车
引用
CSDN
1.
https://blog.csdn.net/weixin_42255385/article/details/142852534
基于Arduino的智能避障小车是一个结合了超声波测距、电机控制和算法决策的机器人项目。本文将详细介绍其硬件组成、软件实现以及运行效果,适合对Arduino和机器人感兴趣的读者参考。
功能说明
基于Arduino的智能避障小车能够自动行驶前进,当前方有障碍物时,使用超声波测距模块检测小车和障碍物间的距离,结合控制算法,自动判断一条可以安全前进的路线,使智能小车不会碰撞到任何障碍物。
注:后续将增加红外遥控、蓝牙遥控、WiFi遥控、自动循迹等多种功能的讲解。
硬件组成
基于Arduino的智能避障小车硬件主要包括:Arduino UNO核心控制板,L298N电机驱动模块、HC-SR04超声波测距模块、SG90 舵机模块、12V电源稳压模块。
编程软件
使用官方开源软件Arduino IDE,没有使用其他外部库,软件安装完成后即可运行智能避障源代码。
智能避障源代码
#include <Servo.h>
//超声波
#define trigPin 2
#define echoPin 4
//舵机
#define pwmPin 3
//A代表右电机
#define ENA 6
#define inPinA1 7
#define inPinA2 8
//B代表左电机
#define ENB 5
#define inPinB1 12
#define inPinB2 13
//由于硬件原因导致左右电机转速不同,需根据实际情况进行小车直线行驶调节,确定左右电机速度
const int speedA = 80;//右电机速度
const int speedB = 93;//左电机速度
Servo myServo;
void setup() {
// put your setup code here, to run once:
pinMode(inPinA1,OUTPUT);
pinMode(inPinA2,OUTPUT);
pinMode(inPinB1,OUTPUT);
pinMode(inPinB2,OUTPUT);
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
Serial.begin(9600);
pinMode(pwmPin,OUTPUT);
//使用servo库时 电机PWM调速应避开9和10引脚 否则会导致PWM调速失效
myServo.attach(pwmPin);
}
void loop() {
// put your main code here, to run repeatedly:
//舵机恢复到中间位置
servoRun(90);
float value1 = 0;
Serial.print("value1: ");
value1 = getDistance();
//距离前方障碍物小于25cm时
if(value1 < 25)
{
//小车停止
stopA();
stopB();
float value2 = 0;
float value3 = 0;
//舵机转到最右侧45度
servoRun(45);
Serial.print("value2: ");
value2 = getDistance();
//舵机转到最左侧135度
servoRun(135);
Serial.print("value3: ");
value3 = getDistance();
//舵机恢复到中间位置
servoRun(90);
//距离左方和右方障碍物均小于25cm时
if(value2 < 25 && value3 < 25)
{
//前方、左方、右方具有障碍物时
//后退
backwardPwm(speedA, speedB);
delay(250);
//右转
forwardRight(speedB);
delay(250);
}
else if(value2 >= value3)
{
//前方和左方有障碍物时 右转
forwardRight(speedB);
delay(250);
}
else if(value2 < value3)
{
//前方和右方有障碍物时 左转
forwardLeft(speedB);
delay(250);
}
}
else
{
//无障碍物时 前进
forwardPwm(speedA, speedB);
}
}
//获取超声波模块测量的距离
float getDistance()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
float valueCM = 0;
valueCM = float(pulseIn(echoPin,HIGH)*17/1000);
Serial.print(valueCM);
Serial.println("cm");
delay(100);
return valueCM;
}
//侍服电机旋转的角度取值范围(0~179)
void servoRun(int angle)
{
myServo.write(angle);
delay(500);//需延时等待超声波模块稳定
}
//PWM调节小车前进速度
void forwardPwm(int valueA,int valueB)
{
forwardPwmA(valueA);
forwardPwmB(valueB);
}
//PWM调节右电机正转
void forwardPwmA(int value)
{
analogWrite(ENA, value);
digitalWrite(inPinA1,LOW);
digitalWrite(inPinA2,HIGH);
}
//PWM调节左电机正转
void forwardPwmB(int value)
{
analogWrite(ENB, value);
digitalWrite(inPinB1,LOW);
digitalWrite(inPinB2,HIGH);
}
//右电机停止
void stopA()
{
analogWrite(ENA, HIGH);
digitalWrite(inPinA1,LOW);
digitalWrite(inPinA2,LOW);
}
//左电机停止
void stopB()
{
analogWrite(ENB, HIGH);
digitalWrite(inPinB1,LOW);
digitalWrite(inPinB2,LOW);
}
//value:0~255
//PWM调节小车后退速度
void backwardPwm(int valueA,int valueB)
{
backwardPwmA(valueA);
backwardPwmB(valueB);
}
//PWM调节右电机反转
void backwardPwmA(int value)
{
analogWrite(ENA, value);
digitalWrite(inPinA1, HIGH);
digitalWrite(inPinA2, LOW);
}
//PWM调节左电机反转
void backwardPwmB(int value)
{
analogWrite(ENB, value);
digitalWrite(inPinB1, HIGH);
digitalWrite(inPinB2, LOW);
}
//小车左转
void forwardLeft(int value)
{
stopB();
forwardPwmA(value);
}
//小车右转
void forwardRight(int value)
{
stopA();
forwardPwmB(value);
}
说明:
- 驱动模块使用参考本专栏文章《基于Arduino的L298N电机驱动模块使用》。
- 舵机模块使用参考本专栏文章《基于Arduino的SG90舵机驱动》。
- 超声波模块使用参考本专栏文章《基于Arduino的超声波测距模块HC-SR04》。
- 智能避障控制方法参考本专栏文章《基于Arduino的智能避障小车的控制方法》。
运行效果
智能小车根据超声波模块检测到的左方、前方、右方3个方向的障碍物距离,选择距离障碍物大于25cm的方向前进,如果3个方向的距离障碍物都小于25cm,则智能小车先后退、再石转离开障碍物,最后再回正直行。
热门推荐
南京司机倒车撞路灯:倒车影像的局限性与正确使用方法
倒车雷达:高端车型不可或缺的安全守护者
新手司机必看:用顺口溜轻松学会倒车入库
理想汽车倒车技巧:7个关键步骤+智能辅助让新手更安全
自动挡汽车倒车技巧:从基本操作到安全要点,新手必看
省文旅厅推荐:淄博冬季旅游必打卡景点
冬游淄博周村古商城,探寻千年商贾文化
轿车高速行驶安全指南:这些驾驶技巧请收好
化疗21天周期有讲究:提前伤身,推迟减效
宁波澥浦古镇推“恰!一道去澉浦”活动,传统名菜早烧香飘千年
开心果:吃出健康好身材
开心果:健康零食界的网红,你真的会吃吗?
登临苍岩山:太行山中赏十六景,探访隋朝古刹桥楼殿
烟台发布天然气报警器使用规范:选型、安装、维护全攻略
北京加码脑机接口产业,2025-2030年行动方案发布
脑机接口技术突破:医疗消费双轮驱动,市场规模将破千亿
苹果手机语音备忘录,高效剪辑让录音管理更轻松
别再伤害你的手了!办公族轻松预防手部不适
灵芝口服液真的能提升免疫力吗?
这9个消炎的中成药,可以调理99%的炎症
【每日一药】蛭蛇通络胶囊
探索便携式储能电源的多种使用场景
夫妻、隔代育儿有分歧,这也许是个好事儿
上海地铁运营时间表2024年
儿童心理发展的关键期
李清照《声声慢》:七组叠词写尽秋日孤独
荷包蛋清汤面,让你秒变厨神!
从多模态视角解读李清照《声声慢》的艺术魅力
水煮荷包蛋挂面最佳配料组合:从经典到创新的美味探索
大众途观L下坡挡位攻略,老司机都收藏了!