电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
夏季大作战---遥控船
分 享
扫描二维码分享
夏季大作战---遥控船
arduino
遥控船
HC12
gada8881
关注
发布时间: 2020-08-26
丨
阅读: 909
# 引言: ### arduino做的各种应用广泛被开源硬件爱好者喜欢。今天给大家介绍一个夏季娱乐性强的arduino项目,特别适合这个炎热的夏天户外水上娱乐,这个项目利用了特别远距离通讯的HC-12传感来对对信号进行通讯,达到可以在通讯模块识别后发送指令给直流电机带动风扇驱动小船,并可以控制伺服电机来对小船的方向进行控制,通讯信号由游戏杆模块来进行发送。左右控制直流电机的开和关。上下控制步进电机的摆臂角度。细节展示在视频内。 ![](https://cf02.ickimg.com/bbsimages/202008/bacf5c6f8c10dbde1f6498312fc74d7b.jpg) #### 提示1:DF的供电板是用来提升直流电机电压的。因为这个船前进的主动力就是来自这个风扇。这也是要用到这个扩展板的原因。实测直流电机供电电压是6.4V。也不能太高,不然电机受不了。这个电机是3-9v耐受。 #### 提示2:程序里和视频里提到的伺服电机的转角并不是最终定值。最终定值只有在小船下水实测之后才能确定。 ![](https://cf02.ickimg.com/bbsimages/202008/c101a2abf4205440cf1d59d29c9de14b.jpg) 船体已经改良了。稳稳的浮在水面。有时间会到附件小河里跑一下。 [遥控小船视频](https://v.youku.com/v_show/id_XNDgxMjQwMjYzNg==.html?spm=a1z3jc.11711052.0.0&isextonly=1 "遥控小船视频") ## 第一步:展示内容 游戏杆控制伺服和直流两个电机,通讯方式是HC-12遥控模块做的串口通讯。 ## 第二步:通讯方式 HC-12模块传播距离远。这样不会出现小船因失去信号而无法控制的尴尬情况。 ## 第三步:硬件搭建 所需器材:A rduino UNO控制器x2(2);HC-12串口遥控模块x2(3);5V伺服电机(4);7.4v 锂电池x2;(5);USB数据线;(6);直流电机 (7);MS1805电机驱动模块 ## 第四步:了解一下关键硬件的参数 根据测试,控制距离大于100M。 根据资料HC-12的传输距离是开放空间1000M。 工作频率是433.4-473.0MHz, 100个通讯通道 ## 第五步: 发一些硬件的图片。让人有个直观的认识 发送端硬件清单 ![](https://cf02.ickimg.com/bbsimages/202008/53ea8c16b961ab90e224b94b37b9f756.png) 接收端硬件清单 ![](https://cf02.ickimg.com/bbsimages/202008/640b685ac195e6d5ec8c71c76edfea25.png) ## 第六步:总体介绍 遥控船设计系统是由游戏杆joystick,无线传输模块和伺服以及直流电机部分来完成的。遥控传感是通过串口通讯来完成信号传递的。 单片机采集信号然后做进一步的处理。例如发送指令集,并通过无线模块发送给接收端的小船。实现小船的的前进左转和右转。注意由于传输距离有限,只能在小块水域进行测试。 ## 第七部:连线图 连线图是有两部分 ,一个是发送端连线图,另一个是接收端的。 发送端 ![](https://cf02.ickimg.com/bbsimages/202008/ed4cbf3c1f9c3956f2479efc5c9da098.png) 接收端 ![](https://cf02.ickimg.com/bbsimages/202008/161f9bd942db48c3e6aa8b844de8b286.png) ## 第八部:程序部分的设计 发送端代码 ```c /@@* Made by gada888 */ // # Connection: // # X-Axis -> Analog pin 0 // # Y-Axis -> Analog pin 1 // # Z-Axis -> Digital pin 3 #define joyX A0 #define joyY A1 int xValue = 0; int yValue = 0; int Value = 0; void setup() { Serial.begin(9600); } void loop() { int xValue = analogRead(joyX); int yValue = analogRead(joyY); if (xValue < 10) { Serial.write(45); delay(500); } if (xValue > 1000) { Serial.write(46); delay(500); } if (yValue < 10) { Serial.write(47); delay(500); } if (yValue > 1000) { { Serial.write(48); delay(500); } } } ``` 接收端代码 ```c /@@* */ #include<Servo.h> Servo esc; int byteRead; const int B1A = 2;//define pin 8 for B1A const int B1B = 3;//define pin 9 for B1B void setup() { esc.attach(9); Serial.begin(9600); // start Serial pinMode(B1A,OUTPUT);// define pin as output pinMode(B1B,OUTPUT); //delay(3000); } void loop() { while(Serial.available()) { // If Serial module has data byteRead = Serial.read(); Serial.print(byteRead); //data to Serial monitor if (byteRead==45) { //received number 1 motorB('R'); }else if (byteRead==46){ motorB('O'); }else if (byteRead==47){ esc.write(45); delay(500); }else if (byteRead==48){ esc.write(90); delay(500); }else if (byteRead==49){ esc.write(120); delay(500); } } } void motorB(char d){ if(d =='R'){ digitalWrite(B1A,LOW); digitalWrite(B1B,HIGH); } else if(d =='L'){ digitalWrite(B1A,HIGH); digitalWrite(B1B,LOW); } else if(d =='O'){ // Turn motor OFF digitalWrite(B1A,LOW); digitalWrite(B1B,LOW); } } ```
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
gada8881
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交