极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18596|回复: 10

【LSL学习笔记1】无硬件基础,最简单小车

[复制链接]
发表于 2013-4-29 20:20:07 | 显示全部楼层 |阅读模式
首先我是学软件的,所以关于电路的一概不知道,电学都还停留在高中阶段。突然有天发现了arduino,发现可以利用我熟悉的编程来实现对硬件的控制,即果断决定买来学习。然而对于外围设备怎么办呢,又卜会焊电路板,还好有现成的模块可以使用。
废话卜多说了。

物料单:
无传感器版本
1.arduino  uno  开发板                 一块                     48~70
2.小车套件                                   一套                     35
3.L298N模块                                一块                      8
4.杜邦线若干                                一大把                  6

一下是推荐的传感器(有了传感器这样小车就可以变得更智能)
1.HC-SR04超声波传感器               一块                     7                           自动蔽障小车
2.HC-06蓝牙从机模块                   一块                     30                         手机无线控制
3.MPU-6050模块                           一块                     18                         做好3轮车后,结合该模块可做2轮平衡小车
4.可充电的锂电池                          一块                     没买过                  本人用的是4颗南孚电池,太奢侈了,用完了又得买的

javascript:;
来些图片吧
javascript:;
javascript:;
javascript:;
javascript:;
javascript:;


[pre lang="arduino" line="1" file="小车代码"]// 左轮控制口
int In1 = 8;
int In2 = 9;
//int EnA = 3;(待添加)

// 右轮控制口
int In3 = 10;
int In4 = 11;
//int EnB = ;(待添加)

//蓝牙数据传输口(3.3V)
const int pinRx = 0;
const int pinTx = 1;
//运行控制
int dir;  
//运行速度
//int speeds;//待开发

//超声波传感器端口(5V)
const int TrigPin = 2;
const int EchoPin = 3;
//距离值
float cm;
//当达到distance值时,小车停止,改变运行方向
float distance = 15.00;
//是否有障碍物
boolean barrier = false;

//void b_foward(){};        //前进
//void b_back(){};          //后退
//void b_left(){};          //左拐弯
//void b_right(){};         //右拐弯
//void b_stop(){};          //停车
//void b_distance(){};      //测障碍物距离
//boolean b_change_dir(){};     //前方是否有障碍物

void setup() {
  
  Serial.begin(9600);//设置波特率
  
  //左轮端口模式设置
  pinMode(In1, OUTPUT);
  pinMode(In2, OUTPUT);
  //右轮端口模式设置
  pinMode(In3, OUTPUT);
  pinMode(In4, OUTPUT);

  //左轮端口模式设置初始化
  digitalWrite(In1, LOW);
  digitalWrite(In2, LOW);
  //右轮端口模式设置初始化
  digitalWrite(In3, LOW);
  digitalWrite(In4, LOW);
  
  //蓝牙数据传输口模式设置
  pinMode(pinTx, OUTPUT);
  pinMode(pinRx, INPUT);
  
  //超声波传感器端口模式设置
  pinMode(TrigPin, OUTPUT);
  pinMode(EchoPin, INPUT);
}

void loop() {
  
//拥有轮训控制结构(蓝牙控制,测超声波自动避障...)

//串口控制版(蓝牙,无线模块)
//  int dir = Serial.read();    //从串口读取接受到的控制信息
//  
//  switch(dir)
//  {
//     case 'l':
//        b_left();
//        break;
//     case 'r':
//        b_right();
//        break;
//     case 'f':
//        b_foward();
//        break;
//     case 'b':
//        b_back();
//        break;
//     default:
//        b_stop();
//  }

//测超声波自动避障版(无舵机,定向避障)
  b_distance();         //测障碍物距离
  barrier = b_change_dir();     //前方是否有障碍物
  if(barrier)
    b_back();          //前进
  else{
    b_left();            //左转
    b_distance();        //测障碍物距离
  }

//无传感器版
//        b_left();
//        b_right();
//        b_foward();
//        b_back();
//        b_stop();  

}
   
void b_foward()    //前进
{
        digitalWrite(In1, LOW);
        digitalWrite(In2, HIGH);
        digitalWrite(In3, LOW);
        digitalWrite(In4, HIGH);
        Serial.println("b_foward!");
        delay(500);
}
void b_back()   //后退
{
        digitalWrite(In1, HIGH);
        digitalWrite(In2, LOW);
        digitalWrite(In3, HIGH);
        digitalWrite(In4, LOW);
        Serial.println("b_back!");
        delay(500);
}
void b_left()      //左拐弯
{
        digitalWrite(In1, HIGH);
        digitalWrite(In2, LOW);
        digitalWrite(In3, LOW);
        digitalWrite(In4, HIGH);
        Serial.println("b_left!");
        delay(1000);
}
void b_right()     //右拐弯
{
        digitalWrite(In1, LOW);
        digitalWrite(In2, HIGH);
        digitalWrite(In3, HIGH);
        digitalWrite(In4, LOW);
        Serial.println("b_right!");
        delay(2000);
}
void b_stop()      //停车
{
        digitalWrite(In1, LOW);
        digitalWrite(In2, LOW);
        digitalWrite(In3, LOW);
        digitalWrite(In4, LOW);
        Serial.println("b_stop!");
        delay(1000);
}

void b_distance()     //测障碍物距离
{
  digitalWrite(TrigPin, LOW);           //低高低电平发一个短时间脉冲去TrigPin
  delayMicroseconds(2);
  digitalWrite(TrigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin, LOW);

  cm = pulseIn(EchoPin, HIGH) / 58.0;   //将回波时间换算成cm
  cm = (int(cm * 100.0)) / 100.0;       //保留两位小数
}

boolean b_change_dir()    //前方是否有障碍物
{
  if(0 < (cm-distance))
    return false;
  return true;
}[/code]






代码里面有很多的版本,只要把卜用的注释,用的取消注释就好了。



作为学软件的人,把我使用模块的经验分享下。
L298N
javascript:;
因为驱动电机电流太大所以我们不能直接将电机的两个引线接到arduino板子上的两个数字脚上(假如可以的话,我举个例子:马达分别接数字脚6和7,6脚给高电平,7脚给低电平,马达就会转;6脚给低电平,7脚给高电平,马达就会反转,这样控制马达理解了吗?)。现在L298我们可以理解它就是一个桥梁,使arduino的驱动能力增加了。要使L298工作起来,必须供电(废话)。现在我们用个12V-9V的电源的正负分别接到“+12V供电”和“供电GND”。还要特别注意要与arduino共地!共地就是arduino的GND连接到“供电GND”,通道A、B使能那个跳帽不用拔掉。现在我们把数字脚6、7分别接到IN1,IN2,马达接线接到“输出A”。现在6脚给高电平,7脚给低电平,马达就会转;6脚给低电平,7脚给高电平,马达就会反转。我的L298就是这样驱动起来的。





推荐几个我觉得有意思的小制作吧!现在都处于我的想法阶段,东西都准备好了,我慢慢开发,主要还是能通过arduino来获取数据,我可以来开发PC机上软件了。

1.光立方。应为arduino端口的限制所以做个4*4*4的还是可以的。
2.四旋翼。在做好了2轮平衡小车的基础上,再去试着做
3.环境采集器。把和换进有关的传感器接好,然后通过SD卡模块将数据储存下来,通过PC机软件将数据图形化显示

后面我还会来发帖的,将成果分享下下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2013-4-29 20:21:45 | 显示全部楼层
一楼自己坐
回复 支持 反对

使用道具 举报

发表于 2013-4-29 21:07:12 | 显示全部楼层
三个轮啊,要MPU干嘛
回复 支持 反对

使用道具 举报

发表于 2013-4-29 21:35:29 | 显示全部楼层
L298一定要用9V~12V供电的吗?5V不行吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-29 22:23:42 | 显示全部楼层
ranqingfa 发表于 2013-4-29 21:07
三个轮啊,要MPU干嘛

拆掉万向轮,做平衡两轮
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-29 22:24:47 | 显示全部楼层
caodingguang 发表于 2013-4-29 21:35
L298一定要用9V~12V供电的吗?5V不行吗?

看你要带动的电机要多少V呗,我的小车套件电机是6V的
回复 支持 反对

使用道具 举报

发表于 2013-4-29 22:36:05 | 显示全部楼层
嗯,5V是逻辑电压,9V~12V是供给电机的电压
回复 支持 反对

使用道具 举报

发表于 2013-5-4 15:36:25 | 显示全部楼层
学习.
回复 支持 反对

使用道具 举报

发表于 2013-7-15 19:54:56 | 显示全部楼层
楼主,我刚接触小车,想做一个利用APC220的遥控小车,在电源供电问题上没想明白,电池电源是连在哪的?是给arduino供电,然后再从+5V引脚接出去给L298N,还是说电池电源连在L298N上,再从L298N的+5V输出给arduino供电?望解答,谢谢!~~~~
回复 支持 反对

使用道具 举报

发表于 2013-9-14 17:29:36 | 显示全部楼层
情谊永恒1992 发表于 2013-7-15 19:54
楼主,我刚接触小车,想做一个利用APC220的遥控小车,在电源供电问题上没想明白,电池电源是连在哪的?是给 ...

你要分别接到两块板的,L298N的5V是指输入端,从这端输入的电压不经三端稳压块。
回复 支持 反对

使用道具 举报

发表于 2014-4-18 09:56:55 | 显示全部楼层
请问杜邦线用什么规格的?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 15:46 , Processed in 0.051184 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表