implementation of a low-cost home automation system project report

65
IMPLEMENTATION OF A LOW-COST HOME AUTOMATION SYSTEM A PROJECT REPORT Submitted by KURIAN ABRAHAM K.P. SANDEEP RAO In partial fulfillment for the award of the degree Of BACHELOR OF ENGINEERING In COMPUTER SCIENCE ENGINEERING K.C.G. COLLEGE OF TECHNOLOGY, CHENNAI ANNA UNIVERSITY: CHENNAI 600 025 APRIL 2009

Upload: sainibhavya

Post on 14-Oct-2014

52 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Implementation of a Low-Cost Home Automation System Project Report

IMPLEMENTATION OF A LOW-COST

HOME AUTOMATION SYSTEM

A PROJECT REPORT

Submitted by

KURIAN ABRAHAM

K.P. SANDEEP RAO

In partial fulfillment for the award of the degree

Of

BACHELOR OF ENGINEERING

In

COMPUTER SCIENCE ENGINEERING

K.C.G. COLLEGE OF TECHNOLOGY, CHENNAI

ANNA UNIVERSITY: CHENNAI 600 025

APRIL 2009

Page 2: Implementation of a Low-Cost Home Automation System Project Report

ANNA UNIVERSITY: CHENNAI 600 025

BONA FIDE CERTIFICATE

Certification that this project report “IMPLEMENTATION OF A LOW-

COST HOME AUTOMATION SYSTEM” is the bona fide work of

“KURIAN ABRAHAM” and “K.P. SANDEEP RAO” who carried out the

project work under my supervision.

SIGNATURE Dr. T. Ravi HEAD OF THE DEPARTMENT Computer Science & Engineering K.C.G. College Of Technology, Old Mahabalipuram Road, Karapakkam, Chennai 600096

SIGNATURE Dr. T. Ravi SUPERVISOR Professor and Head of the Department Computer Science & Engineering K.C.G. College Of Technology, Old Mahabalipuram Road, Karapakkam, Chennai 600096

B.E. DEGREE EXAMINATION

Date of Examination:

Internal Examiner

External Examiner

Page 3: Implementation of a Low-Cost Home Automation System Project Report

iii

ACKNOWLEDGEMENT

We would like to express our gratitude to Dr. Elizabeth Verghese,

Chairperson of K.C.G. College Of Technology, who enabled us to complete this

project successfully.

We express our sincere thanks to Dr. V. Balakrishnan, Principal of

K.C.G. College Of Technology, for his encouragement in completing this

project.

We are grateful to Mr. S. Gnanasekharan, Vice Principal, K.C.G. College

Of Technology, for academic guidance regarding this project.

We thank the head of our department and our project guide, Dr. T. Ravi,

for his valuable suggestions and guidance.

We would also like to thank the non-teaching staff for their help and

support.

Page 4: Implementation of a Low-Cost Home Automation System Project Report

iv

ABSTRACT

Home automation involves introducing a degree of computerized or

automatic control to certain electrical and electronic systems in a building.

These include lighting, temperature control, security systems, garage doors, etc.

A hardware system is installed to monitor and control the various appliances.

The system would control the appliances based on its configuration. For

example, it could automatically turn on the lights at a specified time in the

evening, or it could measure the ambient light using a hardware sensor and turn

on the lights when it grows dark. It can also allow a person to control appliances

from a remote location, such as over the internet. For example, one could turn

on the air conditioning from the office, before leaving for home.

This project demonstrates a simple home automation system that allows

the user to control it with a wireless device such as a Wi-Fi or Bluetooth

enabled mobile phone. A desktop PC is used to run the server software. The

system allows the user to control each of the lights and fans individually. It can

automatically turn off the main lights and turn on a night lamp at a specified

time. By measuring the signal strength, it can detect when the user enters a

room and automatically turn on the light and fans, and then automatically turn

them off when the user leaves the room.

Page 5: Implementation of a Low-Cost Home Automation System Project Report

v

TABLE OF CONTENTS

CHAPTER NO. TITLE PAGE NO.

TABLE OF CONTENTS

1

2

3

ACKNOWLEDGEMENT III

ABSTRACT IV

TABLE OF CONTENTS V

LIST OF FIGURES IX

LIST OF ABBREVIATIONS X

INTRODUCTION 1

SYSTEM ANALYSIS 3

2.1 EXISTING SYSTEMS 3

2.2 PROPOSED SYSTEM 4

SYSTEM REQUIREMENTS 5

3.1 SOFTWARE REQUIREMENTS 5

3.2 HARDWARE REQUIREMENTS 5

3.3 DEVELOPMENT TOOLS 5

3.3.1 MICROSOFT VISUAL STUDIO 2005 6

3.3.2 JAVA ME PLATFORM SDK 3.0 6

3.3.3 MPLAB IDE FOR PIC MICROCONTROLLERS 6

3.3.4 HI-TECH PICC-LITE COMPILER 7

3.3.5 PICPGM PROGRAMMER 1.0.1.4 7

3.3.6 JDM PROGRAMMER 7

3.3.7 PLAYSTATION PORTABLE SDK 7

Page 6: Implementation of a Low-Cost Home Automation System Project Report

vi

TABLE OF CONTENTS

CHAPTER NO. TITLE PAGE NO.

4

5

SYSTEM DESIGN SPECIFICATION 8

4.1 DESIGN SPECIFICATION 8

4.2 DESIGN DIAGRAMS 9

4.2.1 DATA FLOW DIAGRAM 9

4.2.2 SEQUENCE DIAGRAMS 10

4.2.3 USE CASE DIAGRAMS 14

4.2.4 COMPONENT DIAGRAM 16

IMPLEMENTATION 17

5.1 SERVER MODULE 17

5.1.1 CONNECTED CLIENTS 18

5.1.2 COM PORT 18

5.1.3 BLUETOOTH PORT 18

5.1.4 SERVER PORT 18

5.1.5 COMMUNICATION LOG 18

5.1.6 AUTOMATIC TIMING CONTROLS 19

5.1.7 CONFIGURATION FILE 19

5.2 MICROCONTROLLER AND HARDWARE MODULE 20

5.2.1 PIC16F877A MICROCONTROLLER 20

5.2.2 PIC DEVELOPMENT BOARD 20

5.2.3 RELAY BOARD 20

5.2.4 USB-TO-SERIAL BRIDGE 21

Page 7: Implementation of a Low-Cost Home Automation System Project Report

vii

TABLE OF CONTENTS

CHAPTER NO. TITLE PAGE NO.

6

5.3 BLUETOOTH CLIENT MODULE FOR J2ME 22

5.4 WI-FI CLIENT MODULE FOR LAPTOPS 23

5.4.1 SERVER ADDRESS 23

5.4.2 SERVER PORT 23

5.4.3 CONFIGURATION FILE 24

5.5 WI-FI CLIENT MODULE FOR PLAYSTATION PORTABLE 24

5.5.1 CONFIGURATION FILE 25

TESTING 27

6.1. SERVER MODULE 27

6.1.1 CONFIGURATION FILE 27

6.1.2 EXISTENCE OF PREVIOUSLY SELECTED COM PORT 28

6.1.3 ACTIVATION OF TIME-BASED PROFILES 28

6.1.4 UPDATING GUI ON RECEIVING COMMANDS 28

6.2 MICROCONTROLLER AND HARDWARE MODULE 29

6.2.1 QUALITY OF MAINS SUPPLY 29

6.2.2 ELECTRICAL GROUNDING PROBLEMS 29

6.3 BLUETOOTH CLIENT MODULE FOR J2ME 30

6.3.1 SEARCHING FOR SERVERS 30

6.4 WI-FI CLIENT MODULE FOR LAPTOPS 31

6.4.1 CONFIGURATION FILE 31

6.4.2 UPDATING GUI ON RECEIVING COMMANDS 31

Page 8: Implementation of a Low-Cost Home Automation System Project Report

viii

TABLE OF CONTENTS

CHAPTER NO. TITLE PAGE NO.

7

6.5 WI-FI CLIENT MODULE FOR PLAYSTATION PORTABLE 32

6.5.1 GUI RENDERING PROBLEMS 32

6.5.2 ROUTE EXISTS TO SERVER 32

6.5.3 CONFIGURATION FILE 32

CONCLUSION 34

7.1. CONCLUSION 34

7.2. FUTURE ENHANCEMENTS 34

APPENDIX 1 35

APPENDIX 2 43

REFERENCES 55

Page 9: Implementation of a Low-Cost Home Automation System Project Report

ix

LIST OF FIGURES

FIGURE NO. FIGURE NAME PAGE NO.

LIST OF FIGURES

4.1 DATA FLOW DIAGRAM 9

4.2 BLUETOOTH CLIENT IN CONTROL 10

4.3 WI-FI CLIENT IN CONTROL 11

4.4 SERVER IN CONTROL 12

4.5 TIME-BASED PROFILE 13

4.6 SERVER MODULE 14

4.7 CLIENT USE CASE 15

4.8 MICROCONTROLLER USE CASE 15

4.9 COMPONENT DIAGRAM 16

Page 10: Implementation of a Low-Cost Home Automation System Project Report

x

LIST OF ABBREVIATIONS

ACRONYM EXPANSION

List of Abbreviations

BTSPP Bluetooth Serial Port Profile

CLR Common Language Runtime

DC Direct Current

EEPROM Electrically Erasable Programmable Read-Only Memory

GUI Graphical User Interface

IDE Integrated Development Environment

J2ME Java 2 Micro Edition

JDK Java Development Kit

JDM Jens Dyekjaer Madsen

JSR Java Specification Request

MIDP Mobile Information Device Profile

MIPS Microprocessor without Interlocked Pipeline Stages

PSP Playstation Portable

SDK Software Development Kit

TTL Transistor-Transistor Logic

USB Universal Serial Bus

UUID Universally Unique Identifier

XML Extensible Markup Language

Page 11: Implementation of a Low-Cost Home Automation System Project Report

1

CHAPTER 1

INTRODUCTION

A typical home automation system allows one to control house hold

appliances from a centralized control unit. These appliances include lights, fans,

air conditioners, television sets, security cameras, electronic doors, computer

systems, audio/visual equipment, etc. These appliances usually have to be

specially designed to be compatible with each other and with the control unit for

most commercially available home automation systems.

The project “Implementation of a Low-Cost Home Automation System”,

demonstrates a system that can be integrated into a building’s electrical system

and allows one to wirelessly control lights, fans, and turn on or off any

appliance that is plugged into a wall outlet. The system can be controlled from a

Bluetooth or Wi-Fi enabled device such as a mobile phone or laptop, while a

desktop PC acts as the server. Thus the installation cost and hardware cost is

kept to a minimum as most users already own the requisite hardware such as a

mobile phone and desktop PC.

A Bluetooth dongle or a standard Wireless Access Point is used to

provide connectivity between the server and the mobile device. The system is

capable of detecting when the user enters or leaves the room by measuring the

change in signal strength between the Access Point and the mobile device, and

can accordingly turn on or off appliances such as lights and fans. The power

supply for each appliance is wired through an electromechanical relay. A

number of relays are used depending on the number of appliances to be

Page 12: Implementation of a Low-Cost Home Automation System Project Report

2

controlled. All the relays are controlled by a microcontroller. The

microcontroller is connected to the server via a USB interface. This makes it

plug-and-play and compatible with virtually any PC.

The system can be configured with time-based profiles. For example, one

could have it automatically turn on the lights at 6:00 in the evening. At 10:00

P.M. it could automatically turn off the main lights and turn on a night lamp. It

could then turn off the night lamp the next morning.

The server can also receive connections over the internet and can be

controlled from a remote location. This opens up many possibilities. For

example, one could remotely turn on the air conditioner from the office before

leaving so that the room is cool before reaching home.

Page 13: Implementation of a Low-Cost Home Automation System Project Report

3

CHAPTER 2

SYSTEM ANALYSIS

2.1 EXISTING SYSTEMS

Most commercially available home automation systems are all-in-one

solutions which require that all controllable appliances are from the same

company, or must be approved as compatible with said company’s system.

Moreover these systems normally come with a proprietary, dedicated device

which acts as the control center. To control the system from multiple locations,

additional control devices must be purchased.

These complex systems usually need to be integrated when the building is

constructed and must be planned in advance. They are also difficult to upgrade

or replace once installed. The overall investment adds up considerably and is

financially infeasible in most cases. These drawbacks hinder the popularity of

such systems.

Page 14: Implementation of a Low-Cost Home Automation System Project Report

4

2.2 PROPOSED SYSTEM

The objective of the proposed system is to offer a low-cost solution for a

home automation system that overcomes the above drawbacks. The system

provides basic control of appliances at a fraction of the cost of commercially

available systems.

The concept of a proprietary control device is done away with as the

system can be controlled from a Bluetooth or Wi-Fi enabled mobile device,

such as a mobile phone or laptop. There is no need for a specialized server

system as a typical desktop PC can act as the server. Nowadays most users

already own the requisites such as a mobile phone and a desktop PC; hence the

cost of the system is considerably reduced.

The system can be easily integrated into an existing electrical system of a

building thanks to its simplified design. It can also be easily installed for just a

single room if one so desires. Modifications to the existing electrical system are

minimal, thereby reducing installations costs.

Page 15: Implementation of a Low-Cost Home Automation System Project Report

5

CHAPTER 3

SYSTEM REQUIREMENTS

3.1 SOFTWARE REQUIREMENTS

Microsoft Windows 2000 Service Pack 3 or later.

Microsoft .NET Framework 2.0

Bluetooth stack supporting BTSPP (Bluetooth Serial Port Profile).

3.2 HARDWARE REQUIREMENTS

Desktop PC running Windows.

Bluetooth dongle.

Wi-Fi access point or a Wi-Fi adapter for the PC capable of

operating in access point mode.

If using Bluetooth:

Bluetooth equipped mobile phone supporting J2ME (Java 2 Micro

Edition) with MIDP 2.0

If using Wi-Fi:

Wi-Fi enabled laptop. Sony Playstation Portable is also supported.

PIC16F877A microcontroller and development board.

Relay board with a number of relays as per requirement.

3.3 DEVELOPMENT TOOLS

A number of different programming tools and languages were used for

the development of the various software components of the home automation

Page 16: Implementation of a Low-Cost Home Automation System Project Report

6

system. Since the system involves components that run on different platforms

such as a mobile phone, desktop PC etc. the most suitable language for each

platform was chosen.

3.3.1 MICROSOFT VISUAL STUDIO 2005

The server application and the Wi-Fi client for Windows are both coded

in Microsoft Visual C++ .NET and compiled as a standard Windows executable

using CLR (Common Language Runtime) that runs under the .NET Framework.

3.3.2 JAVA ME PLATFORM SDK 3.0

The Bluetooth client for mobile phones is coded in J2ME (Java 2 Micro

Edition) using MIDP 2.0 (Mobile Information Device Profile). The JSR-82 API

is used for Bluetooth communication.

J2ME is the language of choice for the mobile phone client since a

predominant number of mobile phones are J2ME enabled.

3.3.3 MPLAB IDE FOR PIC MICROCONTROLLERS

The MPLab IDE is used to develop and test the embedded program for

the PIC16F877A microcontroller. It provides a simulator that is used to test the

communication between the server and the microcontroller before finally

programming the microcontroller’s EEPROM.

Page 17: Implementation of a Low-Cost Home Automation System Project Report

7

3.3.4 HI-TECH PICC-LITE COMPILER

Hi-Tech PICC-Lite is a C compiler for the PIC series of microcontrollers.

It is used as the compiler for PIC16 series microcontrollers in the MPLab IDE.

3.3.5 PICPGM PROGRAMMER 1.0.1.4

PICPgm Programmer is the software used to flash the compiled program

to the microcontroller’s EEPROM and verify that it has been successfully

written. It is also used to set the configuration bits on the microcontroller to

disable the watchdog timer to prevent it from restarting while waiting in a loop

for commands from the server.

3.3.6 JDM PROGRAMMER

A 40-pin JDM design programmer is used to connect the microcontroller

to the PC for programming the EEPROM.

3.3.7 PLAYSTATION PORTABLE SDK

The Wi-Fi client for the Playstation Portable is written in C using the

PSPSDK. The GNU C Compiler is used by the PSPSDK to compile to MIPS

architecture for the PSP.

Page 18: Implementation of a Low-Cost Home Automation System Project Report

8

CHAPTER 4

SYSTEM DESIGN SPECIFICATION

4.1 DESIGN SPECIFICATION

The system is designed keeping in mind the following key requirements:

Clients should be able to quickly and seamlessly connect to and

disconnect from the system.

Connections from all kinds of clients must be handled

simultaneously; i.e. Bluetooth, Wi-Fi and Internet.

Change in the status of an appliance should be propagated to all

clients in real-time.

Customizable time-based profiles to automatically activate and

deactivate appliances based on the time of day.

Hardware should be widely compatible with different PC

configurations.

Server should run in the background without disturbing regular

activities on the desktop PC.

Provide a simple and user-friendly interface on the client side.

Page 19: Implementation of a Low-Cost Home Automation System Project Report

9

4.2 DESIGN DIAGRAMS

4.2.1 DATA FLOW DIAGRAM

Server

Wi-Fi / Bluetooth

Mobile Device

USB-to-Serial Bridge

Microcontroller

Relay System

Electrical System

Figure 4.1 Data Flow Diagram

Page 20: Implementation of a Low-Cost Home Automation System Project Report

10

The mobile device connects to the server PC through Bluetooth or Wi-Fi

or through the internet. The user sends commands to the server from the mobile

device. The microcontroller is connected to the server via USB. On receiving

commands from the mobile device, the server sends commands to the

microcontroller over the USB connection. The microcontroller is directly

connected to the relays and it can enable or disable them. The relays are

connected to the electrical system of the building so that they can control the

plug points.

4.2.2 SEQUENCE DIAGRAMS

Figure 4.2 Bluetooth Client in Control

Page 21: Implementation of a Low-Cost Home Automation System Project Report

11

Figure 4.3 Wi-Fi Client in Control

When a Bluetooth or Wi-Fi client connects to the server, the server sends

it the current status of the appliances so that it can be displayed on the mobile

device. When the user sends a command from the mobile device, the server

receives it and forwards it to the microcontroller, and then sends updated status

of all the appliances to all the clients connected to the server.

Additionally the Wi-Fi client continuously monitors the signal strength,

and detects when the user leaves or enters the room according to its

configuration, and it can send commands to activate or deactivate appliances.

Page 22: Implementation of a Low-Cost Home Automation System Project Report

12

Figure 4.4 Server in Control

The server application’s interface can be used to directly send commands

to the microcontroller and control the appliances.

Page 23: Implementation of a Low-Cost Home Automation System Project Report

13

Figure 4.5 Time-Based Profile

The time-based profiles are configured on the server interface. The server

checks whether it’s time to activate a particular profile and sends the

corresponding commands to the microcontroller to activate or deactivate the

corresponding appliances.

Page 24: Implementation of a Low-Cost Home Automation System Project Report

14

4.2.3 USE CASE DIAGRAMS

Control Appliance

CustomizeTime-Based Profile

ActivateTime-Based Profile

Propagate Status

Administrator

«uses»

«uses»

Client

«uses»

«uses»

«uses»

Server

«uses»

Figure 4.6 Server Module

The server module receives control commands either from clients or

directly from its own interface. The time-based profiles are configured on the

server interface. It internally checks whether it’s time to activate a time-based

profile. It propagates the status of the appliances to all connected clients.

Page 25: Implementation of a Low-Cost Home Automation System Project Report

15

Figure 4.7 Client Use Case

The client interface allows the user to control the appliances. It receives

status updates from the server.

Figure 4.8 Microcontroller Use Case

The microcontroller only receives commands from the server via USB.

Page 26: Implementation of a Low-Cost Home Automation System Project Report

16

4.2.4 COMPONENT DIAGRAM

Figure 4.9 Component Diagram

The component diagram shows all the physical components of the entire

system and how they are interfaced with each other.

Page 27: Implementation of a Low-Cost Home Automation System Project Report

17

CHAPTER 5

IMPLEMENTATION

The system is comprised of five different modules in total; three of which

are client modules for different platforms.

Server for Windows

Embedded Program for Microcontroller, and Hardware Circuit

Bluetooth Client for J2ME mobile phones

Wi-Fi Client for Windows laptops

Wi-Fi Client for Sony Playstation Portable

5.1 SERVER MODULE

The server module is executed on a desktop PC running Windows. It

sends commands to the microcontroller to control the relays, and accepts

commands from clients connected to it.

The push buttons on the left can be used to directly control the relays

from the server side without using a client. If the relay is active i.e. the

appliance is turned on, the button stays in a depressed position.

Page 28: Implementation of a Low-Cost Home Automation System Project Report

18

5.1.1 CONNECTED CLIENTS

A list of all the clients connected to the server either through Wi-Fi or

through the Internet is show in this list box. It shows the client’s IP address and

the remote port on the client side.

5.1.2 COM PORT

The USB-to-Serial Bridge presents itself as a virtual COM port to the

server. The port number that corresponds to the USB-to-Serial Bridge is chosen

so that the server can communicate with the microcontroller.

5.1.3 BLUETOOTH PORT

The BTSPP protocol also functions through a virtual COM port. The port

number that corresponds to the COM port to which the mobile phone is

connected to is chosen.

5.1.4 SERVER PORT

This is the port on which the server listens for incoming connections from

the Wi-Fi network and from the Internet. The clients should also be configured

to connect to this port number.

5.1.5 COMMUNICATION LOG

It logs all communication between the server and the microcontroller, as

well as commands received through Bluetooth from clients.

Page 29: Implementation of a Low-Cost Home Automation System Project Report

19

5.1.6 AUTOMATIC TIMING CONTROLS

The server can be configured to automatically turn on or off particular

appliances at specific times. Up to 14 different configurations for different

timings can be set.

Each horizontal row corresponds to a particular time and the checkboxes

from left to right represent the relays. If the small checkbox inside the time spin

box is checked then that time profile is active and the relays will be switched on

or off at the corresponding time according to the 8 checkboxes. An empty

checkbox means that the corresponding relay will be switched off. A ticked

checkbox means that the corresponding relay will be switched on. A partially

ticked (shaded) checkbox means that the corresponding relay will not be

changed; it will be left unchanged when the profile activates automatically at

the corresponding time.

For example in the given image at 6:00 PM, Relay 1 (Light 1) and Relay

2 (Light 2) will be switched on and Relay 3 (Night Lamp) will be switched off.

The remaining relays will be left unchanged at whatever state they previously

were.

5.1.7 CONFIGURATION FILE

When the program is closed, the settings are saved in an XML formatted

file. The previous settings are loaded the next time the program is launched.

Page 30: Implementation of a Low-Cost Home Automation System Project Report

20

5.2 MICROCONTROLLER AND HARDWARE MODULE

5.2.1 PIC16F877A MICROCONTROLLER

The microcontroller used is a PIC16F877A manufactured by Microchip

Technology Inc. It communicates with the server using Serial communication

via a USB-to-Serial Bridge. It has multiple outputs which are used to control the

relays. The microcontroller is programmed such that if it receives a lower case

a-h it turns off the corresponding relay and if it receives an upper case A-H it

turns on the corresponding relay. If it receives any other input it responds with

an error saying the input was unrecognized.

5.2.2 PIC DEVELOPMENT BOARD

The following development board is used to operate the PIC

microcontroller. It provides an external oscillator crystal that is required for the

functioning of the microcontroller, as well as easily accessible I/O ports.

The development board and microcontroller are powered with +5V

through the USB connection to the PC. The UART port on the development

board is connected to the USB-to-Serial Bridge.

5.2.3 RELAY BOARD

A relay board with eight electromechanical relays is used to switch on

and off the appliances. The relay board is connected to one of the output ports

on the microcontroller. The relay board requires +12V for operation and is

powered by a transformer. If the mains supply delivers low voltage then the

transformer voltage may drop below +12V and the relays may not function

Page 31: Implementation of a Low-Cost Home Automation System Project Report

21

efficiently. To overcome this, a higher voltage transformer is used and a 7812

voltage regulator is used to deliver a steady +12V to the relay board.

The output port on the microcontroller is 8 bits wide. When logical one

(+5V) is output on one of the bits, the corresponding relay is activated. The live

terminal input of each appliance is wired across the Common and Normally

Open terminals of the relays, thus the power to the appliance is switched on or

off depending on whether the relay is active or not.

For the purpose of demonstrating a working model, three 220V outlets

have been attached the relay board.

The maximum load switching capacity of each of the relays is given

below:

7 amperes @ 125 volts AC 7 amperes @ 12 volts DC 5 amperes @ 240 volts AC 5 amperes @ 28 volts DC

5.2.4 USB-TO-SERIAL BRIDGE

The USB-to-Serial Bridge used is based on the Prolific PL2303 chip. It

accepts 0 to +5V TTL voltages and outputs the signal on a virtual COM port

presented the PC.

A MAX232N line driver is used to convert the 0 to +5V TTL levels to

RS232 levels. The RS232 voltages are then sent through the PL2303 chip which

connects to the PC via USB.

Page 32: Implementation of a Low-Cost Home Automation System Project Report

22

5.3 BLUETOOTH CLIENT MODULE FOR J2ME

The Bluetooth client is designed to run on mobile phones that are J2ME

and MIDP 2.0 enabled. Nowadays most mobile phones support J2ME as well as

MIDP 2.0 hence the user base for the Bluetooth client is very large. This is the

most compelling reason to choosing J2ME as the development platform.

When the application is started, it attempts to initialize the Bluetooth

device. If the mobile phone doesn’t have Bluetooth or doesn’t support the J2ME

Bluetooth API (JSR-82) an error is displayed.

On pressing the Search button, it attempts to search for nearby Bluetooth

devices and tries to identify the Home Automation Server running on the

BTSPP protocol.

Once the device discovery is complete, it displays a list of MAC address

of any servers it has found. Select the desired server and press the Connect

button.

Once it’s connected to the server, it displays a list of appliances and their

current status.

The appliances can be turned on and off by checking or clearing the

corresponding checkboxes. When an appliance is turned on or off, the server

propagates the status to all the other clients connected to it. Similarly if an

appliance is turned on or off from another client, the status is updated on the

mobile phone in real-time.

Page 33: Implementation of a Low-Cost Home Automation System Project Report

23

Pressing the Disconnect button ends the BTSPP connection and returns to

the Search screen.

5.4 WI-FI CLIENT MODULE FOR LAPTOPS

The Wi-Fi Client for laptops is visually similar to the server module and

is designed to run on Windows.

The push buttons on the left are used to activate or deactivate the relays

and hence the appliances connected to them. On clicking on one of the buttons

to activate it, a command is sent to the server to activate the corresponding

relay. Only if the server responds confirming that the relay has been activated

does the button stay depressed on the client interface.

5.4.1 SERVER ADDRESS

The IP address of the home automation server to connect to is provided

here. This can even be an IP address on the internet, thus allowing one to

control the connected appliances from a remote location such as from one’s

office.

5.4.2 SERVER PORT

The remote port on the server to connect to is provided here. This must be

the same port that the server is configured to listen on.

Page 34: Implementation of a Low-Cost Home Automation System Project Report

24

5.4.3 CONFIGURATION FILE

When the program is closed, the settings are saved in an XML formatted

file. The previous settings are loaded the next time the program is launched.

5.5 WI-FI CLIENT MODULE FOR PLAYSTATION PORTABLE

The Wi-Fi client for the PSP uses the PSP’s built-in Wi-Fi adapter to

connect to the Home Automation Server. The client is coded in C and is

compiled as a native application. Hence it is possible to query low level

information about the Wi-Fi connection such as the signal strength etc.

By measuring the change in signal strength when the device moves

towards and away from the Wi-Fi access point, it is possible to determine when

one leaves the room or enters the room. The system can perform automated

tasks when these events occur, such as automatically turning off the lights when

one leaves the room and automatically turning on the lights when one enters the

room.

Pressing the Start button connects to the access point specified in the

configuration file and attempts to connect to the configured server IP. Once it

has successfully connected to the access point, the signal strength is displayed

as percentage in the upper left corner of the screen.

As the device is moved towards or away from the access point, the signal

strength is updated. If the signal strength falls from a higher value to a value

below the threshold value, the leave room event is called. If the signal strength

increases from a lower value to a value higher than the threshold value, the enter

room event is fired. These events can be mapped to any action such as turning

Page 35: Implementation of a Low-Cost Home Automation System Project Report

25

on specific relays or turning off certain relays or leaving some relays

unchanged.

Once it is connected to the server, select the appliance to control using the

“Up” / “Down” keys and press X to select it. Select “On” or “Off” for the

chosen appliance and press X to confirm.

The status of the appliance is automatically updated on screen, and is

propagated to all other clients.

5.5.1 CONFIGURATION FILE

A configuration file named config.cfg is used to store settings for the

client. A sample configuration file is shown below.

autoon = ABCDEFGH

host = 192.168.2.3

autooff = abcdefgh

config = 1

threshold = 90

port = 20000

“autoon” lists the relays that should be changed when the “Enter Room”

event occurs. Upper case letters will turn on the corresponding relays and lower

case letters will turn off the corresponding relays. Omitting a letter from A-H

will leave that relay unchanged.

“autooff” uses the same format as “autoon”, except it fires when the leave

room event occurs.

Page 36: Implementation of a Low-Cost Home Automation System Project Report

26

“host” is the IP address of the server to connect to.

“port” is the remote port on the server to connect to.

“config” determines which access point from the available network

configurations it will attempt to connect to. The host address should be

accessible from the subnet of the chosen network configuration.

“threshold” is the value that the signal strength should fall below or rise

above in order to trigger the leave room or enter room events.

Page 37: Implementation of a Low-Cost Home Automation System Project Report

27

CHAPTER 6

TESTING

Each of the modules was tested using both black box and white box

testing techniques. Black box testing ensures the correctness of the system’s

output, given various possible inputs. White box testing involves providing

calculated inputs so that the internal structure of the system can be verified to be

error free. For example, white box testing of a software module involves

providing different inputs that test all possible code paths within the program.

The modules were designed keeping in mind all possible inputs and any

erroneous inputs as well. Any exceptions that occur are handled appropriately

without compromising the stability of the system.

Different issues, both foreseen and unforeseen, were encountered during

the design process. These issues and the measures that were adopted to

overcome them are described in this chapter.

6.1. SERVER MODULE

6.1.1 CONFIGURATION FILE

When the application is launched it reads the previous settings from an

XML formatted configuration file. All the values read are checked to be valid

for the corresponding data type, and whether they are within their allowed upper

and lower bounds if any. If a particular option is corrupted or not present in the

Page 38: Implementation of a Low-Cost Home Automation System Project Report

28

configuration file (due to a user manually editing it), a safe default value is

assumed.

6.1.2 EXISTENCE OF PREVIOUSLY SELECTED COM PORT

It’s possible that a COM port that was previously used for communication

with the microcontroller which was saved in the configuration file no longer

exists the next time the application is started. This may occur if the

microcontroller is plugged into a different USB port from last time, in which

case Windows will assign it to a different virtual COM port. To prevent an error

the COM ports are enumerated and the last used port is activated only of it still

exists in the current enumeration.

6.1.3 ACTIVATION OF TIME-BASED PROFILES

The system checks whether it’s time to activate a profile by comparing

the current time with the profile’s activation time. However there is a possibility

that the comparison is incorrect when the current time wraps around to 00:00:00

for the next day/month/year. The calculation is modified to account for such

situations.

6.1.4 UPDATING GUI ON RECEIVING COMMANDS

Incoming commands from the network are received in a separate network

thread. When a command to activate or deactivate a relay is received, the

corresponding push button needs to be changed. However since the .NET form

engine runs in a separate thread, it is unsafe to modify the buttons directly from

the network thread. To overcome this, a delegate function had to be

implemented to update the buttons from within the context of the form’s thread.

Page 39: Implementation of a Low-Cost Home Automation System Project Report

29

6.2 MICROCONTROLLER AND HARDWARE MODULE

6.2.1 QUALITY OF MAINS SUPPLY

The electromagnetic relays require a stable +12V DC supply in order to

function reliably. Initially a transformer with a rectifier was used to provide a

+12V DC supply from the mains. However the quality of the mains supply is

unreliable because at times the supply is at a low voltage instead of 220V. This

was causing the transformer to output only 9-10V and some of the relays would

not activate. To compensate for this, a transformer with a higher output voltage

of +16V is used. The transformer output is connected to a 7812 positive voltage

regulator IC to produce a stable +12V DC for the relays.

6.2.2 ELECTRICAL GROUNDING PROBLEMS

During tests it was found that the microcontroller randomly reset itself

and in some cases even had its EEPROM erased, which required it to be

reprogrammed.

In a normal USB connection the outer mesh wrapping acts as a ground

wire. It provides grounding for the device being connected by bridging it to the

grounding of the PC. It was assumed that this would absorb and stray currents

in the hardware circuit. The USB cable used to connect the microcontroller to

the PC is a Type “A” (Data + Power) to Type “A” (Data + Power) + Type “A”

(Power only) cable. The single data connector side is connected to the PC and

the other data connector is connected to the USB-to-Serial Bridge, while the

Power only connector is connected to the microcontroller to provide +5V DC.

On further investigation it was found that the USB specification required that

the ground wire join exactly two end points. In this case, only the two data

Page 40: Implementation of a Low-Cost Home Automation System Project Report

30

connectors were joined by the ground wire, and the ground wire on the Power

connector was not connected to the PC’s ground.

Thus stray currents from the transformer were flowing through the circuit

and were triggering the reset pin on the microcontroller. The PIC16F877A

microcontroller has a feature called LVP (Low Voltage Programming) which

allows the microcontroller to be programmed from a low voltage serial port

usually found on laptops, instead of the higher voltage range of the RS232

standard. If a continuous low voltage is applied to the LVP pins for a few

seconds, the microcontroller erases its EEPROM and enters programming

mode. The stray currents were also activating the LVP mode at times and were

causing the microcontroller’s EEPROM to get erased.

The power plug was changed to a three pin top and a direct connection to

the wall outlet’s ground pin was provided to absorb the stray currents.

6.3 BLUETOOTH CLIENT MODULE FOR J2ME

6.3.1 SEARCHING FOR SERVERS

Normally when a Bluetooth service is created, a unique UUID is provided

at the time of creation so that the client side can be preprogrammed to connect

to discovered services which match that UUID directly. However when the

BTSPP service is hosted by the PC, it hosts multiple services using the same

UUID, each of which correspond to a different virtual COM port. Thus when

connecting via Bluetooth normally, the mobile phone will automatically choose

the first service with the matching UUID that it locates. However this may not

be connected to the same virtual COM port that the server is listening on. Hence

an additional step must be presented to the user on the mobile phone where the

Page 41: Implementation of a Low-Cost Home Automation System Project Report

31

specific service to connect to must be selected. Once device discovery and

service discovery have completed completely, a list of all MAC addresses that

match the match the same UUID are presented to the user. Since the same

UUID is repeated amongst the PC’s services itself, all the MAC addresses in the

list will be the same, each one corresponding to a different virtual COM port.

The user must then choose one among these to connect to. Coincidentally the

list of MAC addresses appear in ascending order of the name of the virtual

COM ports on the server, so it is trivial to choose the correct address since it is

known which virtual COM port the server is listening on.

6.4 WI-FI CLIENT MODULE FOR LAPTOPS

Some of the issues encountered in the server application were also

prevalent in the laptop Wi-Fi client.

6.4.1 CONFIGURATION FILE

When the application is launched it reads the previous settings from an

XML formatted configuration file. All the values read are checked to be valid

for the corresponding data type, and whether they are within their allowed upper

and lower bounds if any. If a particular option is corrupted or not present in the

configuration file (due to a user manually editing it), a safe default value is

assumed.

6.4.2 UPDATING GUI ON RECEIVING COMMANDS

Incoming commands from the network are received in a separate network

thread. When a command to activate or deactivate a relay is received, the

corresponding push button needs to be changed. However since the .NET form

Page 42: Implementation of a Low-Cost Home Automation System Project Report

32

engine runs in a separate thread, it is unsafe to modify the buttons directly from

the network thread. To overcome this, a delegate function had to be

implemented to update the buttons from within the context of the form’s thread.

6.5 WI-FI CLIENT MODULE FOR PLAYSTATION PORTABLE

6.5.1 GUI RENDERING PROBLEMS

When the various menus were shown and hidden as the user selected

options on the screen, it eventually caused problems such as some menu items

not being rendered properly or menus not appearing at all. This was attributed to

the system running out of memory to render correctly with all the objects loaded

at once. The solution was to dynamically create and destroy each of the menus

and other items on screen such as the status texts.

6.5.2 ROUTE EXISTS TO SERVER

Even when the PSP is connected to a Wi-Fi access point, it’s unsafe to

assume that the server is reachable. The access point might be on a different

subnet and there may not be a network route to the server’s IP address specified

in the configuration file. The server is assumed to be reachable only when a

dummy UDP packet is sent and a reply containing the current status of all the

appliances is successfully received from the server.

6.5.3 CONFIGURATION FILE

When the application is launched it reads the previous settings from a

plain text configuration file. All the values read are checked to be valid for the

corresponding data type, and whether they are within their allowed upper and

Page 43: Implementation of a Low-Cost Home Automation System Project Report

33

lower bounds if any. If a particular option is corrupted or not present in the

configuration file, a safe default value is assumed.

Page 44: Implementation of a Low-Cost Home Automation System Project Report

34

CHAPTER 7

CONCLUSION

7.1. CONCLUSION

The home automation system has been experimentally proven to work

satisfactorily by connecting sample appliances to it and the appliances were

successfully controlled from a wireless mobile device. The Bluetooth client was

successfully tested on a multitude of different mobile phones from different

manufacturers, thus proving its portability and wide compatibility.

Thus a low-cost home automation system was successfully designed,

implemented and tested.

7.2. FUTURE ENHANCEMENTS

A useful feature would be to add support for remotely controlling an

infrared transmitter. This transmitter can be placed within range of an infrared

enabled appliance such as an air conditioner. The user would then be able to

control more advanced features of the appliance such as temperature control,

fan speed, etc.

Page 45: Implementation of a Low-Cost Home Automation System Project Report

35

APPENDIX 1

CODING

1. SERVER MODULE (NETWORK THREAD)

System::Void ServerCommon::ReceiveThread(void) { IPEndPoint^ sender = gcnew IPEndPoint(IPAddress::Any, 0); EndPoint^ senderRemote = safe_cast<EndPoint^>(sender); IPEndPoint^ iplocalep = gcnew IPEndPoint(IPAddress::Any, int::Parse(spnPort->Text)); EndPoint^ localep = safe_cast<EndPoint^>(iplocalep); sock = gcnew Socket(AddressFamily::InterNetwork, SocketType::Dgram, ProtocolType::Udp); try { sock->SetSocketOption(SocketOptionLevel::Socket, SocketOptionName::ReuseAddress, 1); sock->Bind(localep); UdpPortOpen = true; } catch (Exception^ e) { MessageBox::Show(e->ToString()); return; } array<unsigned char, 1>^ msg = gcnew array<unsigned char, 1>(50); while (UdpPortOpen) { try { int bytesRead = sock->ReceiveFrom(msg, senderRemote); if (bytesRead > 0) { String^ client = senderRemote->ToString(); if (!lstClients->Items->Contains(client)) { AddListString(client); } DontSend = true; for (int i = 0; i < bytesRead; i++) { for (int j = 0; j < 8; j++) { if (msg[i] == j + 'A') {

Page 46: Implementation of a Low-Cost Home Automation System Project Report

36

SetControlPropertyValue(chkRelay[j], "Checked", true); break; } else if(msg[i] == j + 'a') { SetControlPropertyValue(chkRelay[j], "Checked", false); break; } } } SendAll(); DontSend = false; } } catch (...) { //MessageBox::Show(e->ToString()); } } }

2. MICROCONTROLLER AND HARDWARE MODULE

#include <stdio.h> #include <htc.h> #include "usart.h" /* A simple demonstration of serial communications which * incorporates the on-board hardware USART of the Microchip * PIC16Fxxx series of devices. */ __CONFIG(HS & WDTDIS); void main(void) { unsigned char input; INTCON=0; // purpose of disabling the interrupts. init_comms(); // set up the USART - settings defined in usart.h ADCON1 = 0x06; TRISA = 0x00; // make all PORTA bits output PORTA = 0x00; // initialize all bits to ON TRISD = 0x00; // make all PORTD bits output PORTD = 0x00; // initialize all bits to OFF printf("A-H to turn on, a-h to turn off:\r\n"); while(1) { input = getch(); if ((input >= 'A') && (input <='H')) { switch(input)

Page 47: Implementation of a Low-Cost Home Automation System Project Report

37

{ case 'A': RD0 = 1; RA0 = 1; break; case 'B': RD1 = 1; RA1 = 1; break; case 'C': RD2 = 1; RA2 = 1; break; case 'D': RD3 = 1; RA3 = 1; break; case 'E': RD4 = 1; RA4 = 1; break; case 'F': RD5 = 1; RA5 = 1; break; case 'G': RD6 = 1; break; case 'H': RD7 = 1; } printf("[%c] on.\r\n", input); } else if ((input >= 'a') && (input <='h')) { switch(input) { case 'a': RD0 = 0; RA0 = 0; break; case 'b': RD1 = 0; RA1 = 0; break; case 'c': RD2 = 0; RA2 = 0; break; case 'd': RD3 = 0; RA3 = 0; break; case 'e': RD4 = 0; RA4 = 0; break; case 'f': RD5 = 0; RA5 = 0; break;

Page 48: Implementation of a Low-Cost Home Automation System Project Report

38

case 'g': RD6 = 0; break; case 'h': RD7 = 0; } printf("[%c] off.\r\n", input); } else { printf("[%c] unrecognized.\r\n", input); } } }

3. BLUETOOTH CLIENT MODULE FOR J2ME (RELAY CONTROL)

public void itemStateChanged(Item item) { if (item == chkRelay) { int c=0; byte[] msg = new byte[8]; for (int i=0; i<RELAY_COUNT; i++) { if (chkRelay.isSelected(i) != relayState[i]) { relayState[i] = chkRelay.isSelected(i); if (relayState[i]) { msg[c] = (byte)((int)'A'+i); } else { msg[c] = (byte)((int)'a'+i); } c++; } } if (!dontSend) { bt_client.send(msg, c); } return; } } public void commandAction(Command c, Displayable d) { if (c == EXIT_CMD) { destroyApp(true); notifyDestroyed(); return; } if (c == SCR_MAIN_SEARCH_CMD)

Page 49: Implementation of a Low-Cost Home Automation System Project Report

39

{ Form f = new Form("Home Automation"); f.addCommand(SCR_SEARCH_CANCEL_CMD); f.setCommandListener(this); f.append(new Gauge("Searching for servers...", false, Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING)); Display.getDisplay(this).setCurrent(f); bt_client.requestSearch(); return; } if (c == SCR_SEARCH_CANCEL_CMD) { bt_client.cancelSearch(); Display.getDisplay(this).setCurrent(frmConnect); return; } if (c == SCR_LIST_BACK_CMD) { bt_client.requestConnect(-1); Display.getDisplay(this).setCurrent(frmConnect); return; } if (c == SCR_LIST_CONNECT_CMD) { Form f = new Form("Home Automation"); f.addCommand(SCR_CONNECT_CANCEL_CMD); f.setCommandListener(this); f.append(new Gauge("Connecting to server...", false, Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING)); Display.getDisplay(this).setCurrent(f); bt_client.requestConnect(lstServers.getSelectedIndex()); return; } if (c == SCR_CONNECT_CANCEL_CMD) { bt_client.requestDisconnect(); Display.getDisplay(this).setCurrent(lstServers); return; } if (c == SCR_RELAY_DISCONNECT_CMD) { bt_client.requestDisconnect(); Display.getDisplay(this).setCurrent(lstServers); return; } isInit = true; }

4. WI-FI CLIENT MODULE FOR LAPTOPS (NETWORK THREAD)

System::Void ClientCommon::ReceiveThread(void) { sock = gcnew Socket(AddressFamily::InterNetwork, SocketType::Dgram, ProtocolType::Udp);

Page 50: Implementation of a Low-Cost Home Automation System Project Report

40

try { sock->SetSocketOption(SocketOptionLevel::Socket, SocketOptionName::ReuseAddress, 1); sock->Connect(txtServer->Text, int::Parse(spnPort->Text)); UdpPortOpen = true; sock->Send(gcnew array<unsigned char, 1>{'x'}); } catch (Exception^ e) { MessageBox::Show(e->ToString()); return; } array<unsigned char, 1>^ msg = gcnew array<unsigned char, 1>(50); while (UdpPortOpen) { try { int bytesRead = sock->Receive(msg); if (bytesRead > 0) { DontSend = true; for (int i = 0; i < bytesRead; i++) { for (int j = 0; j < 8; j++) { if (msg[i] == j + 'A') { SetControlPropertyValue(chkRelay[j], "Checked", true); break; } else if(msg[i] == j + 'a') { SetControlPropertyValue(chkRelay[j], "Checked", false); break; } } } DontSend = false; } } catch (...) { //MessageBox::Show(e->ToString()); } } } private: System::Void chkRelay_CheckedChanged(System::Object^ sender, System::EventArgs^ e) { int index = Int32::Parse(((CheckBox^) sender)->Tag->ToString()); array<unsigned char, 1>^ s = gcnew array<unsigned char, 1>(1);

Page 51: Implementation of a Low-Cost Home Automation System Project Report

41

if (chkRelay[index]->Checked) { s[0] = 'A' + index; } else { s[0] = 'a' + index; } if (!common->DontSend) { common->SendSock(s, 1); } }

5. WI-FI CLIENT MODULE FOR PLAYSTATION PORTABLE

(NETWORK THREAD)

int OnOffMenuSelect(int enter) { if (enter) { if (bConnected) { unsigned char msg; switch (vlfGuiCentralMenuSelection()) { case 0: msg = 'A' + (unsigned char)g_relaySel; sceNetInetSend(g_sock, &msg, 1, 0); break; case 1: msg = 'a' + (unsigned char)g_relaySel; sceNetInetSend(g_sock, &msg, 1, 0); break; } vlfGuiSetRectangleFade(0, 56, 480, 272 - 56, VLF_FADE_MODE_OUT, VLF_FADE_SPEED_SUPER_FAST, 0, NULL, NULL, 0); vlfGuiSetTextFadeFinishCallback(relayname, OnOffFadeOut, NULL, 0); return VLF_EV_RET_REMOVE_HANDLERS; } vlfGuiMessageDialog("No connection to Home Automation Server.", VLF_MD_TYPE_ERROR); return VLF_EV_RET_NOTHING; } vlfGuiSetRectangleFade(0, 56, 480, 272 - 56, VLF_FADE_MODE_OUT, VLF_FADE_SPEED_SUPER_FAST, 0, NULL, NULL, 0); vlfGuiSetTextFadeFinishCallback(relayname, OnOffFadeOut, NULL, 0); return VLF_EV_RET_REMOVE_HANDLERS; } int recv_thread(SceSize args, void *argp) { char buf[50]; int readbytes;

Page 52: Implementation of a Low-Cost Home Automation System Project Report

42

while(bConnected) { readbytes = sceNetInetRecv(g_sock, buf, 50, 0); if (readbytes <= 0) break; int i, j; for (i = 0; i < readbytes; i++) { for (j = 0; j < 8; j++) { if (buf[i] == 'A'+j) { g_relayStatus[j] = 1; if (OnOff[j] != NULL) { vlfGuiSetText(OnOff[j], "ON"); } break; } else if (buf[i] == 'a'+j) { g_relayStatus[j] = 0; if (OnOff[j] != NULL) { vlfGuiSetText(OnOff[j], "OFF"); } break; } } } } th_recv = -1; return sceKernelExitDeleteThread(0); }

Page 53: Implementation of a Low-Cost Home Automation System Project Report

43

APPENDIX 2

SCREENSHOTS

Figure A2.1 Server Main Window

Page 54: Implementation of a Low-Cost Home Automation System Project Report

44

Figure A2.2 Server Configuration Window

Page 55: Implementation of a Low-Cost Home Automation System Project Report

45

Figure A2.3 Server Time-Base Profile Configuration Window

Page 56: Implementation of a Low-Cost Home Automation System Project Report

46

Figure A2.4 Pin Diagram for PIC16F877A

Page 57: Implementation of a Low-Cost Home Automation System Project Report

47

Figure A2.5 PIC Development Board Diagram

Page 58: Implementation of a Low-Cost Home Automation System Project Report

48

Figure A2.6 PIC Development Board with Microcontroller

Figure A2.7 Relay Board

Page 59: Implementation of a Low-Cost Home Automation System Project Report

49

Figure A2.8 Automated 220V Outlets

Figure A2.9 USB-to-Serial Bridge

Page 60: Implementation of a Low-Cost Home Automation System Project Report

50

Figure A2.10 J2ME Bluetooth Initialized

Figure A2.11 J2ME Bluetooth Searching

Page 61: Implementation of a Low-Cost Home Automation System Project Report

51

Figure A2.12 J2ME Bluetooth Server Addresses

Figure A2.13 J2ME Bluetooth Control Appliances

Page 62: Implementation of a Low-Cost Home Automation System Project Report

52

Figure A2.14 Wi-Fi Client for Windows

Figure A2.15 PSP Wi-Fi Client

Page 63: Implementation of a Low-Cost Home Automation System Project Report

53

Figure A2.16 PSP Wi-Fi Client Connected

Figure A2.17 PSP Wi-Fi Client Activate Appliance

Figure A2.18 PSP Wi-Fi Client Status Updates

Page 64: Implementation of a Low-Cost Home Automation System Project Report

54

Figure A2.19 PSP Wi-Fi Connection Error

Page 65: Implementation of a Low-Cost Home Automation System Project Report

55

REFERENCES

1. .NET Framework Developer Center http://msdn.microsoft.com/en-us/netframework/default.aspx 2. HI-TECH Software: Embedded C Compilers and Tools for Software Development http://www.htsoft.com/ 3. Java ME Technology http://java.sun.com/javame/technology/index.jsp 4. Playstation Programming http://ps2dev.org/