You are on page 1of 48

MOI UNIVERSITY

SCHOOL OF INFORMATION SCIENCES


(Department of Information Technology)

DEVELOPMENT OF SIMPLE MOTION SENSING COMPONENT

Supervisor, Submitted by,


Dr. Austin Owino Ochieng, Francis Omondi
(Bsc. Msc. PhD) IS/50/12

Monday, 16th May 2016

This research project is submitted in partial fulfilment of the requirements for the award of
the degree of Bachelor of Science in Information Sciences of Moi University
i

DECLARATION OF ORIGINALITY

This project, as presented in this report, is my original work and has not been presented for
any other University award. Any works of other authors used in it are well acknowledged at
the point of their use. No part of this thesis may be reproduced without the prior written
permission of the author and/or Moi University.

Signature Date

Ochieng, Francis Omondi ………….. ………….

Declaration by Supervisor
This thesis has been submitted for examination with my approval as University Supervisor.

Dr. Owino …………. ……………

Moi University, Eldoret


ii

DEDICATION

I dedicate this project to my family. I thank you all for walking with me to this far. Your
innovative ideas and realistic relevant challenges you posed to me at all times made me think
far in regard to my education. Your financial and spiritual support is highly appreciated
throughout this period. May the Almighty bless you.
iii

ABSTRACT

The detection of motion has its roots in astronomy. The necessity to have devices that can
work on their own with minimal human control and at the same time can be controlled
remotely inspired the development of a simple motion detector component. This component
employs infrared technology for motion sensing. This project involves the implementation of
software and hardware. For the hardware part, PIR sensor, Piezzo buzzer and a laptop are
connected to each other by an ATMega328 on Arduino UNO microcontroller which acts as
the central processing unit of the whole component. PIR sensor aids in detecting presence of
someone, Piezzo buzzer is used as an alarm unit that beeps when someone is detected. The
laptop is used to program the Arduino UNO but when the component is working as
programmed, it is used to power the microcontroller and also as the status indicator module.
For the software part, C programming language was used to program the microcontroller
through the Arduino software. When motion is detected, the Piezzo buzzer beeps, the LED
pin on the microcontroller lights and “MOTION DETECTED” message is printed on the
laptop screen. The working of the piezzo buzzer and the LED is concurrent for five seconds
and the message is printed once during the same time interval. When no motion is detected
the devices remain mum as programmed. Communication between the Arduino UNO and
other devices is through voltage signals which are carriers of information. The motion
detector component that has been developed is very flexible and easy to use by users, who
can as well customize and improve it further to satisfy their varying needs.

Keywords

Infrared, ATMega328, C, Arduino UNO, PIR sensor, Piezzo Buzzer


iv

TABLE OF CONTENTS

DECLARATION OF ORIGINALITY i

DEDICATION ii

ABSTRACT iii

TABLE OF CONTENTS iv

LIST OF ABBREVIATIONS AND ACRONYMS vii

LIST OF TABLES viii

LIST OF FIGURES IX

ACKNOWLEDGEMENT X

CHAPTER ONE: INTRODUCTION 1

1.1 Background 1
1.2 Problem Statement 2
1.3 Aim of the Project 2
1.4 Objectives 2
1.5 Research Questions 2
1.6 Significance and Justification of the Study 2
1.7 The Proposed Solution 3

CHAPTER TWO: LITERATURE REVIEW 4

2.1 Introduction 4
2.2 Embedded Systems 4
2.2.1 Embedded Systems versus General Purpose Systems 4
2.2.2 Design Issues in Embedded Systems 5
2.2.3 Development Tool in Embedded Systems 6
2.2.4 Trends in Embedded Systems 6
2.2.4.1 Application Specific Integrated Circuits (ASIC) 6
2.2.4.2 Systems on a Chip (SOC) 7
2.2.5 Challenges with Embedded Systems Design 7
2.3 Motion Sensors 7
2.3.1 Types of Motion Sensors 8
2.3.1.1 Passive Infrared Type of sensors 8
2.3.1.2 Area Reflective Type of Sensors 9
2.4 Arduino UNO Microcontroller 9
2.4.1 Technical Specifications 10
2.4.2 Programming 10
2.4.3 Difference with other boards 10
2.4.4 Power 11
v

2.4.5 Memory 11
2.4.6 Input and Output 12
2.4.7 Communication 13
2.5 Embedded Development Cycle 13

CHAPTER THREE: METHODOLOGY 16


3.0 Introduction 16
3.1 Project Planning 16
3.2 Project Block Diagram 18
3.3 Project Description 18
3.4 The Sensor Module 19
3.5 The Motion Detector System 19
3.6 Software Development 20
3.7 Programming Tools 21
3.7.1 Connecting PIR Sensor to Arduino UNO 25
3.7.2 Connecting Piezzo Buzzer to Arduino UNO 25

CHAPTER FOUR: RESULTS AND DISCUSSION 26


4.1 Introduction 26
4.2 Testing Development 26
4.2.1 Testing the Sensor Module 28
4.2.2 Testing the Alarm Module 28
4.2.3 Testing the Status Indicator Module 29
4.3 Discussion 30
4.4 Project justification of Results 31

CHAPTER FIVE: CONCLUSION ND RECOMMENDATIONS 32


5.1 Conclusion 32
5.2 Obstacles Encountered in the Project 32
5.3 Recommendations for the Project 33

REFERENCES 34
BIBLIOGRAPHY 35
APPENDICES 36
vi

LIST OF ABBREVIATIONS AND ACRONYMS

EDA Electronic Design Automation

ASIC Application Specific Integrated Circuits

SOC Systems on a Chip

PWM Pulse Width Modulation

EEPROM Electrically Erasable Programmable Read Only Memory

ADC Analog-Digital converter

SRAM Static Random Access Memory

GND Ground

ROM Read Only Memory

RAM Random Access Memory


vii

LIST OF TABLES

Table 2.4.2: Technical specifications for Arduino UNO


viii

LIST OF FIGURES

Figure 2.3.1.1.1: Graphical description of passive infrared type of sensors


Figure 2.3.1.2.1: Graphical description of area reflective type of sensors
Figure 2.4.1: Arduino UNO Rev3 microcontroller
Figure 3.1.1: Project planning flowchart
Figure 3.2.1: Block Diagram for Motion Detector
System Figure 3.4.1: PIR Sensor
Figure 3.6.1 Flowchart for the motion detector system
Figure 3.7.1: Loading of Arduino Software
Figure 3.7.2 Configuration for connecting Arduino UNO microcontroller with a
computer
Figure 3.7.3: Selecting the Arduino UNO Board
Figure 3.7.4: Selecting COM29 port
Figure 3.7.5: Programming Motion Detector system using Arduino Software
Figure 3.7.6: Uploading the Source Code to the Arduino
Figure 3.7.7: PIR Sensor and Piezzo Buzzer connected to the Arduino UNO
Figure 3.7.2.1: Piezzo Buzzer
Figure 4.1.1: The Motion Detector System
Figure 4.2.1 Project testing flowchart
Figure 4.2.1.2: Testing the PIR Sensor
Figure 4.2.2.2: Testing the Piezzo Buzzer
Figure 4.2.3.2: Motion detector system and serial monitor
ix

ACKNOWLEDGEMENT

Hereby, I render my sincere gratitude to all who contributed towards the successful
completion of this project.

First, I thank the Almighty God for his divine mercy, graces, gift of life, strength and wisdom
that enabled me come up with this project.

To my academic supervisor, thanks for believing in this project from the start and also
believing in me in pursuit for the development of the component above.

I cannot forget to thank Mr. Titus Koech, a fifth year BEng. Electronics and Communications
Engineering student for his immense support in understanding circuits and aid in acquisition
of devices used in the project.

To my classmates and friends, thank you for your expert advice and constructive criticism.
1

CHAPTER 1: INTRODUCTION

1.1 Background

The detection of motion finds its roots in astronomy, which goes back thousands of years
ago. Early farmers looked to the heavens and used the movement of stars to determine when
to plant crops and when to harvest them.

The first motion detection system; radar, was pioneered by Heinrich Hertz. Hertz studied the
properties of waves and found that waves could bounce off of objects and had different
speeds. This revelation was a breakthrough and as Furnish (2007) cites, the increased demand
for detection and monitoring during World War II generated technological advances in
motion sensing. And in 1940s, radar technology was sufficiently advanced that the military
could detect attacks in advance and guide aircraft, Huebsch (2014).

Although the development of radar systems was a great achievement, its applications were
limited to military use, then. One of the first applications of motion sensing outside the
military was developed by Samuel Bagno in the mid-1940s. Using his knowledge of radar
and newly developed electrical components, Bagno began doing research on an ultrasonic
alarm, which worked similarly to radar. His ultrasonic alarm created "a web of ultrasonic
waves inside a room" and detected the motion of a person, Cerruti (1995).

The invention of the ultrasonic alarm generated a demand for other non-military applications
of this technology, especially infrared technology. Although infrared detection had been
invented in the mid-1800s, its applications were limited to astronomy then, Cerruti (1995),
but over time, its scope of application has grew tremendously.

Passive Infrared, commonly known as PIR is the technology of motion detectors that is used
to detect people by sensing the thermal infrared radiation emitted by the human body. PIR
motion detectors always use thermal sensors, detecting the small temperature increase when
the sensor element is exposed to radiation and absorbs it.
2

1.2 Problem Statement

Automation is a field that incorporates computer science and electronics heavily. The
growing need to have systems that can be controlled remotely and can be attached to almost
every appliance and furniture has seen the development of new age of computing referred to
as Internet of Things (I0T). People today need systems that can work independently and send
feedback (results of processing; output) to them and can as well monitor various processes in
their homes, offices etc. It is this need that inspires the development of a simple motion
detection unit that its use can be customized to domestic usage for unique needs.

1.3 Aim of the project


This project aims to develop a simple motion detector component that will in turn relay
feedback immediately after motion is detected.
1.4 Objectives of the Project

The following are the project objectives:

a) To develop a system that utilizes infrared technology for motion detection


b) To design the motion sensing component
c) To program ATmega328 on Arduino Uno Rev3 Board microcontroller as the
central processing unit of the component.
1.5 Research Questions

The study shall be guided by the following research questions

a) How does motion sensors work?


b) How can one make several devices work simultaneously?
c) Is motion sensing an effective way in security, tallying and remote distance processing

1.6 Significance and justification of the study

Over time, there have been a growing need to have systems that can work independently and
can be controlled remotely. Internet has contributed to this because of its ever decreasing cost
on connection. Leased line connections such as fibre optic connections, as well as the ADSL
(Asymmetric Digital Subscriber Line) connections tend to replace PSTN (Public Switched
Telephone Network) and ISDN (Integrated Services Digital Network) connections for
everyday use.
3

Previous studies have shown challenges in implementing intelligent embedded systems with
human rights groups always on the watch out demanding for health implication of radiations
that such devices emit when in operation.

The motion sensor component being developed in this project will instead tap infrared
radiations instead of generating them to detect motion.

1.7 The proposed solution

The setup shall be able to detect movement of animals and inanimate objects then react by
printing a message on a serial screen of a computer, switch on the buzzer and LED light
already grounded on the Arduino Uno microcontroller.
4

CHAPTER 2: LITERATURE REVIEW

2.1 Introduction

This chapter offers a brief background into the areas that are related to the research
performed in this report as well as the areas that support the reasons for performing this
research.

The first section takes a look at embedded systems, the issues and tools involved in their
design, current trends and the challenges in embedded systems design.

The second section examines motion sensors and the Arduino UNO microcontroller.

Section third which is also the final section of this chapter discusses embedded development
cycle.

Simply put, the proposed outcome of this chapter is a clearer understanding of the important
variables of research as they relate to motion detection.

2.2 Embedded Systems


Embedded systems have become a buzz word in the last five years. However, embedded
systems and processors have been around for much longer than that, Stepner (1999). One
only needs to look around to see embedded systems everywhere: cell phones, alarm clocks,
personal data assistants (PDAs), automobile subsystems such as ABS and cruise control, etc.

2.2.1 Embedded Systems versus General Purpose Systems


An embedded system is usually classified as a system that has a set of predefined, specific
functions to be performed and in which the resources are constrained. Each embedded design
satisfies its own set of functions and constraints.

This is different from general purpose systems, such as the computer that sits on a desk in an
office. The processor running that computer is termed a “general purpose” processor because
it was “designed to perform many different tasks well,” Collins (2000) as opposed to an
embedded system that has been built to perform a few specific tasks either very well or
within very strict parameters.
5

2.2.2: Design Issues in Embedded Systems


As mentioned above, embedded systems are defined by their functions and their constraints.
These constraints are almost as varied as the number of embedded systems themselves, but a
few of the more prevalent ones are response time accuracy, size, power consumption, and
cost, Stepner (1999). All of these poses difficult decisions which an embedded system
designer must make.

Response time is a critical factor in many embedded systems; whether it is a specific time
that an embedded system tasks needs to be run or the time between tasks that is important.
The most difficult task for an embedded system designer to do is to quantify time deadlines,
decide whether these deadlines are firm, and recognize what the consequences are if these
deadlines are not met, Collins (2000).

Size is also an important decision in many embedded systems. Many embedded systems
designed today are bought and sold simply because they are smaller than the last
implementation of that product. A living example is mobile phones.

Another design issue concerning today’s embedded system designers is power consumption.
Many of embedded systems are usually very small that are handheld devices that are made to
be mobile hence; they must have a battery. Since the designer does not want the user to be
forced to plug in or recharge the device every five minutes, the designer must make important
choices in his design decisions and balance a feature’s merits against the power that the
feature will consume, Collins (2000).

A final consideration that embedded designers need to deal with is cost. Regardless of any
choice of the above issues made, an embedded product is not going to sell if its cost is
exorbitant. Most end users will sacrifice a small amount of performance, or a slightly less
amount of battery time, for an embedded product that is less costly than all of its competitors.
This demands that the designer must consider the cost of adding a particular modification to
the design and whether or not the end user will be willing to pay that additional cost for that
additional feature, Collins (2000).
6

2.2.3: Development Tools in Embedded Systems


Embedded development tools have traditionally been behind the tools for the development of
general systems as stated by Stepner (1999). Distinct to general systems, the design space for
embedded systems is extremely large making it a challenge to contain all the facilities
required to specify, design, and test embedded systems.

However, there is hope in embedded systems development because they have garnered more
interest in the research community as well as their increased need. Microprocessor companies
are now delving into this interesting field. Intel, a leading processor manufacturer has a keen
eye in embedded systems that has seen it manufacture varied microcontrollers and sponsoring
research towards the realisation of Internet of Things (IoT).

This is a motivation to embedded designers because embedded systems tools are now
catching up with regular system design tools, and they have become more readily available
and diverse in their area of coverage, Stepner (1999).

Stepner (1999) opens further by stating that tools that were not available five to ten years ago
are now available as part of “common EDA development suites”. Also, there are tools that
are now available for the development of embedded system application software as well as
the development of real-time operating systems in normal computer programming languages
with C Language taking the lead.

2.2.4 Trends in Embedded System


With the increasing interest and research, embedded systems are experiencing a plethora of
new design trends. Five years from today, embedded systems of that time won’t bear much
resemblance to the systems of today other than their basic functionalities, which may even be
replaced in prospective times.

Two of the trends currently hot in the world of embedded systems that are discussed here are
that of application specific integrated circuits (ASICs) and systems on a chip (SOC).

2.2.4.1 Application Specific Integrated Circuits


Smith (1997) suggests that the best way to define an application specific integrated
circuit (ASIC) is by saying what it is not: “an integrated circuit designed for multiple
7

uses. Like the title suggests, this is an IC that has been designed for a specific
application”.

Examples of ICs that are not ASICs are standard computer parts such as RAM, ROM,
multiprocessors, etc. Examples of ICs that are ASICs are a chip designed for a toy
robot or a chip designed to examine sun spots from a satellite, Smith (1997).

2.2.4.2 System on a Chip


System on a chip (SOC) is exactly what it sounds like i.e. “hardware designers have
taken the normally separate pieces of a complete system; the CPU, memory
controller, main memory, I/O control, and the various buses and interconnects, and
placed many or all of them on a single piece of silicon” Collins (2000). This explains
why there is reduction in size, power, cost and drop time delay.

2.2.5 Challenges with Embedded System Design


One of the problems with embedded systems, and more specifically ASICs and SOCs, is that
it is no longer possible to obtain debug information that was readily available in systems with
discrete components. Those signals that are contained only in the silicon, such as information
across the memory bus, never leave the silicon. The only way to debug them is to either
probe the silicon itself, or to add additional logic to the chip that brings the signal off the
chip, and even that option is limited by the number of physical pins that can be put on a chip
and spared for simple debug and evaluation purposes. Also, with the speeds that some of
today’s embedded processors are running, it becomes difficult to find a logic analyser that
can keep up with the processors, not to mention costing tens to hundreds of thousands of
dollars, Gwennap (1998) and Kozyrakis (1997). If there were another method to test these
systems, both valuable time and money could be saved.

2.3 Motion sensors

A motion sensor is an infrared human detection sensor, which, as opposed to factory


automation sensors that are used with factory equipment, is designed to be incorporated into
various devices that exist around us in daily life.
8

Motion sensing systems involve processing of analog data to digital data for an efficient
relevant mechanical output. Therefore, they belong to a certain category of information
systems.

2.3.1 Types of motion sensors


Motion sensors are divided into two parts
i) Passive infrared type
ii) Area reflective type sensors.
2.3.1.1 Passive infrared type
Designed to cover a wide area, this sensor detects human presence. The sensor, rather
than emitting light such as from LEDs, detects the amount of change in infrared rays
that occurs when a person (object), whose temperature is different from the
surroundings, moves.

Figure 2.3.1.1.1 Graphical description of passive


infrared type of sensors. (Source: Google Images)

All objects on the earth emit light in accordance with their temperature and
surface characteristics. Naturally, light (infrared radiation) is also emitted from
our bodies. (This radiation is emitted from the body surface, and is centred on
a wave-length of 10μm.) When a person enters the detection area of the
sensor, the amount of infrared radiation incident on the sensor varies by the
amount corresponding to the difference in temperature between the body
surface and background. These sensors detect the human body by detecting the
change in incident infrared radiation. That is, the sensor is actuated by the
difference in
9

temperature between human body (which is a heat source) and floor, walls and
other objects forming the background. The same also applies to inanimate
objects such as rolling ball. This is because, when those objects move, friction
acts on them thus generating heat. This heat emits infrared radiation which the
passive infrared type can detect.
2.3.1.2 Area reflective type of sensors
These sensors detect the human body via the area reflection system.

Figure 2.3.1.2.1 Graphical description of area reflective type of sensors.


(Source: Google Images)
The sensor sends out a ray of light toward the human body from an LED then
uses the reflected light to measure the distance and determine whether the
person is within a given distance of the sensor. If the sensor decides that there
is a person within the given distance, it sets an output non-contact switch to
ON.

2.4 Arduino Uno Microcontroller

Figure 2.4.1: Arduino UNO Rev3 microcontroller (Source: www.ardino.cc)


1

The Arduino UNO is the best board to get started with electronics and coding.
It has 14 digital input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs,
a 16 MHz quartz crystal, a USB connection, a power jack, an ICSP header and a reset button.
It contains everything needed to support the microcontroller i.e. it can simply be connected to
a computer with a USB cable or powered with an AC-to-DC adapter or battery to get started.
As found in Arduino forum, Arduino UNO microcontroller has the following specifications:
2.4.1 Technical Specifications

Table 2.4.1 Technical specifications for Arduino UNO


Source: Arduino Forum (www.arduino.cc)
2.4.2 Programming
The Uno can be programmed with the Arduino software. The ATmega328 on the Uno comes
pre-programmed with a boot-loader that allows one to upload a new code to it without the use
of an external hardware programmer.

The Uno has a resettable poly-fuse that protects the user’s computer's USB ports from shorts
and overcurrent.
Although most computers provide their own internal protection, the fuse provides an extra
layer of protection. If more than 500 mA is applied to the USB port, the fuse will
automatically break the connection until the short or overload is removed.

2.4.3 Differences with other boards


The UNO differs from all preceding boards in that it does not use the FTDI USB-to-serial
driver chip. Instead, it features the Atmega16U2 (Atmega8U2 up to version R2) programmed
as a USB-to-serial converter.
1

2.4.4 Power
The Uno board can be powered via the USB connection or with an external power supply.
The power source is selected automatically.

External (non-USB) power can come either from an AC-to-DC adapter (wall-wart) or battery.
The adapter can be connected by plugging a 2.1mm centre-positive plug into the board's
power jack. Leads from a battery can be inserted in the GND and Vin pin headers of the
POWER connector.

The board can operate on an external supply from 6 to 20 volts. If supplied with less than 7V,
however, the 5V pin may supply less than five volts and the board may become unstable. If
using more than 12V, the voltage regulator may overheat and damage the board. The
recommended range is 7 to 12 volts.

The power pins are as follows:

 Vin: The input voltage to the Uno board when it's using an external power
source (as opposed to 5 volts from the USB connection or other regulated
power source). You can supply voltage through this pin, or, if supplying
voltage via the power jack, access it through this pin.
 5V: This pin outputs a regulated 5V from the regulator on the board. The
board can be supplied with power either from the DC power jack (7 - 12V),
the USB connector (5V), or the VIN pin of the board (7-12V). Supplying
voltage via the 5V or 3.3V pins bypasses the regulator, and can damage your
board. We don't advise it.
 3V3: A 3.3 volt supply generated by the on-board regulator. Maximum current
draw is 50 mA.
 GND: Ground pins.
 IOREF: This pin on the Uno board provides the voltage reference with which
the microcontroller operates. A properly configured shield can read the IOREF
pin voltage and select the appropriate power source or enable voltage
translators on the outputs to work with the 5V or 3.3V.

2.4.5 Memory
The ATmega328 has 32 KB (with 0.5 KB occupied by the boot-loader. It also has 2 KB of
SRAM and 1 KB of EEPROM.
1

2.4.6 Input and Output

Each of the 14 digital pins on the Arduino Uno can be used as an input or output, using:
pinmode(), digitalwrite(), and digitalread() functions.

They operate at 5V. Each pin can provide or receive 20mA as recommended operating
condition and has an internal pull-up resistor (disconnected by default) of 20-50k ohm.

A maximum of 40mA is the best value that must not be exceeded on any I/O pin to avoid
permanent damage to the microcontroller.

In addition, some pins have specialized functions:

 Serial: Pins 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL
serial data. These pins are connected to the corresponding pins of the
ATmega8U2 USB-to-TTL Serial chip.
 External Interrupts: Pins 2 and 3. These pins can be configured to trigger an
interrupt on a low value, a rising or falling edge, or a change in value.
 PWM: Pins 3, 5, 6, 9, 10, and 11. They provide 8-bit PWM output with the
analogWrite() function.
 SPI: Pins 10, 11, 12 and 13. These pins support SPI communication using the
SPI library.
 LED: Pin 13. There is a built-in LED driven by digital pin 13. When the pin is
HIGH value, the LED is on, when the pin is LOW, it's off.
 TWI: Pins A4 or SDA pin and A5 or SCL pin. Support TWI communication
using the Wire library.

The Arduino UNO has 6 analog inputs, labelled A0 through A5, each of which provide 10
bits of resolution (i.e. 1024 different values). By default they measure from ground to 5 volts,
though it is possible to change the upper end of their range using the AREF pin and the
analogReference() function.

Other pins on the board include:


 AREF Reference voltage for the analog inputs. Used with analogReference().
 Reset. Bring this line LOW to reset the microcontroller. Typically used to add a reset
button to shields which block the one on the board.
1

2.4.7 Communication

Arduino UNO has a number of facilities for communicating with a computer, another Uno
board, or other microcontrollers.

The ATmega328 provides serial communication, which is available on digital pins 0 (RX)
and 1 (TX). An ATmega16U2 on the board channels this serial communication over USB
and appears as a virtual com port to software on the computer.

The 16U2 firmware uses the standard USB COM drivers thus reducing the need for an
external driver.

The Arduino Software (IDE) includes a serial monitor which allows simple textual data to be
sent to and from the board. The RX and TX LEDs on the board will flash when data is being
transmitted via the USB-to-serial chip and USB connection to the computer. However, this
may not happen (serial communication) for on pins 0 and 1.

2.5 Embedded Development Cycle

According to Byte Craft Ltd, which is a software development company specializing in


embedded systems software development tools for single-chip microcomputers, the
development process for embedded software follows a seven stage cycle which are:
1. Problem specification
2. Tool/chip selection
3. Software plan
4. Device plan
5. Code/debug
6. Test
7. Integrate

Problem Specification
It is a statement of the problem that your program will solve without considering any possible
solutions. Its main objective is explaining in detail what the program will do.
Once the specification of the problem is complete, the developer must examine the system as
a whole. It is at this point that the developer considers specific needs such as those of
interrupt driven or timing-critical systems.
1

Tool/Chip Selection
At this stage, informed on the need, a chip is selected based on memory size, speed, special
feature availability. Issues such as cost and availability are also investigated at this stage.
Availability of tools impacts the decision to develop with a certain microcontroller. It is
essential to determine if the development decisions a developer makes are possible with the
device he or she is considering. For example, if one wishes to use C language, it is fruitful to
select a device that has a C language compiler. It is also useful to investigate the availability
of emulators, simulators and debuggers.

Software Plan
The first step in the software plan is to select an algorithm which solves the problem specified
in the problem specification stage. It is advisable to consider and compare in terms of code
side, speed, difficulty, and ease of maintenance different algorithms.
Once a basic algorithm is chosen the overall problem should be broken down into smaller
problems which are then solved by different devices (modular programming).

Device Plan
At this stage, the routines for hardware specific features are planned. These routines include:
1) Set up the reset vector
2) Set up the interrupt vectors
3) Watch the stack (hardware or software)
4) Interact with peripherals such as timers, serial ports, and analog-digital converters (ADC).
5) Work with I/O ports

Code/Debug
The modules from the software plan stage are coded in the project language. The coded
modules are compiled or assembled and all syntactic error are repaired.

Testing
Each module should be tested to ensure that it is functioning properly. Testing is done using
simulators and/or emulators. It is also important to test the hardware to be used. This is easily
done by writing small programs which test the devices.
1

Integrate
This is the last stage of embedded development cycle. At this stage, the modules are
combined to create a functioning program. At this point, it is important to test routines which
are designed to respond to specific conditions. These routines include interrupt service and
watchdog support routines. The entire program is thoroughly tested.
1

CHAPTER 3: METHODOLOGY

3.0 Introduction

This chapter consists of project planning, project block diagrams and project description. In
this chapter also, all the methods that were used to implement the project is described.

3.1 Project Planning


The progress and development of the project consists of four main parts. The first part
focuses on detailed literature review regarding the sensor system used in this project,
ATmega328 microcontroller and anything related to motion detection.

The next part focuses on hardware, software and the component and equipment that will be
used in this project.

And the third part of this chapter dwells on the programming that will be used for co-
ordinated functions of the piezzo buzzer, LED and the serial monitor with the Arduino Uno
(ATmega328 microcontroller).

The last part is on modelling for prototyping and test the system to get the result and fix it if it
the results not just like we want.
1
Literature Review for devices used in the project
Develop source code on Arduino for the sensor system, alarm system

Development of the
prototype

Finding information on PIR sensor, piezzo buzzer and Arduino UNO microcontroller

Modelling
tudy on hardware used (equipments and component)

System Testing
Study C language to write a program

Figure 3.1.1: Project planning flowchart


1

3.2 Project Block Diagram

Figure 3.2.1: Block Diagram for Motion Detector System

3.3 Project Description

This is an endeavour to develop a motion detector component that will be core to further
enhancements for relevance applicability by any user.

PIR Sensor, piezzo buzzer and a computer by use of connectors and a USB cable respectively
will be connected to the Arduino UNO microcontroller.

Piezzo buzzer and the serial monitor will be the output devices for the motion detector as the
Arduino Uno board becomes the central processing module. PIR sensor is the input
component. The serial monitor becomes the status indicator module.
1

Hardware implementation in this project consists of PIR Sensor, piezzo Buzzer, Arduino
UNO microcontroller and a computer. The Atmega328 acts like the interface between the
PIR sensor and the piezzo buzzer, computer and the LED on pin 13 of the Arduino UNO
microcontroller because it is the central processing unit that controls the flow of operation
between the input and output modules.

For the software implementation of this project, Arduino software version 1.5.6-r2 has been
used as programming editor to develop a command to the microcontroller to control the
piezzo buzzer, the LED on the microcontroller and the expected message on the serial
monitor. Arduino software allows a user to program the microcontroller by using the C
language.

3.4 The sensor module

The sensor module developed in this project is aimed at extending the ability of the overall
motion detector system by detecting abnormal activities happening within the environment of
the module.

PIR sensor has been picked to implement this project. This is because it allows one to sense
motion, by detecting whether a human has moved in or out of the sensors range. They are
small, inexpensive, low-power, easy to use and don't wear out.

Figure 3.4.1: PIR Sensor (Source: Google Images)

This sensor has a sensitivity range of up to 20feet (6 metres) and a 110°X70° detection range
making it a wide lens detection sensor. This means it can measure 110° vertically (from top)
and 70° horizontally (from left to right). However, the PIR sensor can’t count how many
people are around it or how close they are to the sensor because the lens is often fixed to a
certain sweep.

3.5 The Motion Detector System

The motion sensing system consists of all modules that have been developed; the sensor
system, alarm system and the status indicator system. The serial monitor will be used for
status reporting. The alarm module can be connected either along the board or some distance
away from the microcontroller. The alarm subsystem consists of a piezzo buzzer to make a
noise and LED to give some visual indicator to the user.
2

3.6 Software Development

Figure 3.6.1 below is the flow chart of how the motion detector will work in its programming.

The program will have a continuous looping and will continue to execute according to the
flow chart. The program will initialize at first to make sure all the system ready to be
function. The first program to be executed sensor system then followed by the alarm and
status indicator module which will be executed concurrently.

START

Initialize the Motion Detector System

Motion NO
Detected?

YES

Piezzo buzzer beep LED Light ON


Print on Serial Monitor

STOP

Figure 3.6.1 Flowchart for the motion detector system


2

3.7 Programming Tools

The software design for the motion detector system was programed by use of Arduino 1.5.6-
r2 software.

The software was first downloaded from the Arduino website (www.arduino.cc) and was
then installed. See Figure 3.7.1 below.

Figure 3.7.1: Loading of Arduino Software

Arduino UNO microcontroller was then connected to the computer via a USB cable, then
followed selection of the microcontroller from the ‘Tools Tab’ and lastly selection of COM
29 from the same tab as shown below in Figure 3.7.2, Figure 3.7.3 and Figure 3.7.4
respectively.

Figure 3.7.2 Configuration for connecting the Arduino UNO microcontroller with a
computer. (Source: Google Images)
2

Figure 3.7.3: Selecting the Arduino UNO Board

Figure 3.7.4: Selecting COM29 port

Thereafter, an Arduino program was loaded on the microcontroller so as to test its functionality
as shown in Figure 3.7.5.
2

Figure 3.7.5: Programming Motion Detector system using Arduino Software

The figure above shows the source code that I developed using the Arduino software. I used
C programming language because it’s easy to understand and that it’s also easier detect a
mistake from the program. In comparison to Assembly language that requires the
programmer to know the inside structure of the microcontroller, C language offers more
specific coding and programs that run on C language are a lot faster than using assembly
language.

The advantage with Arduino software is, it can support either Assembly language or C
language thereby giving the user an opportunity to choose the language he or she wants to
use.

What followed next was loading the source code to the Arduino UNO by clicking the ‘Upload’
button on the Arduino Software as shown below.
2

Figure 3.7.6: Uploading the Source Code to the Arduino

When upload was successful, the LED on Pin 13 on the Arduino UNO board blinked twice.
Thereafter, I connected the PIR Sensor, piezzo buzzer to the Arduino UNO board. I powered
the Arduino UNO via the USB cable connecting the computer and the board.

Figure 3.7.7: PIR Sensor and Piezzo Buzzer connected to the Arduino UNO
2

3.7.1 Connecting PIR sensor to the Arduino UNO Board

Pin1 of the PIR Sensor is connected to the 5V DC voltage terminal of the Arduino UNO.
Pin3 is connected to the ground (GND) pin of the Arduino UNO. Pin2 connects to digital Pin
D3.

Here, Pins 1 and 3 are powered with 5V by the Arduino UNO, i.e. it is through these pins
connections that the PIR sensor gets the 5V that it needs to power on and operate.

It is through Pin2 that that the Arduino UNO receives output from the PIR sensor.

3.7.2 Connecting the Piezzo buzzer to the Arduino UNO

The anode terminal (Red cable) of the buzzer is connected to Pin13 of the Arduino UNO
whereas its cathode (black) is connected to the ground (GND) pin of the buzzer.

Figure 3.7.2.1: Piezzo Buzzer Source: Google Images

Piezzo buzzer has the capability of reading analog signals through its analog-digital convertor
(ADC).
2

CHAPTER 4: RESULTS AND DISCUSSION

4.1 Introduction
This chapter contains the results and discussion from the hardware and software part of the
project that have been implemented on the motion detector system. Figure 4.1.1 below shows
the overall system that has been integrated together.

Figure 4.1.1: The Motion Detector System

4.2 Testing development


After successful implementation of the sensor module and the alarm module, with the
Arduino UNO microcontroller to make the motion detector system, the project continued to
the next stage; the testing phase. Project testing will concentrate on several aspects according
to functionality and reliability. This facet is of importance to this project because it will
determine whether this project has achieved its objective or not. This testing development
unit will also involve hardware and software part of the project. Figure 4.2.1 below show the
flowchart for testing phase of the project.
2
Start

Initialize motion detector system

Fix coding and connection for the PIR Sensor


Is the sensor system working?
NO

YES

Fix coding and connection for the Piezzo Buzzer


Is the alarm system working?
NO

YES

Is the status indicator system working? Fix coding of serial monitor


NO

End Testing

Figure 4.2.1 Project testing flowchart


2

4.2.1 Testing the sensor module

The PIR sensor was connected on the Arduino UNO microcontroller board as stated in section
3.7.1 above. Thereafter, a USB cable was used to connect the Arduino UNO microcontroller
to the computer.

A sample code to test the functionality of the PIR sensor was uploaded to the microcontroller.

Whenever motion was detected, the LED Pin on the Arduino UNO microcontroller blinked
for five seconds before going off. When no motion was detected, the LED pin did not light.

Figure 4.2.1.2: Testing the PIR Sensor. Note that the black cable of the Piezzo Buzzer isn’t
connected to the Arduino UNO

4.2.2 Testing the alarm module


The piezzo buzzer was connected on the Arduino UNO microcontroller as stated in section
3.7.2 in the methodology chapter. Thereafter, a USB cable was used to connect the Arduino
UNO microcontroller board to the computer.

A sample code to test the functionality of the buzzer was uploaded to the microcontroller to
test its functionality in seamless concurrence with the PIR Sensor.

Again, whenever motion was detected, the piezzo buzzer beeped for five seconds before
going off. At LED Pin also lit for five seconds. When no motion was detected, it didn’t beep
and the LED Pin didn’t light.
2

Figure 4.2.2.2: Testing the Piezzo Buzzer

4.2.3 Testing the status indicator module

To enhance the efficiency and effectiveness of the system, a status indicator component was
needed. To achieve this, a serial monitor ability from the Arduino software was employed.
The serial monitor acts as a virtual monitor to the Arduino UNO microcontroller making it
print a pre-programmed message on it.

Only the printing command was added to the existing source code. The program was later
uploaded to the Arduino UNO board.

As programmed, anytime motion was detected, the piezzo buzzer beeped for five seconds, the
LED pin on the Arduino UNO board lit for the same time and “MOTION DETECTED”
message was printed on the serial monitor once.

When no motion was detected, the piezzo buzzer didn’t beep, the LED on the Arduino UNO
board did not light and no message was printed on the serial monitor.
3

Figure 4.2.3.2: Motion detector system and serial monitor

4.3 Discussion

When the PIR sensor detects an obstacle within its detection range, it picks the analog signal
then converts it to a digital signal which it then passes it to the Arduino Uno board as a
voltage signal. The received digital signal, whose status is HIGH (3volts), triggers the LED
installed on its Pin13 to light and the piezzo buzzer connected on the same pin to buzz. At the
same time, the message ‘MOTION DETECTED’ is printed on the serial monitor once.

When no motion is detected, the output from the PIR Sensor is low and gives off practically
no voltage signal. It is through Pin2 of the PIR Sensor that the Arduino receives output from
the PIR sensor in form of an electric signal.

The lines of code below controls the behaviour of the LED pin, piezzo buzzer and the serial
monitor:

void loop() {
value = digitalRead(switchPin);
if (HIGH == value) {
digitalWrite(ledPin, HIGH);
digitalWrite (buzzerPin,HIGH);
Serial.println ("MOTION DETECTED");
delay (10000);
counter++;
Serial.println(counter);
}
Serial.println (“MOTION DETECTED”);
else {
digitalWrite(ledPin, LOW);
}
3

I used C programming language because it’s easy to understand and that it’s also easier detect
a mistake from the program. In comparison to Assembly language that requires the
programmer to know the inside structure of the microcontroller, C language offers more
specific coding and programs that run on C language are a lot faster than using assembly
language.

The advantage with Arduino software is, it can support either Assembly language or C
language thereby giving the user an opportunity to choose the language he or she wants to
use.

4.4 Project Justification of Results


From the results above i.e. from the sensor module, alarm module and status indicator
module that I got after testing the motion detector system, I can conclude that the
development of simple motion detector component was successful.

Even though I encountered some problems in testing the system, the flow chart that I
developed for testing the system was very useful as it gave me less time to debug the system.
Also, the flow chart gave me an easier way to detect any mistake and corrected it relevantly.
3

CHAPTER 5: CONCLUSION AND RECOMMENDATIONS

5.1 Conclusion

The task for developing the motion sensor system using infrared technology was successful
and achieved the objective for the overall project.

From this project, I can confirm that infrared technology is key in motion sensing. The alarm
module and the status indicator component helped make the system more efficient as the
Arduino UNO microcontroller played the central processing unit (CPU) role.

To enable coordinated functioning of the various components of the system, the


microcontroller ATmega328 on the Arduino UNO microcontroller board was programmed to
execute commands for the piezzo buzzer, LED pin and the serial monitor.

The potential application of this technology in future is relevant in security, tallying and can
be enhanced further into imaging technology at a more reliable and cheaper cost.

The serial monitor in the project was as a platform to give readable notifications.

5.2 Obstacles encountered in the project.

When making something new, it’s obvious that one faces several problems. The first problem
that I encountered was making the PIR Sensor work with the Arduino UNO board and also
making all the components work in a coordinated manner.

The hardest part on the project was in the programming part because I ventured into
embedded programming, a fact that made me to tirelessly read and practice this unique, fairly
hard but interesting nerve of systems development. It was a challenge making mechanical
devices work and on several occasions I had to consult Titus Koech, a friend who takes
BEng. Electrical and Communications Engineering from the School of Engineering in order
to understand circuits.
3

It was a challenge working on the project with borrowed devices from a friend who at the
same time was also working on his project. This is because of the cost, especially of the
Arduino UNO board as very few retailers of electronics are aware of it and they only make
few purchases thus making them increase its buying price.

5.3 Recommendations for the project.


With the results that have successfully been got after testing the system, there are several
recommendations that can make the motion detector system more reliable and efficient for
the future.

1. Use of GSM Modem: This will increase the ability of remotely receiving a
notification and controlling a set of actions. For example, if used in a home, the user
can make the system switch on a CD player that will create an impression that
someone is inside the house.

2. Making GUI (Graphical User Interface): To make this motion sensor system more
user friendly.

3. Using a more powerful sensor: It will enhance the system by giving it the counting
ability.

4. Using spy Cameras: For taking pictures that will be sent to the user in order to know
the kind of object that has been detected within the detection range.

5. Using an ultrasonic-sensor: For distance measuring capability.


3

REFERENCES

Byte Craft Limited. First Steps in Embedded Systems, Ontario: 2002. Available
www.bytecraft.com 18th April, 2016.

Collins, M., “An Evaluation of Embedded System Behavior Using Full-System Software
Emulation” Msc. Thesis. University of Maryland, College Park, 2000.

Gwennap, L., "New Processor Paradigm: V-IRAM." Journal of Microprocessor Report, Vol.
12, No. 3 (1998) pp. 17-19.

Kozyrakis, C., et al. "Scalable Processors in the Billion-Transistor Era: IRAM." IEEE
Computer, Vol. 30, No. 9, (1997) pp. 75-78.

Smith, M.. Application-Specific Integrated Circuits. Addison-Wesley: Reading,


Massachusetts, 1997.

Stepner, D., et al. “Embedded application design using a real-time OS.” DAC 99: New
Orleans LA, 1999.

Internet Sources

Cerruti, L.,"Dante's Bones." Archimedes; The Sciences in the European Periphery During
the Enlightenment, (1995) pp. 95-178.

Motion Sensors. Illumin. Hp. 2007. Motion Sensors. Furnish, T., Available
www.illumin.usc.edu 9th Dec.2015

History of Motion Detectors. Hp. 2014. Heubsch, Russel., Available


www.ehow.com/about_5516868_history-motion-detectors.html 11th Dec 2015

www.media.digikey.com/pdf/data%20sheets/panasonic%20electric%20works%20pdfs/amn
%20design%20manual.pdf

www.arduino.cc
3

BIBLIOGRAPHY

Abeni, L., and Buttazzo, G., "Integrating multimedia applications into hard real-time
systems." In Proc. IEEE Real-Time Systems Symposium (RTSS), 1998.

Adafruit Learning Systems. PIR Motion Sensor Created by Lady Ada. Available
www.learn.adafruit.com 30th March, 2016.

Ball. S., Embedded Microprocessor Systems: Real-World Design. Newnes: Butterworth-


Heinemann, Boston MA, 1996.

Ganssle, J. G., "The challenges of real-time programming." Embedded Systems


Programming, Vol. 11, No. 7, (1997) pp. 20-26.

Kalinsky, D., "A survey of task schedulers." In Embedded Systems Conference. San Jose CA,
1999.

Lee, A., and Seshia, A., Introduction to Embedded Systems: A Cyber-Physical Systems
Approach. UC Berkley, 2011. Available www.leeseshia.org 16th March 2016.

Liu, J., Real-Time Systems. Prentice Hall: Upper Saddle River NJ, 2000.

Samingan B.L., “Radio Frequency Identification and Global System for Mobile
Communication Application for Anti- Theft Car Security System”. Bsc. Thesis. Universiti
Teknologi Malaysia, Skudai, 2014.
3

APPENDICES

APPENDIX I: System Source Code


/*Motion Detector Code Developed by Francis Omondi Bsc. Information
Sciences For more information, Call 0728 521 742
or Email omondi.francis@students.mu.ac.ke */

int ledPin = 13; // Pin 13 is set as output.default LED pin of ArduinoUno


int switchPin = 2; //Pin 2 is set asINPUT pint for motion detected.
int buzzerPin=13; // Pin 13 is set as output terminal. Buzzer connected
here int value = 0; // Initialization i.e no motion detected
int counter; // variable for counting the number of times motion is detected

void setup() { // Setup code for the system. Runs once only
pinMode(ledPin, OUTPUT); // output point of LED in this case Pin 13
pinMode(switchPin, INPUT); // Input point of PIR sensor
pinMode (buzzerPin, OUTPUT); // output point of Piezzo Buzzer
Serial.begin (9600);
}

/* This loop part will run over and over again as long as the Arduino has
power*/

/* this block of code reads the input value and assigns it to the integer
value.*/

void loop() {
value = digitalRead(switchPin);
if (HIGH == value) { // HIGH means motion detected
digitalWrite(ledPin, HIGH); // LED Lights for 5 seconds
digitalWrite (buzzerPin,HIGH); // Buzzer buzzes for 5 seconds
Serial.println ("MOTION DETECTED");
delay (10000); //Waits for 10seconds but is adjustable. Syntax
1000ms=1sec counter++;
Serial.println(counter);
}

else {
digitalWrite(ledPin, LOW); //LOW means no motion detected, LED & Buzzer off
}

}
3

APPENDIX II: SOURCE CODE TO TEST PIR SENSOR


int ledPin = 13;
int switchPin = 2;
int value = 0;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(switchPin, INPUT);
}

void loop() {
value = digitalRead(switchPin);
if (HIGH == value) {
digitalWrite(ledPin, HIGH);
}

else {
digitalWrite(ledPin, LOW);
}
}

APPENBIX III: SOURCE CODETO TEST PIEZZO BUZZER


int ledPin = 13;
int switchPin = 2;
int buzzerPin=13;
int value = 0;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(switchPin, INPUT);
pinMode (buzzerPin, OUTPUT);
}

void loop() {
value = digitalRead(switchPin);
if (HIGH == value) {
digitalWrite(ledPin, HIGH);
digitalWrite (buzzerPin,HIGH); //Buzzer buzzes for 5 seconds
}

else {
digitalWrite(ledPin, LOW);
}
}
3

APPENDIX IV: CIRCUIT DIAGRAM OF FULL CONNECTION

APPENDIX V: SERIAL MONITOR SHOWING SEVEN COUNTS OF MOTION


DETECTION

You might also like