Rules Of The Maze (Robot Avoidance Rules and Strategy)- Part 2

Written by Nornubari Kanabolo MST DM

Special Case 2.3(T-intersection) continued

As Matt explained in the previous post, for 2 robots at a T-intersection:

“In this case the robot that is within the intersection (in the middle of the T – intersection) has the lowest priority and must move out of the way of the other robots (if the other robots are in the path of the low priority robot). The lowest priority robot will step down the hallway that is not blocked and then wait for the other robot to pass.”

As for the case with 3 robots at the intersection, the following method could be used:

Say R2 steps into the intersection and R1 needs to go where R2 is and R2 needs to go where R3 is. One thing that could happen is R3 goes back to the last intersection to wait and R2 waits 5 seconds to move one square to the right.

At this point, 2 possible cases could happen. Case 1 as follows:

R1 waits 5 seconds and sees that there is no one in the intersection now then moves into the intersection, so that it can go to the hallway where R2 was. R2 waits another 7 seconds and goes down to where R1 was. R3 waits 3 seconds and returns back to where it originally was.

Or if R2 needs to go where R3 is then Case 2 is enacted as follows:

Since there are no longer 3 robots at the intersection and it is now just 2 at an intersection, the rules for encounters 2.3 as stated by Matt are used.

Training on Arxterra 3DoT App RC Mode

Written By: Muhannad Al Mohamed (E&C DM)


The Arxterra 3DoT App training had a goal of teaching E&C and MST members how to use their phones to communicate with their projects through Remote Control Mode. The ArxRobot Application has two different modes of communication with the Robot’s Microcontroller. The Remote Control Mode (covered in this training) and the Community mode (Covered in the next training session). The user, through the ArxRobot App, should be able to send commands to the microcontroller either through predefined commands or custom made ones.


The communication in the RC mode is done wirelessly through Bluetooth with an easy pairing process at the initialization of the RC mode. Commands are sent to the microcontroller as packets that consist of bytes that have specific identifiers to indicates whether the command is a command or telemetry. The packets contain data bytes that can be processed by the pre-coded microcontroller.

User’s Interface

The user interface in the RC mode is user-friendly. The default setting shows the controls of two motors in a strip type command. The strip can be changed to a D-pad looking control. Custom commands can be set to show on the user’s interface when enabled.

During the training session, members were taught how to use the user interface to control motors by giving specific input, moving motors at the same time, and steering trim to maintain desired speeds.

ArxRobot App’s Settings

The commands used in the app can be changed in the settings of the app. To access the predefined and custom commands users needed to be in Developer Mode.

The Phone Configuration window in the setting enables the user to choose the way to connect to 3DoT board, show phone’s battery percentage on Control Panel, and flip Camera’s position.

The predefined commands are commands and telemetry functions defined by the Robot3DoTBoard and saved in the app as default commands to operate a Mar’s Rover. These commands, if needed, can be used by the user by enabling each command in the Robot Capabilities configuration.

The Custom Command & Telemetry Configuration window allows the user to create new commands to be sent the 3DoT Board and receive Telemetry from it.


Custom Commands & Telemetry

Options for commands and telemetry is created by adding an option and giving it a specific address from (0x40) to (0x5F). Each option should be chosen to be either for commands to be sent to the 3DoT or Telemetry to be sent by the 3DoT. Commands can be controlled by the ArxRobot App; however, not all telemetry options are shown on the app. Each option should be enabled to show in either RC mode or Community Mode.


There are 7 options the user can choose while creating a custom command:

1- Boolean:

This option enables the user to send a byte in the data packet to the 3DoT board with a value of either (0x00) or (0x01). In the user’s interface, it can be seen as a switch that can be changed. The user can choose a default value of either of the previous options. This option can be used to turn an LED on and off for example.

2- Select:

This option enables the user to have multiple outputs to switch to. It is similar to the Boolean switch; however, it can have as many options the user wants to switch into. It sends a 1 byte of data parameter with the packet that is sent to 3DoT board; however, the values sent can be modified by the user. The select option shows in the user’s interface as radio buttons.

3- Byte:

This option can be used to send a byte in the data packet but with a wide range that can be changed by the user. It has a default range from -127 to 128 where the user can control which value sent by moving a strip in the user’s interface. These values can be changed by the user in the Byte settings to the desired range but it would still be a byte range. The steps between each value can be modified as well. This option can be used to move a servo motor for example.

4- Unsigned Byte:

This option is similar to the Byte command. The only difference would be the default range that starts from 0 up to 255.

5- Short:

This option is also similar to the Byte/Unsigned Byte; however, this option sends two bytes in data packet. Because it sends two bytes, the short command has a wider range than Byte/Unsigned Byte. The default value of this options ranges from -32768 to 32767.

6- Unsigned Byte:

This option is similar to the short option; however, the default range for it goes from 0 to 65535.

7- Header/Separator:

This option does not send any data in packets sent to the 3DoT; however, it is used to make the interface more user-friendly. titles to commands can be given using this option and it can be used to as separator if it was used without writing anything to it.

Training document

Arxterra RC Mode training document can found at this link.

Optimizing RC Mode in Projects

Update: 12/5/2017

Room Showing Telemetry Command

By creating custom commands and telemetry, engineers can create commands that can enable them to control their projects through the maze. For example, the path taken by a robot can be sent back to the phone connected to the MCU using telemetry options to show which room the robot is in on the phone’s display using RC mode. By optimizing the translated code from EE346/EE444 written by Mark Huffman (Goliath Project Manager) and Matt Shellhammer (ModWheels E&C Engineer), the variable “room” value can be sent as telemetry to the ArxRobot app. In the ArxRobot app, a telemetry Select command should be created and called room where it shows the byte value on the phone.

Creating Telemetry command called Room

Selec command Room

Assigned options to show the room type as implemented from the maze

Room type is shown in RC mode interface

Phase Selecting Command

The same process can be implemented to apply choosing the phase each robot is taking. In her blog Mission Definition, Elizabeth Nguyen (Pete-Bot Project Manager) explained how there are four planned phases each project can take:

  • Phase 1: Record
  • Phase 2a: individual playback
  • phase 2b: 4 Robots, 1 maze
  • Phase 2c: Individual playback, predefined

This custom command can be applied by also creating a select command with the four options where the user can switch easily between phases.

Phase selection in RC Mode

Recording Phase

Whenever Phase 1: Record is selected, the robot should start saving its path in the EEPROM. The EEPROM library can be very useful to record data when the system shuts down, which is essential in keeping data. The process of saving the path the robot is taking is explained in Write to EEPROM blog written by Matt Shellhammer (ModWheels E&C Engineer).

Generic Color Sensor Hedge follower PCB Layout

Written by Charles Banuelos


The PCB design below is for a generic hedge following shield. The PCB is a work in progress with the finalizing of the dimension dependent upon the testing of the color sensors. The LEDs chosen are significantly larger than the previous design and this is due to availability.



Update 11/30/2017

The PCB design was finalized and sent to OSH Park to be fabricated. The color sensors are placed 5.48 mm away from the edge of the board. The LEDs are placed 5.64 mm horizontally away from the color sensor towards the center of the board. The LEDs were changed due to availability as well as the issues with size. The orginal LED was too large and suitable replacement with similar specs was found. The final board dimensions are 10.87 mm wide by 55 mm long. The color sensors are placed 40.41 mm apart. The final draft of the PCB has the caster wheel cut out for 3DoT chassis as well.  The boards were received on 11/21/2017 and are currently being assembled.



Parts List

Update 12/12/2017

This design was able to work for only one of the color sensors on one of the boards. The other color sensor was intermittent. This lead me to believe that the problem is in the soldering. The fabrication portion of this designed was plagued with many problems. The color sensor pads themselves are extremely small so when placed on the solder paste by hand the sensor would move and create bridges. The only way to mitigate this is to use the pick and place machine to ensure proper placement. The another issue found was that when a board was trying to be fixed with a heat gun the parts would burn before the solder would melt. This to could also be fixed by using the pick and place to ensure proper placement the first time. The last issue was with the stencil. The stencil would get clogged on the color sensor holes due to that fact they were very small. The only option to mitigate this is clean the stencil thoroughly after each use as well as use flux to ensure solder is in the right place.

Generic Color Sensor Schematic

Written by Charles Banuelos  MFG DM-updated 11/29/2017

The schematic below is for a hedge following shield that will connect directly to the 3DoT board. The hedge following shield will connect to the 3DoT board using the same 6 pin header that is used for the 3DoT IR shield. The design follows Thomas Forman’s designs from EE444. The color sensor being used is the BH1745NUC-E2CT-ND color sensor because this color sensor allows for two different I2C addresses to be used.  The hardware is designed to have the I2C addresses (0x038) and (0x39) in HEX. The LEDs chosen were chosen due to the fact that they were able to fulfill the specs needed such as light transmission, package size and current. The LEDs are used to light up the areas for the color sensors to detect the hedges. The mosfet in the schematics is used to control the LEDs which are protected by resistors. There are protection 10k resistors placed at the address pins to ensure protection of the color sensor.

Update 12/7/2017

The schematics below do not contain any form of reverse polarity protection. It should be stated then that when inserting the PCB in the 3DoT header that the orientation should be carefully monitored as to not accidentally flip power and ground. This could cause catastrophic damage to the circuit. It should also be noted that future color sensors should include a diode on the power line right after the header to protect from this. This design chose not to go with this at the time due dimension requirements of the PCB.


Spring 2017 Final Blog Post – Pick and Place

Belinda Vivas (Project Manager)

Tyler Jones (Manufacturing)

Kevin Ruelas (Electronics)

By: Chastin Realubit (MST)

Executive Summary

Program Objective

By: Belinda Vivas (Project Manager)

The objective of the Second Generation of the Pick and Place is to:

❖Build up from the First Generation of the Pick and Place machine and create an user friendly design.

❖Create a user friendly manual:

  • Softwares
  • Step by Step
  • Wiring
  • Troubleshooting

❖It shall be built in stages.

❖Make the Pick and Place consistent with the manufacturer of only a few boards per semester.

Mission Profile

By: Belinda Vivas

The mission plan for the Second Generation Pick and Place is to place all components used for the 3Dot Board 4.54 faster than a person. Manufacturing time of a person is 4 hours, so anything less than that is acceptable, with 1 hour being the target time.

The overall goal of this project is to have a working Pick and Place machine for future EE400D students to build their custom PCB. The 3Dot Board that will be constructed is more difficult than any PCB students will make, therefore, this machine can theoretically make any board future students plan to do.

Because this machine is supposed to be used by students, we will include manuals (written and video) so that future generations can operate this machine with ease. We will conduct experiments using Electrical Engineering students to see if they can operate the machine using only the given manuals.

The overall summary for the Mission Profile is:

❖To create a 3-Dot 4_54 PC Board.

❖Ensure precision and calibration through the addition of a camera system (Edge Detection).

❖Create a CSV file to implement a better interface between the user and the machine.

❖Multiple feeder assemblies

❖Incorporate better materials

❖Tape feeder for the following component parts:

  • 0402
  • 0603
  • 0805


Project Features

By: Belinda Vivas (Project Manager)

Figure 1 – Detailed Design of Generation 2


❖Camera System

  • Edge Detection

❖Two Arduinos System

  • Independent from each other

❖Vacuum System

❖Servos System

❖Power Emergency Switch

  • Relay to cut power on the motors


❖Higher legs with rubber on the base to provide better stability due that more weight is being added causing for higher vibration.

❖Higher amount of component feeders.

❖IC Chip component holder

❖Power Switch


❖Component Cabinet

❖Electronics Cabinet

❖Tape waste bin

System Design

By: Chastin Realubit (MST)

Figure 2 – System Block Diagram


Solenoid and Vacuum Test

By: Tyler Jones (Manufacturing)

The vacuum by itself was powerful enough to carry the Atmega chip but experiments show that we need a bigger nozzle to increase airflow.

Figure 3 – Solenoid Circuit

Blog Post:

Z-Axis Test

By: Chastin Realubit (MST)

Z-Axis Motor: We did an experiment to see the load that the Z-Axis can handle and we found that it will still carry up to 2000 g. This experiment was done so that we can see if the motor can still move up and down even with more load. This was needed because we are adding a camera on the Z-Axis and we needed the system to still function with extra weight.

Figure 4 – Nozzle System

Blog Post:

Rubber Vibration Damping Test

By: Tyler Jones (Manufacturing)

-The machine has a basic feature of rubber shoes for legs of the platform stand.

-This will aid in damping vibrational disturbances.

-A 4” x 4” x 1” block of butyl rubber shaped using a bandsaw and miter saw.

-The block was fitted to form shoes that fit over the legs of the machine.

-The blocks have been tested on one leg for stability.

-The use of a milling router machine should be used

Additional Testing

Emergency Power Switch:

By: Tyler Jones (Manufacturing)

3Dot IC Tray:

By: Tyler Jones (Manufacturing)

12 Servo Mount & Tape Feeder System:

By: Tyler Jones (Manufacturing) and Belinda Vivas (Project Manager)

Camera Test:

By: Kevin Ruelas (Electronics)

Solenoid Valve Design and Control:

By: Tyler Jones (Manufacturing) and Kevin Ruelas (Electronics)

Servo Driver:

By: Kevin Ruelas (Electronics)

Camera System:

By: Kevin Ruelas (Electronics)

User Interface


By: Kevin Ruelas (Electronics)

Though the user can type commands manually in the GRemote, once the machine is running and calibrated, use command G28 to set the origin then send the CNC file and wait for the machine to do the rest.

Figure 7 – GRemote controller

Figure 8 – GCode Commands

Figure 9 – Arduino 1 Interface Definitions

Figure 10 – Eagle CAD to Pick and Place

Camera Fritzing Diagram

By: Kevin Ruelas (Electronics)

Figure 11 – Camera Fritzing Diagram

Recalibration of Origin

By: Kevin Ruelas (Electronics)

Since the 1st Gen. already defined the origin, the edge detection of a “target” will be used to calibrate this location and prompt the user to make this correction via GRemote.

Electronics Design

By: Kevin Ruelas (Electronics)

The overall Pick and Place was composed of various subsystems which were all ran by a common code. The motors, the nozzle, calibration, camera, LCD display, servo driver, and solenoid.

Figure 12 – High Level Software

Blog Post:

SolidWorks Model

By: Tyler Jones (Manufacturing)

Figure 13 – Side View of SolidWork Design

Figure 14 – SolidWorks Top View Design

Verification and Validation Test

By: Chastin Realubit (MST)

The purpose of this section is to provide a comprehensive Verification and Validation (V&V) Test Plan of the Spring 2017 Pick and Place including the Project ConOps/Mission, Test Methodology, Verification and Validation Matricies, Test Cases, and Exit Criteria.

Resource Allocations

Power Allocation

By: Chastin Realubit (MST)

Components Expected Current Draw (A) Uncertainty (%) Margin (±A) Measured Current Draw(A)
Stepper Motor (X-Axis) 1.35 5% .0675 .44
Stepper Motor (Y-Axis) 1.35 5% .0675 .44
Stepper Motor (Z-Axis) 1.35 5% .0675 2.83
Stepper Motor (A-Axis) 1.35 5% .0675 .44
Detection Camera .75 5% .0375 TBA
Solenoid Valve .40 5% .02 .42
Display Screen .75 5% .0375 TBA
Servo fs90r (12) .2 5% .01 .21
Project Allocation 6 A (Calculated knowing that we will be using two Arduinos with separate power supplies)
Total Expected Current 3.45 A (The motors and servos will not run simultaneously)
Total Margin .375 A
Contingency 2.175 A


Mass Allocation

By: Chastin Realubit (MST)

Vacuum System Components Preliminary Mass (g) Uncertainty (%) Margin (±g) Expected Mass (g) Actual Mass (g)
Stepper Motor (A-Axis) 245.00 5% 12.25 245.00 247
Stepper Motor (Z-Axis) 245.00 5% 12.25 245.00 246
Vacuum Nozzle 2 5% .1 2 TBA
Z-Axis Actuator 292.00 5% 14.6 300 244.12
Detection Camera 3 5% .15 3 TBA
Project Allocation .Preliminary allocation is 2000g
Total Expected Mass 795 g
Total Margin 39.35 g
Total Actual Mass TBA
Contingency  1165.65 g

Cost Report

By: Belinda Vivas (Project Manager)

For the Second Generation of the Pick and Place, our allotted project budget was of $500, in which a total of $469.04 was spent; it was divided as follow:

Receipt Vendor                Item            Unit Quantity Total Cost (Including Shipping) Purchased By
1 Makeblock RJ25 Adapter $4.98 1 $15.65 Kevin Ruelas
RJ25 cable-20cm (4-pack) 1
2 Amazon 12 Bit PWM Servo Driver $11.99 1 $11.99 Kevin Ruelas
3 Amazon Blue Backlight LCD Module $7.99 1 $7.99 Kevin Ruelas
4 Amazon 3-Pin Extension Lead Wire $6.99 1 $6.99 Kevin Ruelas
5 Amazon Arduino Power Supply Adapter $6.29 1 $6.29 Kevin Ruelas
6 Amazon 120 pcs Dupont Wire $8.86 1 $8.86 Kevin Ruelas
7 This item was removed. Arduino Uno will not be needed for the project anymore and the student requested to keep the board.
8 AdaFruit MicroSD Card $7.50 1 $52.56 Kevin Ruelas
JPEG Camera $35.95 1
9 Pololu Rotation Servo $4.95 9 $49.50 Chastin Realubit
10 GearBest LCD Display Screen $4.53 1 $17.18 Chastin Realubit
11 Amazon PWM Servo Driver $11.99 1 $15.98 Chastin Realubit
12 Ebay Rubber Bench Block $7.48 1 $7.48 Tyler Jones
13 Sewvac LTD Bobbins for Servos $3.29 1 $3.29 Tyler Jones
14 RadioShack Mosfet IRF 510 $1.78 1 $1.78 Tyler Jones
15 ACE Hardware Nuts & Bolts $5.40 1 $5.93 Tyler Jones
16 The Home Depot Wood $29.98 1 $29.98 Tyler Jones
17 The Home Depot Aluminum Plates & Epoxy $35.68 1 $38.45 Tyler Jones
18 MicroCenter 3D Printer Filament $14.99 1 $16.15 Tyler Jones
19 The Home Depot Screws $18.49 1 $18.49 Tyler Jones
20 The Home Depot Plastic Sheet $140.06 1 $140.06 Tyler Jones
21 ACE Hardware Screws $14.44 1 $14.44 Tyler Jones
Total: $469.04  
Name of Individual Position Total Amount Reimbursed
Kevin Ruelas Electronics $110.33
Chastin Realubit MST $82.66
Tyler Jones Manufacturing $276.05
Total** $469.04

Updated Schedule

Top Level Schedule

By: Belinda Vivas (Project Manager)


Sub System Schedule

By: Belinda Vivas (Project Manager)

Concluding Thoughts

By: Belinda Vivas (Project Manager) and Tyler Jones (Manufacturing)

We were able to incorporate more extensive and higher technology subsystems into the Second Generation of the Pick and Place; by implementing a more user friendlier systems and introducing a camera system, LCD Display system, redesign of the nozzle, better calibration system, higher servo driver system, and an overall new manufacturing design.

The pick and place was successful in picking and placing parts onto the 3DoT board. The machine when calibrated can place parts into the respective locations where they can be soldered using the IR reflow machine. It is important however to note that the pick and place machine can be improved in the following areas. Its mechanical, and electronic design can be updated with simple solutions that require more time. They are discussed below.

The pick and place mechanical design can be improved in a noticeable and easily recognizable ways with more time for development. The first is the belt system.

1) The belt system does work well, and the X and Y stepper motors move to positions accurately, sometimes during design of the machine the tensioner plates that hold the 3 belts into place were loosened. This is so that parts in the machine can be easily worked on. Therefore it is important to make sure that belts are tight, as well as lubricated. Loose belts cause the machine to make a noticeable sound that is not as fluid as when they are tight. The best solution would be to incorporate threaded drives instead of belts, however this is more costly.


2) The pick and place uses a 3DoT board that was 3D printed with more than 6 iterations. This was due to numerous errors in the printing temperature, malfunction, and design limitations. There is a table that corresponds to part sizes and dimensions and adjustments made to account for error of the 3D print. It is found here, 3DoT IC Tray. A decent 3D printer and filament must be used in order to get the precise dimensions necessary. An alternative solution would be to cut a small rectangular piece of plastic that is about 0.5-0.75 inches thick, and have it precisely laser cut. The laser cutter used in the design center was not accessible in this generation later on in the project timeline.
3) The Z-axis is supported by two aluminium slider rods. These slider rods must be spaced as far apart as possible so that the heavier Z-Axis can have a wider more stable base and center of gravity. This design was used in the pick and place and must be incorporated if further design iterations will be made. The camera is mounted on a bracket that allows makes it so that the Z-Axis only can be bolted to two of the aluminium sliders. This must be made able to be bolted into all four of the sliders. It is shown below

4) The pick and place currently uses a locked position origin. This is so that the the machine can be turned off and moved back to the locked position manually. From here the pick and place machine can be moved to the function “L” bracket origin. It would be a much safer design if limit switch can be placed on the X and Y axis so that if the user were to accidentally enter the wrong code in the machine the motors would not grind. This can be accomplished by using the current limit switches and adding the limit switch code to the stepper motor.ino Arduino code. The limit switch acts as an electromechanical disconnect that simply switches off the stepper motors when the machine makes contact with the switches. An image of the switch is shown below.

5) The electronic design can be further enhanced if the 12 channel servo driver can be made to separate the digital power source which carries Arduino logic level signals of +3.7V and +5.0V, and the analog power source which carries +12V signals. The connection is made through the Me Uno RJ25 board. This connects an an RJ 25 communications signal with a 12 V analog signal.
6) The edge detection camera code was functional and the code calculated the position of the origin by comparing picture taken by the camera, and comparing the pixel lengths. The edge detection however was off by about 0.3 which is about 1mm in actual length. In order to improve the accuracy of the machine a higher resolution camera must be used.

Project Resources

Video –

Preliminary Design Document –

Preliminary Project Plan –



Blog Posts:

Code Files:

3Dot BOM:

Servos BOM:

GCode Commands:

3Dot 3D print File:

3Dot Board:

Ace Converter:



Me Uno Shield:

Meeting Minutes:


SolidWorks Files:


All Files:

Instructional Manual:

Project Libre Schedule:

Verification and Validation:




Fall 2016 Solar Panels: The Solar Panel Sandwich (the “Encapsulation”)

By Ridwan Maassarani (Design and Manufacturing)

Approved by Inna Echual (Project Manager)


In order to secure the cells onto the panel, one must consider the way of “sandwiching” the cells onto place. A rubber substrate was used for insulating the solar cells from the aluminum sheet. Here, I will review the “sandwich” method of encapsulation.

PV Back Sheet [1]

The first substrate considered was PV Back Sheet, which can be bought from aliexpress. This could reduce the thickness of the overall layers and, as explained by Dunmore, a supplier of solar panel material, “the PV back sheet is a photovoltaic laminate that protects the PV module from UV, moisture and weather while acting as an electrical insulator. DUN-SOLAR™ PV back sheets are available in a variety of constructions for both traditional rigid PV modules, like the one shown above, as well as thin film PV modules and solar power concentrators.”

EVA Layer [1][2]

Next, there’s the EVA layer, and according to Dunmore is a “thermoplastic containing ethylene vinyl acetate which is used to encapsulate the photovoltaic cells.” EVA encapsulation might not be the way to go since it needs to be heated which renders the cells inaccessible. And the cells need to be serviceable as part of our project requirement. For our panels, I took a couple of sticker paper and laser cut individual square cut outs to place each cells in its cavity and then when the acrylic is attached, there would be not visual gap between the cells and the acrylic. This did not work since I did not make my sticker paper thick enough. I modeled the shape I needed using Solidworks to ensure every cell in our current design had a cavity to sit in. Then I generated the dxf file that would then be used by the laser machine to cut the sticker paper, as shown in Figure 1.


Figure 1: Sticker Paper

Then comes the EPE insulations which is an extra layer of insulation, protecting the PV cells from being damaged from additional voltage seeping into the cells and damaging them.

Finally, there’s glass, which was substituted with acrylic in our final product which based on a PDF document written by Arkema, a leading specialty chemicals and advanced materials company says that it transmits 92% of the suns light striking it at the perpendicular.

The entire sandwiching process can be seen in Figure 2.


Figure 2: Sandwich Process


[1] Solar Back Sheet:

[2] Eva Film:

[3] Plexiglass:

2016 Spring: 3DoT David Final Project Blog Post

By 3DoT David team:

Omar Mouline                                 (Project Manager)

Christopher Hirunthanakorn          (Missions, Systems and Test Engineer)

Kent Hayes                                    (Electronics and Control Engineer)

Andrew Saprid                               (Manufacturing and Design Engineer)

Executive sumary

One of the 3Dot David project objectives was to build a small-sized spider bot that can walk using two motors. When the project was assigned to us, we did research on different movement mechanisms in order to choose the one that best suits our requirements. The research results can be found on this blog post: Spider Bot Different Mechanism Research

Project Objectives

The objective of 3DOT David Spider is to use scaled model of the Hexbug prototype to produce a cool project for the DIY community. The preferred method of control is to use Bluetooth communication between the remote-control (Iphone or Android) and the microcontroller on board of the spider The finished product must meet the following Program and Project Requirements:

  • System processing using a microcontroller (either the 3DoT Board or Sparcs Macro.)
  • Total production cost must not exceed $80.00.
  • Short 3D Printing ( Not exceeding 6 hours and less than 2 hours for each single print)
  • Control The Spider Bot from Arxterra app ( Android or Iphone) using bluetooth
  • 3Dot david must be able to perform a safe interactive game with other projects in a specific field and date as Defined in mission profile

Mission Profile

The Mission Profile for the 3DoT projects is to perform robotic combat. With regards to the College of Engineering Health & Safety Policy, the projects must meet the following Requirements:

  • The game will take place in ECS 315 in a 6 x 6 ft. area on the linoleum floor.
  • Go head to head with other robots in an indoor game of IR tag
  • The emitter must hit the detector in a straight line from a maximum distance of 5 ft.
  • Every time a player is “tagged” by the IR tagging system, a sound will go off
  • Delay time after each tag shall be 5 seconds
  • When either robot has been “tagged” 3 times, the bot will shut down, indicating the game is over.
  • The entire game will last from 10-15 mins

Updated requirements:
Program requirement:

  1. As a senior design project for Spring 2016, the project shall be completed by May 13th, 2016 Monday, May 9, 2016 2:45PM – 4:45PM (Final day) on the linoleum floor of ECS315 at CSULB.
  2. As a senior design project for Spring 2016, Documentation of the 3Dot Spider-bot shall be completed by the 25th of April

Project Requirement:

  1. The 3DoT David shall be a robot that demonstrates the capability of the new 3DoT micro-controller for DIY hobbyists.
  2. The 3DoT David shall be a low cost project with a total cost that does not exceed $79.95, which includes the cost for 3D printing, PCB, battery, and other components.
  3. To document the difference between development cost and final product cost, the 3DoT spider project must create a Project Budget and a Product Budget.
  4. The 3DoT David shall be controlled by the Arxterra App used on a smartphone.
  5. The 3DoT David shall incorporate 3D printed parts to demonstrate the feasibility of the 3DoT board for 3D printed robots.
  6. The 3DoT David shall have a maximum 3D printing time of six hours for production of parts to ensure the quick production of the robot. Any single print cannot exceed 2 hours.
  7. The 3DoT David shall compete with other robots in a game of tag to demonstrate the functionality of the robot. The basic rules of the game are using an IR emitter to tag the opposing robot, must compete in a 6×6 ft area, have a delay period of 5 seconds after each tag, and be disabled for 10 seconds after three tags.

System requirements:

  1. The 3DoT David shall utilize the HC-06 Bluetooth module on the 3DoT board in order to receive commands from the Arxterra App using a smartphone.
  2. The 3DoT David shall use a single 3.7V Lithium-ion battery or a 3.7V Lithium-ion Polymer (LIPO) battery to provide power for the robot. The 3DoT board will be providing power to all of the peripherals and uses a 3.7 Lithium-ion battery as its power source.
  3. The 3DoT David shall use two micro motors for the movement system of the robot.
  4. The 3DoT David shall use an infrared LED emitter and infrared detector for the tagging system in the game of tag.
  5. The 3DoT David shall be disabled for 10 seconds after being tagged three times to signify the end of a round in the game of tag. This means the robot does not respond to any commands for 10 seconds.
  6. The 3DoT David shall operate for 10 to 15 minutes, which should be equivalent to three rounds of the game of tag.
  7. The 3DoT David shall use a small speaker to produce the buzzing sounds to indicate the end of a round in the game of tag.
  8. The 3DoT David shall use a 3D printed chassis and legs. This follows from the project level requirement about using 3D printed parts.
  9. The 3DoT David shall include a PCB that uses a Schmitt Trigger circuit to convert the analog output from the IR detector into a digital output to be handled by the 3DoT board. It will also have a voltage follower and anti-aliasing filter for the synchronization of the two motors. This PCB shall also provide the connections from the 3DoT board to the peripherals such as the IR emitter, IR detector, and micro motors.

Subsystem requirements:

  1. The micro motors shall operate in between the supply voltage of 3.7V-5.0V, be able to rotate 360 degrees continuously, have a stall current of no more than 250 mA, and cost no more than $10 each in order to stay within our budget.
  2. The 3DoT David shall be made from PLA or ABS filament in order to minimize the mass of the robot and be strong enough to hold its weight.
  3. The IR emitter and IR detector shall be positioned at least 3 inches from the bottom of the 3DoT David.
  4. The maximum distance for the IR detector to detect a direct hit shall be 5 ft. This threshold is for when the IR emitter of the other robot is directly aligned with the IR detector, not when it is at an angle.
  5. The spider-bot shall have six legs to operate its course to battle robots.

Project key features

Design Change

We have been working nine weeks to design the the Hex bug in Solid Work, in week 9 our team with the agreement of the customer decided to Change the design for these reasons:

The hex bug design:

  1. Had a lot of small parts that needed to be printed with precision
  2. It was very complex for a beginner in solid work to design without a professional formation and the right help.
  3. 3D print resource provided couldn’t print our small parts with the precision we needed.
  4. All the part for the design needed to be 3D printed which will be impossible to accomplish with the time restriction given by the costumer.
  5. We couldn’t use any option other than 3D printing to fit our budget.

The geared design:

  1. We were able to be creative and adjust the design to our needs.
  2. The gear movement need some adjustment since the prototype walked only straight. we added a motor to control each side of legs.
  3. By adding the motor we were able to compile the moment of the spider. When we turn off the right motor the spider turn right and vice versa.
  4. Less part to print and they all were able to print with precision
  5. We could of used different method like laser cutting to get some parts but the 3D printing time was enough for our requirements.
  6. The Solid work design level of complexity was little bit higher than the formation and help provided by the division for the manufacturing engineer but not as high as the level of complexity of the Hex bug design.

Tagging System (interactive game)

For the interactive game we had 3 options : Laser tag, IR tag, and Ultrasonic. After doing research on each option, we settled with IR tagging system for its safety. In the pictures below, some arguments about why we choose the IR are shown:

Screen Shot 2016-05-06 at 1.02.16 PM

Motor Control

After assembling the 3DoT David, we found that the motor synchronization is optional. The leg position helped the robot to move forward even if the motors are not in sync. Before that, we looked at different possibilities on how to synchronize the two motors and it is shown on the table below:

Screen Shot 2016-05-06 at 1.05.15 PM

We ended up choosing the Flex resistor. After implementing it to our robot we found that there is a slight improvement when the spider movement was more in sync. However, we decide to remove the flex resistor with the agreement of the customer because of the limited improvement and the limited number of pins available on the 3DoT board.

Innovative Design Solutions

In every step of assembling the 3Dot David, the team discovered issues. By brainstorming ideas, solutions are found and implemented into the design.

Design Evolution

With the solutions found, legs, bottom plate, and top plate are adjusted in Solidworks. By adjusting the parts, the 3Dot David will be able to move freely as it accomplishes its mission.

Design Evolution (for more details click here to go to the blog post) :

Gear Instability

Three tests were made in order to obtain stability for the gears moving the legs as it rotates. The first test was putting screws inside the center hole of the gears, but the screws were heavy affecting the motion of the gear. The second test was implementing white gears into the rapid prototype made of wood. The motors worked perfectly with these gears. However, the gears were too light, which causes concern when inserting the leg on the gear. The issue was solved by implementing extrusions on the testing board in the third test.

Gear Instability (for more details click here to go to the blog post)

Joint Solution

In order for the leg to rotate freely, the joint must be lightweight plastic material. The joint was made in solidworks. The concern about it is that making a connection to secure the joint to the gear. A second solution was made by inserting a tube as a joint. However, there is much labor in sanding the tubes.  A joint solution is found by using one of the parts in the white gear bag for the legs to rotate freely.

Joint Solution (for more details click here to go to the blog post)

System Design

The system design for the 3DoT David is explained in detail in the following blog post. The system block diagram, interface definitions, and system resource reports are all presented there.

System Design (for more details click here to go to the blog post):

If you want to be directed to a specific topic in the system design blog post use the links below:

Trade-off studies

IR Trade-off Study

This study shows off the emitters and detectors relevant to our project according to specifications made by the electronics and control engineer. There is a table with the specs of emitters and a table with specs of detectors.

IR Trade-off Study (for more details click here to go to the blog post)

Servos and motors trade-off study

This trade off study was conducted in order to determine the best way to control our spider’s walking movements. There are brief descriptions of what motors and servos are, and how one may work better than the other for our project.

Servos and Motors Trade-off Study (for more details click here to go to the blog post)

Experimental Results

Leg Movement Angle Study

Calculations are done to find the distance of the final lift of the leg attached to the gear from the surface by using trigonometric equations. The leg must be lifted in order the spider to walk. If the leg is not able to lift, the spider is not going to walk. Thus, a blocker is created to make the leg lift as the gear rotates 360 degrees.

Leg Movement Angle Study (for more details click here to go to the blog post)

Gear Train

The gear train is an important mechanism for the 3Dot David that keeps it moving from place to place. Calculations are done to get the reasonable rotational speed of the gear by finding the gear ratio and using the given rpm of the motor at 120 rpm, or 2 cycles per second with the large gear.

Gear Train (for more details click here to go to the blog post)

Cam Simulation

The first prototype is made with a Cam Simulation simulated in Solidworks. Further details to every part are explained in the  CAM movement system.  However, the design proved to be complex, and it could exceed the 6 hour limit printing time. The CAM simulation had many mates and crashed because of it.

Cam Simulation (for more details click here to go to the blog post)

IR Lens Study

This study was conducted to determine a lens for increasing the range of the infrared emitter to meet the game requirement of 5ft. We will see the various types of lenses as well as calculations for the physics of light through lenses. The conclusion shows what

IR Lens Study (for more details click here to go to the blog post)

Motor Driver Control

This blog post explains how we controlled the motors from the sparkfun Pro Micro using the sparkfun TB6612FNG motor driver. It includes screenshots of the code being used with the sparkfun Pro Micro board to drive PWM signals for how fast the motors should rotate, as well as test functions for turning left, right, and reversing.

Motor Driver Control (for more details click here to go to the blog post)

IR emitter/detector testing

These are the test results of the IR tagging system done by connecting the schmitt trigger, BJT, emitter, and detector circuits. We show how the range is affected as we increase certain resistor values as well as the voltages being read from the output of the schmitt trigger and IR detector.

IR emitter/detector testing (for more details click here to go to the blog post)

3DoT Board motor Current Safety Test

Since there was a change with the mechanical design of our spider, there was the issue of the old motors not being able to rotate the new gears. Therefore we needed to search for motors that were strong enough to turn the gears. The solution to the problem was to use geared motors, which are motors with a gear train that reduces their speed while increasing the torque. However, with this increase in torque, there is also an increase in how much current the motors would demand. We conducted a comprehensive test to show that the current would not exceed 450mA, where the results are stored inside of tables.

3DoT board motor safety test (for more details click here to go to the blog post)

Subsystem design

Interface definitions

Final Interface Definitions 1 Final Interface Definitions 2

This matrix describes how each subsystem will be connected to the main controller (Atmega 32u4) and what those pins are referred to on each respective system. This is covered in more detail in the system design blog post.

System Design (for more details click here to go to the blog post)

Custom PCB Design

The PCB design includes a signal processing circuit, a BJT to drive current to our IR emitter, a speaker, and voltage buffers. Each circuit is thoroughly explained in the PCB design blog post 

PCB Design (for more details click here to go to the blog post)

Hardware Design

The Solidworks simulation folder has all the parts to simulate the 3Dot David. The adjusted parts for the Final David are the parts adjusted to solve issues as the team assembled it during the process.The mechanical design is explained in the link below:

Hardware design (for more details click here to go to the blog post)

The STL files are to be physically printed from Solid Work. The link below contains the zipped STL files:  

Final STL files (click here to access files)

Software Design

The software design for the 3DoT David is explained in detail in this blog post. It goes into depth about the individual modules and what the software has to do.

Software Design  (for more details click here to go to the blog post)

Additionally, the specific changes to the Arxterra firmware as the project progressed are covered in the following blog post. It provides information on the addition and removal of code to accomplish the tasks laid out in the software design blog post.

Arxterra firmware configuration(for more details click here to go to the blog post)

Verification and Validation Documents

In order to prove that the desired product was built properly and achieves its purpose, verification and validation must be done. The verification and validation matrices lists the requirements related to the tests that must be performed and their results. Those documents can be found here.

Verification matrix (for more details click here to go to the blog post)

Validation matrix (for more details click here to go to the blog post)

The verification and validation test plans provide all of the instructions for the tests to be performed and can be found here.

Verification test plan(for more details click here to go to the blog post)

Validation test plan (for more details click here to go to the blog post)

Project final status

The picture below shows The table of task and status of completion. The important tasks were taken from the project schedule presented already on the CDR and PDR, Those tasks were used to build the the project percentage completion graph and burn down graph.

Screen Shot 2016-05-09 at 12.31.34 PM

Completion %

The graph below show the average Vs. the actual completion percentage by week during the 16 weeks of the semester.

Screen Shot 2016-05-09 at 12.16.03 PM

Final burn down

The graph below show the average Vs. the actual task completion graph by week during the 16 weeks of the semester. As asked, when the teem start a task we mark it as 50% completed and when the task is completed we add another 50%.

From the burn down graph we can see that from week 6 to 8 our project was delayed because of issues of the old design. After week 8, we began working on the new design and we are able to recover the lost time.

Screen Shot 2016-05-09 at 12.06.07 PM

Previous Project Blog Posts:

The following Table of Contents blog post was created to organize all of the blog posts for our project and make it easier for future students to access resources related to their role.

All the blog posts made 2016 3DoT David spring semester by department (click here)

Concluding Thought

I found that the project manager position is the most stressful position in the 400D class since our grade is relies on the outcome of the project. But through this post. There were a lot of things that I had to learn on my own and I would have appreciated it if there was some kind of training plan for project managers. Additionally, I would have liked to be able to sit in on the training sessions for the other divisions, so that I could have a better understanding of what they were working on.

Issues encountered :

  • I would advise to choose the right design from the beginning of the semester: our project start was very stressful during the first 8 weeks and that was due to the design that was assigned to us. The mechanism and the shape design was complex for a beginner in solid works specially if they could not get any useful information, which i think it was the division manager part.
  • Improve IR range: It took both teams time to decide what type of tagging system to use between Laser, IR, LED and other than that the we couldn’t find a fast shipping for the lenses which delayed us more. We would have liked more time to test the IR tagging system before the due date
  • Size of the Spider: After searching different kind of gear, we decided to use gears that will give us durability and stability unfortunately they were a little big. If we were able to find smaller gears we would of reduced the size of the spider

If we went back in time, other than applying for a division manager position, i would have chosen to implement the Jerry Mantzel mechanism instead of the Hex Bug mechanism that was provided.

Resources links

  1. Project Video
  2. CDR Powerpoint
  3. PDR Powerpoint
  4. Project Libre File
  5. Verification Matrix
  6. Verification Test Plan
  7. Validation Matrix
  8. Validation Test Plan
  9. SolidWorks Files:
  10. Frizting Files
  11. EagleCAD Files
  12. Arxterra Firmware Code

Spring 2016 3DoT Goliath Final Project Document


By: Ayman Aljohani ( Project Manager)

Team members:

Ayman Aljohani (Project Manager)

Tae Lee ( Mission and Systems Engineer)

Kevin Moran (Electronics and control Engineer)

Jerry Lui (Manufacturing Engineer)

Executive Summary


The objective of the 3DOT Goliath is to design a small-scaled version of the Goliath Tank, as a toy, that meets the following

requirements: Safe: uses IR transmitter and receiver. Less than 6 hours printing time. Piloted via live cam on an Android phone. Low cost: should not exceed $80 total. Controlled by 3DOT board. Looks cool and inspired by the Goliath Tank. Periscope must be attached to an Android phone laying horizontally zero degree with the x-axis.


Mission Profile

The mission profile of this project is to play a “laser-tag” battle with the 3DOT Spider. Every hit will require a 5 second delay in between to avoid multiple tags.  With each hit the buzzer will make a sound to indicate that it got hit.  After receiving the third hit the robot will be disabled and play a short song afterwards.  The game will take place in a 6 ft. x 6ft area on the linoleum floor. The maximum distance for detection from the detector will be 5 ft.


Mission Objective Update


Level 1 Requirements

  • Laser tag game must be safe for children
    • Uses IR transmitter and  receiver to stimulate a game of tag
  • Less than  6 hours printing time
  • Piloted via live cam on an Android phone
  • Low cost: should not exceed  $80  total
  • Controlled by 3DOT board
  • Looks cool and inspired by the Goliath Tank
  • Periscope on an Android      phone degree with the x-axis


Level 2 Requirements


  • The rover will be controlled by two individual DC motors (3-5V)
  • Battery duration should last to the whole period of the battle 15 min
  • Controlled via Bluetooth using an Android Device
  • Print parts of rover individually
  • LED will be used for a game of laser tag
  • Laser sensors (on PCB) must be 3 inches


Preliminary Project Design Documentation found here


System Design

System Block Diagram




The figure below will show how each components on the Goliath will be connected and how they will interact with each other.  


Experimental Results

Uploading the Firmware onto the 3Dot Board


After assembling the 3Dot Board we need to program the ATMEL 32U4 chip by uploading a firmware.  Without the firmware we will not be able to upload any programs onto the ATMEL 32U4.  A detailed explanation will be provided by the following link:  Upload Firmware


Troubleshooting the 3DoT  Board


After assembling the 3Dot board I had to make sure that each component was soldered correctly.  In addition, testing the motor driver by uploading a program using the Arduino IDE onto the 3Dot Board.  To know more about the test procedure, check out the following link:  3Dot Board Troubleshooting


Arxterra Control Panel Test


To be able to use the Arxterra Control Panel from the website we had to perform a couple of tests.  The test is to make sure that the communication between the android Arxterra application communicates with the Arxterra control panel (1) on the computer.  To know how the test was implemented check the link:  Arxterra Control Panel Test  


Bluetooth Module Test


Before we implement the Bluetooth module onto the Arxterra Firmware we had to perform a simple test to see how the Bluetooth module functions.  The test will allow us to see the information we send from the android device using the BlueStick Control, which will than be displayed on the Arduino serial port.  The link will provide a detailed explanation of the test performed:  Bluetooth Module Test



3DoT Goliath DC motor trade-off study

In this post, it was my job to narrow down from a few DC motors to just two and do a trade-off study in order to figure out which one would work best. The motors were compared in regards to customer requirements. The motor chosen had to fit all customer requirements, including some requirements needed in order to make the project successful.

Motor trade-off study

Laser vs IR LED trade-off study

In the beginning of the semester, we began comparing two different method for meeting the project requirement of having a laser tag game. We tested both a laser and IR led with their respective receivers.  The benefits of the laser were the range and low power consumption; the problem was the safety with using lasers. The IR LED was very safety to use, unfortunately the range was very low, as the light diffused. At this point we believed the laser would make the perfect candidate for the game.

Laser vs IR trade-off study

Progression of laser tag components

In this post I explain my reasoning in the progression of the different technologies we wanted to use to make the laser tag possible. The laser and IR emitter were giving me trouble in order to design the game. Another idea was to use a visible LED and turn that into brighter light using the same idea of a flashlight. Testing proved successful as I was able to increase the range, and maintain the safety. As it would turn out, the LED light would not a viable option either, yes be ready to have your ideas rejected often, that is life.


Progression of Laser tag components

Making laser tag possible: The Schmitt trigger

In this post I discuss why a Schmitt trigger is needed in order to make the laser tag game successful. Since I will be using an IR emitter/receiver, the signal output is analog which is very hard to control. By using the Schmitt trigger I am able to invert this signal and convert it to a single bit digital signal output, which we are able to monitor better.

Making Laser tag possible

Making laser tag possible: The receiver

By recommendation of my division manager, for the receiver we used an infrared transistor SPH 310 (Opto-semiconductor).  In the post I include the analog voltages outputs using both Arduino plotter and monitor. You will find basic code to test the analog voltages as well as my EAGLE CAD drawing.

The Receiver

Making laser tag possible: The emitter

In this post I discuss the IR emitter, which is built by using a few resistors, an IR LED, and a 2n2222 NPN transistor. The calculation for the resistor that I have selected are provided. This emitter will be able to be controlled on/off by controlling the voltage that is sent to the base of the transistor. The EAGLE CAD schematic is also included.

The Emitter

Subsystem Design

Interface Definitions







The following table will provide the pins for the Atmega32u4 Microcontroller 3Dot Board:

Now we will narrow down the number of pins we will be using on the Atmega32u4 Microcontroller:




3DoT Goliath PCB Testing

Once the PCB was assembled by manufacturing engineer, it was my job to ensure it would work. With the help of the division manager, and systems engineer we were able to determine the problem. The blog post goes through our mistake and how we solved the problem, as well as a recommendation for when you have to design your PCB.

Custom PCB Design Testing

Making Laser Tag Possible: Extending the IR Range

With the PCB working correctly, I realized that the range was around 6-8 inches. That range needed to increase in order to make a more entertaining laser tag game. With the help of a lens and an online formula I tried to concentrate the IR LED in order to increase the range. Here you will find a very helpful formula that will help you with this problem.

Extending the IR range

The PCB Layout

In this blog post you will find the process I had to go through in order to finalize the final PCB layout. From the design on Fritzing, to testing the circuit, and finally designing it on Eagle CAD. All files have been provided by Eagle CAD. Pay attention to the Phoenix 254 connectors, as well as grounding everything to ensure your circuit works.

PCB Layout


PCB  physical layout

For the PCB layout blog post I go detail on the methods and a few tips and tricks regarding the layout of the board and the usage of EagleCAD. The main thing to remember is the trace width guide. For boards that aren’t powering much (simple light show, 1 or 2 small motors) the trace width can be fairly thing but for anything that requires more power (over 500mA) one should consult the guide to properly determine the width otherwise it won’t be able to supply enough power.

Remember to manually layout your traces! The auto route is terrible.

PCB Physical layout

SMD Soldering

The SMD soldering blog is just quick tutorial on how to solder small IC’s and surface mount components. I’ve included a very good video on how to SMD solder using a hot air gun and soldering iron for the larger SMD components (0805 resistors, etc.)

Note: Due to an issue with embedding the video won’t play properly. Open it in another tab and you’ll be able to view it.

SMD Soldering


3DoT Board Fabrication:

The 3DoT Board was soldered by project manager and tested by System Engineer.

3DoT Board Fabrication


Hardware Design


Goliath Body dimensions


This blog was created to give a quick overview of our preliminary design and various features within Solidworks (filter types). Although this design was created before one of our manufacturing engineers had to drop the general dimensions remained the same. The body is still designed to house all of the components (3dot board or Arduino nano, battery box, motor cage, phone, etc.).

The filet options are mainly for aesthetic purposes. Instead of rounding off the corners of cutouts a conic rho profile can be used which generates a pointed, yet rounded, corner.

Preliminary Body Dimensions


Final body redesign

Since the manufacturing engineer that was originally tasked to create the body had to drop the course, I had to redesign the body to meet the requirements set out from the beginning of the course.

This blog just briefly goes over what to be done and what compromises were made to meet the majority of the requirements (only one requirement was not fully met at 50% -> exact replica of Goliath tank).

Final Body Design



Updated Laser Tag Communication System

The new modified flow chart (shown below) will incorporate the new laser communication system.  New features  will include an automatic turn after receiving a single hit to avoid multiple hits in less than a second.  In addition, to disabling the Goliath and playing a short song after the third hit.  

The finalized flowchart  for the laser communication system for the Goliath is shown below:






The arduino C++ code that will be implemented in reference to the flowchart on the Goliath will be available by following the link:  Goliath-Arxterra Firmware


Making laser tag possible: Putting it all together

The final blog post in the sequence of making laser tag possible. Here you will find the final product of the emitter/ receiver combo. I have also included a flowchart showing exactly how our circuit will work. The circuit is to detect three different hits by an IR LED. After each hit a piezo buzzer will make a tone sound, after the third hit we play a melody and the rover is deactivated. The final code and output results are included.

Putting it all together

Arxterra Firmware Motor Control Modification Test

The 3Dot Board was not given at the time, so we had to use the Arduino Uno and the Arduino Motor Shield.  The Arxterra Firmware that was given to use had the motor controls for the Sparkfun Pro Micro with the Dual Motor Driver.  Hence, we had to make modifications to the firmware to work with the Arduino Uno and the Arduino Motor Shield.  


3DoT Goliath IR Emitter/Receiver Code Test

The early stages of development of the laser tag system required research and testing.  To see how IR worked we performed a basic test using IR Mid-Range Proximity Sensor (TSSP4P38) and a remote control (IR Emitter).  Follow the link to see a detailed explanation of the testing procedure for the circuit setup and the code used to test the sensor.


Verification and Validation Test Plans

We will perform a verification on the requirements that was discussed by the customer.  Each subsystem engineer will perform a verification test to verify that it meets level 1 and level 2 requirements.  A verification document/verification matrix are given in order to verify each requirements.  


In addition, a validation will be required to test the mission profile (rules of the game) by following a similar test plans as the verification.  For validation we will validate the test plans using a validation document on how to perform the test and validation matrix to check off the validated requirement.


Project Overview



The WBS has been updated after resources allocations, one of the manufacturing engineer was assigned to work on PCB layout, and the other one was responsible for chassis design. A link to the WBS is here







Burndown Chart:

This is our final Burndown chart

Here is a link to the Burndown chart




Project Schedule:

The project schedule is divided into two levels, high level requirement under “planning phase”, and level 2 requirements which is broken down to tasks. Project Schedule

Here is a screenshot of the updated project schedule. The project  percent completion is 100% .

The project schedule was created on a very useful tool, Smartsheet. Here is a link to full details blog post. Smartsheet .  








Project Budgets:

One of level 1 requirements is budget. It is the project manager’s responsibility to keep track of budget, one way to do that is to have a parts request form. Any team member should fill out the request, print it out,  sign it , and get the PM approval before proceeding with any purchase. Our actual project budget is $85

Here is a link to Parts Request Form.

Here is a link to Project Budget.

Mass Budget

Power Budget


Concluding Thoughts:

Suggested Practice: 

As a project manager, I had to work closely with each division engineer, especially Systems Engineer. I learned a lot through this experience. In the beginning of the semester, we had to sit with customer, president, and student assistant to define level 1 requirement of the project. That  process, iteration, is a continuous process in which a project manager verifies the customer’s requirements and provides options. The Goliath mission was to battle 3DoT Spider, thus it is important that both team work closely to define game rules and communications means between two robots. Also, another important thing is beam-width of IR, in our project we used IR, should be the same for a laser-tag game to be fun. The customer requirements will be very simple in terms of wording, but project manager and team should critically think of being creative thinking out of the box.

For a project to be completed in a timely manner, the team has to meet at least twice a week, one during regular class time, and another during the week. We had to meet three times a week to complete our project, twice on campus and once online. Communication between team member is highly important, so from the first meeting we decided to use Google Hangout app to communicate with each other.

Lesson Learned: 

Preliminary Design Review, and Critical Design Review should have  detailed information about the project. Project Manager should start preparing for CDR and PDR two weeks before the deadline.

Project video is a useful tool to promote the project, thus it is advised that Project Manager plan the video from the beginning of the semester by recording clips of the engineering method followed toward the final product.  

Smartsheet was a powerful project management tool that helped me easily managed my team. At the same time, it is good platform for communication between team members to have discussions about certain task assignment or requirement clarification. I strongly encourage project managers to use it, here is some information about it.   

Blog post is a good way to pass the knowledge to successors, therefore I encourage all team members to post on Arxterra regularly.  

After all, this was a challenging experience that expanded my understanding of real world engineering problems.



  1. Project Video
  2. CDR Presentation for Goliath  (Prezi)
  3. PDR Presentation for Goliath
  4. Project Schedule on Smartsheet 
    1. Project Burndown
    2. Project Schedule on Google Spreadsheet
  5. Verification and Validation documents
  6. Solidworks Chassis File for Goliath
  7. Fritzing Files for Goliath
  8. EagleCAD Custom PCB Files for Goliath
  9. Burndown Excel File
  10. Arduino and/or C++ Code
  11. BOM
  12. Other Files (Parts Purchase Request) , Team Members Evaluation Rubric 


Spring 2016: 3DoT David Software Design

BY: Christopher Hirunthanakorn (Missions, Systems and Test Engineer)


The purpose of this blog post is to summarize all of the work that has been done for the software design of the 3DoT David and inform the reader of the final state of the software. It will cover the software flow chart to introduce the tasks the software has to accomplish and then explain the different modules in the software block diagram. Finally, a brief overview of how each module works in the final version of the code will be provided.

Related Level 2 Requirement:

  • The 3DoT David shall be controlled by the Arxterra App used on a smartphone.

Software Flow Chart

CDR Software Flow Chart

The software flow chart shown here shows what the modified Arxterra firmware that will be programmed to the 3DoT board will do. The program will start by initializing all pins and variables used such as the pins for the Sparkfun Dual Motor Driver TB6612FNG, the IR emitter, IR detector, and speaker. Next, it will check to see if a command is sent via bluetooth from the ArxRobot App. If a command was sent, the commandDecoder and commandHandler functions will be executed and the action related to the command sent will be done. When no command is detected, the program will check if the IR detector has registered a tag from an opposing robot. If it is tagged, a sound will be made and the tag counter will be incremented. When the tag counter reaches three, a song will play, the robot will be disabled for 10 seconds, and the tag counter will reset before the loop continues. If there was no tag detected, the program will send any telemetry data that is required. Currently, there was no requirement for the 3DoT David to send any telemetry back to the ArxRobot App.

Software Block Diagram

CDR Software Block Diagram(1)(1)

The software block diagram shown here explains what the different modules do and the types of inputs/outputs of each module. The modules are the commandDecoder, commandHandler, Move Robot, Motor Phase Control, IR Emitter On, Tag Tracker, Robot Disabled, and Telemetry.

CommandDecoder Module

For the commandDecoder module, the input is the command data that comes from the ArxRobot App through bluetooth. This data is sent one byte at a time and the commandDecoder module saves this data into an array. Once the entire array is received, this module verifies that all of the data was sent correctly using a state machine and that the command ID matches one of the defined commands. It outputs this array for other modules to use.

CommandHandler Module

For the commandHandler module, the input is the data array containing the command information sent from the ArxRobot App. This module will check the command ID from the array and then execute the corresponding functions for that command. Those functions must be defined individually. If there are any custom commands that need to be added, a corresponding if statement is required to modify the commandHandler module to handle that command ID. There are no outputs from this module.

Move Robot Module

For the Move Robot Module, the input is the command data that comes from the ArxRobot App through bluetooth. This module includes all of the functions required to move the 3DoT David and is only executed when the move command is sent from the app. It uses the functions defined in the sparkfun_TB6612FNG.ino file and a custom function that operates the motors based on the direction of the move command that was sent. The outputs of this module are the control signals for the Sparkfun dual motor driver and the PWM values for the motor speed, which are designated as digital pins PB5, PB6, PC6, PD7, PF5, PF6, and PF7.

Motor Phase Control Module

For the Motor Phase Control module, the inputs are the current outputs from the flexible resistor sensors. This module processes those inputs using the code that was provided by the Electronics & Control Division Manager Jeffery Cool. It will compare the two inputs and determine if one of the motors is moving faster than the other. This works because the two inputs will be equal if the motors are in phase. The module will make the two motors in phase by changing the speed of the motors. The output of this module are the PWM values for the motors.

This module was tested and had a slight improvement to the movement of the 3DoT David but it was determined that it was not necessary. It is not implemented in the final version of the firmware because of the limited number of pins that are readily available on the 3DoT Board.

IR Emitter On Module

For the IR Emitter On module, there are no inputs. It will only be called by the commandHandler module when the correct command is received. The purpose of this module is to send the command signal to turn on the IR emitter and attempt to tag the opposing robot. It is not always on and will only be turned on when the correct command is received. The module outputs the control signal to the digital pin PD1.

Tag Tracker Module

For the Tag Tracker module, the input is the current output from the IR detector. If the signal that is being detected at the digital pin PD0 is low, that means a tag has not been detected. When the signal is high, this module will increment the tag counter which starts at zero. After the tag counter reaches three, this module will call the Robot Disabled module and then reset the tag counter to zero. This module will also create a 5 second delay before it checks the output from the IR detector to prevent consecutive tags. There are no outputs from this module.

Robot Disabled Module

For the Robot Disabled module, there are no inputs. When it is called by the tag tracker module, this module will prevent the robot from responding to any commands for 10 seconds and play a short song to indicate that the 3DoT David is disabled. There are no outputs from this module.

Telemetry Module

For the Telemetry module, the inputs will vary depending on what type of telemetry needs to be sent back to the ArxRobot App. This module will collect the current values from the sensors on the robot and send that information back to the app. It should be called at a maximum frequency of 1 Hz in order to prevent data overload. The output of this module will be a data array that is sent via bluetooth. For the 3DoT David, there was no telemetry that was required.

Implementation of modules

For the Move Robot module, the existing code was designed for operating a rover and needed to be modified to fit our robot’s movement system. With the new movement system design, both motors will need to be controlled at the same time in order to move because each motor is driving one set of three legs. Additionally, the smoothest movement of the legs required the PWM value to be set to the maximum of 255. If it was any less, the motion of the 3DoT David would look very slow and feel weird. Because of the way the ArxRobot App is set up, the user has to press and hold the direction button to increase the speed of the motors to move in that direction. The code was changed so that the PWM value would be a constant 255 and that the leg movements would be fluid.

For the IR Emitter On module, it was decided that the IR emitter will be turned on whenever the 3DoT David is moving and is off the rest of the time. This is because the ArxRobot App can only send one command at a time and the alternative method of controlling the IR emitter would be using a slider on the app to turn it on or off. Implementing this in the code was easily done by incorporating the command into section of the commandHandler function that executed the move commands.

For the Tag Tracker and Robot Disabled modules, code was added to the main loop to check the output of the IR detector and if the 3DoT David should be disabled. The code is executed after the commandHandler function is called and checks if the robot has been tagged. If so, a counter would be incremented and if that counter reaches three, the robot will be disabled. When hit, the speaker will make a sound and the robot will not check for tags for 5 seconds. When the robot is disabled, it will not respond to any commands for 10 seconds and play a short song to indicate this change. All of this is done by using a flag variable to keep track of whether or not a tag has occurred. The flag will be cleared after 5 seconds have passed. When this has happened three times, the code will enter a loop that keeps it from responding to commands for 10 seconds.

Additionally, all of the extraneous code that was a part of the latest version of the arxterra firmware was removed. This includes all of the telemetry and sensor definitions that were left over from older projects that are not being used for the 3DoT David. All of the code used for debugging and testing were also removed or commented out to make sure additional processing time was not being used up. Comments were also added to help future students understand how the code functions.

The final version of the Arxterra Firmware (click here)