4WD Security Robot

by silver_a in Circuits > Robots

41263 Views, 264 Favorites, 0 Comments

4WD Security Robot

4WD security robot - field tests by day
IMG_20180922_172533.jpg

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.

Robot Parameters

  • External dimensions (LxWxH): 266x260x235 mm
  • Total weight 3.0 kg
  • Ground clearance: 40 mm

The List of Parts and Materials

IMG_20180227_134818.jpg

Assembling the Robot Chassis

IMG_20180412_160712.jpg
IMG_20180412_151813.jpg
IMG_20180412_161932.jpg
IMG_20180412_162849.jpg
IMG_20180412_163615.jpg
IMG_20180412_164357.jpg
IMG_20180412_170347.jpg

Assembling of robot chassis is quite easy. All steps are shown in the photos above. The order of the main operations is as follows:

  1. Screw the DC motors to the side steel profiles
  2. Screw the side aluminium profiles with DC motors to the base
  3. Screw the front and rear profile to the base
  4. Install the necessary power switches and other electronic component (see in the next section)

Connection of Electronic Parts

RC_4WD_robot_diagram_png.png
Wiring_schematic.jpg
IMG_20190207_233337.jpg
IMG_20190207_233324.jpg
IMG_20190207_233016.jpg

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.

Arduino Mega Code

Arduino_code.png

I've prepared the following sample Arduino programs:

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):

  1. pin (int) - the number of the pin on which you want to read the pulse
  2. value (int) - type of pulse to read: either HIGH or LOW
  3. 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.

Testing of Security Robot

inspection robot - tests on snow at night
inspection robots - field tests by day
IMG_20190120_140058.jpg
IMG_20190106_153142_663.jpg
IMG_20190111_220744.jpg

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: