ECE 199 was a course held during spring quarter of 2014. Students got into groups of 1-3 to make a project centered around a arduino micro controller. The projects for that year were:

Click on the button below to see the images of the presentations of June 6, 2014 or navigate through the tabs below:

Images of Group Presentations

Peltier Heater/Cooler

by Dylanger Gutierrez and Subhodeep Choudhury


The goal for this project was to develop a Thermoelectric heater and cooler controlled through a microprocessor. For this project an Arduino, a peltier plate, a 16x2 LCD display, a large heat sink, and a 12 volt 10 amp power supply was used.

The hard drive clock displays the current time that is read from a real time clock. The frequency-controlled LED display analysis the inputted music signal ad activates certain LED banks based on the frequencies detected.


  • l6x2 LCD display ~ $2.65
  • Peltier plate (TEC 12706) ~ $4.96
  • Arduino Mega (with Atmega1280) ~ $20.00
  • Heat Sink and small fan ~ $30.00
  • 220 W DC power supply ~$30.00
  • Wire and perfboard ~ $5.00
  • 2 Darlington Pair NPN Transistors (TIP 120) ~ $4.00
  • Thermal Epoxy ~ $7.00
  • Thermal Grease ~ $6.00
  • 10-kOhm potentiometer ~ $0.50
  • 2 2.2-kOhm resistor ~ $0.40
  • 1 DIP switch ~ $3.00
  • 2 Dallas Temperature Sensor (Ds 18b20) ~ $2.00
  • Total Cost: ~ $113.51


    The most challenging part of this project was reversing the current in the peltier heater and cooler. In order to solve this problem an H-Bridge was constructed, but the circuit was unstable and specifically the high-low side driver shorted easily, and once shorted the driver would burn the MOSFETs running the bridge. The idea was revoked, and 2 darlington pair transistor controlled by a DIP switch was used to manually reverse current. For further improvements all manual control other than inputting temperature is removed, and there would be an option for computer integration.


    The build consisted of several modules listed as follows:

  • Peltier and Heat Sink Module
  • Arduino and LCD display Module
  • Power Supply Module
  • This allowed the project to be split up amongst all members. The first module was the peltier mounted on top of the heat sink and 2 temp sensors were mounted on the top and the bottom of the peltier plate with thermal epoxy. The heat sink then had a fan on one side connected to the universal power supply through a voltage divider. The second module had the LCD and arduino connected with several digital IO pins. The last module was just the power supply with several output connections with varied voltages connected to the other modules.

    RC Car

    by Girish Kowligi, Bragatheesh Sureshkumar, George Pina


    The Bluetooth car is controlled by the Arduino microcontroller which interfaces with the motor driver. The microcontroller receives information from the Bluetooth module which is connected over serial to a computer. The car also features an ultrasonic distance sensor which is used to prevent the car from running into obstacles and stalling.


  • The L293d H-bridge was not able to handle a large amount of current when the motor stalled. This was rectified by adding a power resistor in series with the motor which kept the max current at 0.6 A.
  • Motors had no datasheets. This problem was solved by varying the current-limiting resistor until a suitable torque was reached
  • Car’s battery casing had corrosion on the leads. This was fixed by using a separate casing.

  • Arduino Uno
  • Adafruit Motor Shield
  • Ultrasonic Sensor
  • MPU6050 Accelerometer/Gyroscope
  • 1 9V battery
  • 6 AA batteries
  • Toy Car Frame
  • Drive and Steering DC Motors
  • Bluetooth Slave
  • Power Resistors

  • Addition of GPS module for autonomous operation
  • Integration of the accelerometer/gyroscope
  • Replace L293d h-bridge IC with L293 to deliver more power to motor
  • Android app functionality

  • Attach motor driver to Arduino and install AFMotor library to the Arduino SDK.
  • Attach motor leads to motor shield with necessary resistors
  • Connect Bluetooth, MPU6050 and ultrasonic sensor to Arduino
  • Attach all components to car’s chassis
  • Power the motor shield and Arduino
  • Upload program to Arduino
  • by Gauthier Dieppedalle, Brian Sandler



    The data is returned by the device via HTTP in JSON format.


    The dashboard interface was made using HTML and Bootstrap. The charts are implemented through Highcharts, and AJAX calls are placed via jQuery. The AJAX calls retrieve the data from the weather station in JSON format, then JavaScript updates the graphs.


    WiFi Shield

    The Arduino WiFi-Shield is not compatible with the latest Arduino IDE (1.0.5). To transfer weather data over the Internet we had to download and run our code on a previous version of the Arduino software (1.0).

    Threading in Arduino

    The Arduino microcontroller does not natively support loop threading. We wanted to run multiple functions at the same time to have an exact timing of each sample of data. We tried downloading libraries made by Arduino’ s users but these didn’t work. In order to solve the problem, we wrote code that waits for the server to get data, to post info on the website.


    The goal of this project was to develop a portable weather station that can be left unattended and remotely monitored. The data must be easily retrievable via HTTP requests, such that the user can do with it as he or she pleases. In our example we used the data to create a live-updating dashboard, but the software can also be written to fetch and store the data in a database for analysis at a further point in time.


  • Return Temperature, Humidity, and Pressure Data,
  • Use a standard format, JSON.
  • Present the data in a clear format in almost real time.

    Some of the various improvements could include:
  • Rain Sensor
  • Wind Speed Sensor
  • Wind Direction Sensor
  • Independent Power Source (Solar Panel)
  • GSM Network Connection


    Pseudo-Binary Clock By Richard Wei


    This project was inspired by similar binary clocks that can be seen online. I chose to make this particular project since it seems to be the most useful, interesting, and fun project that I’ve seen. The pseudo binary clock is powered by an Arduino Uno, with 13 digital output pins that each connect to an LED that represents a binary digit (1,2,4,8) and two buttons to adjust the hours and minutes respectively. The clock is not a true binary clock since it is still read in base 10, using a binary display to represent each


    The main components of this project include LEDs, wire, resistors, buttons, and of course, the Arduino itself. The Arduino has 13 digital output pins leading to 200 Ω resistors and then LEDs, which are all joined to one grounded wire. The two buttons use analog pins to advance the Arduino’s internal time by an hour or a minute. One of the initial issues was how the Arduino should keep track of time. Initially, the goal was to make it advance time by one second based on the wall outlets, since those had an output of 60 Hz, but the time library for the Arduino IDE proved to be simpler.


    There are many ways this clock can be improved; a shift register would have been a much more efficient usage of the pins, with an audio shield the clock could have had an alarm function as well, and of course, the exterior casing could be vastly improved in terms of both design and materials used.


    By Asitha

    3D LED Display

    by Kevin Kha and Yang Ren

    Tennis Racquet Hit Counter

    By Marcellis Carr-Barfield, Aaron Chang

    1. Housing for the 9V battery

    2. LCD screen where the hit counter and time are printed

    3. Wires connecting the Arduino to the accelerometer underneath the racquet grip.

    4. The accelerometer connected to the base of the racquet head


    The Tennis Racquet Hit Counter is a battery powered Arduino-based device that uses an accelerometer strapped to the handle of a tennis racquet, in conjunction with a separate LCD, to count the number of times the racquet has come into contact with a tennis ball. The device will print the total number of balls hit, along with the total number of minutes that the devices has been running to the LCD.


    There are many possibilities for future development that would improve the project beyond the obstacles we were able to overcome. Our vision for the future of this project are as follows:

  • Calculate the force of the swing during impact. This would require finding the exact time of impact, which is a complication that is worked around in our project by measuring the physical evidence that the impact leaves on the racquet after contact, rather than measuring the initial contact and its magnitude itself.
  • Calculate the total number of swings taken. This proved to be more difficult than initially thought, because a well defined definition of a tennis swing in relation to the acceleration of the racquet does not exist. In creating a definition of a swing, we will possibly undercount the amount of swings taken.
  • Create a removable accelerometer that can be attached to and detached from various racquets.
  • Implement wireless communication between the Arduino and accelerometer so that wires do not interfere with the user of the device while in use

    The LCD and accelerometer are each connected to the Arduino’s 5V power supply. This is the optimum voltage for both the accelerometer and LCD. Both devices also take advantage of the Arduino’s i2c bus (analog ports 4 and 5 on the Arduino Uno) to minimize the amount of connections required per device.

    In order to count the number of times that the racquet has hit a tennis ball, we programmed the Arduino to look for spikes and dips in the change of acceleration of the racquet head. This is because the collision with the tennis ball causes hundreds of oscillations in the racquet, and the resulting changes in acceleration correspond to the graph of a damped oscillator (see Graphs and Data). Once the change of acceleration spikes above and below a certain threshold within 25 hundredths of a second, a hit counter is incremented and printed to the LCD. There is then a delay of 75 hundredths of a second to allow for the amplitude of the oscillations to die down so that extra hits will not be detected.


    Below are two graphs of the change of acceleration over time. The time between subsequent dots are four thousandths of a second, and the graphs display a ten second interval. Each impact of the racquet with a tennis ball produces extremely rapid, yet brief oscillations in the racquet. These are displayed below as the areas in the graphs that resemble the graphs of a damped oscillator. The graph on the right is a zoomed version of the graph on the left, to emphasize this more clearly. Measuring the amplitude of oscillation allows hits to be counted.