Project Ideas
Projects
Firstly, if you have an idea for a project, then talk to the demonstrators, partly to see if they think you will
be able to complete it in the time available, and also to check that we can source any equipment required.
For some interesting sensors, have a look at www.sparkfun.com
Here are some ideas for projects. As well as providing some suggestions, they also give guidance to
the expected complexity level for a project.
The projects offer a range of challenges in terms of hardware and software, and in implementation some
are more open ended than others. You should also consider the extent to which you will be able to work
incrementally, or whether everything must work before you can get a useful outcome.
In some cases the project has been been attempted before, but in others the idea is untried. We expect
you to do preliminary calculations to see if what you hope to do is possible, but you won't be penalised
if the project doesn't work fully due to something you couldn't have forseen (for example a sensor not
working as well as the manufacturer claims).
To make writing your report easier, take notes in a lab book as you progress, including feasibility
calculations (for example how much storage is needed), design options, preliminary designs, tests of
intermediate steps, and also what didn't work as expected, and why.
Consider at the design stage how you will test that your project is working as expected. Measurements
or graphs of parameters like current consumption will allow you to show an expected battery lifetime
for battery powered devices.
So far you have used prototyping boards, plus a printed Circuit Board (PCB) to interface to the LCD.
Many of the projects require the same set of basic parts, so we have made a PCB available. Details are
available here: http://www.cl.cam.ac.uk/teaching/1112/P31/docs/project_pcb.pdf
Alternative ideas
Owing to time constraints, not all of the features of the ATMEGA series of devices have been specifically
covered in the workbooks, for example:
• I2C peripherals, such as fast AtoD converters, memory, sensors. There is library support for I2C
  available.
• Pulse Width Modulation, often used to control servos.
• Digital to Analogue conversion (using devices with a DtoA built in or resistor ladders)
• Analogue to Digital conversion using external AtoD converters, which may be faster or more accurate
  than the ones in the ATMEGA168.
• 1 wire serial devices
However they may prove invaluable either in the suggested projects or if you have an idea for a project
you would like to try.
Here are some example devices with part numbers
• DS3231 Precision Real Time Clock using the I2C bus. This device has an error of about 1 minute
  per year.
• MMA8451 3 axis Accelerometer which uses the I2C bus.
• SHT71 Temperature and humidity sensor on the I2C bus.
                                                                                                              1
                                           Project Ideas
• SCA3000 2 axis accelerometer using the SPI bus.
• GPS receivers like the Quinetiq Q20 which output RS232 serial.
• SCP1000 pressure sensor with both I2C and SPI bus connections.
Project suggestions
RS232 diagnosis                  The problem:
                                 RS232 communications can be difficult to debug, partly because of
                                 confusion over whether the Transmit and Receive signals need to be
                                 crossed or straight, and also because unless the baud rate is right,
                                 a terminal will probably display nothing.
                                 Create a device to sample a bidirectional serial signal, deduce
                                 the baud rates from the pulse widths observed within the signal,
                                 decode the traffic and display it on a 2 line LCD, for example
                                 top line transmit, bottom line receive. There is a PCB available
                                 to do the voltage conversion part of the RS232 interfacing, and
                                 make swapping between straight and crossed connections easy.
                                 Microcontrollers with 2 serial ports are available, which will make the
                                 task easier, for example the ATMEGA644P.
Colour detector                  We have a sensor which consists of three different colour detectors
                                 (R,G,B) on a small chip, and which outputs a frequency dependent
                                 on the light intensity for the selected colour. Because the output is
                                 a frequency, it works over a huge range of input intensities, but it
                                 cannot be used to detect rapid changes in colour, it is more suited
                                 to making colour measurements.
                                 Can you think of an interesting way of making use of this sensor, for
                                 example by comparing the results of a colour chart such as http://
                                 www.w3schools.com/Html/html_colors.asp across a range of LCD
                                 displays.
Lens controller                  We use motorized lenses in some of our research projects. These
                                 are very good quality, and can often be found very cheaply on the
                                 secondhand market because they require a control board. We have
                                 made a lens controller PCB for controlling these lenses, with all the
                                 hardware in place to control the lens zoom, focus and iris. The PCB
                                 uses the ATMEGA168 as its controller.
                                 Write control software for the microcontroller to receive commands
                                 via serial to control the lens functions. The lens outputs analogue
                                 voltages representing the current zoom and focus positions, and has
                                 digital inputs to control the zoom and focus motors.
Where is the hot spot in the     You have already used the MCP9700 temperature sensor in
PC ?                             workbook 2. Using this device it is possible to make a very repeatable
                                 and reasonably accurate temperature sensor. Between 4 and 6
                                 sensors need to be deployed in a PC to find where the heat
                                 flows are within the case, and which parts get hot in use. The
                                 ATTINY45 microcontroller has all the functionality you will need for
                                 the temperature sensor part, and as it is in an 8 pin package, it would
                                 need less soldering.
                                 Combine several microcontrollers to find the hot spot in a PC.
                                 One might be a master, and communicate with several others over
2
                                            Project Ideas
                                  a shared serial line, or they might each have a simple SPI type
                                  interface back to the master. The sensors give very repeatable
                                  results, but will need initial calibration.
Movement detector                 We have sensors which are very sensitive to movement. Make a
                                  data logger to detect human movement and log it to decide whether
                                  the wearer has an active lifestyle. See: http://www.cl.cam.ac.uk/
                                  teaching/1112/P31/docs/MS24.pdf
                                  Consider whether it is more efficient to log start/stop times, or active/
                                  inactive every second. Use sleep mode to extend the battery life.
                                  How long can the device work from a miniature coin cell, or even
                                  a large capacitor. Consider how the data might be stored and later
                                  offloaded, and how to tell the wearer whether they are being fit or a
                                  couch potato. The project PCB is probably ideal for this logger.
Radio link                        Use 2 microcontrollers and a radio transmit/receiver pair such as
                                  the ER900TS/ER900RS to make a radio link, which would work
                                  as a serial extender. Using a real-time clock or the timers in the
                                  microcontroller, or more probably both, synchronise the transmit and
                                  receive so that a batch of data is sent every minute, and sleep
                                  the rest of the time to save power. See: http://www.cl.cam.ac.uk/
                                  teaching/1112/P31/docs/ER900TS.pdf
                                  Evaluate the tradeoff between latency and power consumption by
                                  altering the time between bursts of data, and also consider the cost
                                  in power of switching the radios between active and sleep modes.
Radio Received Signal Strength    Use a radio receive chip such as the ER900RS which has an RSSI
Indicator (RSSI)                  analogue output to make a received signal strength meter, perhaps
                                  using an LED array to display the strength. You will probably also
                                  need to program another microcontroller to send a signal every few
                                  seconds so that you have a signal to measure. Make both devices
                                  battery powered for maximum flexibility, and switch off the LEDs
                                  between readings to save power. See: http://www.cl.cam.ac.uk/
                                  teaching/1112/P31/docs/ER900TS.pdf
.wav file player                  Use a 16 bit Digital to Analogue converter (DAC) on the SPI bus, and
                                  the project PCB to create a device which can play .wav files stored
                                  on a micro SD card. Initially use 8 bit data and a low sample rate,
                                  which will mean you will need to create or convert .wav files using a
                                  utility like audacity or ffmpeg. Eventually you might reach 44.1kbits/
                                  second and 16 bit data width for CD quality mono, but this will push
                                  the microcontroller towards its throughput limit.
Telltale                          Create a 'telltale' - a device whose purpose is to show whether a
                                  door has been opened since the last time the device was checked.
                                  Use a microswitch or tilt switch to detect door opening, a reed switch
                                  or hall effect switch to interrogate the device, and two leds to show
                                  the state. A green led indicates that the door switch hasn't operated
                                  since the last check, a red one shows that it has.
                                  You will need to use sleep mode to make battery life as long
                                  as possible. You might want to check the power consumption of
                                  the ATTINY45 against the ATMEGA168A and ATMEGA168P for
                                  minimum power in sleep mode. A battery life of several years should
                                  be possible using 2 or 3 AA cells.
Security / knock pattern sensor   Some of the roadside cabinets for telecommunications are fitted
                                  with shock sensors to detect attempts at forcible entry. To avoid
                                                                                                         3
                                            Project Ideas
                                  the alarm going off during authorized entry, the engineer might be
                                  required to enter a characteristic sequence of taps to the cabinet to
                                  disable the alarm. See: http://www.cl.cam.ac.uk/teaching/1112/P31/
                                  docs/MS24.pdf for details of a suitable shock sensor. Measure the
                                  current consumption, to find the battery life in typical usage.
Digital safe                      Create the electronics for a digital safe. The lock mechanism would
                                  be driven by a servo, and you would need to implement a 4 or 6 digit
                                  key code to gain entry. These devices are battery powered, so it is
                                  important to sleep for nearly all the time, and to energise the servo
                                  for only a very short period. With such a safe, you enter the code,
                                  the door unlocks, then stays unlocked until you close the door, as
                                  detected by a microswitch. Calculate the battery capacity required
                                  for 2 years of typical operation.
Power clamp logger                Using a clamp meter which produces a voltage in proportion to the
                                  current in a wire, make a logger which calculates and logs power
                                  usage over time, with the ability to output logged data via serial, and
                                  the ability to show cumulative power used on an LCD.
Digital compass                   Using the HMC6352 chip which has an I2C interface, create a digital
                                  compass. You will need to devise a suitable display for the user to
                                  show them their heading. Then, make a logger which records the
                                  heading every few seconds, and which can calculate a very rough
                                  bearing back to the starting point, and display it to the user.
LED display                       We have a PCB which has an array of 20x28 LEDs and electronics
                                  to drive them from an ATMEGA644P microcontroller. Two of these
                                  can be stacked horizontally to give 40x28, and stacked vertically to
                                  any depth. The microcontroller can't drive the 560 LEDs directly, but
                                  can drive the 28 rows in rapid succession, relying on the persistence
                                  of vision effect.
                                  Now, what can you do with 560 LEDs ? You will need to write a driver
                                  for the LEDs on the ATMEGA644P, and write an application which
                                  uses the display on the same microcontroller (very hard) or a second
                                  microcontroller, then get the two microcontrollers to communicate.
                                  The ATMEGA644P has 2 serial ports, which makes daisy chaining
                                  a possibility, too.
Precise rotation speed using a    Stepper motors have the property that up to some maximum
stepper motor                     frequency they will faithfully step once per incoming pulse. This
                                  makes them ideal to drive a turntable which needs to rotate at one of
                                  a number of precise speeds, for example for playing vinyl records,
                                  for which the standard speeds are 33rpm, 45rpm, 78rpm.
                                  The interfacing to the stepper motor is a little tricky but then you
                                  should find it easy to make it rotate at a very precise speed once this
                                  is done. Next check the limits of speed. Lastly you might try more
                                  precise control when energising the coils to try to extend the range
                                  of speeds available.
Precise rotation speed for a DC   Ironless-core DC motors run very smoothly, and start at a low applied
motor                             voltage. Accurate control of the speed of a DC motor is difficult as
                                  it depends on the load, plus there is a delay between adjusting the
                                  supply voltage and the motor reaching the required speed.
                                  A photodetector on a notched wheel should allow you to measure
                                  the speed. You can then try either a pulse width modulation scheme
4
                             Project Ideas
                   or a variable voltage supply to control the motor with the objective of
                   getting it to run at a precise speed.
Rotating display   Create a display using an array of LEDs, perhaps 10 or so in a
                   vertical bar which are spun around a vertical axis.
                   To avoid the difficult problem of the wiring to the LEDs needing to go
                   through commutating rings, use two independent microcontrollers.
                   On drives a stepper motor at a known speed (maybe with some small
                   adjustment available). The other, plus its battery spins with the LEDs,
                   either using a hall effect switch to resynchronise each turn, or just
                   free running but carefully calculated to keep the message static.
                                                                                        5
6