如何在家里制作DIY遥控悬停船

One hundred.

介绍:如何在家中制作DIY遥控悬停船

关于:Arduino,Raspberry PI,ESP8266,教程,项目

在这个项目中,我向您展示了如何从家中提供的材料和最便宜的电子元器件中提供自己的气垫船/ Hoverboat。

第1步:逐步视频

我在这个基于Arduino的项目中使用了两个廉价无刷电机。我使用NRF24L01模块进行无线远程通信。

第2步:接收器(船)所需的部件

2x无刷电机 -https://bit.ly/2hekdsh.

2x螺旋桨 -https://bit.ly/355KMRE

1x arduino nano v3 -http://bit.ly/2mhvdyi.

1x电机驱动器L298N -https://bit.ly/369zbjj.

1x RF模块NRF24L01 -https://bit.ly/3je3v3u.

1x RF模块电源适配器 -https://bit.ly/30cfjgw.

2x 3.7V电池18650 -https://bit.ly/2ecgb01

1x电池夹18650 -https://bit.ly/30cqwmj.

1x迷你面包板 -http://bit.ly/35cbgrm.

1x热胶枪 -http://bit.ly/2XM5YXc

跳线电线 -http://bit.ly/2mtyzcx.

2x瓶子
1x防水盒

1 x亚克力

第3步:发射器所需的部件(控制器)

我为气垫船控制器设计了一个PCB控制器。控制器有一个简约的设计,它适合手掌,您可以轻松控制带拇指的操纵杆。一如既往,我选择了PCBWAY进行PCB打印服务。如果要拥有此控制器,则可以从下面的链接轻松订购。如果您对PCB不感兴趣,您可以自己轻松构建一个控制器。

1x获取PCB板 -https://bit.ly/3kbfwae.

1x RF模块NRF24L01 -https://bit.ly/3je3v3u.

1x Arduino Pro Mini 3.3V 8MHz -https://bit.ly/2gaway6.

1x操纵杆 -https://bit.ly/3ka28td.

1x程序员ftdi -http://bit.ly/2rl89st.

1x自锁开/关开关 -https://bit.ly/3cyetjl.

LED套件 -http://bit.ly/37oajhs.

电容器 -http://bit.ly/2s6sonz.

电阻 -http://bit.ly/2lJhi8Z

女性标题别针 -http://bit.ly/2mtnvm.

焊接工具包-http://bit.ly/2d6ybuc.

第4步:源代码

接收器代码:

#include  //与调制解调器的通信接口#include "RF24.h" //帮助我们控制无线电调制解调器(nRF24L)的库//定义我们的L298N控制引脚//定义电机的使能引脚const int enbA = 3;const int enbB = 9;// const int RightMotorForward = 2;const int RightMotorBackward = 5;//马达B const int LeftMotorForward = 6;const int LeftMotorBackward = 7;//定义变量为电机的速度//我已经为每个两个电机定义了一个变量//这样你可以同步两个电机之间的旋转速度差RF24无线电(8,10);/*该对象表示连接到Arduino的调制解调器。参数8和10是连接信号CE和CSN的数字pin号。*/ const uint64_t pipe = 0xE8E8F0F0E1LL;//将从Arduino接收数据的调制解调器地址。 int data[1]; void setup(){ pinMode(enbA, OUTPUT); pinMode(enbB, OUTPUT); pinMode(RightMotorForward, OUTPUT); pinMode(LeftMotorForward, OUTPUT); pinMode(LeftMotorBackward, OUTPUT); pinMode(RightMotorBackward, OUTPUT); radio.begin(); //it activates the modem. radio.openReadingPipe(1, pipe); //determines the address of our modem which receive data. radio.startListening(); //enable receiving data via modem } void loop(){ if(radio.available()){ radio.read(data, 1); if(data[0] < 11 && data[0] > 6){ // This is backward digitalWrite(enbA, HIGH); digitalWrite(enbB, HIGH); digitalWrite(RightMotorForward, LOW); digitalWrite(RightMotorBackward, HIGH); digitalWrite(LeftMotorForward, LOW); digitalWrite(LeftMotorBackward, HIGH); } if(data[0] > -1 && data[0] < 4){ // This is forward digitalWrite(enbA, HIGH); digitalWrite(enbB, HIGH); digitalWrite(RightMotorForward, HIGH); digitalWrite(RightMotorBackward, LOW); digitalWrite(LeftMotorForward, HIGH); digitalWrite(LeftMotorBackward, LOW); } if (data[0] == 5){ // Stop Motors digitalWrite(RightMotorForward, LOW); digitalWrite(RightMotorBackward, LOW); digitalWrite(LeftMotorForward, LOW); digitalWrite(LeftMotorBackward, LOW); } if(data[0] < 21 && data[0] > 16){ digitalWrite(enbA, HIGH); digitalWrite(enbB, HIGH); digitalWrite(RightMotorForward, HIGH); digitalWrite(RightMotorBackward, LOW); digitalWrite(LeftMotorForward, LOW); digitalWrite(LeftMotorBackward, HIGH); } if(data[0] > 10 && data[0] < 14){ digitalWrite(enbA, HIGH); digitalWrite(enbB, HIGH); digitalWrite(RightMotorForward, LOW); digitalWrite(RightMotorBackward, HIGH); digitalWrite(LeftMotorForward, HIGH); digitalWrite(LeftMotorBackward, LOW); } if(data[0] == 15){ digitalWrite(enbA, HIGH); digitalWrite(enbB, HIGH); digitalWrite(RightMotorForward, LOW); digitalWrite(RightMotorBackward, LOW); digitalWrite(LeftMotorForward, LOW); digitalWrite(LeftMotorBackward, LOW); } } }

变送器代码:

#include  //与调制解调器的通信接口#include "RF24.h" //帮助我们控制无线电调制解调器的库//定义输入引脚int Xaxis = A0;int Yaxis = A1;//定义变量xValue;int yValue;int数据[1];RF24电台(8 10);//8和10是连接信号CE和CSN的数字pin号。const uint64_t pipe = 0xE8E8F0F0E1LL;//将从Arduino接收数据的调制解调器地址。无效的设置(void) {Serial.begin (9600); radio.begin(); //it activates the modem. radio.openWritingPipe(pipe); //sets the address of the receiver to which the program will send data. } void loop(){ //Send X-axis data xValue = analogRead(Xaxis); xValue = map(xValue, 0, 1023, 0, 10); data[0] = xValue; radio.write(data, 1); //Send Y-axis data yValue = analogRead(Yaxis); yValue = map(yValue, 0, 1023, 11, 20); data[0] = yValue; radio.write(data, 1); }

是第一个分享

    建议书

    • Pi日速度挑战

      Pi日速度挑战
    • 从垃圾到宝藏大赛

      从垃圾到宝藏大赛
    • 微控制器比赛

      微控制器比赛

    评论