Standard Deviation and Moving Average

Recently my neighbor paid me to build a key less entry system for his dorm room. I decided to go the economical route and use a button/potentiometer that sits outside the door and an Arduino on the inside that controls a servo connected to the lock. For my room, I thought it would be interesting to use a Ping))) ultrasonic distance sensor instead of the potentiometer and lose the button.

The Ping))) sensor kept taking readings while my hand was moving. In order to fix this I decided use a Moving Average filter, then calculate the Standard Deviation of the values currently included in the M.A. filter. When my hand is still, the Standard Deviation will become very small.

Example code:

M.A._and_S.D.(pdf)- “storeValue(variable);” is how to enter data into the array, then call M.A. and S.D.

Not much of a circuit required! Arduino's regulator also powers Ping))). Servo has it's own 5v regulator... needs capacitors

pingDoorLocker(pdf) – As you can see, this program blew up a little…

Download .pde source code from RapidShare

I tried to make the M.A. and S.D. code very easy to follow. Some things could have been combined in the S.D. and Variance method, but to the beginner what I wrote above is probably easier to understand since it follows the equations. As for the pingDoorLocker – I threw that code together very quickly.

Follow up notes: That was probably the worst way to do this project… I thought of a few ways how to write the program that would chop the code WAY down, but this is an example about using M.A. and S.D.! Pretty bad use of a M.A. filter if you ask me!

His door unlocker.

Since I did put a few hours into building my neighbor’s door opener, here’s an image of it! He didn’t want numbers on the potentiometer dial, so I made the LED flash the number that is currently being entered.

Code for his door opener (pdf) – leave a comment if you want schematics/code on rapid share since pdf loses tabs.

Wicked Laser

My initial response.

Green laser with shades to block green light.

Just received my, “Flashlight Sample” from Hong Kong. I guess it’s better than calling it a high power laser and losing it at customs. I’m certainly satisfied with seeing a clearly visible beam in just about any light condition! No smoke required! Using it to cut electrical tape like butter, and popping balloons never gets dull! Shining this thing on the ceiling literally lights up the whole room! The only downside is that there are warnings NOT to look at the dot without eye protection… how can I resist!?

Green laser DPSS.

The legality of high power handheld laser pointers is somewhat murky and will likely change in the near future. It may be a federal crime to shine a powerful laser at the sky (who could resist doing this) since it may hit an aircraft.

How they work:

This is a Diode Pumped Solid State laser (DPSS). The actual diode inside is an infrared laser, and the light gets changed to a green color by a rather interesting, yet inefficient process. Anyway I don’t want this post to be too long, so head here if you want to learn more! I’ve read that cheap DPSS lasers don’t have the IR filter in order to have a higher power output. This must dramatically increase danger since shades probably don’t block IR too!

similar laser

Picture of a similar laser.

Future use:

I plan on putting this bad boy on a robot that will drive around popping balloons, and target tank cut outs made out of black flash paper. Another possible use is to buy a simple line camera and make a laser distance sensor.

Where to buy:

Sellers include Laser Glow, Dragon Lasers, and Wicked Lasers. I would be curious to see how well some of the laser modules from deal extreme work. Maybe I’ll get this guy!


After a year and some change the laser diode failed. Disappointing since I never went through a set of batteries! That’s a pretty good indication that the laser diode was being driven far beyond its ratings. Be warned when buying from Wicked Lasers!

ASEE 2011 Competition

Original CAD.

The goal of this project is to have a robot start on the east wall, navigate the track, collect all red doll rods, and finish touching the original east wall. The key robot rules are: robot must be fully autonomous, total budget is under 450$, the robot must fit inside an 8 x 12 x 10 inch box, and it must complete the task within two minutes. We designed the robot to be similar to an assembly line, so the robot never stops moving. Our robot ended up using a PI controller based on the Arduino PID library.

Front view, doors closed.

The batteries were only changed twice which shows how the project focused on building small modules, and shows how smoothly the final design came together. We ended up not competing due to funding issues with the school, which is why nothing was fully completed or perfected.

Member roles:

  • Moser EE- electronics, programming, control theory
  • Imig EE – electronics, control theory
  • Doxsie ME- CAD design, organization, mechatronics
  • Dulce BioE- general management, organization, paperwork

Design Stages:

The total time for this project was about seven months!

Front view, doors open.

  • Rather than rushing into any decisions, we decided to brainstorm for about two months. This brainstorming allowed team members who weren’t interested to drop out and allowed everyone else ample time to research, think of designs, test sensors, and test algorithms.
  • Next stage was to build a robot that could follow a wall, we had two robots at this time — Arduino and a Propeller based robot. Many complications arose with the propeller robot, so we ended up going with Arduino since it’s simple to use. This stage took about two months.
  • Once the team’s robot could follow a wall, it was time to navigate the course perfectly every time. This stage took about a month. A video oh another!

    Rear, doors closed.

  • The final stage was giving the robot it’s second chassis, and test one door. We then added the color detection modules. This stage took about a month, giving us plenty of time for perfection.

Programming style:

I ended up doing the majority of the programming and I’ll give a bird’s eye view on the concepts of the program.

  • Break the overall program into three stages.
  • Keep everything very modular and break up core robot functions into methods which are reused in all applicable stages.
  • Write the program in a style which contains no time based delays. If a large time based delay is needed, then store the current up time and don’t take action until the stored up time and the current up time differ by whatever the delay needs. There are some exceptions to this, but they’re under ten milliseconds.

The Arduino may do a few hundred loops a second where the actual processor just runs calculations and makes adjustments to registers, it’s not generating signals for the servos. There are large delays when the robot is turning at the corners, or at a time where it doesn’t need to be accurately following a wall and color detecting. We were originally using a compass, but a simple estimated turn is better and saves 30$.

Final ASEE robot source code (pdf) – Since we didn’t go to Canada, the code isn’t pretty.

All connections and currents.

Electronics used:

Picture of wiring. What a mess!

We did use a standard Arduino with an Atmega328. This proved to have enough pins for everything. Our Arduino was the DC BoArduino from Adafruit!

The wheels used continuous rotation servos. Doors were cheap analog servos, color sensors are the same ones that I wrote about earlier…etc. A full list of the final parts is in the pdf below.

Final robot parts (pdf)


The doll rods are much easier to work with if they’re knocked over since they can roll. I’ll admit that we used some design ideas from the other team. They didn’t knock over the doll rods and had major difficulties with actually getting the rods into their storage compartment. Their robot was based on dead reckoning, which meant there was no feedback when it came to navigating the track. Although dead reckoning is an easy path to take, it’s not ideal when tolerance is less than an inch. The video below is an older one back before we completed the color sensors. The servo in the next video is a digital all metal gear servo and it’s MUCH nicer than our final servos.

front view from robot showing pid response:

inside the cargo bay (collecting both colors):

Original robot with compass and Sharp IR distance sensor

Why are we not competing?: The tech department is funding the project, and our team is composed of engineering majors. Since we’re not from their department, they weren’t able to drop a few thousand to send us to Canada. It was frustrating since this was not explained until a few weeks before the competition!

Why didn’t we use all the doll rods?: Yes… as you can see we weren’t using all 12 doll rods. This was because the other team that dropped out still had most of the doll rods, and we didn’t have enough extras to fill up the course. We didn’t get around to making more.

One more video!