Dr. Linda Milor
Software Solutions in Control Systems
The ability to control machines and electronics remotely is becoming required as automated
interconnectivity advances. Control systems involving servers are used in various applications such as
automated homes, security systems, and military unmanned aerial vehicles. Such applications are
supported by software complemented with hardware and firmware for the two to communicate. This
paper examines the software and firmware implemented in control systems and the different methods of
Communication between software and hardware has various applications such as automating a
home security system, controlling a military robot, and moving an electronic wheelchair. An analog
joystick for instance needs to be converted into a digital signal, and that digital signal needs to be
translated into moving wheels on a chair a specific way via software. Using a joystick, a microcontroller
(chip), a Bluetooth module, and some software, a person can control a wheelchair’s movement wirelessly
with a joystick, and this application could be extended to allowing a quadriplegic to move around in a
wheelchair with the addition of a hat with a Bluetooth-enabled accelerometer .
Home automation systems also heavily rely on software communication with hardware. Smart
homes enable cameras, lights, and alarms to be controlled by a webserver. These automation systems are
available from Smarthome, and the wide spectrum of capabilities range from fan control to pest control,
with the prices ranging from $50 to $1000 .
On a learning level, copious amounts of development boards with a microcontroller exist. These
development boards have peripherals such as touch screens, potentiometers, smaller LCD screens,
rotating pulse generators (RPGs), switches, oscillators, temperature sensors, accelerometers, and a variety
of others . The development boards costs range from as little as $20 to as much as $200 . The
cheaper ones only come with basic peripherals, while the expensive boards come with state of the art and
most developed peripherals. The microcontrollers, pushbuttons, and potentiometers alone cost less than
$2 each, while the printed circuit board costs about $40 and touch screens range from $10 to $100
depending on size and type .
Microcontrollers create an easy way to develop program code and output that into a digital signal.
Using a chip to do this is a common method. For PIC microcontrollers, compiling code into machine
language can be achieved using Microchip’s C32, MikroElectronika’s mikroC, and some other minor
compilers . Microchip’s C32 compiler is partially free and provides a low-level implementation
with a small application library, while MikroElectronika’s mikroC provides a high-level library and
simplifies the programming significantly, but with that comes more overhead, costs money, and lacks a
disassembler. Other major microcontrollers include Arduino and Atmel. Each has slight differences, such
as the Arduino being developed for beginners, and the Atmel for purposes similar to that on the PIC
Developing a user interface for human interaction is needed for the application to be useful and
dynamic. One method is to use an interactive touch screen that “convert capacitance generated between
the human body and conductive touch pad to digital data with no analog processing [5:2636].” Attaching
this touch screen directly to the microcontroller creates a way for humans to communicate with the chip.
Another, simpler method is to use a pushbutton or a potentiometer; moreover, the interaction changes the
input value of voltage on a specific pin to let the human communicate with the chip . Another method
includes connecting the microcontroller to a computer, and using the computer to command the chip.
Implementation of Technology
Connecting the chip to a module involves soldering specific pins to a peripheral and
programming the memory in a specific way to interact with the external part. Most modules will
communicate with a specific interface. Most LCD screens use a parallel port, while simple devices use a
serial interface. Connecting wirelessly is an advanced topic, and while many Wi-Fi modules connect with
a SPI interface, knowledge of internet protocol and packets is required . Powering most
microcontrollers requires 3.3V, which also is the amount of voltage many peripherals require, but some of
the more advanced parts require 5V . Many of the motors require a higher voltage, requiring a wall
wart rather than a battery to sustain power for multiple hours .
Providing possible interaction with the microcontroller is important for many consumer devices.
If the developer kept the design simple and only uses pushbuttons, potentiometers, and RPGs,
programming the microcontroller to read the inputs is trivial. Otherwise, a programmer needs to develop a
user interface for the touch screen or a webserver for a connected Wi-Fi module . The user interface
only requires writing code for the microcontroller, but the webserver requires writing software for the
client and server, which the microcontroller could fall into either category.
 J. Bachiochi, “Fly-By-Wire Wheelchair,” Circuit Cellar, 30 Nov., p. 68, 2011.
 Smarthome, “Home automation superstore,” Smarthome.com, January, 2012. [Online].
Available: http://www.smarthome.com [Accessed January 24, 2012].
 Microchip, “MPLAB C Compiler for PIC32 MCUs,” microchip.com, January, 2012. [Online].
&dDocName=en532454 [Accessed January 24, 2012].
 MikroElektronika, “mikroC PRO for PIC,” mikroe.com, January, 2012. [Online]. Available:
http://www.mikroe.com/eng/products/view/7/mikroc-pro-for-pic/ [Accessed January 24, 2012].
 Digi-Key Catalog, Digi-Key, Thief River Falls, MN, 2010.
 Microchip, “Microchip - ZG2101MC - Wi-Fi/802.11 Module” ZG2101MC datasheet, March,
 Traxxas, “Digital High Torque Servo” TRX2075 datasheet, June, 2011.
 R. Reese and B. Jones, Microcontrollers. Newton, MA: Charles River Media, 2008