2022-4-19 14:18:15 [显示全部楼层]
13569浏览
查看: 13569|回复: 15

远距离遥控小车

[复制链接]
本帖最后由 gada888 于 2022-4-19 14:32 编辑

做了个小车。游戏手柄控制,远距离遥控。除了能用遥杆控制小车的左右转和前进,停止外,还能通过遥控扩展板上的那四个按钮控制一个伺服,一个镭射灯和额外两个马达。这个小车是外表和普通小车差不多,但是本意是做个Tank的。之所以还不是Tank。是因为炮塔因为各种原因还没到货。而代码是写来驱动Tank的。这个贴文讲小车的基本功能。遥杆的上是前进,下是停止,左是左转,右是右转。而开炮部分不做解释。有兴趣的可以看看代码。里面都涵盖了。

问:为什么用HC12遥控模块。
因为这个模块控制的距离远达1KM.
问:为什么用遥控扩展模块而不是蓝牙什么的
因为1.不用担心掉在地上摔坏,2,提供了足够多的8个按键。


远距离遥控小车图1



一-先奉上照片一览
全家福
远距离遥控小车图2
发射端的帅照
远距离遥控小车图3
接收端的帅照
远距离遥控小车图4

二-硬件清单
序号 产品名称 数量 备注和链接
1 Arduino uno 1 远距离遥控小车图5
2 arduuino nano 1 远距离遥控小车图6
3 nano扩展板 1 远距离遥控小车图7
4 HC12 2 远距离遥控小车图8
5 小车底盘 1 远距离遥控小车图9
6 L298N电机驱动 1 远距离遥控小车图10
7 joystick module 1 远距离遥控小车图11
8 36CM车轮2 远距离遥控小车图14
9 小车前轮 1 远距离遥控小车图13
10 直流电机 2 远距离遥控小车图12
11 7.4V锂电池 2 远距离遥控小车图15
三-下面重点说一下无线模块

远距离遥控小车图16
远距离遥控小车图17
远距离遥控小车图18
远距离遥控小车图19
远距离遥控小车图20
远距离遥控小车图21
重点:HC12因为是串口模块。调试其实很方便。发射端手动发射信号时候,你观察接收端主控,我这里是arduino nano。主控的信号led会亮。这就表示接受到了信号。我没使用AT指令,嫌麻烦。

四-接线图

1.发射端接线图
远距离遥控小车图22
2.接收端接线图
远距离遥控小车图23

五,代码部分。
代码内容只是对重点部分有做了注释,虽然两段代码一共200多行。但其实涵盖很多基础内容。堪称一个项目半本书。

远距离遥控小车图24

发射端代码
  1. /*这个炮车程序由gada888于2022-04-18原创首发于DFRobot论坛,如需转载请注明来源。谢谢*/
  2. #define joyX A0
  3. #define joyY A2
  4. int up_button     = 2; // btn- A
  5. int down_button   = 4; // btn - C
  6. int left_button   = 5; // btn - D
  7. int right_button  = 3; // btn - B
  8. int xValue = 0;
  9. int yValue = 0;
  10. int Value = 0;
  11. int buttons[]={up_button, down_button,left_button,right_button};
  12. //=============RUN ONCE AREA==========
  13. void setup()   
  14. {
  15.    for(int i; i <4 ; i++)
  16.      {
  17.       pinMode(buttons[i],INPUT);
  18.       digitalWrite(buttons[i],HIGH);  
  19.      }
  20.   Serial.begin(9600);
  21. }
  22. //==========LOOPING AREA==============
  23. void loop()  
  24. {
  25. int xValue = analogRead(joyX);
  26. int yValue = analogRead(joyY);
  27.    if (xValue < 10)
  28.   {
  29.    Serial.write(45);
  30.    delay(500);
  31.   }
  32.     if (xValue > 1000)
  33.   {
  34.     Serial.write(46);
  35.     delay(500);
  36.   }
  37.   if (yValue < 10)
  38.   {
  39.     Serial.write(47);
  40.     delay(500);
  41.   }
  42.   if (yValue > 1000)
  43.   {
  44.     Serial.write(48);
  45.     delay(500);
  46.   }
  47.    if(digitalRead(up_button)==LOW){
  48.     Serial.write(49);
  49.     delay(500);
  50.    }
  51.    if(digitalRead(down_button)==LOW)
  52.    {
  53.     Serial.write(50);
  54.     delay(500);
  55.    }
  56.    if(digitalRead(left_button)==LOW)
  57.    {
  58.     Serial.write(51);
  59.     delay(500);
  60.    }
  61.    if(digitalRead(right_button)==LOW)
  62.    {
  63.     Serial.write(52);
  64.     delay(500);
  65.    }
  66.   }
复制代码
接收端代码
  1. /*这个炮车程序由gada888于2022-04-18原创首发于DFRobot论坛,如需转载请注明来源。谢谢*/
  2. #include<Servo.h>
  3. //定义用于控制引脚的引脚,IN_1,IN_2以及IN_3,IN_4分别是电机1和电机2的正反转脚。
  4. int IN_1 = 4;
  5. int IN_2 = 5;
  6. int IN_3 = 6;
  7. int IN_4 = 7;
  8. const int laserPin = 8;
  9. const int gun1Pin = 10;
  10. const int gun2Pin = 11;
  11. Servo esc;
  12. int byteRead;
  13. //==========RUN ONCE AREA=========
  14. void setup() {
  15.   esc.attach(9);
  16.   pinMode(IN_1, OUTPUT);
  17.   pinMode(IN_2, OUTPUT);
  18.   pinMode(IN_3, OUTPUT);
  19.   pinMode(IN_4, OUTPUT);
  20.   pinMode(laserPin, OUTPUT);
  21.   pinMode(gun1Pin, OUTPUT);
  22.   pinMode(gun2Pin, OUTPUT);
  23.   Serial.begin(9600);      // start Serial
  24.   //delay(3000);
  25. }
  26. //==========RUN FOREVER AREA============
  27. void loop() {
  28. while(Serial.available()) {        // If Serial module has data
  29.     byteRead = Serial.read();
  30.       Serial.print(byteRead);   //data to Serial monitor
  31.     if (byteRead==45) { //received number 1
  32.       motorB('L');
  33.     }else if (byteRead==46){
  34.       motorB('R');
  35.     }else if (byteRead==47){
  36.       motorB('P');
  37.     }else if (byteRead==48){
  38.       motorB('F');
  39.     }else if (byteRead==49){
  40.      esc.write(90);
  41.      delay(500);
  42.     }else if (byteRead==50){
  43.      digitalWrite(laserPin, HIGH);
  44.     }else if (byteRead==51){
  45.      digitalWrite(laserPin, LOW);
  46.     }else if (byteRead==52){
  47.      digitalWrite(gun1Pin, HIGH);
  48.      digitalWrite(gun2Pin, HIGH);
  49.      delay(500);
  50.    }
  51. }
  52. }
  53. //==========FUNCTION AREA=================
  54. void motorB(char d){
  55.     if(d =='L'){
  56.     // Turn left motor on
  57.       digitalWrite(IN_1, HIGH);
  58.       digitalWrite(IN_2, LOW);
  59.     }
  60.     else if(d =='R'){
  61.     // Turn right motor on,这里实际应该用电机2做右转的,但因为电机2转的慢。改用了电机1来完成。
  62.       digitalWrite(IN_1, LOW);
  63.       digitalWrite(IN_2, HIGH);   
  64.     }
  65.     else if(d =='P'){
  66.     // Turn both motors OFF      
  67.      digitalWrite(IN_1, LOW);
  68.      digitalWrite(IN_2, LOW);
  69.      digitalWrite(IN_3, LOW);
  70.      digitalWrite(IN_4, LOW);
  71.     }
  72.     else if(d =='F'){
  73.     // Turn both motors Forward      
  74.      digitalWrite(IN_1, HIGH);
  75.      digitalWrite(IN_4, HIGH);
  76.     }  
  77.   }
复制代码











 初级技匠

发表于 2022-4-23 10:10:59

不错哦

回复

使用道具 举报

 初级技匠

发表于 2022-4-23 10:14:52

外形待完善
回复

使用道具 举报

gada888  版主
 楼主|

发表于 2022-4-23 14:25:11

回复

使用道具 举报

 初级技匠

发表于 2022-4-23 15:56:17

回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-4-26 22:44:05

6666666666
回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-4-26 22:46:37

呵呵呵呵
回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-4-26 22:47:38

不错不错
回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-4-26 22:49:20

哈哈哈哈
回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-4-26 22:50:22

厉害厉害
回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-4-26 22:51:23

赞赞赞赞
回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-4-26 22:52:24

好好好好
回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-4-26 22:53:43

非常棒!远距离!
回复

使用道具 举报

赤星三春牛!  初级技神

发表于 2022-4-26 22:55:24

做好外观更好!
回复

使用道具 举报

gada888  版主
 楼主|

发表于 2022-4-29 16:14:21


以后会改进。谢谢建议
回复

使用道具 举报

派大星ym  初级技匠

发表于 2022-8-1 14:37:40

,,,
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail