automation using android - final year project for b.e
DESCRIPTION
TRANSCRIPT
Organization Automation Using Android
Dept of C.S.E Page 1
KARNATAK LAW SOCIETY’S
GOGTE INSTITUTE OF TECHNOLOGYUDYAMBAG, BELGAUM – 590008
ORGANIZATION AUTOMATION USING ANDROIDA Project Report
submitted in partial fulfillment of the requirementsfor the Award of Degree of
Bachelor of Engineering in Computer Science & Engineeringof the Visvesvaraya Technological University, Belgaum
SUBMITTED BY :Amit Walvekar Anup Vanarse
[2GI09CS008] [2GI09CS014]
Indraneel Deshpande Jayesh Dhoot
[2GI09CS038] [2GI09CS039]
UNDER THE GUIDANCE OF:
Asst. Prof. K. D. Hanabaratti
VIII SEMESTERDEPARTMENT OF COMPUTER SCIENCE & ENGG.
GOGTE INSTITUTE OF TECHNOLOGY2012– 2013
Organization Automation Using Android
Dept of C.S.E Page 2
KARNATAK LAW SOCIETY’SGOGTE INSTITUTE OF TECHNOLOGY
UDYAMBAG, BELGAUM – 590008
DEPARTMENT OF COMPUTER SCIENCE & ENGG.
CERTIFICATE
Certified that the project work entitled
“ORGANIZATION AUTOMATION USING ANDROID”carried out by
Mr. Amit Walvekar Mr. Anup Vanarse
Mr. Indraneel Deshpande Mr. Jayesh Dhoot
bonafide student[s] of Karnatak Law Society’s Gogte Institute of Technology, Belgaum,in partial fulfillment for the award of Bachelor of Engineering in Computer Science andEngineering of the Visveshvaraya Technological University, Belgaum during the year2012-2013. It is certified that all corrections/suggestions indicated for InternalAssessment have been incorporated in the Report deposited in the departmental library.The project report has been approved as it satisfies the academic requirements in respect ofProject work prescribed for the said Degree
Guide HOD Principal
Asst. Prof. K. D. Hanabaratti Dr. R. M. Jogdand Dr. A. S. Deshpande
Organization Automation Using Android
Dept of C.S.E Page 3
Organization Automation Using Android
Dept of C.S.E Page 4
ABSTRACT
Automation is a way to have things around you happen automatically. The first thing that
comes to mind when folks think of automation are robots, flashing lights, complicated
electronics and a general feeling that their surrounding is less of a warm place and more
of a cold science experiment. However, in most organizations today, you can easily find
some simple forms of automation such as: Garage door openers ,Remote Controls
,Irrigation / sprinkler control systems ,Motion activated lights ,Security systems
,Programmable thermostats ,Programmable light timers If you want to keep going, you
can throw in dishwasher, clothes washers and dryers, ovens, microwaves, cars, lights
and switches…. The list goes on and on.
Organization Automation Using Android
Dept of C.S.E Page 5
ACKNOWLEDGEMENT
No project can be successfully completed without timely guidance and moral
support of technically equipped and experienced minds.
We would like to express our heartfelt gratitude towards our inspirational guide
and mentor Asst. Prof. K. D. Hanabaratti, whose firm belief in our capabilities to bring
our potential to the forefront, has played a major role in the accomplishment of this
project.
We owe a debt of gratitude to Dr. A. S. Deshpande, Principal, Gogte Institute
Of Technology, Belgaum, for providing us all the support, facilities and cooperation to
carry out the project.
We sincerely thank Dr. Rashmi M. Jogdand, HOD, Dept. of CSE, without
whose moral support this would not have been successful.
We also thank the faculty and non-teaching staff of Computer Science and
Engineering Department and the library staff for their timely cooperation and much
needed assistance.
Last but not the least, we would like to thank our parents and friends for their
support and understanding without which we would not have been able to complete this
project.
Project Associates
Anup Vanarse
Amit Walvekar
Jayesh Dhoot
Indraneel Deshpande
Organization Automation Using Android
Dept of C.S.E Page 6
TABLE OF CONTENTS
CHAPTER PAGE NO.
1. LITERATURE SURVEY 1
1.1. Android Overview 1
1.2. Java Socket Programming 3
1.3. Port Forwarding In Router 9
1.4. Atmel ATMega16 Microcontroller 14
2. INTRODUCTION 22
2.1. Objective 22
2.2. Module 22
2.3. Basics 22
2.4. Problem Definition 23
2.5. Software Requirement Specification 23
2.6. Hardware Requirement Specification 23
2.7. Scope 24
3. USE-CASE DIAGRAM AND SEQUENCE DIAGRAM 25
3.1. Use-Case Diagram 25
3.2. Sequence Diagram 26
4. SYSTEM DESIGN 27
4.1. Dataflow Model 27
4.2. Hardware Design 28
4.3. Android Application Development Design 32
Organization Automation Using Android
Dept of C.S.E Page 7
5. IMPLEMENTATION 33
5.1. AVR Programming 33
5.2. Android Application 35
6. RESULT 41
6.1. Snapshots of the Android Application 41
6.2. Snapshots of the Embedded System 50
7. CONCLUSION AND FUTURE IMPROVEMENTS 51
8. APPENDIX A 52
9. BIBLOGRAPHY 53
Organization Automation Using Android
Dept of C.S.E Page 8
Chapter 1
Literature Survey
1.1. Android Overview
Android is an open-source software stack created for a wide array of devices with
different form factors [1]. The primary purpose of Android is to create an open software
platform available for carriers, OEMs, and developers to make their innovative ideas a
reality and to create a successful, real-world product that improves the mobile experience
for end users. We also wanted to make sure that there was no central point of failure,
where one industry player could restrict or control the innovations of any other. The
result is a full, production-quality consumer product whose source is open for
customization and porting[5].
1.1.1 Open Source
Android was built from the ground-up to enable developers to create compelling mobile
applications that take full advantage of all a handset has to offer [5]. It was built to be
truly open. For example, an application can call upon any of the phone’s core
functionality such as making calls, sending text messages, or using the camera, allowing
developers to create richer and more cohesive experiences for users. Android is built on
the open Linux Kernel[1][6]. Furthermore, it utilizes a custom virtual machine that was
designed to optimize memory and hardware resources in a mobile environment. Android
is open source; it can be liberally extended to incorporate new cutting edge technologies
as they emerge. The platform will continue to evolve as the developer community works
together to build innovative mobile applications[6].
1.1.2 All applications are created equal
Android does not differentiate between the phone’s core applications and third-party
applications. They can all be built to have equal access to a phone’s capabilities
Organization Automation Using Android
Dept of C.S.E Page 9
providing users with a broad spectrum of applications and services. With devices built on
the Android Platform, users are able to fully tailor the phone to their interests[1][5]. They
can swap out the phone's home screen, the style of the dialer, or any of the applications.
They can even instruct their phones to use their favorite photo viewing application to
handle the viewing of all photos [5].
1.1.3 Breaking down application boundaries
Android breaks down the barriers to building new and innovative applications. For
example, a developer can combine information from the web with data on an individual’s
mobile phone — such as the user’s contacts, calendar, or geographic location — to
provide a more relevant user experience [5]. With Android, a developer can build an
application that enables users to view the location of their friends and be alerted when
they are in the vicinity giving them a chance to connect[6].
1.1.4 Fast & easy application development
Android provides access to a wide range of useful libraries and tools that can be used to
build rich applications [6]. For example, Android enables developers to obtain the
location of the device, and allows devices to communicate with one another enabling rich
peer–to–peer social applications. In addition, Android includes a full set of tools that
have been built from the ground up alongside the platform providing developers with
high productivity and deep insight into their applications[6].
Organization Automation Using Android
Dept of C.S.E Page 10
1.2. Java Socket Programming
The term network programming refers to writing programs that execute across multiple
devices (computers), in which the devices are all connected to each other using a
network. The java.net package of the J2SE APIs contains a collection of classes and
interfaces that provide the low-level communication details, allowing you to write
programs that focus on solving the problem at hand [7]. The java.net package provides
support for the two common network protocols:
TCP: TCP stands for Transmission Control Protocol, which allows for reliable
communication between two applications. TCP is typically used over the Internet
Protocol, which is referred to as TCP/IP.
UDP: UDP stands for User Datagram Protocol, a connection-less protocol that
allows for packets of data to be transmitted between applications.
1.2.1 Socket Programming
Sockets provide the communication mechanism between two computers using TCP. A
client program creates a socket on its end of the communication and attempts to connect
that socket to a server. When the connection is made, the server creates a socket object on
its end of the communication. The client and server can now communicate by writing to
and reading from the socket. The java.net.Socket class represents a socket, and the
java.net.ServerSocket class provides a mechanism for the server program to listen for
clients and establish connections with them [7]. The following steps occur when
establishing a TCP connection between two computers using sockets:
The server instantiates a ServerSocket object, denoting which port number
communication is to occur on.
The server invokes the accept() method of the ServerSocket class. This method
waits until a client connects to the server on the given port.
After the server is waiting, a client instantiates a Socket object, specifying the
server name and port number to connect to.
Organization Automation Using Android
Dept of C.S.E Page 11
The constructor of the Socket class attempts to connect the client to the specified
server and port number. If communication is established, the client now has a
Socket object capable of communicating with the server.
On the server side, the accept() method returns a reference to a new socket on the
server that is connected to the client's socket.
After the connections are established, communication can take place using I/O streams.
Each socket has both an OutputStream and an InputStream. The client's OutputStream is
connected to the server's InputStream, and the client's InputStream is connected to the
server's OutputStream.TCP is a two-way communication protocol, so data can be sent
across both streams at the same time. There are following useful classes providing
complete set of methods to implement sockets.
1.2.2 ServerSocket Class Methods
The java.net.ServerSocket class is used by server applications to obtain a port and listen
for client requests[8].
The ServerSocket class has four constructors:
SN Methods with Description
1public ServerSocket(int port) throws IOExceptionAttempts to create a server socket bound to the specified port. An exception occurs ifthe port is already bound by another application.
2public ServerSocket(int port, int backlog) throws IOExceptionSimilar to the previous constructor, the backlog parameter specifies how manyincoming clients to store in a wait queue.
3
public ServerSocket(int port, int backlog, InetAddress address) throwsIOExceptionSimilar to the previous constructor, the InetAddress parameter specifies the local IPaddress to bind to. The InetAddress is used for servers that may have multiple IPaddresses, allowing the server to specify which of its IP addresses to accept clientrequests on
4public ServerSocket() throws IOExceptionCreates an unbound server socket. When using this constructor, use the bind()method when you are ready to bind the server socket
Table 2.1 ServerSocket Class constructors
Organization Automation Using Android
Dept of C.S.E Page 12
If the ServerSocket constructor does not throw an exception, it means that your
application has successfully bound to the specified port and is ready for client
requests[8].
Here are some of the common methods of the ServerSocket class:
SN Methods with Description
1public int getLocalPort()Returns the port that the server socket is listening on. This method is useful if youpassed in 0 as the port number in a constructor and let the server find a port for you.
2
public Socket accept() throws IOExceptionWaits for an incoming client. This method blocks until either a client connects to theserver on the specified port or the socket times out, assuming that the time-out valuehas been set using the setSoTimeout() method. Otherwise, this method blocksindefinitely
3public void setSoTimeout(int timeout)Sets the time-out value for how long the server socket waits for a client during theaccept().
4public void bind(SocketAddress host, int backlog)Binds the socket to the specified server and port in the SocketAddress object. Usethis method if you instantiated the ServerSocket using the no-argument constructor.
Table 2.2 Methods of the ServerSocket
When the ServerSocket invokes accept(), the method does not return until a client
connects. After a client does connect, the ServerSocket creates a new Socket on an
unspecified port and returns a reference to this new Socket. A TCP connection now exists
between the client and server, and communication can begin.
Organization Automation Using Android
Dept of C.S.E Page 13
1.2.3 Socket Class Methods
The java.net.Socket class represents the socket that both the client and server use to
communicate with each other. The client obtains a Socket object by instantiating one,
whereas the server obtains a Socket object from the return value of the accept()
method[8].
The Socket class has five constructors that a client uses to connect to a server:
SN Methods with Description
1
public Socket(String host, int port) throws UnknownHostException,IOException.This method attempts to connect to the specified server at the specified port. If thisconstructor does not throw an exception, the connection is successful and the clientis connected to the server.
2
public Socket(InetAddress host, int port) throws IOExceptionThis method is identical to the previous constructor, except that the host is denotedby an InetAddress object.
3
public Socket(String host, int port, InetAddress localAddress, int localPort)throws IOException.Connects to the specified host and port, creating a socket on the local host at thespecified address and port.
4
public Socket(InetAddress host, int port, InetAddress localAddress, intlocalPort) throws IOException.This method is identical to the previous constructor, except that the host is denotedby an InetAddress object instead of a String
5public Socket()Creates an unconnected socket. Use the connect() method to connect this socket to aserver.
Table 2.3 Socket class constructors
Organization Automation Using Android
Dept of C.S.E Page 14
When the Socket constructor returns, it does not simply instantiate a Socket object but it
actually attempts to connect to the specified server and port. Some methods of interest in
the Socket class are listed here. Notice that both the client and server have a Socket
object, so these methods can be invoked by both the client and server[8].
SN Methods with Description
1public void connect(SocketAddress host, int timeout) throws IOExceptionThis method connects the socket to the specified host. This method is needed onlywhen you instantiated the Socket using the no-argument constructor.
2public InetAddress getInetAddress()This method returns the address of the other computer that this socket is connectedto.
3public int getPort()Returns the port the socket is bound to on the remote machine.
4public int getLocalPort()Returns the port the socket is bound to on the local machine.
5 public SocketAddress getRemoteSocketAddress()Returns the address of the remote socket.
6public InputStream getInputStream() throws IOExceptionReturns the input stream of the socket. The input stream is connected to the outputstream of the remote socket.
7public OutputStream getOutputStream() throws IOExceptionReturns the output stream of the socket. The output stream is connected to the inputstream of the remote socket
8 public void close() throws IOExceptionCloses the socket.
Table 2.4 Methods of Socket Class
Organization Automation Using Android
Dept of C.S.E Page 15
1.2.4 InetAddress Class Methods
This class represents an Internet Protocol (IP) address. Here are following useful methods
which you would need while doing socket programming[8]:
SN Methods with Description
1 static InetAddress getByAddress(byte[] addr)Returns an InetAddress object given the raw IP address .
2static InetAddress getByAddress(String host, byte[] addr)Create an InetAddress based on the provided host name and IP address.
3 static InetAddress getByName(String host)Determines the IP address of a host, given the host's name.
4String getHostAddress()Returns the IP address string in textual presentation.
5String getHostName()Gets the host name for this IP address.
6 static InetAddress InetAddress getLocalHost()Returns the local host.
7String toString()Converts this IP address to a String.
Table 2.5 InetAddress Class methods
Organization Automation Using Android
Dept of C.S.E Page 16
1.3 Port Forwarding in Router
Port forwarding or port mapping is a name given to the combined technique of:
1. Translating the address and/or port number of a packet to a new destination
2. Possibly accepting such packet(s) in a packet filter (firewall)
3. Forwarding the packet according to the routing table.
The destination may be a predetermined network port (assuming protocols
like TCP and UDP, though the process is not limited to these) on a host within a NAT-
masqueraded, typically private network, based on the port number on which it was
received at the gateway from the originating host. The technique is used to permit
communications by external hosts with services provided within a private local area
network[9].
Fig.2.1. Setting up of Port Forwarding
Organization Automation Using Android
Dept of C.S.E Page 17
1.3.1 From Inside of Your Network
Here’s a map of a simple home network.
As you can see, you’ve got three computers with unique IP addresses all connected to a
router. You can easily access the other computers, but when they all access the internet,
they go through the router. The router has an IP address that’s relative for you network,
but it also has an external IP, one that it uses when interacting with things outside of your
network. Whenever these computers make a request towards the internet, they all use the
same IP – 127.34.73.214 in our example. Simple requests, such as loading web sites, are
automatically handled by the router and are sent to their appropriate places. It’s not too
difficult because each computer starts with a unique request, so it’s not hard for the router
to figure out where things should go[9].
1.3.2 Ports and Protocols
Ports help make this process easier. If an IP is like a building’s address, then ports are
like the apartment numbers for the residences in the building. Lower numbered ports
have specific applications which are standards throughout the computing industry. When
Fig.2.2. Simple home network
Organization Automation Using Android
Dept of C.S.E Page 18
you fetch a web page, for example, it uses port 80. The receiving computer’s software
knows that port 80 is used for serving http documents, so it listens there and responds
accordingly. If you send an http request over a different port – say, 143 – the web server
won’t recognize it because it’s not listening there, although something else might be.
Each port can be used via either TCP or UDP. TCP, or Transmission Control Protocol, is
what’s used most commonly. UDP, or User Datagram Protocol, is less widely used in
home applications with one major exception: Bit Torrent. Depending on what is listening,
it’ll be expecting requests to be made in either one or the other of these protocols[9].
1.3.3 From Outside Your Network
Now let’s take a look at what happens when a device outside of the network starts a
request.
Fig.2.3. External device sending request to a network
Organization Automation Using Android
Dept of C.S.E Page 19
Let’s say you’re out and about and want to access a file on your network. Your computer
makes a request to your home network’s IP, 127.34.73.214, which then goes to your
router. Your router doesn’t know which computer to send it to[9].
We can configure our router to forward ports. This means that depending on the port
number that the request is sent over; the router can pass it along to different IP addresses.
So in this example, when you’re out and about and using your laptop, you use different
ports to make your requests. When you access your home network’s IP address using port
22, your router at home knows that this should go to 192.168.1.100 inside the network.
At the same time, you can make a request over port 80, which your router will send to the
web server at 192.168.1.150. Or, you can try to remotely control your sister’s laptop with
VNC, and your router will connect you to it at 192.168.1.200[9].
Fig.2.4. Configuring router for Port Forwarding
Organization Automation Using Android
Dept of C.S.E Page 20
You can even tell the router to change ports. For example, let’s say you have two web
servers[9].
When you access your home network via the standard port, 80, you can tell your router
to send it to 192.168.1.150. The web server there will be listening at port 80 and will
respond accordingly. But, you can tell your router that when you access it via port
10,000, that it should go to another computer, 192.168.1.250, but also at port 80. This
way, the second computer doesn’t have to be reconfigured to use a different port, but you
can still manage traffic effectively[9].
Fig.2.5. Configuring Port Forwarding with two web servers
Organization Automation Using Android
Dept of C.S.E Page 21
1.4 Atmel ATMega16 Microcontroller
The high-performance, low-power Atmel 8-bit AVR RISC-based microcontroller
combines 16KB of programmable flash memory, 1KB SRAM, 512B EEPROM, an 8-
channel 10-bit A/D converter, and a JTAG interface for on-chip debugging. The device
supports throughput of 16 MIPS at 16 MHz and operates between 4.5-5.5 volts. By
executing instructions in a single clock cycle, the device achieves throughputs
approaching 1 MIPS per MHz, balancing power consumption and processing speed.
ATmega16 is a 40 pin microcontroller. There are 32 I/O (input/output) lines which are
divided into four 8-bit ports designated as PORTA, PORTB, PORTC and PORTD.
ATmega16 has various in-built peripherals like USART, ADC, Analog
Comparator, SPI, JTAG etc. Each I/O pin has an alternative task related to in-built
peripherals[2][10].
1.4.1 ATMega16 I/O Ports
ATMega16 has 32 I/O lines, that means it has 4 I/O ports(A,B,C,D).Every I/O port has 3
registers associated with each ports. These three registers are:
DDRx(data direction register)
PINx
PORTx
x = A, B, C, D.
A. DDRx (DATA DIRECTION REGISTER): This register configures data
direction of port pins , means by using this register microcontroller decides
whether this port will be used as input port or output port. In 8051 if we will
declare any port as FF it becomes input port but in ATMega it is opposite if we
declare FF it becomes output port[2][10].
E.g. To make all pins of port D as input pins
DDRD=0b00000000
If we want to make first 4 pins of port C as input and remaining 4 as output then
Organization Automation Using Android
Dept of C.S.E Page 22
DDRC=0b00001111
B. PINx register: PIN (port IN) used to read data from port pins.
E.g. To read data from port A
DDRA=0b00000000
Y = PINA // data from port A will be stored in variable Y.
C. PORTx register: PORTx is used for two purpose-
To O/P data: When port is configured as output i.e. when corresponding bits in
DDR is set DDRA=0b11111111
x=0b10101010
PORTA=x // now content of port A will be AA
To activate or deactivate pull up registers: When you configure a port as input
port and pull up is enabled, it will be in input mode which is default. So, even if
you don’t connect anything to the pin and if you try to read it, it will read as 1.
Now, when you drive pin to zero, only then it will read as 0[2].
E.g. To make port A as I/P with pull-up enable
DDRA=0b00000000
PORTA=0b11111111
y=PINA
To make port A as tri-stated I/P
DDRA=0b00000000
PORTA=0b00000000
Organization Automation Using Android
Dept of C.S.E Page 23
1.4.2 ATMega16 Serial Communication using USART (UniversalSynchronous / Asynchronous Receiver/Transmitter)
There are two methods for serial data communication Synchronous and Asynchronous
communication. In Synchronous communication method complete block (characters) is
sent at a time. It doesn’t require any additional bits (start, stop or parity) to be added for
the synchronization of frame. The devices are synchronized by clock. And in
asynchronous communication data transmission is done byte by byte i.e., one byte at a
time. The additional bits are added to complete a frame. In synchronous communication
the frame consists of data bits while in asynchronous communication the total number of
bits in a frame may be more than the data bits[10].
Fig.2.6. Data frame
Serial USART provides full-duplex communication between the transmitter and receiver.
Atmega16 is equipped with independent hardware for serial USART communication[2].
Pin-14 (RXD) and Pin-15 (TXD) provide receive and transmit interface to the
microcontroller.
Fig.2.7. USART pins in ATMega16
Organization Automation Using Android
Dept of C.S.E Page 24
Atmega16 USART provides asynchronous mode of communication and do not have a
dedicated clock line between the transmitting and receiving end. The synchronization is
achieved by properly setting the baud rate, start and stop bits in a transmission sequence.
Start bit and stop bit: These bits are use to synchronize the data frame. Start bit is one
single low bit and is always given at the starting of the frame, indicating the next bits are
data bits. Stop bit can be one or two high bits at the end of frame, indicating the
completion of frame[10].
Baud Rate: In simple words baud rate is the rate at which serial data is being transferred.
Atmega16 USART has following features:
· Different Baud Rates.
· Variable data size with options ranging from 5bits to 9bits.
· One or two stop bits.
· Hardware generated parity check.
· USART can be configured to operate in synchronous mode.
· Three separate interrupts for RX Complete, TX complete and TX data register
empty.
To use the USART of Atmega16, certain registers need to be configured:
UCSR: USART control and status register. It’s is basically divided into three parts
UCSRA, UCSRB and UCSRC. These registers are basically used to configure the
USART.
UBRR: USART Baud Rate Registers. Basically use to set the baud rate of USART
UDR: USART data register
Fig.2.8. Equation for one data frame
Organization Automation Using Android
Dept of C.S.E Page 25
1) UCSRA: (USART Control and Status Register A)
RXC (USART Receive Complete): RXC flag is set to 1 if unread data exists in receive
buffer, and set to 0 if receive buffer is empty.
TXC (USART Transmit complete): TXC flag is set to 1 when data is completely
transmitted to Transmit shift register and no data is present in the buffer register UDR.
UDRE (USART Data Register Empty): This flag is set to logic 1 when the transmit
buffer is empty, indicating it is ready to receive new data. UDRE bit is cleared by writing
to the UDR register.
2) UCSRB: (USART Control and Status Register B)
RXCIE: RX Complete Interrupt Enable,
When 1 - RX complete interrupt is enabled.
When 0 - RX complete interrupt is disabled.
TXCIE: TX Complete Interrupt Enable,
When 1 - TX complete interrupt is enabled
When 0 - TX complete interrupt is disabled
Fig.2.9. UCSRA Register
Fig.2.10. UCSRB Register
Organization Automation Using Android
Dept of C.S.E Page 26
UDRIE: USART Data Register Empty Interrupt Enable,
When 1 - UDRE flag interrupt is enabled.
When 0 - UDRE flag interrupt is disabled.
RXEN: Receiver Enabled,
When 1 - USART Receiver is enabled.
When 0 - USART Receiver is disabled.
TXEN: Transmitter Enabled,
When 1 - USART Transmitter is enabled.
When 0 - USART Transmitter is disabled.
3) UCSRC: (USART Control and Status Register C)
The transmitter and receiver are configured with the same data features as configured in
this register for proper data transmission.
URSEL: USART Register select. This bit must be set due to sharing of I/O location by
UBRRH and UCSRC
UMSEL: USART Mode Select,
When 1 - Synchronous Operation
When 0 - Asynchronous Operation
Fig.2.11. UCSRC Register
Organization Automation Using Android
Dept of C.S.E Page 27
UPM[0:1]: USART Parity Mode, Parity mode selection bits.
USBS: USART Stop Select Bit,
When 0-> 1 Stop Bit
When 1 -> 2 Stop Bits
UCSZ[0:1]: The UCSZ[1:0] bits combined with the UCSZ2 bit in UCSRB sets size of
data frame i.e., the number of data bits. The table shows the bit combinations with
respective character size.
UCSZ2 UCSZ1 UCSZ0 Character Size
0 0 0 5-bit
0 0 1 6-bit
0 1 0 7-bit
0 1 1 8-bit
1 0 0 Reserved
1 0 1 Reserved
1 1 0 Reserved
1 1 1 9-bit
Table 2.6 UCSZ[0:1] initializations
4) UDR: (USART Data Register)
The USART Data receive and data transmit buffer registers share the same address
referred as USART UDR register, when data is written to the register it is written in
transmit data buffer register (TXB). Received data is read from the Receive data buffer
register (RXB).
Fig.2.12. UDR Register
Organization Automation Using Android
Dept of C.S.E Page 28
5) UBRRH & UBRRL (USART Baud Rate Registers)
The UBRRH register shares the same I/O address with the UCSRC register, the
differentiation is done on the basis of value of URSEL bit.
When URSEL=0; write operation is done on UBRRH register.
When URSEL=1; write operation is done on UCSRC register.
The UBRRH and UBRRL register together stores the 12-bit value of baud rate, UBRRH
contains the 4 most significant bits and UBRRL contains the other 8 least significant bits.
Baud rates of the transmitting and receiving bodies must match for successful
communication to take place[10].
Fig.2.13.UBRR Register
Organization Automation Using Android
Dept of C.S.E Page 29
Chapter 2
Introduction
2.1. Objective
Our project enables the user to control and monitor the electrical loads in an organization.
Through the Graphical User Interface (GUI) provided by the Android application, the
user is able to monitor and switch the electrical loads. This process will be achieved using
Internet. The Android application is user friendly and easy to understand.
2.2. Modules
In this project, we are making use of four modules which themselves will describe what
we intend to do. The modules are:
Module 1: Android application.
Module 2: Communication between Android application and router.
Module 3: Communication between router and embedded system.
Module 4: Embedded system.
2.3. Basics
The user sets and enters his username and password to enter the android application.
After proper authentication, the user selects a particular room in the organization. From
here the user will be able to view the status and control the electrical loads. The Android
application sends a specific signal over the internet to the router via Domain Name
System (DNS). The router forwards the received signal to the embedded system via port
forwarding. The embedded system receives the signal and switches the state of the
corresponding relay. The same is reflected on the respective electrical load. The various
modules of the system are:
Organization Automation Using Android
Dept of C.S.E Page 30
The first module is the Android application that provides a GUI and authentication of the
user. Using this, user sends a signal to switch the state of an electrical load.
The second module manages the communication between the android application and the
router. This is done via DNS Server as the router does not have a static Internet Protocol
(IP).
The third module deals with communication between the router and the embedded
system. This is established using port forwarding facility provided by the router.
The fourth and the last module is the embedded system which receives the signal from
the router and switches the corresponding relay which in turn switches the load.
2.4. Problem Definition
To build an automation system that comprises of an embedded system and an Android
application. The Android application will control the embedded system by sending
messages through Internet using GPRS or Wi-Fi. The Embedded System will in turn
switch ON/OFF the electrical load and send an acknowledgement to the user. The
communication between the Embedded System and the application is intermediated
through a router. The concept of Port Forwarding is used here. Thus remote access to any
electrical appliance in an organization can be achieved.
2.5. Software Requirement Specification
Languages used: AVR Studio 4, Java and Android SDK.
Platform (OS): Any Android Smartphone with Android version 2.1 +.
The Android Smartphone should support API version 14 to support switch widget
in the GUI.
2.6. Hardware Requirement Specification
Components: AVR Development Board with ATMega16 microcontroller,
Ethernet to Serial converter, Relay circuit.
Organization Automation Using Android
Dept of C.S.E Page 31
2.7. Scope
The user can access the electrical loads of his organization remotely. The automation
required can be customized as per the requirement of the organization.
Organization Automation Using Android
Dept of C.S.E Page 32
Chapter 3
Use-Case Diagram & Sequence Diagram
3.1. Use-Case Diagram
The use-case diagram is as given below:
Fig.3.1. Use Case diagram
After proper authentication the user can act as a client and requests the services provided
by the embedded system, which acts as server. The user interacts with the Android
application to select a room or a sector of the organization and changes the state of the
electrical load. The application generates a signal and transmits the message over internet
using GPRS or Wi-Fi. The message is received by a router at the organization. The router
forwards the message to appropriate port using Port Forwarding. The forwarded message
is converted into serial data by an Ethernet-to-Serial converter. This serial data is
Organization Automation Using Android
Dept of C.S.E Page 33
received by the microcontroller of the core system using USART (Universal
Synchronous/Asynchronous Receiver/Transmitter). The microcontroller changes the
logic state of the selected electrical load with the help of a relay module. Thus the
electrical load is switched ON/OFF and the user is provided with an appropriate
acknowledgement. Hence automation can be obtained remotely.
3.2. Sequence Diagram
The Sequence diagram describing the working of the system is given below and is
self-explanatory.
Fig.3.2. Sequence diagram
Organization Automation Using Android
Dept of C.S.E Page 34
Chapter 4
System Design
4.1. Dataflow Model
The Dataflow model of the system is given below:
A simplified working of the system is explained through the dataflow diagram. The only
data in the system is the signal and acknowledgements. After authentication, the user
enters the Android application. At this moment, the application retrieves the current IP of
the router at the organization through DNS server. After selecting a specific room, the
application generates a signal to receive the current state of the electrical loads in that
room and the same is reflected in the application. Then, the user toggles the state of any
load of that room shown in the application. This generates a signal which is transmitted
over the Internet using TCP to the specified router IP. The router receives the data and
forwards it to the system. The data is converted into serial data by the Ethernet-Serial
Fig.4.1.Dataflow Model
Organization Automation Using Android
Dept of C.S.E Page 35
converter (refer Appendix A). The controller reads the serial data and changes the state of
the corresponding load. After the action, the controller generates an acknowledgement
and the same is converted into TCP from serial and transmitted back to the user. This is
how the data in the system undergoes conversion and traverses from the user to the
system and vice versa.
4.2. Hardware Design
Power Supply Socket: This power supply socket which actually named as
AC/DC Socket provides the functionality to user to connect external power
supply from Transformer, Battery or Adapter via DC jack. User can provide
maximum of 15V AC/DC power supply through AC/DC socket. This is power
supply designed into maximum protection consideration so that it can even
prevent reverse polarity DC power supply as well as AC power Supply. It also
includes 7805 Voltage Regulator which provides regulated 5V DC for
Microcontroller and other I/O connectors.
Fig.4.2. AVR Development Board
Organization Automation Using Android
Dept of C.S.E Page 36
GND, VCC and VIN Connector: This board also provides user to have an extra
pins for Power supplies as shown in figure. These pins are GND (0V), VCC (5V
from Voltage Regulator) and VIN (Voltage supplied to AC/DC Socket minus
1.4V denoted as +12V on board). Four pins are provided for each type of supply.
User can connect these pins to external device by using Single Berg Wire.
On/Off Switch and Reset Switch: On/Off switch is type of Push on – push off
DPDT switch which is used for only make power supply on/off provided through
AC/DC Socket. Reset Switch is type of Push on DPST tactile switch which is
used as program reset.
10 pin Box Header Connector: Pin Headers with plastic guide box around them
are known as “Box Headers” or “Shrouded Headers” and are normally only used
in combination with a Flat Ribbon Cable (FRC) connector. A notch (key) in the
guide box normally prevents placing the connector the wrong way around. Box
Header can be connected using FRCs connections.
Fig.4.3. VCC, GNDand VIN connector
Fig.4.4. On/Off andReset switch
Fig4.5.Box Header Fig.4.6. Box header
Organization Automation Using Android
Dept of C.S.E Page 37
A, B, C and D Port Connector: 40 pin ATMega series microcontroller has four
I/O ports generally. These Four Port are expanded from Microcontroller IC
separately by using 10 pin Box Header for each port (A, B, C and D port). Among
10 pins 8 pins represents I/O pin of respective port and 9th & 10th pin represents
GND and VCC respectively. This is shown in figure.
LED Connector: Eight LEDs used for I/O testing are connected in common
cathode configuration. Other terminal (anode) of LED connected to the LED port.
This LED port can be directly connected to any of A, B, C or D port's Box Header
through Flat Ribbon Cable (FRC).
Fig4.7. Port A header
Fig.4.8. LED connector
Organization Automation Using Android
Dept of C.S.E Page 38
ISPConnector: ISP (In System Programming) port provides connection between
AVR Development Board and AVR Programmer Kit. It has following
configuration. It also used as a power supply from USB (Universal Serial Bus)
Cable. As this functionality provided by Microcontroller IC itself, thus pins are
directly connected to respective pins.
Fig.4.9. ISP Port
Organization Automation Using Android
Dept of C.S.E Page 39
4.3. Android application development design
The diagram for android application development given below explains all the stages of
application development stepwise.
Fig.4.10. Android Application Development Flow
Organization Automation Using Android
Dept of C.S.E Page 40
Chapter 5Implementation
5.1. AVR Programming:
The code follows:
#include<avr/io.h>#include<compat/deprecated.h>#include<avr/delay.h>#include<stdlib.h>#define BIT0 0b00000001;#define BIT1 0b00000010;
//Initialize USARTvoid USART_Init(){
/* Set baud rate */UBRRH = 0;UBRRL = 51;/* Enable receiver and transmitter */UCSRB|= (1<<RXEN)|(1<<TXEN);/* Set frame format: 8data---ucsz0=1,ucsz1=1, 1stop bit ---usbs=0*/UCSRC|= (1 << URSEL)|(3<<UCSZ0);
}
//Transmissionvoid USART_Transmit( unsigned char data ){
/* Wait for empty transmit buffer */while ( !( UCSRA & (1<<UDRE)) );/* Put data into buffer, sends the data */UDR = data;
}
Organization Automation Using Android
Dept of C.S.E Page 41
//Receptionunsigned char USART_Receive( void ){
while (!(UCSRA & (1 << RXC)) );// Do nothing until data have been received and is ready to be read from UDRreturn UDR;
}
void main(){
DDRA=255;USART_Init(51); //4800 buad rate
while(1){
unsigned char data = USART_Receive();
if(data=='a'){
PORTA|=BIT0; //PORT A turns ON the relayUSART_Transmit('a'); //ACK is sent
}if(data=='b'){
PORTA&=~BIT0; //PORT A turns OFF the relayUSART_Transmit('b'); //ACK is sent
}if(data=='c'){
PORTA|=BIT1; //PORT B turns ON the relayUSART_Transmit('c'); //ACK is sent
}if(data=='d'){
PORTA&=~BIT1; //PORT B turns OFF the relayUSART_Transmit('d'); //ACK is sent
}}
}
Organization Automation Using Android
Dept of C.S.E Page 42
5.2. Android Application:
The Android application contains 5 activities:
5.2.1. UsernameActivity.java
This is the activity screen we get when we start the application for the first time after
installation. It follows the following algorithm:
STEP-1: Accept username from the text field.
STEP-2: Store the username in SHARED PREFFERENCES.
STEP-3: Navigate to next screen
The code snippet is:
void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);setContentView(R.layout.activity_first);acceptUsernameBtn = (Button) findViewById(R.id.usernameBtn);usernameEt = (EditText) findViewById(R.id.usernameEt);
acceptUsernameBtn.setOnClickListener(this);SharedPreferences preferences =
PreferenceManager.getDefaultSharedPreferences(this);String username = preferences.getString("username", null);String password = preferences.getString("password", null);Log.e("user and password", "" + username + " " + password);if (username != null && password != null) {
Intent j = new Intent(FirstActivity.this, LoginActivity.class);startActivity(j);finish();
}}Public void onClick(View arg0){
if (arg0.getId() == R.id.usernameBtn){
saveUserNameToSharedPrefs();Toast.makeText(FirstActivity.this, "Username Saved Successfully",
Toast.LENGTH_SHORT).show();Intent i = new Intent(FirstActivity.this, PasswordActivity.class);startActivity(i);
}}
Organization Automation Using Android
Dept of C.S.E Page 43
5.2.2. PasswordActivity.java
This activity is generated after the UsernameActivity. Here we store the password given
as input by the user. The algorithm follows:
STEP-1: Accept password from the text field.
STEP-2: Store the password in SHARED PREFFERENCES.
STEP-3: Navigate to the next screen.
The code snippet is:void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);setContentView(R.layout.activity_first);acceptPasswordBtn = (Button)findViewById(R.id.usernameBtn);passwordEt = (EditText)findViewById(R.id.usernameEt);acceptPasswordBtn.setText("Get Password");passwordEt.setHint("Please enter password");acceptPasswordBtn.setOnClickListener(this);
}public void onClick(View arg0){
if(arg0.getId() == R.id.usernameBtn){
savePasswordToSharedPrefs();Toast.makeText(PasswordActivity.this, "Password Saved Successfully",
Toast.LENGTH_SHORT).show();Intent j = new Intent(PasswordActivity.this, LoginActivity.class);startActivity(j);
}}private void savePasswordToSharedPrefs(){
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();Log.e("password in passwordactivity", passwordEt.getText().toString());editor.putString("password", passwordEt.getText().toString());editor.commit();
}
Organization Automation Using Android
Dept of C.S.E Page 44
5.2.3. LoginActivity.java
This activity is the start screen for after-installation run. It authenticates the user by the
earlier stored username and password. The algorithm is:
STEP-1: Check if the username and password is not NULL in SHARED
PREFFERENCES.
STEP-2: If username and password are not stored in SHARED PREFFERENCES start
the UsernameActivity.java.
STEP-3: Else take input for username and password.
STEP-4: Verify the data fields with the data stored in SHARED PREFFERENCES.
The code snippet is:
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);username = (EditText) findViewById(R.id.username);password = (EditText) findViewById(R.id.password);login = (Button) findViewById(R.id.login);login.setOnClickListener(this);SharedPreferences preferences =
PreferenceManager.getDefaultSharedPreferences(this);usernameStored = preferences.getString("username", null);passwordStored = preferences.getString("password", null);Log.e("user and password in login activity", "" + usernameStored + " "
+ passwordStored);}
public void onClick(View arg0){
if (arg0.getId() == R.id.login){
if (username.getText().toString().equals(usernameStored)&& password.getText().toString().equals(passwordStored))
{
Toast.makeText(getApplicationContext(),"Login Successfully !!!",
Toast.LENGTH_LONG).show();Intent intent = new Intent(LoginActivity.this,
Organization Automation Using Android
Dept of C.S.E Page 45
ConnectActivity.class);startActivity(intent);
}
elseToast.makeText(getApplicationContext(),
"Login Not Successful !!!",Toast.LENGTH_LONG).show();
}}
}
5.2.4. MainActivity.java
This activity is the Main Activity i.e. it is the home activity of the application. Here the
user is provided buttons to choose the room to switch the state of an electrical load in the
room.
The algorithm is:
STEP-1: Provide the interface consisting of buttons.
STEP-2: Navigate to the respective room activity that the user has choosen.
The code snippet is:
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
}
public void navigate1(View view){
Intent intent = new Intent(this, Navigate1Activity.class);startActivity(intent);
}
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.main, menu);return true;
}
Organization Automation Using Android
Dept of C.S.E Page 46
5.2.5. Navigate1Activity.java
This activity provides an interface containing switches that resemble the actual loads in
the room. Its function is to record current statues, sends signals and waits for
acknowledgements.
The algorithm is:
STEP-1: Update the current statues of the loads in the room.
STEP-2: Create a socket and send the signal to turn on/off any load when selected by the
user.
STEP-3: Wait for the acknowledgement and then reflect the change in the application.
The code snippet is:
void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);setContentView(R.layout.activity_navigate1);
swit1 = (Switch)findViewById(R.id.switch1);swit2 = (Switch)findViewById(R.id.switch2);swit3 = (Switch)findViewById(R.id.switch3);
swit1.setOnClickListener(this);swit2.setOnClickListener(this);swit3.setOnClickListener(this);
}
public void onClick(final View v){
Thread t = new Thread (new Runnable(){public void run(){
try{
InetAddress serverAddr =InetAddress.getByName("192.168.0.10");client = new Socket(serverAddr,100);printwriter = new PrintWriter(new BufferedWriter(new
OutputStreamWriter(client.getOutputStream())), true);printwriter.println(msg1);
Organization Automation Using Android
Dept of C.S.E Page 47
switch(v.getId()){
case R.id.switch1:printwriter.println(msg1);break;
case R.id.switch2:printwriter.println(msg2);break;
case R.id.switch3:printwriter.println(msg3);break;
}
printwriter.close();client.close();}catch (UnknownHostException e){
Toast.makeText(getApplicationContext(), "Host Exception",Toast.LENGTH_LONG).show();
}catch (IOException e){
Toast.makeText(getApplicationContext(), "IO Exception",Toast.LENGTH_LONG).show();
}}
}
Organization Automation Using Android
Dept of C.S.E Page 48
Chapter 6
Results
6.1 Snapshots of the Android application:
When the application is installed for the first time, the activity to accept username
appears.
Fig.6.1. Username Activity
Organization Automation Using Android
Dept of C.S.E Page 49
The activity to accept password in its first run follows.
Fig.6.2. Password Activity
Organization Automation Using Android
Dept of C.S.E Page 50
If the username and password is stored in its first run, the application begins with login
activity.
Fig.6.3. Password Saved Toast
Organization Automation Using Android
Dept of C.S.E Page 51
The application matches the username and password entered by the user with the one
stored in shared preferences during the first run.
Fig.6.4. Login activity
Organization Automation Using Android
Dept of C.S.E Page 52
If the entered username and password doesn’t match it stays in the same activity and
displays “Login not successful”.
Fig.6.5. Login Activity – unsuccessful login
Organization Automation Using Android
Dept of C.S.E Page 53
After valid login the application enters its main activity which is the home page. The user
selects desired room here.
Fig.6.6. Main Activity
Organization Automation Using Android
Dept of C.S.E Page 54
The application navigates into selected room.
Fig.6.7. Navigate Activity
Organization Automation Using Android
Dept of C.S.E Page 55
The application checks for connectivity prior to enable the user to switch the state of the
load. Also it retrieves the current state of the load.
Fig.6.8. Navigate activity - Connecting
Organization Automation Using Android
Dept of C.S.E Page 56
After the connectivity check, the user can switch the state of any load in the room.
Fig.6.9. Navigate Activity – Switch On/Off
Organization Automation Using Android
Dept of C.S.E Page 57
6.2. Snapshot of the embedded system:
The complete embedded system connected to a router.
Fig.6.10. Embedded System with Router
Organization Automation Using Android
Dept of C.S.E Page 58
Chapter 7
Conclusion and Future Improvements
It was interesting experience to work on the latest technology like Android and merge its
application to an automation embedded system. This establishes a new prototype and a
benchmark of one of a kind application.
We are happy to say that our project i.e. “Organization Automation using Android” is
successfully completed. The working of the established system is flawless and as desired.
All the four modules discussed earlier were developed with great care using trusted third
party facilities like DNS and technical support like JAVA programming.
The application reserves user’s identity to avoid unauthorized access and efficient
acknowledgement transmission over internet secures proper implementation of user
inputs. To sum up, the established prototype provides application programmed switches
in an organization. The main functionality of the system to automate an organization
remotely is tested and perfectly working.
This project can be extended to work on iOS and Windows-OS Smartphones in the
future. Some of the other future enhancements can be:
Adding the facility of scheduled switching using functions of Android or by
adding timer circuits.
Heavy loads like Air Conditioner can also be handled through application.
Automation can be extended as per the user’s need
More secured system by continuously ping to the router for the system status.
Integrating sensors like light sensors and water-leak sensors.
Integrating CCTV surveillance.
Organization Automation Using Android
Dept of C.S.E Page 59
APPENDIX A
DATA SHEET FOR ETHERNET TO SERIAL CONVERTER
MODEL SC10TK
Organization Automation Using Android
Dept of C.S.E Page 60
Bibliography
[1] Donn Felker, Android Application Development for Dummies, Paperback, 1st
Edition December 2010, ISBN: 978-0-470-77018-4.
[2] Steven Steven Frank Barrett, Daniel J. Pack, Atmel AVR microcontroller
primer: programming and interfacing, Morgan & Claypool Publishers, 2008.
[3] R.Piyare, M.Tazil, “ Bluetooth Based Home Automation System Using Cell
Phone,” 2011 IEEE 15th International Symposium on Consumer Electronics.
[4] Muhammad Izhar Ramli, Mohd Helmy Abd Wahab, Nabihah, “TOWARDS
SMART HOME: CONTROL ELECTRICAL DEVICES ONLINE,” Nornabihah
Ahmad International Conference on Science and Technology: Application in
Industry and Education (2006)
[5] http://developer.android.com/training/index.html
[6] http://developer.android.com/guide/components/index.html
[7] Elliot Rusty Harold, Java Network Programming, O'Reilly Media, Inc., 09-Feb-
2009.
[8] http://www.tutorialspoint.com/java/java_networking.html
[9] http://www.howtogeek.com/66214/how-to-forward-ports-on-your-router
[10] http://www.atmel.com/Images/doc2466.pdf