精华内容
下载资源
问答
  • arduino蓝牙小车教程

    2016-03-08 15:32:49
    零基础,一步一步学会基于arduino的蓝牙小车DIY
  • 上次给大家讲解了蓝牙小车的硬件部分,这次给大家讲解蓝牙小车的程序部分。这里说的程序部分指的是单片机的程序,关于安卓app的编写下次继续教大家。        总的来说,我们常用的蓝牙模块,如...

           上次给大家讲解了蓝牙小车的硬件部分,这次给大家讲解蓝牙小车的程序部分。这里说的程序部分指的是单片机的程序,关于安卓app的编写下次继续教大家。
           总的来说,我们常用的蓝牙模块,如hc05采用的是串口通讯协议。串口通讯是初学者面对的比较重要的知识点 ,也是单片机比较基础的通讯协议,所以建议大家好好理解一下。蓝牙小车的程序其实就是51单片机串口接收数据的程序,它的工作原理是安卓手机和蓝牙模块配对连接后,安卓手机采用串口发送制定的字符,单片机按照串口通讯协议接收该字符后,判断接收的字符是否是小车行动指令,来控制驱动信号线高低电平,进而控制小车的前进与转弯。
           下面就是51单片机串口接收数据的程序,希望可以给大家带来思路

    #include<reg52.h>//声明头文件
    
    #define uchar unsigned char//宏定义
    
    #define uint unsigned int//宏定义
    
    uchar a=0;//定义一个变量a,用来读取串口的数据
    
    void delay(uint z)//一个带参数的延时程序
    
    {
    
    int i,j;//定义两个变量
    
    for(i=10;i>0;i--)
    
    for(j=z;j>0;j--);//将参数z赋值给j
    
    }
    
    void init()//初始化子程序
    
    {
    
    TMOD=0x20; //设置定时器T1为工作方式2
    
    TH1=0xfd;
    
    TL1=0xfd; //T1定时器装初值
    
    TR1=1; //启动定时器T1
    
    REN=1; //允许串口接收
    
    SM0=0;
    
    SM1=1; //设置串口工作方式1
    
    EA=1; //开总中断
    
    ES=1; //开串口中断
    
    }
    
    void main()//主程序
    
    {
    
    init();//调用初始化子程序
    
    while(1)//死循环
    
    {
    
    switch(a)//判断a从串口读取到的数据
    
    {
    
    case 0001://如果是0x1f就前进
    
    P2=0x01;
    
    break;
    
    case 0002://如果是0x2f就后退
    
    P2=0x02;
    
    break;
    
    case 0003://如果是0x3f就左转
    
    P2=0x04;
    
    break;
    
    case 0004://如果是0x4f就右转
    
    P2=0x0f;
    
    break;
    
    case 0x05://如果是0x00就停止
    
    P2=0xf0;
    
    break;
    
    }
    
    }
    
    }
    
    void chuan() interrupt 4//串口中断服务程序
    
    {
    
    RI=0;//软件清除串口响应
    
    a=SBUF;//读取单片机串口接受的蓝牙模块发送的数据
    
    }
    
    展开全文
  • 近日,由于社团招新,做了一个好玩的东西,手机app控制的蓝牙小车。这个可是我一直以来的梦想,没有什么太大的难度,大家喜欢的可以自己做一个。下面介绍一下这个小车。 1、车体部分:车体部分用的之前比赛用过的一...

           近日,由于社团招新,做了一个好玩的东西,手机app控制的蓝牙小车。这个可是我一直以来的梦想,没有什么太大的难度,大家喜欢的可以自己做一个。下面介绍一下这个小车。
    L298N驱动
    1、车体部分:车体部分用的之前比赛用过的一个圆形车体,加上一个L298N驱动。上图是使用方法说明。电源接线有一个简单的方法:把12v和5v接到一起,然后输入5v电源正极。负极接电源地。然后拔出半载5v使能。当然有标准的接线方式,这里就不说了。感兴趣的私聊我。AB通道使能可以不接。
    2、电路部分:采用51单片机做控制芯片,RXD,TXD,VCC,GND,4根线接出,连接HC-05蓝牙模块。P0口输出两根线接LED灯和蜂鸣器。P1口引出4根线连接驱动信号输入。然后用一根废弃数据线,做电源供电。电路图应该很简单。
    小车
    3、程序思路:51单片机蓝牙串口读取数据,判断不同数据执行不同的命令。手机app发送串口数据。
    手机app

    展开全文
  • cc2530 PWM 蓝牙 小车

    千次阅读 2019-02-27 15:50:19
    diy小车一台(包括直流电机、亚克力车版、L298驱动模块等) 手机端下载 SPP蓝牙串口助手   源代码: #include &lt;ioCC2530.h&gt; #define LED P1_1 //该管脚为TIMER1的1通道 #define in1 P1_2 #...

    实验准备:

    1. cc2530开发板,hc-05蓝牙模块
    2. diy小车一台(包括直流电机、亚克力车版、L298驱动模块等)
    3. 手机端下载 SPP蓝牙串口助手

     

    源代码:

    
    #include <ioCC2530.h>
    	
    #define LED P1_1 //该管脚为TIMER1的1通道
    #define in1 P1_2
    #define in2 P1_3
    #define in3 P1_4
    #define in4 P1_5
    
    extern void timer1_init(void);
    extern void change_duty(unsigned char duty);
    
    //延时函数   *****************************/   
    void Delayms(int xms)   //i=xms 即延时i毫秒  
    {  
    int i,j;   
    for(i=xms;i>0;i--)  
         for(j=587;j>0;j--);   
    } 
    
    void up (void)         
    {
      in1=1;
    in2=0;
    in3=1;
    in4=0;
    } //小车向前
    
    void down (void) 
    {
    in1=0;
    in2=1;
    in3=0;
    in4=1;
    }
    //小车向后
    void stop (void)   
    {
    in1=1;
    in2=1;
    in3=1;
    in4=1;
    } //小车停止
    void turn_right (void) {
    in1=1;
    in2=0;
    in3=1;
    in4=1;
    } //小车原地向右
    void turn_left (void)  {
    in1=1;
    in2=1;
    in3=1;
    in4=0;
    }
    //小车原地向左 
    
    
     void initUARTtest()
     {
      CLKCONCMD &= ~0x40;//设置时钟晶振为32MHZ
      while(!(SLEEPSTA & (1<<6))); /*等待晶振稳定*/  
      CLKCONCMD &= ~0x07;/*时钟不分频*/    
        PERCFG = 0x00;//使用备用位置1 P0口    
        P0SEL = 0x0C;//P0用作外设:串口?
        P2DIR &= ~0XC0; //串口0优先级最高?
        U0CSR |= 0xC0;   //UART方式   
        U0GCR = 8;       
        U0BAUD |=59; //设置波特率9600
          UTX0IF = 0; //串口0发送中断标志清零?
    URX0IE=1;
    }
    
    
    void PortInit()
    {
      P1DIR |=(1<<2);    //P1_2为输出            
      P1DIR |=(1<<3);         //P1_3为输出 
      P1DIR |=(1<<4);         //P1_4为输出 
      P1DIR |=(1<<5);         //P15为输出 
      
      P1SEL &=~(1<<2);    //p1_2为普通io                    
      P1SEL &=~(1<<3);        //p1_3为普通io 
      P1SEL &=~(1<<4);        //p1_4为普通io  
      P1SEL &=~(1<<5);        //p1_5为普通io 
     
    }
    
    char uart0_receive_byte(void) //接受蓝牙指令  
    {
      while(URX0IF == 0);
      URX0IF = 0;
      return U0DBUF;
    }
    
    
    
    void timer1_init(void)
    {  
      //timer1的计数频率为1000000Hz
      //在正/倒计数模式下,初始化计数值以产生1/72 秒的定时周期:T=(T1CC0+1)*2*(1/计数频率)
      //T1CC0=6943;
      
      T1CC0L=6943&0XFF;
      T1CC0H=6943>>8;  
      
      PERCFG|=1<<6;
      P2SEL|=1<<3;
      
     P1SEL|=1<<1;  
      
       P0SEL|=1<<7;
        P0SEL|=1<<6;
        P0DIR|=1<<7;
        P0DIR|=1<<6;
      
      T1CCTL1&=~(1<<3);
      T1CCTL1|=((1<<2)|(1<<4)|(1<<5));
      
       T1CCTL4&=~(1<<3);
      T1CCTL4|=((1<<2)|(1<<4)|(1<<5));
        
       T1CCTL3&=~(1<<3);
      T1CCTL3|=((1<<2)|(1<<4)|(1<<5));
       
      T1CTL|=0X3;
    }
    
    
    void change_duty(unsigned char duty)
    { 
      unsigned int t1cc1;
      unsigned int maxvalue;
      int low,high;
      low=T1CC0L;
      high=T1CC0H;
      maxvalue=low|(high<<8);
      t1cc1=maxvalue-(int)((float)duty*(maxvalue+1)/5.0);
      T1CC1L=t1cc1&0xff;
      T1CC1H=t1cc1>>8;
      
    }
    
    void change_duty2(unsigned char duty)
    { 
      unsigned int t1cc1;
      unsigned int maxvalue;
      int low,high;
      low=T1CC0L;
      high=T1CC0H;
      maxvalue=low|(high<<8);
      t1cc1=maxvalue-(int)((float)duty*(maxvalue+1)/5.0);
      T1CC4L=t1cc1&0xff;        //通道4 P0_6
      T1CC4H=t1cc1>>8;
      
    }
    
    void change_duty3(unsigned char duty)
    { 
      unsigned int t1cc1;
      unsigned int maxvalue;
      int low,high;
      low=T1CC0L;
      high=T1CC0H;
      maxvalue=low|(high<<8);
      t1cc1=maxvalue-(int)((float)duty*(maxvalue+1)/5.0);
      T1CC3L=t1cc1&0xff;        //通道3 P0_7
      T1CC3H=t1cc1>>8;
      
    }
    void InitLed(void)  
    {  
    
    LED = 0;       //LED2灯熄灭  
    P0_7=0;
    P0_6=0;
    
    }  
    
    
    void main()
    {
    initUARTtest();
     InitLed();   
    timer1_init();
      PortInit();  
    /*  
      while(1)  
      {
        char buf=uart0_receive_byte();
         if(buf=='A')
        up();
      
      }    */
      
     while(1)
      {
         char buf=uart0_receive_byte();
          if(buf>='0'&&buf<='9')
          {
          change_duty(buf-'0');
          change_duty2(buf-'0');
            change_duty3(buf-'0');
          }
          
          
         // if(buf=='A'||buf=='B'||buf=='C'||buf=='D'||buf=='E')
         
         else {
          
        switch(buf)
        {
          
          case 'A': 
            up();
            break;
          case 'B':  
            down();
            break;
          case 'C':
            turn_left();
            break;
          case 'D':
            turn_right();
            break;
          case 'E':
            stop();
            break;  }
        
          }
          
      }  
    }
    

     

    展开全文
  • 蓝牙遥控小车主要用到的主板:一个mega32u4带两路直流电机驱动的整合开发板:Mboard。资料包里包含了Mboard原理介绍和蓝牙小车代码代码。 原理图截图:
  • 蓝牙遥控小车

    2013-06-08 09:41:16
    电子设计大赛 参赛 作品 蓝牙遥控小车 包含 准备过程中收集的资料
  • 上节内容给大家介绍了蓝牙模块的用法、小车程序设计以及制作手机APP,相信对于大家来说还是比较简单的。*上节文章《蓝牙遥控小车(上)》本节内容会给大家讲解剩下的硬件部分的使用和设计,话不多说,直接开始我们今天...

    上节内容给大家介绍了蓝牙模块的用法、小车程序设计以及制作手机APP,相信对于大家来说还是比较简单的。

    *上节文章《蓝牙遥控小车(上)

    本节内容会给大家讲解剩下的硬件部分的使用和设计,话不多说,直接开始我们今天的内容。

    单片机最小系统

    想当初我刚把51单片机学完的时候,什么都还不太会,没有自己动手设计过东西,只知道在开发板上下载程序的时候接上线就行了,但是不清楚DIY的时候要怎么给单片机下载程序,恰巧当时自己喜欢的女孩儿想要我帮忙做个小设计,我也只能在网上找了一个附带电路的设计来做,花了些时间还没有成功,别提多尴尬了......

    后来才明白想要让单片机能够启动起来、下载程序是需要焊接单片机最小系统的,有了最小系统才能正常工作,我们直接来看一下电路图吧。

    09911f4e46f81e23ddefe4ceb23fc393.png

    这里红色框里的是晶振电路,也就是时钟电路,这个是整个系统的核心,是必不可少的,“Y2”就是晶振,我们开发板上使用的是11.0592MHz的晶振,两者没太大区别,旁边的两个30pF的瓷片电容在这里又叫起振电容,为的就是在上电时能让晶振快速启动。蓝色框里的是复位电路,通过这样的设计每次按下S1按键时,单片机会被复位,复位电路我一般情况下不用,只焊接出一个晶振电路。

    (焊接时,把VCC、GND以及使用到的引脚用排针引出来,方便后续接线)

    CH340

    fef93e921d310c3ae6ff2456c067d2e8.png

    这个小东西用来给单片机下载程序,5V接单片机VCC,GND接单片机GND,TXD接单片机RXD,RXD接单片机TXD,接好以后插在电脑USB口上就可以像平时给开发板一样的下载程序啦,这里有一点要注意:CH340是冷启动的,也就是说下载软件选好型号、串口、程序,点击了“下载/编程”以后要给单片机断一下电再供电程序才能正常下载进去哦~

    电机驱动模块—L298N

    152ffbadb69c86636dd1c93bb7d9133e.png

    • +12V供电:接在电池正极,最大可接受12V电压。

    • 供电GND:接在电池负极。

    • +5V供电:输出5V电压,可用于单片机、蓝牙模块等供电使用。

    • 逻辑输入:用杜邦线接在单片机IO口上,IO输出到这里的高低电平会直接控制“输出A”和“输出B”。

    • 输出A、输出B:输出电平由逻辑输入控制,这里接直流电机。

    还记得上节讲的控制电机转向的那部分代码吧,代码中位定义出的引脚就是要接在逻辑输入中的,具体的引脚位定义以及高低电平的设置要根据大家自己的接线情况来确定。(代码中的四个逻辑输入分别接在了P1^4、P1^5、P1^6、P1^7引脚)

    直流电机、车轮、万向轮

    9e4bc9780e84f0e4898c4745fddebe39.png

    这些就很简单啦,两个直接电机安装上轮胎按照前边讲的方式接好,万向轮找一个类似的就好,固定在底盘后边,和轮胎形成个三角形就好啦。

    自锁开关

    a42ac401cc847446b30e13f51a6020c5.png

    这种开关有两排引脚,每排有3个,中间那是是公共端,我们焊接的时候只需要焊接两个引脚就好啦,可以使用红色框里的或者蓝色框里的两个引脚(一个是按下接通,另一个是松开接通)我们可以将电源正极线截成两截分别焊接在两个引脚上,断开时不供电,接通时供电。

    锂电池—18650(14500)

    33ba681157b43f3940c12d73ef01dac8.png

    两种电池虽说标定都是3.7V的锂电池,但电压是跟随电量变化的,在满电的情况下可达到4.2V左右(放电最好不要到3.3V以下、充满电以后要及时拿下来,因为过度放电和过度充电都会损坏电池),我们使用两块串联(8V左右)即可正常供电(使用三块也可以,相比之下跑起来比较快),14500大小就相当于我们平时使用的5号电池,18650相对于14500来说体积较大,但相应的储存电量一般也比14500大,这里大家可以根据情况自行选择。(别忘了选择对应大小的电池盒哦)

    我们可以使用塑料板或者木板切割出一块类似于下图这样的底盘(可以把形状做的比这个好看一点)把直流电机、轮胎、万向轮、电池盒按照图中的方式固定起来。

    (图片是网上找的,电池、最小系统等地方可能跟我们说的不太一样,请大家见谅)

    c9256698c84bffafc634b93da006b11f.png

    使用一块大小适中的洞洞板,按照单片机最小系统原理图将电路焊接好(记得焊接一个四孔的排母,方便插蓝牙模块,焊接时要看好蓝牙模块的引脚,以免插上以后不能正常工作,别忘了蓝牙模块的TXD接在单片机RXD、RXD接在单片机TXD),然后直接或者加上铜柱固定在底盘上,把电机驱动固定在底盘前端,剩下的就是接线啦,电池的正极通过自锁开关后接在电机驱动+12供电,负极接在GND,+5V供电引出来为单片机以及蓝牙模块供电,对应的引脚都接好,如下图(红色框里的模块没有用到,我们不用管它)

    1a481c27be01fb609e49f284d8cd1bfe.png

    好的,到这里就差不多完成了,只需要使用CH340将我们的程序下载进去调试就可以啦,需要注意的是,在下载程序时需要将蓝牙模块先拔下来,因为51单片机只有一个串口,插着蓝牙时,蓝牙会占用串口导致程序下载不进去。

    结  语

    这样一来是不是觉得蓝牙遥控小车做起来也挺简单的呢?大家可以动手试一下,提高一下自己的动手能力,千万不要像我当时一样只会纸上谈兵,有什么不明白的地方可以直接滴滴我哦~

    今天的内容就先到这里啦,期待大家的成品。

    更多蓝桥杯文章

    蓝桥杯·单片机竞赛备赛之蓝牙遥控小车(上)

    蓝桥杯·单片机竞赛备赛之串口通信(下)

    蓝桥杯·单片机竞赛备赛之串口通信(上)

    蓝桥杯·单片机竞赛备赛之定时器

    蓝桥杯·单片机竞赛备赛之外部中断

    蓝桥杯·单片机竞赛备赛之机械按键

    cc473f46352276b9b28cbfff973d2527.gif8c80ec02570b54e9681bc3d3d6223c1a.png扫码入群扫码添加管理员微信

    加入“电子产品世界”粉丝交流群

    ↓↓↓↓点击,参与交流讨论

    展开全文
  • 1.实验目的 1.学习在PC机系统中扩展简单I/O接口的方法。 2....所需元器件 TPYBoard板子一块 蓝牙串口模块一个 L298N电机驱动板模块一个 智能小车底盘一个 数据线一条 杜邦线若干 3.蓝牙...
  • 最近用51单片机写了一个最简单的蓝牙遥控智能小车,基本上榨干了51单片机的资源,用了定时器T1作为波特率发送器编写串口打印程序,接收串口蓝牙接收的信息产生中断,并且写了一个串口打印函数send()作为单片机操作...
  • 无需编程_DIY自己智能小车的Android蓝牙遥控软件
  • 需要模块:1.STC89C52RC单片机+最小系统2.HC06蓝牙从机模块3.L298电机驱动模块4.电源(7v)5.电机+车轮以上都可以在淘宝上购买的到。不过建议DIY的同志还是自己买单个原件焊接,比较有学习意义。第一步——车体小车...
  •  (3)led指示蓝牙连接状态,闪烁表示没有蓝牙连接,常亮表示蓝牙已连接并打开了端口,当我们用安卓手机软件发送指令时,通过串口给TPYBoard发送指令,TPYBoard收到指令通过L298BN模块来驱动小车前进,后退,向左,向...
  • 角度环,速度环,转向环控制,可以蓝牙遥控
  • 蓝牙履带小车 拆解

    2017-02-21 20:02:38
    蓝牙履带小车DIY         不知为何,与轮式相比,对履带情有独钟,毕业到现在已经大半年了,今天收拾东西,发现了大学时的旧物,一些开发板和模块,乘着现在还知道怎么使用,做一个可以把玩的小作品吧。 ...
  • 无需编程,DIY自己智能小车的Android蓝牙遥控软件(一很多热衷于玩单片机小车机器人的童靴,往往也向往着有天能自己编写一个Android手机的遥控程序,通过自己的手机遥控小车,单片机程序用C语言或者汇编什么的都可以容易...
  • 基于STM32的自平衡小车DIY

    千次阅读 多人点赞 2021-01-19 19:27:06
    灵感来源 那年暑假,我刚加入机器人队,队长为我们所有人安排了暑期集训任务,就是要做一台自平衡小车,借此熟悉一下STM32,对机器人软硬件...DIY全过程 最初我有过一个大胆的想法:小车的软硬件全部自己设计。但是.
  • DIY智能小车

    2014-08-31 09:50:32
    这需要在你的电脑上能够运行Java ,目前官方更新到了Java 7,如果没有安装的话,可以在Oracle官方网站上去下载
  • 此模式可以利用遥控器完成模式的选择和小车前进后退等驱动功能,模式选择放在最后MERGE部分进行介绍。通讯协议直接用的YFRobot工作室写好的,方便实用,自己其实只需要会用就OK啦。通讯协议部分的程序这里就不贴啦,...
  • 蓝牙 履带小车 制作

    2017-02-20 22:19:40
    蓝牙履带小车DIY 成品图: 毕业到现在已经大半年了,今天收拾东西,发现了大学时的旧物,一些开发板和模块,乘着现在还知道怎么使用,做一个可以把玩的小作品吧。 硬件...
  • 蓝牙增程小车难度指数:⭐⭐⭐适合年龄:9岁+简介蓝牙作为短距离通信,它的距离往往都在100米以内(什么?可以到100米,只是不同协议罢了),而常用的15米,蓝牙的优先暂时抛一边,单纯距...
  • 历时一个多星期,在繁重的作业中挤出的时间学习arduino,说实话我也不知道为什么想做这个,...diy小车框架。以及电池盒。开关。到货。看着这些东西啥也不懂一脸懵。经过一点小犹豫决定先从arduino开始学起。 就这样...
  • 小编这次打算做arduino多功能智能小车~首先,为啥选择arduino电路板?这个是由于小编还没学过单片机啊~还没有弄过其他的,比如stm32单片机。因为这些学习起来,对于初学者来说,比较困难,需要花时间。而arduino入门...
  • 本人为软件工程专业,硬件不是本专业的学习范畴,因为本人对硬件感兴趣,自学了部分51单片机知识,这个小车是20年上半年因为疫情被困在家中突发奇想做的,现在有空闲时间就想着写一篇博客,分享给同样对硬件感兴趣的...
  • DIY手机遥控小车

    千次阅读 多人点赞 2016-07-31 17:02:55
    最近一位朋友的孩子在视频网站看到了手机遥控小车,喜欢的不得了,缠着小疯的朋友做一个。可是小疯的朋友早就把这些知识还给大学老师了,哪里做的出来哦。于是来向小疯求助。小疯花了一些时间,动手做了一个手机遥控...
  • 很多热衷于玩单片机小车、机器人的童靴,往往也向往着有天能自己编写一个Android手机的遥控程序,通过自己的手机遥控小车,单片机程序用C语言或者汇编什么的都可以容易完成,,无奈要写一个上位机的Android控制程序...
  • Block Editor里面各类模块代表的意义:...向前按钮、向后按钮、向左、向右、………,哦,不要这样吧,试一试手机的重力感应功能,通过手机体态传感器来控制小车显然比按按钮更酷一些。   简要流程图: 我的手机

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 197
精华内容 78
关键字:

蓝牙小车diy