微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 现打算做个用蓝牙控制的智能小车,蓝牙模块?

现打算做个用蓝牙控制的智能小车,蓝牙模块?

时间:10-02 整理:3721RD 点击:
现打算做个用蓝牙控制的智能小车,问题对蓝牙模块一无所知,跪求大神给个方向,如何自学,怎么起步?用的HC-06模块。

把指令先弄清楚

嗯, 谢谢

蓝牙发数据跟串口通信很像

蓝牙模块本身并不难,从机也可以没有什么指令,默认都可以使用。就当做一条无线串口,直接往里塞数据就可以。难得是上位机程序编程,是用手机控制呢,还是一样使用蓝牙模块做主机。如果是前者,那么你就要会手机蓝牙编程,如果是后者,就需要在主机端配对一下从机,使用AT指令,都非常简单!

就用HC-06就可以了,用那种透传的

        #include<at89x51.H>      #define Left_1_led        P3_4         //P3_2接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1         #define Left_2_led        P3_5         //P3_3接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2              #define Right_1_led       P3_6         //P3_4接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3         #define Right_2_led       P3_7         //P3_5接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4          #define Left_moto_go      {P1_0=1,P1_2=0;}    //左边1个电机向前走         #define Left_moto_back    {P1_0=0,P1_2=1;}         //左边一个电机向后转         #define Left_moto_Stop    {P1_0=0,P1_1=0;}    //左边一个电机停转                              #define Right_moto_go     {P1_4=1,P1_6 =0;}        //右边一个电机向前走         #define Right_moto_back   {P1_4=0,P1_6=1;}        //右边一个电机向后走         #define Right_moto_Stop   {P1_4=0,P1_6=0;}        //右边一个电机停转             #define left     'C'     #define right    'D'         #define up       'A'     #define down     'B'         #define stop     'F'            bit  flag_REC=0;          bit  flag    =0;                     unsigned char  i=0;         unsigned char  dat=0;     unsigned char  buff[5]=0; //接收缓冲字节       /************************************************************************/         //延时函数            void delay(unsigned int k) {          unsigned int x,y;          for(x=0;x<k;x++)             for(y=0;y<2000;y++); }  / /************************************************************************/ //前速前进      void  run(void) {               Left_moto_go ;   //左电机往前走          Right_moto_go ;  //右电机往前走 }  //前速后退      void  backrun(void) {               Left_moto_back ;   //左电机往前走          Right_moto_back ;  //右电机往前走 }  //左转      void  leftrun(void) {               Left_moto_back ;   //左电机往前走          Right_moto_go ;  //右电机往前走 }  //右转      void  rightrun(void) {               Left_moto_go ;   //左电机往前走          Right_moto_back ;  //右电机往前走 } //STOP      void  stoprun(void) {               Left_moto_Stop ;   //左电机往前走          Right_moto_Stop ;  //右电机往前走 } /************************************************************************/ void sint() interrupt 4          //中断接收3个字节 {        if(RI)                         //是否接收中断     {        RI=0;        dat=SBUF;        if(dat=='O'&&(i==0)) //接收数据第一帧          {             buff[i]=dat;             flag=1;        //开始接收数据          }        else       if(flag==1)      {       i++;       buff[i]=dat;       if(i>=2)       {i=0;flag=0;flag_REC=1 ;}  // 停止接收      }          } } /*********************************************************************/                  /*--主函数--*/         void main(void) {        P1=0x00;         TMOD=0x20;       TH1=0xFd;                     //11.0592M晶振,9600波特率     TL1=0xFd;     SCON=0x50;       PCON=0x00;      TR1=1;         ES=1;        EA=1;                       while(1)                                                        /*无限循环*/         {            if(flag_REC==1)                                    //            {                 flag_REC=0;                 if(buff[0]=='O'&&buff[1]=='N')        //第一个字节为O,第二个字节为N,第三个字节为控制码                 switch(buff[2])              {                       case up :                                                    // 前进                           run();                           break;                       case down:                                                // 后退                                           backrun();                           break;                       case left:                                                // 左转                                           leftrun();                           break;                       case right:                                                // 右转                                                    rightrun();                           break;                       case stop:                                                // 停止                                                   stoprun();                           break;               }                                                           }         } }                                           

还在用HC-06,建议选择有人物联网的蓝牙模块,主从一体、mesh组网、ibeacon功能,还可以支持微信控制 官网 usr.cn

刚开始可以学arduino学

顶起,值得好好学习!感谢小编

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top