久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 45583|回復: 67
打印 上一主題 下一主題
收起左側

基于51單片機的手機藍牙遙控小車設計(程序 元件清單 實物圖)

  [復制鏈接]
跳轉到指定樓層
樓主
本人一直想做一個遙控車,終于今天實現了,跟大家分享一下。

一、元件清單
1、某寶購買一個智能小車底盤(本人車是四驅的,因此有四個電機,兩塊亞克力板和一些配件螺絲)
2、L298n模塊  兩個(一個298控制兩個電機)
3、HC-06藍牙模塊
4、電池盒跟18650電池3個
5、單片機最小系統
6、杜邦線至少12根,當然越多越好
7、若干根導線(連接電機用的,以及電池盒連到L298N跟單片機)
二、制作過程
  首先,先去了解一下L298N的接線,我當時也是懵逼了好久,反正摸索著也會了,一般店家都有資料。然后是藍牙模塊的使用,拿到藍牙模塊后,有開發板的話(沒有就用單片機的燒錄器),先按照TXD接TXD,RXD接RXD,打開電腦的串口助手與藍牙構建通信,打開AT,發送AT指令集,比如設設波特率,改個名字,改個配對的密碼。但通過藍牙與單片機連接通信的時候,就是TXD接RXD了。最后一個就是,本人在接線的時候經常碰壁。比如,你以為接好的線他其實沒接好,根本沒通,還是拿萬用表B了才知道。
  因為本人忘了買電池盒,所以我是用12V的直流電接著的,導致遙控車拖著跟電線。
三、實物圖
(拖著跟電線以及充電寶供電的車  不過我沒通電)

資料內包括L298N的部分資料,以及藍牙的說明書(看AT指令集就好)和源程序。



app:


單片機源程序如下:
  1. /*手機藍牙遙控小車                APP可以在應用市場搜 藍牙串口助手
  2. 左轉右轉大概是90度   我的是四驅的,如果是只有一個l298N的話就把帶2的刪了
  3. pwm有十級變速*/


  4. #include <reg52.h>

  5. #define Left_moto2_pwm     P0_4           //接驅動模塊ENA        使能端,輸入PWM信號調節速度          左后輪
  6. #define Right_moto2_pwm    P0_5           //接驅動模塊ENB                                                                   右后輪
  7. #define Left_moto_pwm     P1_4           //接驅動模塊ENA        使能端,輸入PWM信號調節速度          左前輪
  8. #define Right_moto_pwm    P1_5           //接驅動模塊ENB                                                                   右前輪
  9. #define uchar unsigned char
  10. #define uint unsigned int

  11. sbit P0_4=P0^4;                 //定義P0_4
  12. sbit P0_5=P0^5;                 //定義P0_5
  13. sbit P1_4=P1^4;                 //定義P1_4
  14. sbit P1_5=P1^5;                 //定義P1_5

  15. /*電機驅動IO定義*/
  16. sbit IN1 = P1^2; //為1 左電機反轉         前輪
  17. sbit IN2 = P1^3; //為1 左電機正轉        前輪
  18. sbit IN3 = P1^6; //為1 右電機正轉         前輪
  19. sbit IN4 = P1^7; //為1 右電機反轉         前輪
  20. /*sbit EN1 = P1^4; //為1 左電機使能
  21.   sbit EN2 = P1^5; //為1 右電機使能        */

  22. sbit IN5 = P0^2; //為1 左電機反轉         后輪
  23. sbit IN6 = P0^3; //為1 左電機正轉         后輪
  24. sbit IN7 = P0^6; //為1 右電機正轉         后輪
  25. sbit IN8 = P0^7; //為1 右電機反轉         后輪
  26. /*sbit EN3 = P0^4; //為1 左電機使能         后輪
  27.    sbit EN4 = P0^5; //為1 右電機使能         后輪           */

  28. bit Right_moto_stop=1;          
  29. bit Left_moto_stop =1;               
  30. unsigned  int  time=0;               
  31. int pwm=1;

  32. #define left_motor_en                EN1 = 1        //左電機使能
  33. #define left_motor_stops        EN1 = 0        //左電機停止
  34. #define right_motor_en                EN2 = 1        //右電機使能
  35. #define right_motor_stops        EN2 = 0        //右電機停止

  36. #define left_motor2_en                EN3 = 1        //左電機使能   后       
  37. #define left_motor2_stops        EN3 = 0        //左電機停止          后
  38. #define right_motor2_en                EN4 = 1        //右電機使能   后
  39. #define right_motor2_stops        EN4 = 0        //右電機停止   后


  40. #define left_motor_go                IN1 = 0, IN2 = 1//左電機正傳
  41. #define left_motor_back                IN1 = 1, IN2 = 0//左電機反轉
  42. #define right_motor_go                IN3 = 1, IN4 = 0//右電機正傳
  43. #define right_motor_back        IN3 = 0, IN4 = 1//右電機反轉

  44. #define left_motor2_go                IN5 = 0, IN6 = 1//左電機正傳
  45. #define left_motor2_back        IN5 = 1, IN6 = 0//左電機反轉
  46. #define right_motor2_go                IN7 = 1, IN8 = 0//右電機正傳
  47. #define right_motor2_back        IN7 = 0, IN8 = 1//右電機反轉

  48. unsigned char pwm_val_left  =0;//變量定義
  49. unsigned char push_val_left =0;// 左電機占空比N/10
  50. unsigned char pwm_val_right =0;
  51. unsigned char push_val_right=0;// 右電機占空比N/10


  52. void delay(uint z)
  53. {
  54.         uint x,y;
  55.         for(x = z; x > 0; x--)
  56.         for(y = 114; y > 0 ; y--);
  57. }



  58. //藍牙初始化
  59. void UART_INIT()
  60. {
  61.         SM0 = 0;
  62.         SM1 = 1;//串口工作方式1
  63.         REN = 1;//允許串口接收                                                                                                                 
  64.         EA = 1;//開總中斷
  65.         ES = 1;//開串口中斷
  66.         TMOD = 0x20;//8位自動重裝模式
  67.         TH1 = 0xfd;
  68.         TL1 = 0xfd;//9600波特率
  69.         TR1 = 1;//啟動定時器1
  70. }

  71. /************************************************************************/
  72.      void  run(void)        //pwm調速函數
  73. {
  74.      push_val_left  =pwm;  //PWM 調節參數1-10   1為最慢,10是最快  改這個值可以改變其速度
  75.          push_val_right =pwm;         //PWM 調節參數1-10   1為最慢,10是最快         改這個值可以改變其速度
  76.                  if(pwm==10) pwm=0;
  77.                 if(pwm==0&&pwm<0) pwm=0;

  78. }


  79. /************************************************************************/
  80. /*                    PWM調制電機轉速                                   */
  81. /************************************************************************/


  82. /*                    左側電機調速                                        */
  83. /*調節push_val_left的值改變電機轉速,占空比            */
  84.                 void pwm_out_left_moto(void)
  85. {  
  86.    if(Left_moto_stop)
  87.    {
  88.     if(pwm_val_left<=push_val_left)
  89.              {  Left_moto_pwm=1;
  90.                     Left_moto2_pwm=1;  }
  91.         else
  92.               { Left_moto_pwm=0;Left_moto2_pwm=0;                 }

  93.         if(pwm_val_left>=10)
  94.         pwm_val_left=0;
  95.    }
  96.    else { Left_moto_pwm=0;Left_moto2_pwm=0;          }
  97. }
  98. /******************************************************************/
  99. /*                    右側電機調速                                  */  
  100.    void pwm_out_right_moto(void)
  101. {
  102.   if(Right_moto_stop)
  103.    {
  104.     if(pwm_val_right<=push_val_right)
  105.              {  Right_moto_pwm=1;
  106.                    Right_moto2_pwm=1;           }
  107.         else
  108.                {Right_moto_pwm=0;
  109.                     Right_moto2_pwm=0;}
  110.         if(pwm_val_right>=10)
  111.             pwm_val_right=0;
  112.    }
  113.    else    {Right_moto_pwm=0;Right_moto2_pwm=0;        }
  114. }
  115. /***************************************************/
  116. ///*TIMER0中斷服務子函數產生PWM信號*/
  117.         void timer0()interrupt 1   using 2
  118. {
  119.      TH0=0XF8;          //1Ms定時
  120.          TL0=0X30;
  121.          time++;
  122.          pwm_val_left++;
  123.          pwm_val_right++;
  124.          pwm_out_left_moto();
  125.          pwm_out_right_moto();
  126. }

  127. //小車前進
  128. void forward()
  129. {
  130.         ET0 = 1;
  131.         run();                          //pwm        程序
  132.         left_motor_go; //左電機前進
  133.         right_motor_go; //右電機前進
  134.         left_motor2_go; //左電機前進   后輪
  135.         right_motor2_go; //右電機前進         后輪
  136. }

  137. void left_go()           //左轉
  138. {
  139.         ET0 = 1;
  140.         run();
  141.         left_motor_back;
  142.         right_motor_go;
  143.         left_motor2_back;
  144.         right_motor2_go;
  145.         delay(700);
  146.         forward();
  147. }
  148. //右轉
  149. void right_go()
  150. {
  151.         ET0 = 1;
  152.         run();
  153.         delay(50);
  154.         right_motor_back;
  155.         left_motor_go;
  156.         right_motor2_back;
  157.         left_motor2_go;
  158.         delay(700);
  159.         forward();
  160. }
  161. //小車左轉圈
  162. void left()
  163. {
  164.         ET0 = 1;
  165.         run();
  166.         delay(50);
  167.         right_motor_go;                  //  右電機前進
  168.         left_motor_back;        // 左電機后退
  169.         right_motor2_go;                  //  右電機前進
  170.         left_motor2_back;        // 左電機后退
  171. }

  172. //小車右轉圈
  173. void right()
  174. {
  175.         ET0 = 1;
  176.         run();
  177.         left_motor_go;
  178.         right_motor_back;  
  179.         left_motor2_go;
  180.         right_motor2_back;
  181. }

  182. //小車后退
  183. void back()
  184. {
  185.         ET0 = 1;
  186.         run();
  187.         left_motor_back;
  188.         right_motor_back;       
  189.         left_motor2_back;
  190.         right_motor2_back;
  191. }

  192. //小車停止
  193. void stop()
  194. {
  195.         ET0 = 0;
  196.         P1=0;
  197.         P0=0;
  198. }

  199.   
  200. //串口中斷
  201. void UART_SER() interrupt 4
  202. {
  203.         if(RI)
  204.         {
  205.                 RI = 0;//清除接收標志
  206.                 switch(SBUF)
  207.                 {
  208.                         case 'g': forward(); break;//前進
  209.                         case 'b': back(); break;//后退
  210.                         case 'l': left(); break;//左轉圈
  211.                         case 'r': right(); break;//右轉圈
  212.                         case 's': stop(); break;//停止
  213.                         case 'z': left_go(); break;//左轉行駛
  214.                          case 'y': right_go(); break;//右轉行駛
  215.                         case 'p': pwm++;break;                //加速
  216.                         case 'c': pwm--;break;                //減速
  217.                 }

  218.         }
  219. }

  220. void main()
  221. {
  222.         TMOD=0X01;
  223.         TH0= 0XF8;                  //1ms定時
  224.         TL0= 0X30;
  225.         TR0= 1;
  226.         ET0= 1;
  227.         EA = 1;
  228.         UART_INIT();//串口初始化
  229.         while(1);
  230. }
復制代碼

所有資料51hei提供下載:
資料.zip (1.01 MB, 下載次數: 665)


評分

參與人數 2黑幣 +58 收起 理由
菜用雞 + 8 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏53 分享淘帖 頂20 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2019-1-18 02:14 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

板凳
ID:65956 發表于 2019-1-18 08:35 | 只看該作者
很不錯,我也曾作過,程序上面可作興趣的參考
回復

使用道具 舉報

地板
ID:471573 發表于 2019-1-22 16:56 | 只看該作者
很酷的哦!!!
回復

使用道具 舉報

5#
ID:335907 發表于 2019-2-22 09:54 | 只看該作者

我也是個小白,這是我的連接線路圖,我把前輪的L298N的ENA用跳線帽短接了。然后,后輪的L298N的ENB,拔掉跳線帽后有兩個插口,一個接P14,一個接P04。我也不知道正確的到底怎么接,反正這樣接它就能跑,還請大佬指點。
回復

使用道具 舉報

6#
ID:441855 發表于 2019-2-22 14:39 | 只看該作者
從下就對遙控小車很感興趣,正打算做一個呢,剛好又有樓主的資料作為參考,真是開心
回復

使用道具 舉報

7#
ID:462283 發表于 2019-3-2 13:08 | 只看該作者
哎,本初學者對你的程序有個問題,你的串口中斷函數那里,沒有 ES=0,然后ES=1;  會不會讓程序一直一直循環,我看了郭天祥的書上是這么說的
回復

使用道具 舉報

8#
ID:472506 發表于 2019-3-2 17:21 | 只看該作者
感興趣,準備做個玩下。
回復

使用道具 舉報

9#
ID:271725 發表于 2019-3-26 20:46 | 只看該作者
程序113行處有錯誤,而且后面也是相同的錯誤
回復

使用道具 舉報

10#
ID:335907 發表于 2019-4-21 21:46 | 只看該作者
不傷手的立白 發表于 2019-3-26 20:46
程序113行處有錯誤,而且后面也是相同的錯誤

請問具體是哪段程序?有什么樣的錯誤?能截個圖看看嗎?多謝
回復

使用道具 舉報

11#
ID:518387 發表于 2019-4-22 10:43 | 只看該作者
謝謝分享
回復

使用道具 舉報

12#
ID:518387 發表于 2019-4-22 10:45 | 只看該作者
厲害了 大兄弟
回復

使用道具 舉報

13#
ID:428211 發表于 2019-5-9 01:54 來自手機 | 只看該作者
怎么沒有app軟件呢??
回復

使用道具 舉報

14#
ID:522384 發表于 2019-5-11 15:45 | 只看該作者
請問怎么焊接呢?
回復

使用道具 舉報

15#
ID:546398 發表于 2019-5-24 17:02 | 只看該作者
感謝樓主分享 今年設計做的就是這個
回復

使用道具 舉報

16#
ID:483666 發表于 2019-5-31 22:01 | 只看該作者
51單片機和藍牙工作電壓都是5v,樓主你用12v,難道不會燒掉嗎
回復

使用道具 舉報

17#
ID:385250 發表于 2019-6-1 14:39 | 只看該作者
有沒有Proteus仿真圖
回復

使用道具 舉報

18#
ID:558327 發表于 2019-6-9 17:40 | 只看該作者
樓主您好~我們是要做一個實訓項目,內容是手機藍牙控制小車前進,不過不需要左轉、后退等功能,只要求前進和加速減速,我就把您的程序復制下來,把不需要的例如左轉、后退等功能程序刪掉了,留下了我需要的,然后編譯沒有錯誤,有一個警告L16,我就把程序燒進去了,我的單片機是89C52,藍牙模塊是HC-05,下載成功后,連接藍牙成功,用手機發送了前進的指令小車沒反應,沒有動,是什么原因呢?請大神指點~謝謝您!
回復

使用道具 舉報

19#
ID:483666 發表于 2019-6-11 23:32 | 只看該作者
cd2333 發表于 2019-6-9 17:40
樓主您好~我們是要做一個實訓項目,內容是手機藍牙控制小車前進,不過不需要左轉、后退等功能,只要求前進 ...

線接對沒有,指令設置正確沒有。都沒錯,你就細心檢查,你會發現你犯的是低級錯誤。。。
回復

使用道具 舉報

20#
ID:399732 發表于 2019-6-12 00:38 | 只看該作者
好東西,值得分享
回復

使用道具 舉報

21#
ID:575219 發表于 2019-6-30 20:53 | 只看該作者
厲害牛皮
回復

使用道具 舉報

22#
ID:584421 發表于 2019-7-19 19:30 | 只看該作者
cd2333 發表于 2019-6-9 17:40
樓主您好~我們是要做一個實訓項目,內容是手機藍牙控制小車前進,不過不需要左轉、后退等功能,只要求前進 ...

試著把字符型改為十六進制
回復

使用道具 舉報

23#
ID:606151 發表于 2019-9-3 16:04 來自手機 | 只看該作者
lll66666 發表于 2019-2-22 09:54
我也是個小白,這是我的連接線路圖,我把前輪的L298N的ENA用跳線帽短接了。然后,后輪的L298N的ENB,拔掉 ...

能留個聯系方式嗎?
回復

使用道具 舉報

24#
ID:316114 發表于 2019-9-4 10:35 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

25#
ID:74784 發表于 2019-9-15 12:41 | 只看該作者
沒有app~~~~~~~~~~~~
回復

使用道具 舉報

26#
ID:422924 發表于 2019-9-25 14:41 | 只看該作者
好帖感覺真新很棒
回復

使用道具 舉報

27#
ID:563554 發表于 2019-11-3 21:48 | 只看該作者
很棒,贊一個
回復

使用道具 舉報

28#
ID:635714 發表于 2019-11-5 13:13 | 只看該作者
您好,請問您的手機藍牙串口助手發送什么指令去控制小車?
回復

使用道具 舉報

29#
ID:441316 發表于 2019-11-8 16:52 | 只看該作者
atom52 發表于 2019-5-31 22:01
51單片機和藍牙工作電壓都是5v,樓主你用12v,難道不會燒掉嗎

l298N驅動電機 有個5v 輸出 應該是用這個給單片機供電 ,12v 接在 l298n上
回復

使用道具 舉報

30#
ID:617327 發表于 2019-11-8 21:09 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

31#
ID:639598 發表于 2019-11-11 11:52 | 只看該作者
好資料,51黑有你更精彩!!
回復

使用道具 舉報

32#
ID:594848 發表于 2019-11-13 18:51 | 只看該作者
lll66666 發表于 2019-2-22 09:54
我也是個小白,這是我的連接線路圖,我把前輪的L298N的ENA用跳線帽短接了。然后,后輪的L298N的ENB,拔掉 ...

樓主我知道你的問題了,你的L298n模塊沒有和單片機共地。系統的GND是參考電平,平常所說的IN1=1,IN2=0,這里的1和0是相對GND的,所以一定要連在一起(說明書上這么說的)。你如果用充電寶供電,要從單片機引一條地線出來和L298n的底線連在一起。
回復

使用道具 舉報

33#
ID:641276 發表于 2019-11-14 11:00 | 只看該作者
APP在壓縮包里嗎
回復

使用道具 舉報

34#
ID:639598 發表于 2019-11-14 16:03 | 只看該作者
資料已下載 謝謝
回復

使用道具 舉報

35#
ID:642652 發表于 2019-11-15 15:36 | 只看該作者
樓主,那個app就叫藍牙串口助手嗎?在哪里下載的
回復

使用道具 舉報

36#
ID:434366 發表于 2019-11-26 17:14 | 只看該作者
不錯 ,謝謝大佬,學習了!
回復

使用道具 舉報

37#
ID:651155 發表于 2019-11-27 21:18 | 只看該作者
有藍牙串口app的具體使用步驟就好了
回復

使用道具 舉報

38#
ID:637295 發表于 2020-1-9 16:33 | 只看該作者
謝謝大佬,學習了
回復

使用道具 舉報

39#
ID:691253 發表于 2020-2-9 00:33 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

40#
ID:722967 發表于 2020-4-5 20:23 | 只看該作者
cd2333 發表于 2019-6-9 17:40
樓主您好~我們是要做一個實訓項目,內容是手機藍牙控制小車前進,不過不需要左轉、后退等功能,只要求前進 ...

請問你解決了嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久最新 | 久久精品一区二区三区四区 | 人和拘一级毛片c | 国产区在线 | 天天天操 | 久久国产精品视频免费看 | 不卡的av在线 | 免费看爱爱视频 | 亚洲精品91 | 国产在线视频网 | v片网站 | 国产欧美精品一区二区色综合 | 色婷婷久久久久swag精品 | 国产精品国产三级国产aⅴ入口 | 亚洲精品视频二区 | 日本精品视频在线观看 | 2021狠狠天天天 | 日韩精品视频在线播放 | 亚洲成av人影片在线观看 | 精品久久久久久久久久久久久久 | 日韩精品人成在线播放 | 狠狠夜夜 | 欧美在线成人影院 | 精品毛片 | 国产精品毛片在线 | 不卡一二三区 | 国产午夜精品一区二区三区嫩草 | 欧美日韩在线精品 | 黄色国产在线视频 | 成人蜜桃av | 欧洲亚洲精品久久久久 | 黄色电影在线免费观看 | 久久久久久久久久久91 | 久久国内精品 | 欧美成人激情 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 成人免费共享视频 | 精品网| 日本aaa视频 | 成人亚洲网站 | 精品99在线 |