Skip to main content

Gesture and Voice based computer control for differently abled

 Many times, I had given a thought about the societal usefulness of my projects and seriously pondered upon an opportunity to implement one. The opportunity came in the form of "Texas Instruments' Analog Design Contest " in 2011. The contest required us to design a project of our wish which employs atleast three of Texas Instruments ICs. Another mouthwatering offer was, we were allowed to order any Evaluation kit/module from TI which costs below $200.
 Unable to resist the urge, I applied for the contest and cleared PHASE 1, which required us to design an Instrumentation amplifier and analyze their parameters. It was then the proposed project as mentioned in the title began.

GOAL:

The goal was to design a module which can be worn on the head similar to a tiara that helps the 
differently abled person to control a computer just by tilting their heads and emulating a mouse 
with voice commands. The inputs to the module were as follows.
  • Head Gestures, which are angles of tilt with respect to x and y axis in space parallel to ground
  • Voice commands “CLICK” and “RIGHT CLICK”
The computer has to be wirelessly controlled based on the above inputs; the module acts as a voice 
and gesture controlled wireless mouse attached to the user's head.

Components Required:

  • MSP430G2452 -16 bit microcontroller
  • LM741
  • REG710-5 Boost Converter
  • TLC555 timer
  • MMA6361 -Freescale 2-axis accelerometer
  • TSOP1738 - Infrared Sensor
  • Microphone
  • Single sided Copper circuit board*, FeCl3 solution, masks and gloves
  • Miscellaneous - Surface mounted Resistors, Capacitors, headers, battery 
PCB was etched at my room so didn't cost much except for the fact that I spoiled my roommate's cot with ferric chloride. :D 

HARDWARE:

The important modules of this project are:
  • 2-axis accelerometer MMA6361
  • Wireless IR transmitter
  • The Main circuitry with MSP430G2452 and other chips
  • Wireless IR receiver connected to virtual com port of PC


SCHEMATIC:



BOOST CONVERTER:
The boost converter chip REG710-5 is used to boost up the input 3.6v to 5V and is used to supply the microphone amplifier.

TILT SENSOR:
The accelerometer used is MMA6361, which is a 2-axis accelerometer from freescale. The accelerometer is used to decode the orientation of the head in x-axis and y-axis with reference to ground level.

MICROPHONE AMPLIFYING UNIT:
It has a simple electric microphone whose output electric signals are fed to the operational amplifier LM741 whose output is fed to the microcontroller.


MSP430G2452:
This is the low power 16 bit microcontroller which acts as the brain of the head gear that processes the data from the accelerometer and from the microphone amplifier and controls the Infra-Red transmitter.

TLC555 TIMER:
It is a low power timer chip used in astable mode to provide a square wave of approximately 41Khz frequency. This timer controls the Infrared LED which transmits the data to the PC.

The transmitter designed using timer IC and IR LEDS:


RECEIVER:



 The receiver is a creative and yet simple design. Most IR receivers are powered externally while this is powered by serial port itself. Referring the specifications, it was found that thevirtual comport can supply around 30mA at 5V. That was sufficient for us to power the circuitry. And I have used a cheap transistor BC547 for shifting the level instead of pricey level shifter chips like max232. This transistor acts as inverter and shifts the voltage level received. This is possible since we have used a external USB-Serial port cable which doesn't emulate true serial port voltage levels which are +12V to -12V. The voltages were very low and were below the safer limits that the transistor can withstand. This not only saved the pcb space but also the cost.

The tiny cheap wireless receiver which I made:



MAIN CIRCUIT BOARD:


The circuit was hand drawn using a permanent marker pen and etched in room at the hands of an amateur (that's me ! ). So please disregard the non-uniformity in the traces. The circuit was tested and it works like a charm.

FINAL PROJECT :

This is how it looked after assembling the individual modules together:


The microphone amplifier circuitry is not shown here in the picture.

RESULTS:

The various stages where the functionality of the project is tested.


This project was an excellent learning experience for me since I had to implement about low-pass filters to avoid noisy data and also to learn control systems to keep the mouse pointer stable with significant accuracy.

Comments

Popular posts from this blog

Shell Scripting to Display Bar Graphs in Linux Terminal

 This week was quite hectic for me with course assignments and their merciless deadlines. One such assignment in Advanced Computer Architecture  was simulation of various benchmarks in alpha architecture in simplescalar , a well-known computer architecture simulator. I was supposed to run a total of 4 benchmarks with different configurations of cache memory, instruction issue widths, commit widths, in-order execution modes, etc and I had to plot the required performance parameters for every benchmark. A conservative estimate would be around 40 plots!  Since the simulation platform was Linux, I could breathe a sigh of relief since most things can be automated using a powerful tool called shell. Scripting made my life easier here since I can automate a bunch of simulations without having to keep an eye on each and every simulation which would take anywhere from 20 minutes to 20 hours.  The problem arose when it came to plotting the performance results. Becau...

Programming STM32 ARM microcontrollers in Arch Linux

Once upon a time, not so long ago, the 8-bit microcontrollers were ruling the hobbyist embedded world. But today, the 32-bit ARM Cortex Microcontrollers are so inexpensive and power efficient that there is no good reason to ignore them. Here, let us see how to program a STM32 ARM cortex Microcontroller in Linux environment. The specific microcontroller used here is an STM32F103C8 (ARM cortex M3) programmed in Arch linux. Components Generic STM32F103 board (blue pill) STLINK-V2 (STM32 programmer) Female-Female connectors All the above components can be bought from ebay for less than $10 total. The STLINK-V2 is optional since you can use any of USB-SERIAL converters like FT232, CP2102, PL2303, CH340 and the built-in UART bootloader of STM32 chip to program. So if you already have any of the above serial converters, you don't really need STLINK to program the STM32F103 microcontroller. But STLINK helps if you plan to use in circuit debugging functionalities. Software The...

JTAG - Test Access Port (TAP)Controller based Xilinx FPGA configuration using Raspberry Pi

JTAG - Joint Test Action Group is an IEEE 1149.1 standard used in many silicon devices for programming and debugging purposes. Xilinx FPGAs support this JTAG protocol for their configuration. Here I have designed a JTAG FPGA bitstream programmer using Raspberry Pi which programs the bit file into FPGA in fraction of seconds!  JTAG physical bus has four lines: TMS (Test Mode Select) TDI (Test Data In) TDO (Test Data Out) TCK (Test Clock) Components Used:  Raspberry-Pi Xilinx Spartan 3E FPGA (XC3S250E in Papilio One) Jumper wires BLOCK DIAGRAM: TAP CONTROLLER: The TAP(Test Access Port) controller is a state machine inside the FPGA which changes it's state based on TMS input. For instance, let us assume that the state machine is in " Test-Logic-Reset " state. Now if I drive the TMS pin low and toggle the TCK pin, the state machine will go to " Run-Test/ Idle " state. This is how we move to different states.  Note ...