Skip to main content

AVR based Motion Sensing USB Joystick

Here, an AVR microcontroller (Atmega-8) is used to design a bare minimum motion sensing joystick for controlling games in computer.







Components Used:
  • ATmega-8 Microcontroller
  • 2-axis accelerometer (MMA6361)
  • Resistors,Capacitors & Zener diodes
  • USB female connector and cable
  • Headers, Connecting wires


An Atmega-8L, overclocked at 12MHz runs virtual USB library and emulates an USB keyboard in HID mode. It senses the motion data from a 2-axis accelerometer using the ADC.


The accelerometer is set at high 'g' and the voltage range obtained was around 0.8V to 2V with 1.35V at neutral position for both axis. For example, an extreme left tilt will give 0.8V and on the right side would be 2V. We added a filter capacitor to each axis output to minimize the noise in voltage. The following sketch was rendered by diptrace.



The initial position (null position) is taken as reference by Atmega-8 using its ADC. The tilts are computed and are compared with the threshold values. Whenever the ADC values from X and Y axis cross the threshold, the corresponding keys are relayed to the PC. Since Atmega8 runs vusb library for USB keyboard, any key can be customized based on game requirements.

A video demonstration where NFS is played using this joystick.


Here, motion sensor's data is mapped to 4 keys and are transmitted to PC through USB port. Similarly one can add push buttons along with accelerometer and can increase the controllability of the game by customizing the required keyboard keys.


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...

RTL Design & Implementation of a RISC- Single Cycle Processor -Part I

  Low cost FPGA development platforms and Hardware Description Languages like Verilog & VHDL have not only made lives of Front-end VLSI  Engineers easier but also hobbyists' . I have been experimenting with a 40$ Xilinx FPGA development board for couple of years and its real fun. And now, a part of my project for ASIC Design Lab course at University of Minnesota requires me to design and implement a microprocessor. Armed with my FPGA board and a new-found enthusiasm amidst my busy schedule at the U of M, I sat up to design a minimalistic CPU in Verilog. Tools Used: Verilog/VHDL Simulator (ModelSim, Icarus Verilog, Xilinx ISE,etc) A decent Code Editor (VIM) A Xilinx FPGA board (optional) ARCHITECTURE:   I chose Load/Store Architecture for my microprocessor design since most RISC machines like ARM, MIPS,etc are based on this architecture. Besides that, quicker prototyping and better understanding of computer architecture was on top priority in my list...