查看: 11497|回复: 16

android 手机控制的arduino小车(PID调速)

[复制链接]
  • TA的每日心情

    2016-3-12 14:21
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2015-6-18 14:05 | 显示全部楼层 |阅读模式
    本帖最后由 Martinezou 于 2015-6-18 14:05 编辑

    最近自己尝试做了一个安卓手机控制的蓝牙无线小车(最近在研究PID调速,用matlab画出速度图像,调节PID参数),和大家分享一下,里面也有很多问题希望大家能帮忙指正。一.所需材料
    小车车体套装一套;
    hc-05蓝牙模块一个;
    串口转USB一个(最后有一个比较方便,没有也不要紧);
    L298N电机驱动芯片一块;
    测速模块两个;
    电子积木扩展版1个;
    arduino uno开发板一个;


    二.组装车体
    这个根据买到的小车套件参考图纸很快就可以安装好,在这里就不再细述了。三.电路原理图

    图片1.png


  • TA的每日心情

    2016-3-12 14:21
  • 签到天数: 10 天

    [LV.3]偶尔看看II

     楼主| 发表于 2015-6-18 14:11 | 显示全部楼层
    四.蓝牙模块调试
    hc-05是主从一体机,可以通过AT指令把模块设置为主模式。模块默认为从机,默认密码为1234.我用的安卓手机控制小车,以蓝牙模块为从机所以不用设置,接好线即可使用。
  • TA的每日心情

    2016-3-12 14:21
  • 签到天数: 10 天

    [LV.3]偶尔看看II

     楼主| 发表于 2015-6-18 14:14 | 显示全部楼层
    五.用arduino ide编写小车程序
    首先要装一个库函数,有了库函数,函数调用起来十分方便。
    #include<MsTimer2.h>
    #define Value 0.012
    int in1=9;
    int in2=7;
    //left
    int in3=5;
    int in4=6;
    //right
    char val;
    int r_wheel=0;
    int l_wheel=0;
    float r_speed=0;
    float l_speed=0;
    //float r_speed;
    //float l_speed;

    //r_wheel=0;
    //l_wheel=0;

    void flash()
    {
      float r_speed=Value*r_wheel;
      float l_speed=Value*l_wheel;
      Serial.print(r_speed);
      Serial.println("m/s(R)");
      Serial.print(l_speed);
      Serial.println("m/s(L)");
      r_wheel=0;
      l_wheel=0;
    }
    void setup()
    {
      pinMode(in1,OUTPUT);
      pinMode(in2,OUTPUT);
      pinMode(in3,OUTPUT);
      pinMode(in4,OUTPUT);
      Serial.begin(9600);
      attachInterrupt(1,RCount,FALLING);
      attachInterrupt(0,LCount,FALLING);
      digitalWrite(6,LOW);
      digitalWrite(5,LOW);
      digitalWrite(7,LOW);
      digitalWrite(9,LOW);
      MsTimer2::set(1000, flash);
      MsTimer2::start();
      
    }

    void loop()
    {
      
      if(Serial.available()>0)
      {
        val=Serial.read();
      
        if(val=='W')
         {
           Serial.println("go forward!");
           analogWrite(6,0);
           analogWrite(5,155);
           analogWrite(7,0);
           analogWrite(9,150);//award   
         }
         if(val=='S')
         {
           Serial.println("go back!");
           analogWrite(6,250);
           analogWrite(5,0);
           analogWrite(7,250);
           analogWrite(9,0);//back
         }
         if(val=='A')
         {
           Serial.println("turn left");
           analogWrite(6,0);
           analogWrite(5,250);
           analogWrite(7,0);
           analogWrite(9,180);
         }
         if(val=='D')
         {
            Serial.println("turn right");
            analogWrite(6,0);
            analogWrite (5,180);
            analogWrite (7,0);
            analogWrite(9,250);
         }
          if(val=='T')
         {
            Serial.println("stop");
            analogWrite(6,0);
            analogWrite(5,0);
            analogWrite(7,0);
            analogWrite(9,0);
         }
      }
    }
    void LCount()
    {
      l_wheel+=1;
    }
    void RCount()
    {
      r_wheel+=1;
    }
  • TA的每日心情

    2016-3-12 14:21
  • 签到天数: 10 天

    [LV.3]偶尔看看II

     楼主| 发表于 2015-6-18 14:16 | 显示全部楼层
    <MsTimer2.h>函数下载链接http://pan.baidu.com/s/1jG4Bo6E
  • TA的每日心情

    2016-3-12 14:21
  • 签到天数: 10 天

    [LV.3]偶尔看看II

     楼主| 发表于 2015-6-18 14:18 | 显示全部楼层
    接下来就是用app inventor编写手机app控制蓝牙小车了。由于笔记本除了一点小问题,稍后再把app程序图贴出来
  • TA的每日心情

    2016-3-12 14:21
  • 签到天数: 10 天

    [LV.3]偶尔看看II

     楼主| 发表于 2015-6-18 14:19 | 显示全部楼层
    下载一个手机蓝牙串口助手,通过蓝牙连接小车,给小车发送相应字符即可完成对小车的控制。

    该用户从未签到

    发表于 2015-6-22 16:26 | 显示全部楼层
    现在手机都有无线功能,使用无线模块呢
  • TA的每日心情

    2016-3-12 14:21
  • 签到天数: 10 天

    [LV.3]偶尔看看II

     楼主| 发表于 2015-6-22 23:24 | 显示全部楼层
    北纬36° 发表于 2015-6-22 16:26
    现在手机都有无线功能,使用无线模块呢

    对啊手机可以和蓝牙模块配对使用
  • TA的每日心情
    开心
    2016-5-14 20:28
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-12-5 21:03 | 显示全部楼层
    编译不通过啊
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    体验OneNET4.0,一起来拼开发板
    体验OneNET4.0,一起来拼
    一、 活动时间2019年04月09日-2019年6月30日 二、活动链接1.登录Arduino中文社区账
    用电阻式压力传感器(SEN0294)做一个简单的杯垫
    用电阻式压力传感器(SEN0
    “多喝开水”这句话在目前似乎已经成了一种戏谑的玩笑话,可是多喝水还是很有好处
    Arduino接欧姆龙编码器
    Arduino接欧姆龙编码器
    请问各位该欧姆龙的编码器如何接到arduino上,我需要接收此编码器脉冲计算电机走的
    教你如何自制一款遥控器,让你的项目变成遥控的!!!
    教你如何自制一款遥控器,
    自从上次制作了一块集成了电机驱动的最小板之后,我就发现现在市场上一块便宜且功能又
    新人有偿求助。。关于DS18B20温度传感器代码烧录时的错误
    新人有偿求助。。关于DS18
    我在学习DS18B20温度传感器时由于使用的是wifiduino出现了以下错误,求大佬指教[/bac
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表