How to Make DIY Remote Control Hoverboat at Home
by MertArduino in Circuits > Arduino
583 Views, 0 Favorites, 0 Comments
How to Make DIY Remote Control Hoverboat at Home
In this project, I showed you how to make your own hovercraft / hoverboat from materials available at home and cheapest electronic components available online.
Video Step by Step
I used two cheap brushless motors in this Arduino based project. I used the nRF24L01 module for wireless remote communication.
Parts Required for Receiver (Boat)
2x Brushless Motor - https://bit.ly/2HekdSh
2x Propeller - https://bit.ly/355KMRE
1x Arduino Nano V3 - http://bit.ly/2MHVDYi
1x Motor Driver L298N - https://bit.ly/369zBJJ
1x RF Module nRF24L01 - https://bit.ly/3je3v3u
1x RF Module Power Adapter - https://bit.ly/30cFJgw
2x 3.7v Battery 18650 - https://bit.ly/2ECGb01
1x Battery Holder 18650 - https://bit.ly/30cqwMJ
1x Mini Breadboard - http://bit.ly/35cBGRm
1x Hot Glue Gun - http://bit.ly/2XM5YXc
Jumper Wires - http://bit.ly/2MtyZCX
2x Bottle
1x Water Proof Box
1x Acrylic Sheet
Parts Required for Transmitter (Controller)
I designed a PCB controller myself for the hovercraft controller. The controller has a minimalist design, it fits in the palm of your hand and you can easily control the joystick with the thumb. As always, I chose PCBWay for PCB printing service. If you want to have this controller, you can easily order from the link below. If you are not interested in PCB, you can easily build a controller yourself.
1x Get the PCB Board - https://bit.ly/3kbfwae
1x RF Module nRF24L01 - https://bit.ly/3je3v3u
1x Arduino Pro Mini 3.3v 8MHz - https://bit.ly/2GawAy6
1x Joystick - https://bit.ly/3ka28TD
1x Programmer FTDI - http://bit.ly/2RL89st
1x Self-locking On / Off Switch - https://bit.ly/3cyEtJL
LED Kit - http://bit.ly/37OajhS
Capacitor - http://bit.ly/2s6Sonz
Resistor - http://bit.ly/2lJhi8Z
Female Header Pin - http://bit.ly/2MJtnVm
Soldering Tool Kit - http://bit.ly/2D6YbuC
Source Code
Receiver Code:
#include <SPI.h> //the communication interface with the modem #include "RF24.h" //the library which helps us to control the radio modem (nRF24L) //define our L298N control pins //Define enable pins of the Motors const int enbA = 3; const int enbB = 9; //Motor A const int RightMotorForward = 2; const int RightMotorBackward = 5; //Motor B const int LeftMotorForward = 6; const int LeftMotorBackward = 7; //Define variable for the motors speeds //I have defined a variable for each of the two motors //This way you can synchronize the rotation speed difference between the two motors RF24 radio(8,10); /*This object represents a modem connected to the Arduino. Arguments 8 and 10 are a digital pin numbers to which signals CE and CSN are connected.*/ const uint64_t pipe = 0xE8E8F0F0E1LL; //the address of the modem,that will receive data from the 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); } } }
Transitter Code:
#include <SPI.h> //the communication interface with the modem #include "RF24.h" //the library which helps us to control the radio modem //define the input pins int Xaxis = A0; int Yaxis = A1; //define variable values int xValue; int yValue; int data[1]; RF24 radio(8,10); //8 and 10 are a digital pin numbers to which signals CE and CSN are connected. const uint64_t pipe = 0xE8E8F0F0E1LL; //the address of the modem, that will receive data from Arduino. void setup(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); }