How to make a radio-controlled tank: a spy with a remote control and a camera. We make a radio-controlled tank on the Arduino Nano Tank battle on arduino


In past materials, we made reviews of videos on the manufacture of various radio-controlled toys. Let's continue this topic. This time we offer to get acquainted with the process of manufacturing a radio-controlled tank.

We will need:
- finished chassis;
- Arduino Nano
- 3 servos;
- rotary system;
- toy pistol;
- PS2 joystick;
- receiver to the joystick;
- a box for accumulators;
- rechargeable batteries;
- wires;
- laser.

In the finished chassis, the link for the purchase of which is presented at the end of the material, there are two engines, two gearboxes, a switch and a battery compartment. According to the author of the idea, buying a finished chassis will cost less than hand-made. If the batteries you plan to use do not fit in the chassis bay, as in the case of the author, you can hide the motor driver there.

The first step is to attach the receiver from the joystick to the chassis. To do this, remove the cover from it.

We also remove the cover from the gearbox.

We make two holes on the lid, which will be used to fasten the lid with screws.

We fill the nuts with which the screws are clamped with glue so that they do not unwind when driving and fall into the gearbox.

Now you need to fix the motor driver. According to the author, when using wires with special connectors, the compartment will not completely close, so you need to bite off the connectors, strip the wires and solder directly to the outputs on the driver.

Before installing the driver, you need to take care of the rotary system for the muzzle of the tank. To do this, we disassemble the plastic rotary system and install two servos in it. The first will be responsible for horizontal movements, and the second for vertical ones.

We collect the rotary system back.

We install the system on the tank body.

You need to make 3 additional holes in the case. Two of them are for the motor wires, and a wide hole is needed for the bus in the motor driver control.

The gun must be connected to the servo. To do this, it is enough to make a hole on the servo drive and the gun body and connect with a screw.

The next step is to connect the pistol trigger to the servo. To do this, drill holes on the trigger and nozzle on the servo. We connect the elements with a piece of wire.

In the upper part of the rotary system, two through holes must be made, which must also pass through the muzzle of the gun. These holes will be used to mount the muzzle to the swivel system.

Let's move on to programming the Arduino Nano board.

We assemble the remaining components according to the diagram below.

On the top of the chassis, we install pieces of the ruler that will serve as wings. We install battery compartments on the wings.

The laser is glued to the muzzle with hot glue.

Our radio-controlled tank is ready.

The robot consists of a chassis from a radio-controlled tank and several other components, a list of which is given below. This is my first project on , and I love the Arduino platform. When creating this robot, I used materials from books and the Internet.

Necessary materials
1. Chassis from a radio-controlled tank.
2. Arduino Uno.
3. Breadboard and jumpers.
4. Integrated motor driver SN754410NE.
5. Standard servo.
6. Ultrasonic rangefinder.
7. 9V battery and connector for it.
8. 4 D batteries and a connector for them.
9. USB A-B cable.
10. Base 6" x 6".

Tools
1. A set of screwdrivers.
2. Hot glue gun.
3. Solder and soldering iron.

Chassis

I took the chassis from a tank bought for $10. The base can be attached to it anywhere, but I attached it in the middle.

Motor Driver SN754410NE

I used the SN754410NE driver to control the motors. I used it because I had it, but you can use another one like L293.

Now about connecting the driver to the Arduino Uno. Connect all GND pins (4,5,12,13) ​​to the breadboard GND. Connect driver pins 1 and 16 to Arduino pins 9 and 10. Connect driver pins 2 and 7 to Arduino pins 3 and 4, these are the control pins of the left motor. Connect driver pins 10 and 15 to Arduino pins 5 and 6, these are the right motor control pins. Connect pins 3 and 6 to the left motor, and pins 14 and 11 to the right. Pins 8 and 16 must be connected to power on the breadboard. Power supply: 9V battery.

The ultrasonic rangefinder helps the robot avoid obstacles while moving. It is located on a standard servo, which is located on the front of the robot. When the robot spots an object at a distance of 10 cm, the servo starts spinning, looking for a passage, and then the Arduino decides which side is the most pleasant to move.
Attach a connector to it. Limit the servo so that it cannot turn more than 90 degrees to each side.

The sensor has three pins GND, 5V and a signal. GND connect to GND, 5V to Arduino 5V and signal connect to Arduino pin 7.

Food

The Arduino is powered by a 9V battery through the appropriate connector. To power the motors, I used 4 D size batteries and the appropriate connector. To power the motors, connect the wires from the holder to the board with SN754410NE.

Assembly

When all the parts are ready, it's time to assemble them. First we need to attach the Arduino to the base. Then, with the help of hot glue, we will attach the rangefinder with a servo to the front of the robot. Then you need to attach the batteries. You can place them anywhere you like, but I placed them next to the Arduino. When everything is ready, you can turn on the robot to make sure the Arduino is working.

Program

So, after assembling the robot, it is time to write a program for it. After spending a few days, I wrote it.
The robot will move in a straight line as long as the object is more than 10 cm away. When it notices an object, it starts to rotate the sensor, looking for a path. When the scan is completed, the program selects the optimal side for movement. If the robot is at an impasse, it turns 180 degrees.
The program can be downloaded below. You can modify and supplement it.

An Arduino tank with bluetooth control is a great example of how easily and without special knowledge you can turn an ordinary radio-controlled tank into a cool toy controlled from an android device. Moreover, you don’t even have to edit the code, everything will be done by specialized software. You may have read my previous article on converting a radio-controlled car model to control. With a tank, everything is almost the same, only he can still rotate the turret and change the angle of elevation of the barrel.

To begin, I present short review the possibilities of my craft:

Now let's take everything in order.

Arduino tank with bluetooth control - hardware.

The most important thing in hardware is chassis, i.e. body. Nothing will come of it without the tank itself. When choosing a case, pay attention to free place inside. We will have to place an impressive number of components there. I came across such an option, and we will work with it.

Donor for our project.

Initially it was defective. I wanted to restore it, however, horrified by the build quality of the working board, I decided that the alteration would be more reliable. Yes, and I will please the children with an old gadget controlled in a new way.

Dimensions: 330x145x105 mm excluding barrel. The hull is equipped with four engines: two for movement, one for the turret and one for the barrel. Initially, the tank could shoot rubber bullets, but the mechanism was broken, so I simply cut it off the barrel. After that, there was enough space to place the filling.

Download and install the program from the official website and install, the portable version can simply be unpacked. Next, open my project file in it and click on the firmware button at the top of the interface (seventh from the left).

FLProg interface

The ArduinoIDE will open, but you know how to work in it 😀 .

Arduino tank with bluetooth control - wiring diagram

We connect peripheral elements to the board, in our case, bluetooth, bridges and LEDs according to the project.

List of used pins

The list shows the arduino pin numbers and their purpose. Everything is commented. The movement and turret control contacts are connected directly from the bridges, no additional body kit is required. Connecting the analog input for measuring voltage must be done through a resistive divider, since the onboard voltage of the arduino is FIVE VOLTS !!! This is very important, when the threshold voltage of the microcircuit is exceeded, the controller goes to another world. So be careful. In my case, two 18650 format li-ion batteries were used, a divider on 1 KΩ and 680 Ohm resistors. If your operating voltage is different from mine, then go to any online calculator to calculate a resistive divider and calculate it yourself, based on the fact that its output voltage should be equal to five volts. If you doubt your abilities, then you can not use the voltage measurement on the battery at all, it will work anyway. I stopped driving like this - it's time to charge.

LEDs, if any, must be connected through current-limiting resistors.

Arduino tank with bluetooth control is a program for a tablet or smartphone.

As in the previous model, we will use a program for android devices called HmiKaskada. I post a free version of this program, which you can download from YandexDisk. My project is made in a paid version and it is not compatible with the free version of the program. So further material is devoted to creating a project in a free version.

Control interface

AT finished project on the tablet there is also a battery level indicator, and this is the substrate for the project. So let's get started...

First, let's create a project with one working screen, we won't need it anymore. Next, connect our bluetooth module to the tablet. To do this, go to editing the list of servers and click the plus in the upper right corner. We select our bluetooth from the list and give it a name. Now it's set up and ready to go. The next step is to set the underlay for the work area. To do this, go to the "other - background" menu of the main workspace and load the interface image. You can use mine or create your own image. In fact, it will work without setting the background, it's just for beauty.

Now let's move on to placing the controls. We go to the "setters" menu and drag the button to the workspace. In the button menu, click on the address and enter for example 1#0.12. Where 1 is the address of the arduino board, and 12 is the address of the variable from the project. The variables used in the project can be viewed in the project tree.

Flag address list

With the setting of the battery indicator in the same way. We create a storage register in the Integer format in the Arduino project and assign the indicator its address. For example 1#10, adjust the indicator to your taste.

When all controls are created, configured and located in their places, click on the project launch. Android will connect to the tank, and you can enjoy the work done.

Arduino tank with bluetooth control - assembly.

Assembling the craft took two hours of my time, but the result exceeded all expectations. The tank turned out to be quite nimble, responding to commands instantly. I had to tinker with the gearbox that drives the tank's tracks. It crumbled, but to my happiness the gears were not damaged and a little glue, grease and straight hands returned it to service. The standard battery had to be replaced with two li-ion 18650 batteries connected in series in the holder. The final supply voltage turned out to be 6 - 8.4 volts, depending on the level of charge of the batteries. I also had to replace the motor that drives the tower, it was shorted out.

Replaced the diodes on the headlights of my toy. Yellow low-current ones were absolutely not pleasing and were soldered to bright white ones from lighters with flashlights 🙂 . Now this caterpillar miracle is comfortable to drive even in complete darkness. Photos before and after:

Wonderful)

The result of the final assembly does not look very neat, I decided not to spend extra time on designing shields and laying wires. And so everything works great.

This is how the "stuffing" turned out

Arduino tank with bluetooth control - conclusion.

As can be seen from the above material, there is no smell of any digging in the code when creating a tank controlled by bluetooth. We also do not need any in-depth knowledge in electronics. All operations are intuitive and beginner-friendly. Initially, the HMIKaskada program was developed as an alternative to expensive industrial HMI panels, but it also came in handy in creating a toy. I hope that helped you dispel the myth about the complexity of creating multitasking projects on arduino.

I will be glad to any kind of comments on the article, as well as comments. After all, I am also learning with you ...

The main part of the robot is the chassis from the radio-controlled tank and other components, their list will be written below. This tank is the author's first project on the Arduino platform, and he was pleased that he used it. The author used materials and books from the Internet.

Materials and tools:
- Tank chassis
- Arduino Uno
- Jumpers and breadboard
- Integrated motor driver SN754410NE
- Conventional servo
- Ultrasonic range finder
- 9V battery with connector for it
- D type batteries
- USB cable for Arduino
- Chassis base
- Screwdrivers
- Thermal gun and glue for it
- Soldering iron and solder

Step one. Tank chassis.
The author took the chassis from an old Abrams tank bought at a flea market. The resulting tank was dismantled so that the chassis could be removed from it. It is not necessary to use the same tank, any radio-controlled one will do. Moreover, the original motor left much to be desired, so I had to assemble my own, its assembly will be in the next step. Having prepared the chassis, the author attached the base to them with hot glue. It does not matter where it will be fixed, but it was decided to stick it in the center.

Step two. Engine driver.
The SN754410NE driver is used to control the engine, the author used it, since it was available, you can take any similar one.
Connecting the driver to the Arduino is as follows:

All GND pins are connected to the breadboard GND pins.
- Driver pins 1 and 16 to Arduino 9 and 10.
- Pins 2 and 7 of the driver are connected to pins 3 and 4 of the Arduino (they are responsible for controlling the left motor).
- Arduino pins 5 and 6 are connected to driver pins 10 and 15 (they are responsible for controlling the right motor).
- Pins 3 and 6 are connected to the left motor, and 14 and 11 to the right motor.
- Pins 8 and 16 must be connected to power on the Bredboard, powered by a 9V battery.

Step three. Rangefinder installation.
The ultrasonic sensor allows the robot to avoid obstacles in its path while moving. The sensor is located on a standard servo and will be mounted on the front of the robot. At the moment when the robot notices an obstacle within 10 cm, the servo will start turning in both directions, thereby looking for a passage. Arduino reads information from the sensor and decides which side is more favorable for further movement.
First of all, a servo is attached to the sensor. The author fixes the servo so that it can turn only 90 degrees in each direction, in other words, a full turn of the servo will be 180 degrees.

The sensor has three pins GND, signal and 5V. The 5V supply is connected to the Arduino 5V supply, GND to GND, and the signal to Arduino pin 7.

Step four. Food.
Arduino receives power through a 9V battery, it is connected to the appropriate connector. The motors are powered by four D type batteries installed in the battery holder. To power the motors, the holder wires are connected to the board on which the SN754410NE motor driver is already installed.

Step five. Robot assembly.
After completing all the previous steps, it's time to put all the details together. First of all, the Arduino is attached to the base of the tank. After that, an ultrasonic rangefinder is attached to the front of the robot using hot glue. Then, the author fixes the batteries next to the Arduino. Batteries can be installed on any part of the tank. After installing all the components, all the wires were lifted up and power was applied to the board to make sure that the assembly was correct.

Step six. Program code.
After the assembly of the tank is completed, it's time to write a program for it. The program should show the robot when to move, and when to stop moving, to avoid collision with an obstacle. When writing code from the author

This post will be the first test in order to understand whether this is interesting to anyone other than me. In it I will describe general structure technologies and devices used.

UPD: video added.


First, a short video to attract attention. The sound comes from the tank speaker.

How it all started

A long time ago, I had a dream to make a robot on a caterpillar chassis that could be remotely steered. The main problem was the lack of a tracked chassis directly. In the end, I already decided to buy a radio-controlled tank for disassembly, but I was lucky, in the store, among the trash, there was a Snow Leopard (Pershing) - USA M26 tank with burnt electronics, but a fully functional mechanical part. It was exactly what was needed.

In addition to the chassis, two voltage regulators for collector motors, a tripod for a camera of two servos, a webcam with mjpeg hardware support and an external WiFi card TP-LINK TL-WN7200ND were purchased. A little later, a portable speaker, a Creative SoundBlaster Play USB sound box and a simple microphone, as well as a couple of USB hubs were added to the list of devices to connect all this to the control module, which became the Raspberry Pi. The turret was dismantled from the tank, it was very inconvenient to steer it, since all the regular mechanics were built on conventional engines without feedback.

I must say right away that the pictures were taken when the tank was almost ready, and not during the manufacturing process.

Power and wiring


I stuffed the largest Li-Po battery that fit into the battery compartment. It turned out to be a 3300 mAh two-cell battery in a solid case, which is usually used in model cars. I was too lazy to solder, so a standard breadboard with a pitch of 2.54 was used for all switching. Later, a second one appeared on the top cover and a train that connected them. For each of the two motors, I had my own voltage regulator, which, as a bonus, provides a stabilized power supply of about 5.6 volts. Raspberry and WiFi card were powered from one regulator, power from the second went to servos and USB hub with peripherals.

Gotta make it move

It had to be done somehow. Raspberry was not chosen by chance. Firstly, it allows you to install a normal full-fledged Linux, and secondly, it has a bunch of GPIO legs, which, among other things, can generate a pulse signal for servos and travel controllers. You can generate such a signal using the ServoBlaster utility. When run, it creates a /dev/servoblaster file into which you can write something like 0=150, where 0 is the channel number and 150 is the pulse length in tens of microseconds, so 150 is 1.5 milliseconds (most servos have a value range 700-2300 ms).
So, we connect the regulators to 7 and 11 GPIO pins and start the servoblaster with the command:

# servod --min=70 --max=230 --p1pins=7,11
Now, if you write the lines 0=230 and 1=230 to /dev/servoblaster, the tank will rush forward.

Probably enough for the first time. If you like the article, I will slowly write the details in the following posts. And a few more photos in the end, as well as a freshly filmed video. True, the quality was not very good, so I apologize in advance to the aesthetes.