GUI for Four-Degree of Freedom Solid State MEMS Joystick

IMTEK researcher team has developed a joystick based on single chip stress sensor. In this project, I am the one and only programmer for Graphical User Interface for data acquisition and hardware controller. I developed also the LabView driver for this chip. Using this driver, the joystick calibration process can be perfomed automatically without to much supervised by human and much faster. I have developed both software using Visual C++.

Achievement:
The joystick project became a highlight project on a conference in Tucson, Arizona, America.

This joystick is not only for controlling 4 movement directions (forward, backward, left and right) like a usual joystick, but it can also detect rotation in z direction (rotate left and right) and even you can pull up and pull down. Really cool, isn't it?

Joystick Chips and Fabrication Joystick Hardware
Joystick Chips, hardware and fabrication process (click to enlarge)

The data from the joystick chip are acquired using I2C bus protocol. An I2C to USB protocol converter enable the computer to read the joystick data. The user can observe the joystick signal on the software user interface. The software has ability to calculate the raw data with proper calibration data and display them in the various ways. This software is developed using Visual C++ from Microsoft Visual Studio 2005. The Document/View framework from Microsoft Foundation Class (MFC) is utilized to simplify the software development. The acquired and calculated data are stored to a document object and the view objects are used to display the data in various interpretation.

Screenshot of Joystick § Dimension GUI Software Screenshot of Joystick 2-Dimension GUI Software
Screenshot of 3-dimension (left) and 2-dimension (right)
Joystick GUI Software.

There are four view classes for user interfaces. Three classes are for displaying the calculated data in various ways. These classes based on CView class. And one class is used by user to control the software, this class is based on CViewForm class. If user click the acquire button on the control panel user interface, the data acquisition function is executed in a multithreading process. This process is performed all the time until the user clicks the stop button. As long as it is performed, the acquisition process is repeated in its own thread without disturbing another thread. This method can let the other processes like raw data calculation and then displaying them to the user interface to be performed almost in the same time.

To generate 3 Dimension image user interface, I use Direct 3D library from Microsoft. Using this library I can display the movement/rotation of airplane and a measurement device ball in 3-dimension space. There are several small games to demonstrate this joystick functionality. I will upload the movie of this cool device and software after I get permission from IMTEK.

Screenshot of Joystick Graphical User Interface Software