Introduction: RoboTank
Good day!
The Ship Off the Old Blocks design project is a project intended to challenge students to think outside of the box. Students were to design a device which would move blocks of various sizes from one side of a box to the other side. Sound simple, right? There is a catch; students were only given access to their device through various ⅜ inch holes drilled in an acrylic lid placed on top of the box, in various positions. Students are also given a time limit of 5 minutes (including setup time) to move as many blocks as they can. The device must be operated by only one person. The scoring system on which the competition is based on is as follows:
1pt(s). - move block out of cradle pocket
1pt(s) - move block off of cradle
1pt(s) - bring block into contact with second cradle
2pt(s) - seat block into correct cradle pocket on the second cradle
These points are additive; meaning that if you move mange to seat the block into the correct cradle pocket on the second cradle, you score 5 points because all other conditions had to have been met in order for the block to be seated in the second cradle.
Certain actions during testing may result in penalties. One such action is opening the lid to fix the device. This would result in the blocks being reset to their original position; therefore this can be considered a time penalty.
When the 5 minute test is finished, the design cannot remain in contact with any of the blocks.
This instructable serves as a step-by-step guide on how group 8's final design can be constructed. This page also serves as a hub for which all files necessary to complete this project are located (3D printable STL files, Arduino sketches, circuit diagrams, etc.).
Step 1: Bill of Materials
All parts listed below can be purchased on eBay and Amazon. Due to the large price fluctuations on Amazon and eBay, the prices listed below are subject to change at any given moment:
433 MHz transmitter and receiver - 1PCS (Approx. $0.99)
- Arduino nano/mini - 2PCS (Approx. $2.66)
- Solderable breadboard - 2PCS (Approx. $0.36)
- 10K ohm resistor - 8PCS (Approx. $0.09)
- 9G micro servo - 4PCS (Approx. $7.56)
- 4xAA battery holder & 4xAAA battery holder- 2PCS (Approx. $0.42)
- Male-to-femal Jumper wire - 14PCS (Approx. $1.28)
- Normally open tactile switch - 8PCS (Approx. $0.18)
- Black and red 22AWG wire - 72 centimeters (Approx. $0.24)
- 3D printer PLA filament - 118.23 grams (Approx. $2.95)
- AA batteries - 4PCS (Approx. $1.46)
- AAA batteries - 4PCS (Approx. $1.44)
- M3 machine screws - 23PCS (Approx. $0.74)
- 10 mm ID flat washer - 7PCS (Approx. $0.25)
- 5mm LED light bulb - 2PCS (Approx. $0.06)
- Tamiya track & wheel set - 1PCS (Approx. $9.32)
Step 2: Create Transmitter Circuit
The image attached to this step is the circuit diagram that is to be followed when creating the transmitter circuit. The Arduino used does not necessarily have to be the Arduino Nano or Mini, it can be any version of the Arduino with the same number of pins used, however, due to their small size, it is recommended use either the Nano or the Mini.
For this step, you will require:
- 10K resistor - 8PCS
- Solderable breadboard - 1PCS
- Black and red 22AWG wire - 72 centimeters
- Arduino nano - 1PCS
- 433 MHz transmitter - 1PCS
- Normally open tactile switch - 8PCS
- 4xAAA battery holder - 1PCS
Once the circuit is completed, it should look something like the second image attached to this step
Step 3: Print 3D Printable Files
Download that attached zip file named "Print files (final)", extract the files and print the following STL files:
- Arm Extender - 1PCS (Black)
- Arm Singular - 1PCS (Black)
- Claw Gear (M3 Clearence) - 1PCS (Purple)
- Claw Gear (Servo) - 1PCS (Purple
- Claw Link - 2PCS (Purple)
- Primary Arm Pivot - 1PCS (Black)
- Remote Back - 1PCS (Black)
- Remote - 1PCS (Purple)
- RoboTank Frame - 1PCS (Purple)
- Shell - 1PCS (Black)
- Small Idler Pulley - 6PCS (Purple)
- Washer Plug - 1PCS
- Wheel Shield Left - 1PCS (Black)
- Wheel Shield Right - 1PCS (Black)
- Servo Links - 2PCS (Purple)
- Large Gear (m3 clearence) - 2PCS (Black)
- Large Gear (servo) - 2PCS (Black)
- Claw - 2PCS Black
- Pivot (3.75 mm Dia.)
Of course, the parts can be printed in any colour desired by the builder, but the colour scheme has been included for the sake of repeat-ability.
Attachments
Step 4: Assemble RoboTank
You will need to perform a continuous rotation servo mod on 2 out of the 4 servo motors. The method used for this project is demonstrated in the embedded YouTube video by FliteTest.
The first step in assembling the RoboTank is to fix the left and right servo motors to the frame on the correct side using 2, m3 - 5 mm hex cap machine screws for each motor. The two motors used for this step must be the continuous rotation servos. The motors are intended to be mounted on the rear of the robot (opposite of where the gripper is located) and oriented so that the servo's output shaft is furthest from the front of the robot. The large gear (servo) component is then press fitted onto the servo horn (may need to cut servo horn).
Next, the small idler wheels and large gear (m3 clearance) should be added to each wheel shield (left & right). This is done using 4, m3 - 20 mm hex cap machine screws for each side. Once the small idler wheels and large gears are added to the wheel shields with the fasteners, proceed in fastening the wheel shield idler wheels and large gear assembly to the left and right sides of the RoboTank. To fasten the assembly to the frame, each 2.5 mm hole must be tapped with an m3 tap.
Once the wheel shield with idler wheels and large gear (m3 clearance) is
installed, it is time to install the primary arm pivot with the servo motor. The primary arm pivot should be installed first using m3 – 5 mm hex cap machine screws. Then, the servo motor can be attached to the primary arm pivot using m3 – 5 mm hex cap machine screws. One end of each of the servo links should be pinned to the arm singular using a small pin. The other end of the servo links should be pinned to the servo horn in such a way that the two servo links are parallel with each other. Once the servo horn is attached to the arm singular, the pivot (3.75 mm Dia) is used to attach the arm singular to the primary arm pivot. Once the arm singular is attached to the primary arm pivot, the servo horn can be attached to the servo.
Install the claw/gripper using the claw, claw links, claw gear (Servo) and the claw gear (m3 Clearance) and fastening each to the arm singular using m3 -5 mm hex cap machine screws. You may need to drill and tap each hole using the 2.5 mm drill bit and m3 tap as the FFF manufacturing process tends to have trouble manufacturing the arm singular’s holes. On the claw pieces, there are pieces of foam with pieces of balloons glued to them. These are only necessary to add extra grip to the claws and the RoboTank can be built without them. In other words, the extra grip is optional.
One of the last steps is to attach the counterweight assembly to the Arm Singular. This is done by press fitting the extruded cylindrical piece on the back of the arm singular into the cylindrical hole (larger hole) of the arm extender. Next, all of the 10 mm ID washers are added to the arm extender and the washer cap is press fitted into the other hole on the arm extender. For added security, the washers can be glued to each other and then glued to the arm extender using hot glue.
Once the counterweight is added to the RoboTank, you are done assembling for now. Set the RoboTank aside while the RoboTank circuit is being completed.
Step 5: RoboTank Circuit
The circuit for the RoboTank can be constructed separate from the RoboTank, or you can assemble the circuit directly on the RoboTank. Assembling the circuit directly on the RoboTank may be easier. Construct the circuit using the circuit diagram shown.
For better organization, a breadboard should be used as a positive and negative voltage rail (power rail). All wires used are Male-to-female jumper wires. The other AA/AAA battery holder can be attached to the bottom of the RoboTank.
Step 6: Finalizing the Remote
The transmitter circuit can now glued inside of the Remote. When inserting the transmitter circuit into the remote, make sure all holes are aligned properly and that none of the wires are being crushed. The battery pack can sit loosely on the circuit board as it will be held in place with the remote back.
Step 7: Finalizing RoboTank
The last step is to finalize the RoboTank. This is done by fixing the shell to the RoboTank and stretching the Tamiya tracks over the small idler wheels, large gear (m3 clearance) and the large gear (Servo) on each side of the RoboTank. Once this is done, if desired, LED light bulbs can be added to the power rails mentioned in step 6 with an inline resistor of 1K ohm to prevent too much power from entering the LED.
Step 8: Programming RoboTank and Transmitter
Luckily, the programming is already completed for the RoboTank. All you need to do is download the Receiver_Final.ino and Transmitter_Final.ino files from the Instructables link (beginning of section 4) and upload the files to the receiver circuit’s Arduino and the transmitter circuit’s Arduino respectively using the Arduino IDE. To upload the two files, you will need the VirtualWire library as well as the ServoTimer2 library which can be found at the following links respectively: https://www.pjrc.com/teensy/td_libs_VirtualWire.h... https://github.com/nabontra/ServoTimer2.
Feel free to experiment with each of the movement methods created in the Reciever_Final.ino file. The numbers used to control each of the servos was determined based on our requirements however, your requirements may be different. The movement methods are located near the bottom of the Reciever_Final.ino file.
Step 9: Using the RoboTank
The embedded video shows how the controls work. The controls may not be as intuitive as you may be expecting, however they are easy to get the hang of after watching the video and practicing.
Step 10: More Information About This Design and Known Problems
The final design managed to retrieve all but 1 of the 4 blocks. The RoboTank moved 3 blocks from one cradle to another in under 3 minutes; it even seated them perfectly into the pockets, giving maximum points for each block retrieved. However, on the last block, the RoboTank’s fatal flaw was revealed. When the claw gripped the last block, the RoboTank’s claw was not parallel with the block and so it gripped the block on an angle. This angle forced the claw open too much and cause the RoboTank to lock up completely.
The reason why the RoboTank locked up is because the motor used to power the claw is a servo motor. Servo motors rely on a close feedback loop in order for it to know its position and to be able to correct for it if it is not in the correct position. The servo motor’s electronics compares the position signal it receives from the Arduino to the actual position it measures using a small potentiometer. If these two signals do not match up, the servo’s electronics generates and error signal and it tries to correct for it. The Arduino will not send any other commands until this error signal is gone and thus, the RoboTank locks until the block causing the jam is removed. If this error did not occur, it is very likely that all blocks would have been moved across and placed into their proper pockets in the second cradle, scoring the maximum possible points of 20/20.