The main goal of this project was to build a security mobile robot capable of moving and collect video data in rough terrain. Such a robot could be used to patrol the surroundings around your house or hard to reach and hazardous places. The robot can be used for night patrols and inspections because it has been equipped with a powerful reflector which illuminates the area around it. It is equipped with 2 cameras and remote control with a range over 400 meters. It gives you great opportunities to protect your property while sitting comfortably at home.
- External dimensions (LxWxH): 266x260x235 mm
- Total weight 3.0 kg
- Ground clearance: 40 mm
Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: The List of Parts and Materials
I decided that I will use ready-made chassis modifying it slightly by adding additional components. The chassis of the robot is made entirely from steel painted black.
Components of a robot:
- SZDoit C3 Smart DIY Robot KIT or 4WD Smart RC Robot Car Chassis
- 2x Metal On/Off Button
- Lipo Battery 7.4V 5000mAh
- Arduino Mega 2560
- IR Obstacle Avoidance Sensor x1
- Atmospheric Pressure Sensor Board BMP280 (optional)
- Lipo Battery Voltage Tester x2
- 2x Motor Driver BTS7960B
- Lipo Battery 11.1V 5500mAh
Step 2: Assembling the Robot Chassis
Assembling of robot chassis is quite easy. All steps are shown in the photos above. The order of the main operations is as follows:
- Screw the DC motors to the side steel profiles
- Screw the side aluminium profiles with DC motors to the base
- Screw the front and rear profile to the base
- Install the necessary power switches and other electronic component (see in the next section)
Step 3: Connection of Electronic Parts
The main controller in this electronic system is Arduino Mega 2560. To be able to control four motors I used two BTS7960B Motor Drivers (H-Bridges). Two motors on each side are connected to one motor driver. Each of the Motor Driver can be loaded by the current up to 43A that gives a sufficient margin of power even for the mobile robot moving over rough terrain. The electronic system is equipped with two power sources. One for supplying the DC motors and servos (LiPo battery 11.1V, 5200 mAh) and the other to supply Arduino, fpv camera, led reflector and sensors (LiPo battery 7.4V, 5000 mAh). The batteries have been placed in the upper part of the robot so that you can quickly replace them at any time
The connections of electronic modules are the following:
BTS7960 -> Arduino Mega 2560
- MotorRight_R_EN - 22
- MotorRight_L_EN - 23
- MotorLeft_R_EN - 26
- MotorLeft_L_EN - 27
- Rpwm1 - 2
- Lpwm1 - 3
- Rpwm2 - 4
- Lpwm2 - 5
- VCC - 5V
- GND - GND
R12DS 2.4GHz Receiver -> Arduino Mega 2560
- ch2 - 7 // Aileron
- ch3 - 8 // Elevator
- VCC - 5V
- GND - GND
Before starting the robot's control from the RadioLink AT10 2.4GHz transmitter you should previously bind the transmitter with the R12DS receiver. The binding procedure is described in detail in my video.
Step 4: Arduino Mega Code
I've prepared the following sample Arduino programs:
- RC 2.4GHz Receiver Test
- 4WD Robot RadioLinkAT10 (file in attachment)
The first program "RC 2.4GHz Receiver Test" will allow you to easily start and check the 2.4 GHz receiver connected to Arduino, the second "RadioLinkAT10" allows to control the robot's movement. Before compiling and uploading the sample program, make sure that you have chosen "Arduino Mega 2560" as the target platform as shown above (Arduino IDE -> Tools -> Board -> Arduino Mega or Mega 2560). The commands from RadioLink AT10 2.4 GHz transmitter are sent to the receiver. Channels 2 and 3 of the receiver are connected to the Arduino digital pins 7 and 8 respectively. In the Arduino standard library we can find function "pulseIn()" that returns the length of the pulse in microseconds.We will use it to read the PWM (Pulse Width Modulation) signal from the receiver which is proportional to the tilt of the transmitter's control stick. The pulseIn() function takes three arguments (pin, value and timeout):
- pin (int) - the number of the pin on which you want to read the pulse
- value (int) - type of pulse to read: either HIGH or LOW
- timeout (int) - optional number of microseconds to wait for the pulse to be completed
The read pulse length value is then mapped to a value between -255 and 255 that representing forward/backward ("moveValue") or turn right/left ("turnValue") speed. So, for example if we push the control stick fully forward we should get the "moveValue" = 255 and pushing fully back get "moveValue" = -255. Thanks to this type of control, we can regulate the speed of the robot's movement in the full range.
Step 5: Testing of Security Robot
These videos show tests of mobile robot based on program from the previous section (Arduino Mega Code). The first video shows tests of 4WD robot on snow at night. The robot is controlled by the operator remotely from a safe distance based on the view from fpv google. It can move quite fast in difficult terrain what you can see in the second video. At the beginning of this instruction you can also see how well it cope in rough terrain.
Check out my other projects related to robotics, just visit:
Participated in the
Safe and Secure Challenge