0% found this document useful (0 votes)
29 views75 pages

Augmenet Reality 1

This document discusses the application of augmented reality in the medical field. It describes how augmented reality can be used for medical training, to enhance surgical planning and interventions, and to integrate patient data in real-time. Augmented reality has potential applications in many areas of healthcare by improving productivity, safety and reducing costs.

Uploaded by

Gowthaman P
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views75 pages

Augmenet Reality 1

This document discusses the application of augmented reality in the medical field. It describes how augmented reality can be used for medical training, to enhance surgical planning and interventions, and to integrate patient data in real-time. Augmented reality has potential applications in many areas of healthcare by improving productivity, safety and reducing costs.

Uploaded by

Gowthaman P
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 75

APPLICATION OF AUGMENT REALITY IN THE FIELD

OF VIRTUAL MEDICAL INDUSTRY LABS

A PROJECT REPORT
Submitted by

621520104060 VIJAYARAGAVAN S

621520104032 MANIKANDAN R

621520104045 SARAVANAN S

621520104301 SANJAY P

in partial fulfilment for the award of the degree

of

BACHELOR OF ENGINEERING
in

COMPUTER SCIENCE AND ENGINEERING

MAHENDRA COLLEGE OF ENGINEERING, SALEM

ANNA UNIVERSITY :: CHENNAI 600 025

MAY 2024

i
ANNA UNIVERSITY :: CHENNAI 600025
BONAFIDE CERTIFICATE

Certified that this project report “APPLICATION OF AUGMENT


REALITY IN THE FIELD OF VIRTUAL MEDICAL INDUSTRY LABS” is
the bonafide work of “VIJAYARAGAVAN S (621520104060), MANIKANDAN
R (621520104032), SARAVANAN S (621520104045) and SANJAY P
(621520104301)” who carried out the project work under my supervision.

SIGNATURE SIGNATURE

Dr.H.LILLY BEAULAH, Ph.D., MS. SATHYA M, M.E


HEAD OF THE DEPARTMENT SUPERVISOR
PROFESSOR ASSISTANT PROFESSOR
DEPARTMENT OF COMPUTER SCIENCE DEPARTMENT OF COMPUTER SCIENCE
AND ENGINEERING AND ENGINEERING
MAHENDRA COLLEGE OF ENGINEERING MAHENDRA COLLEGE OF ENGINEERING
MINNAMPALLI, SALEM -636 106 MINNAMPALLI, SALEM -636 106

Submitted for the Anna University Examination Viva-Voce held on..........................

......................... at MCE

INTERNAL EXAMINER EXTERNAL EXAMINER

2
ACKNOWLEDGEMENT

The success and final outcome of this project required a lot of guidance and assistance from
many people and an extremely fortunate to have got this all along the completion of my Final Year
Project work.

I wish to thank Thirumigu M. G. BHARATHKUMAR, Founder & Chairman,


Shrimathi. VALLIYAMMAL BHARATHKUMAR, Secretary for their valuable guidance and
blessings, I would also like to express my deepest gratitude to the Managing Directors
Er. Bha. MAHENDHIRAN, Er. Bha. MAHA AJAY PRASATH who modelled us both
technically and morally for achieving great success in life.

I wish to express my sincere thanks and gratitude to our respected Principal Sir
Dr. N. MOHANA SUNDARA RAJU, who provided his constant encouragement, inspiration,
presence and blessings throughout my course, especially providing us with an environment to
complete the project successfully.

I am extremely grateful to Dr. H. LILLY BEAULAH, Ph.D., Professor and Head of the
Department of Computer Science and Engineering, who provided her valuable suggestions and
precious time in accomplishing my project report. I am indebted to her as she acted as my project
guide and took keen interest on my project work by providing all the necessary information for
developing the project successfully.

I wish to convey my gratitude to our guide for the valuable guidance from
Ms. SATHYA M, M.E, Assistant Professor for his support and motivation during the entire course
of the Final Year Project, his timely assistance and reviews went a long way towards the successful
completion of this project.

Lastly, I would like to thank my parents for their moral support and would like to extend
my sincere thanks to my friends, technical and non-technical staff members and the well- wishers
for their constant support all the time.

3
ABSTRACT

Surgeons are regularly on the lookout for technologies that will enhance their
operating environment. They are often the early adopters of technologies that
allow their field to offer a better surgical and patient experience. The
continuing enhancement of the surgical environment in the digital age has
led to a number of innovations being highlighted as potential disruptive
technologies in the surgical workplace. Augmented reality (AR) are rapidly
becoming increasingly available, accessible and importantly affordable,
hence their application into healthcare to enhance the medical use of data is
certain. In this project, the real time data of patients in hospital collected by
the sensors attached to patients once the sensor measured the values then it
is processed and send to doctors augmented reality glass through wireless
and alert if abnormal condition occurs. The doctor can take appropriate
action based on the patient’s current health condition.

4
TABLE OF CONTENT

S.NO TITLE PAGENO


ABSTRACT II
LISTOFFIGURES V
LISTOF ABBREVATION VI
1 INTRODUCTION 1
2 LITERATURESURVEY 3
3 SYSTEMIMPLEMENTATION 8
8
3.1EXISTINGSYSTEM
3.2DISADVANTAGES 8
3.3 PROPOSEDSYSTEM 9
3.4ADVANTAGES 10
3.5BLOCKDIAGRAM 11
4 SYSTEMREQUIREMENTS 12

4.1.1 HEART BEAT SENSOR 12


4.1.2 TEMPERATURE 14
SENSOR
4.1.3 PIC CONTROLLER 16
4.2 SOFTWARE 42
REQUIREMENTS

5
4.2.1EMBEDDEDC 42
4.2.2ARDUINOIDE 49
5 CONCLUSION 63
6 REFERENCES 64

V
LISTOF FIGURES

FIGURENO FIGURENAME PAGENO


4.1.1 HEART B EAT SENSOR 13
4.1.2 TEMPERATURE SENSOR 14

VI
LIST OF ABBREVIATIONS
1 IDE INTEGRATED DEVELOPMENT
ENVIRONMENT
2 COMM PORT COMMUNICATION PORT
3 ROM READ ONLY MEMORY
4 SFR SPECIAL FUNCTION REGISTERS
5 EEPROM ELECTRICALLY ERASABLE PROGRAMMALE
READ ONLY MEMORY

VII
CHAPTER 1

INTRODUCTION

An AR system integrates digital content into the real-world environment of a user.


A innovate nursing assessment and education in medicine is possible with this
technology. Caregivers can better understand complex medical situations with the
help of AR, which is used in liposuction planning and medical interventions
augmented reality, and the technology's importance has grown in recent years. In
addition, its medical applications have been extensively studied as well. Surgeries
that need advanced levels of accuracy can benefit from augmented reality in
unique. Introduction to augmented reality and recent applications in medicine are
discus sed in this paper. These basic concepts are followed by brief descriptions of
three key components of augmented reality. In this article, the authors discuss a
variety of applications they have developed in their science lab Even though
augmented reality is still not a mod ern technology, HoloLens and Nintendo's
Smart glasses are making it more popular and building momentum in clinical
school. It can not only help students learn, but it can also improve patient care by
enhancing medical training. As part of this new initiative, healthcare collections
can get involved by becoming cognizant of augmented reality applications.
Hearing, sensorimotor, olfaction and haptic. A virtual environment allows physical
data from multiple sources to be combined in real-time. After years of
development, 3-D anatomy information can now be viewed overlaid on a patient.
They are often created using eye-wear showcases that overlay data on the world of
the viewer. If doctors can keep their eyes on the patient while using a single AR
display, they can improve productivity, safety, and reduce costs by reducing
treatment regimen difficulties. Augmented reality in medicine has the potential to
1
reduce costs due to safer practices and the elimination of the need for redundant
screens, among other things. Nowadays, healthcare facilities must purchase
expensive ultrasound, computed tomography, and bronchoscopy systems, each
with a separate display. Additionally, Augmented Reality does provide a shared
display, eliminating the need for each patient's data to be displayed on a separate
monitor over time. (13) 1.1 augmented reality in healthcare With ever-increasing
computational resources, AR in medicine has been able to not only connector
image data in real time but also undertake dynamic simulation for evermore
complex models. Two distinct domains have benefited from its use: simulation and
intervention. For the most part, AR uses images from medical image modality to
show organ © 2021, IRJET | Impact Factor value: 7.529 In regards to medicine,
retail, and tech, augmented reality is making inroads into a variety of other
industry as well. As far back as the late 1970s, people have been working onthe
concept of augmented reality. Take a closer look at the perks that use augmented
reality in the healthcare industry in this article. In the following sections, you'll
learn how augmented r reality (AR) can revolutionize health coverage and its
long term. Augmented World (AR) technology allows users to see the world
today and prototype digital information onto it. In real life, AR is ameld of Virtual
Reality and Reality imposed on the world around us. Audio or virtual picture
applied to videos or 3D models are examples of virtual environment. Devices,
electronic items, a camera, and a pattern identification are used create Augmented
Reality

2
CHAPTER 2

LITERATURE REVIEW

2.1 LITERATUREREVIEW

Title
Medical Augmented Reality: Definition, Principle Components, Domain
Modeling, and Design-Development-Validation Process

Author

Devaraju D; V N Suraj Kumar; Vivek DS; Akshay Kumar R; Galiveeti


Hemakumar Reddy

Year

2021

Description

Three decades after the first set of work on Medical Augmented Reality (MAR)
was presented to the international community, and ten years after the deployment
of the first MAR solutions into operating rooms, its exact definition, basic
components, systematic design, and validation still lack a detailed discussion.
This paper defines the basic components of any Augmented Reality (AR)
solution and extends them to exemplary Medical Augmented Reality Systems
(MARS). We use some of the original MARS applications developed at the Chair
for Computer Aided Medical Procedures and deployed into medical schools for
teaching anatomy and into operating rooms for telemedicine and surgical
guidance throughout the last decades to identify the corresponding basic
components. In this regard, the paper is not discussing all past or existing
solutions but only aims at defining the principle components and discussing the
particular domain modeling for MAR and its design-development-validation
3
process, and providing exemplary cases through the past in-house developments
of such solutions..
2.2 LITERATUREREVIEW

Title

Virtual and augmented reality for biomedical applications

Author

Mythreye Venkatesan,

Year

2020

Description

The development of virtual, augmented, and mixed reality devices erupted after
2010, and their proliferation has continued since then. These technologies offer
an immersive and interactive digital scene for visualization in a three-
dimensional (3D) environment, resulting in their widespread adoption in various
fields that include commercial, educational, and biomedical sectors. Although the
concept of virtual reality (VR) has been in existence since the 19th century, VR
became popular during the 1990s. Technological advancements in headset and
computer hardware, including computer graphics, resulted in many companies,
especially in the entertainment sector, investing in this technology. However,
despite significant developments, interest in VR was, in general, low during the
2000s because of technical issues such as bulky headsets, slow computers, poor
sensory input quality, low-resolution graphics, and side effects such as headaches
and motion sickness..

4
2.3 LITERATUREREVIEW

Title
AR-based Modern Healthcare:

Author
Saikat Gochhait; Ronak Asodiya; Totappa Hasarmani; Vasily Patin; Olga
Maslova

Year

2022

Description
The recent advances of Augmented Reality (AR) in healthcare have shown that
technology is a significant part of the current healthcare system. In recent days,
augmented reality has proposed numerous smart applications in healthcare
domain including wearable access, telemedicine, remote surgery, diagnosis of
medical reports, emergency medicine, etc. The aim of the developed augmented
healthcare application is to improve patient care, increase efficiency, and decrease
costs. This article puts on an effort to review the advances in AR-based healthcare
technologies and goes to peek into the strategies that are being taken to further
this branch of technology. This article explores the important services of
augmented-based healthcare solutions and throws light on recently invented ones
as well as their respective platforms. It also addresses concurrent concerns and
their relevant future challenges. In addition, this paper analyzes distinct AR
security and privacy including security requirements and attack terminologies.
Furthermore, this paper proposes a security model to minimize security risks.

5
Augmented reality’s advantages in healthcare, especially for operating surgery,
emergency diagnosis, and medical training is being demonstrated here thorough
proper analysis. To say the least, the article illustrates a complete overview of
augmented reality technology in the modern healthcare sector by demonstrating
its impacts, advancements, current vulnerabilities; future challenges, and
concludes with recommendations to a new direction for further research.
2.4 LITERATUREREVIEW

Title

Augmented Reality in the field of Medicine

Author

Saikat Gochhait; Ronak Asodiya; Totappa Hasarmani; Vasily Patin

Year

2022
Description

Augmented reality employs the use of 3D/2D modeled digital objects


superimposed on top of a live video stream for purposes including but not limited
to entertainment, education, professional fields such as animation etc. This study
explores the use of Augmented Reality to help medical professionals by
employing the sue of Augmented Reality to display detailed models of organs,
skeletal system, etc. The research aims to improve the ease of use and
understanding of conventional medical texts. A research aiming to verify the
feasibility of AR in medical field was conducted. The findings are promising and
indicate improvements in the learning experience for medical students. The
technology can be deployed in hospitals and medical schools where such
professionals are trained.

6
2.5 LITERATUREREVIEW

Title
Augmented Reality Applications in Industry 4.0 Environment
Author

Sayak Roy; Manali Mandal; Chitralekha Jena; Pampa Sinha; Tarakanta Jena

Year
2021

Description

New technologies, such as cloud computing, the Internet of Things, wireless


communications, etc., have already become part of our daily lives. This paper
provides an insight into one of the new technologies, i.e., augmented reality (AR),
as part of the manufacturing paradigm Industry 4.0 (I4.0). The aim of this paper
is to contribute to the current state in the field of AR by assessing the main areas
of the application of AR, the used devices and the tracking methods in support of
the digitalization of the industry. Searches via Science Direct, Google Scholar
and the Internet in general have resulted in the collection of a large number of
papers. The examined works are classified according to several criteria and the
most important data resulting from them are presented here. A comprehensive
analysis of the literature has indicated the main areas of application of AR in I4.0
and, among these, those that stand out are maintenance, assembly and human
robot collaboration. Finally, a roadmap for the application of AR in companies is
proposed and the most promising future areas of research are listed..

7
CHAPTER 3

SYSTEM IMPLEMENTATION

3.1 EXISTING SYSTEM

• Monitoring is an essential component of operation care. Clinicians must


monitor patient physiologic variables and anesthesia equipment during all
types of operation, as anesthesia and surgery can cause rapid changes in
vital functions.
• These recommendations state the monitoring devices that are essential and
those that must be immediately available during any operation.
• It is absolutely necessary to continue monitoring health parameters without
an essential monitor, every time the doctor has to look up to the changes in
health parameters and the clinicians should note the changes in the data
record.
• This might lead to lack of concentration and may not be clear with his/her
decisions providing an error.

3.2 DISADVANTAGE

• Every time the doctor has to take a look at the system to monitor the health
parameter changes during the operation.
• Might lead to human error.
• Requires man power for continuous monitoring.

8
3.3 PROPOSED SYSTEM

• AR is the addition of artificial information to one or more of the senses that


allows the user to perform tasks more efficiently.
• We propose a system in which important information for the doctors are
displayed on semi-transparent glasses included in an AR-headset and
therefore are mixed with the real-worldview.
• In this project, the real time data of patients in hospital collected by the
sensors attached to patients once the sensor measured the values then it is
processed and send to doctors augmented reality glass through wireless and
alert if abnormal condition occurs.
• The doctor can take appropriate action based on the patient’s current health
condition.

9
3.4 ADVANTAGES

• Serious medical errors especially in terms of surgery in and out of the operation
room can be avoided by using precise data obtained by AR.

• The intuitive nature of the system allows them to focus on the surgical site and
make informed decisions, ultimately leading to better outcomes.

• Reduces the risk of complications

10
3.5 BLOCK DIAGRAM

HEART RATE
SENSOR POWER
SUPPLY

RESPIRATORY PIC
SENSOR MICROCONTROLLER
WIRELESS
TRANSMISSION

PULSE
SENSOR

11
CHAPTER 4

SYSTEM REQUIREMENTS

4.1 HARDWARE REQUIREMETS

4.1.1 HEART RATE SENSOR.

Heart beat sensor is designed to give digital output of heat beat when a finger
is placed on it. When the heart beat detector is working, the beat LED flashes
in unison with each heartbeat. This digital output can be connected to
microcontroller directly to measure the Beats Per Minute (BPM) rate. It works
on the principle of light modulation by blood flow through finger at each
pulse.

FEATURES:

• Microcontroller based SMD design


• Heat beat indication by LED
• Instant output digital signal for directly connecting to microcontroller
• Compact Size
• Working Voltage +5V DC

APPLICATIONS:

• Digital Heart Rate monitor


• Patient Monitoring System
• Bio-Feedback control of robotics and applications

12
FIGURE4.1.1 - HEART BEAT SENSOR
Medical heart sensors are capable of monitoring vascular tissue through the tip
of the finger or the ear lobe. It is often used for health purposes, especially when
monitoring the body after physical training.
Heart beat is sensed by using a high intensity type LED and LDR. The finger
is placed between the LED and LDR. As Sensor a photo diode or a photo
transistor can be used. The skin may be illuminated with visible (red) using
transmitted or reflected light for detection. The very small changes in
reflectivity or in transmittance caused by the varying blood content of human
tissue are almost invisible. Various noise sources may produce disturbance
signals with amplitudes equal or even higher than the amplitude of the pulse
signal. Valid pulse measurement therefore requires extensive preprocessing of
the raw signal. The new signal processing approach presented here combines
analog and digital signal processing in a way that both parts can be kept simple
but in combination are very effective in suppressing disturbance signals.
The setup described here uses a red LED for transmitted light illumination and
a LDR as detector. With only slight changes in the preamplifier circuit the same
hardware and software could be used with other illumination and detection
concepts. The detectors photo current (AC Part) is converted to voltage and
amplified by an operational amplifier (LM358).

13
4.1.2 TEMPERATURE SENSOR
The first slave connected to a temperature sensor LM35. This senses the
temperature of an engine and provides the level of temperature.
GENERAL DESCRIPTION
The LM35 series are precision integrated-circuit temperature sensors, whose
output voltage is linearly proportional to the Celsius (Centigrade) temperature.
The LM35 thus has an advantage over linear temperature sensors calibrated in
Kelvin, as the user is not required to subtract a large constant voltage from its
output to obtain convenient Centigrade scaling.

Figure 4.1.2 Basic Centigrade Temperature Sensor (+2°C to +150°C)

The LM35 does not require any external calibration or trimming to provide
typical accuracies of ±1⁄4°C at room temperature and ±3⁄4°C over a full −55 to
+150°C temperature range. The LM35’s low output impedance, linear output,
and precise inherent calibration make interfacing to readout or control circuitry
especially easy. It can be used with single power supplies, or with plus and minus
supplies. As it draws only 60 μA from its supply, it has very low self-heating,
less than 0.1°C in still air. The LM35 is rated to operate over a −55° to +150°C
temperature range, while the LM35C is rated for a −40° to +110°C range (−10°
with improved accuracy).

14
The LM35 series is available packaged in hermetic TO-46 transistor packages,
while the LM35C, LM35CA, and LM35D are also available in the plastic TO-
92 transistor package. The LM35D is also available in an 8-lead surface mount
small outline package and a plastic TO-220 package.

FEATURES
1. Calibrated directly in ° Celsius (Centigrade)
2. Linear + 10.0 mV/°C scale factor
3. 0.5°C accuracy guaranteeable (at +25°C)
4. Rated for full −55° to +150°C range
5. Suitable for remote applications
6. Low cost due to wafer-level trimming
7. Operates from 4 to 30 volts
8. Less than 60 μA current drain
9. Low self-heating, 0.08°C in still air
10. Nonlinearity only ±1⁄4°C typical
11. Low impedance output, 0.1 W for 1 mA load

CAPACITIVE LOAD

Figure 4.6 LM35 With Decoupling From Capacitive Load

Like most micro power circuits, the LM35 has a limited ability to drive
15
heavy capacitive loads. The LM35 by itself is able to drive 50 pf without special
precautions. If heavier loads are anticipated, it is easy to isolate or decouple the
load with a resistor.

4.1.3 PIC CONTROLLER

All the functions required on a single chip. A microcontroller differs from a


microprocessor, which is a general-purpose chip that is used to create a multi-
function computer or device and requires multiple chips to handle various tasks.
A microcontroller is meant to be more self-contained and independent, and
functions as a tiny, dedicated computer.

They are typically designed using CMOS (complementary metal oxide


semiconductor) technology, an efficient fabrication technique that uses less
power and is more immune to power spikes than other techniques. There are also
multiple architectures A microcontroller is an integrated chip that is often part
of an embedded system. The microcontroller includes a CPU, RAM, ROM, I/O
ports, and timers like a standard computer, but because they are designed to
execute only a single specific task to control a single system, they are much
smaller and simplified so that they can include used, but the predominant
architecture is CISC (Complex Instruction Set Computer), which allows the
microcontroller to contain multiple control instructions that can be executed with
a single macro instruction. Some use a RISC (Reduced Instruction Set
Computer) architecture, which implements fewer instructions, but delivers
greater simplicity and lower power consumption.

Early controllers were typically built from logic components and were usually
quite large. Later, microprocessors were used, and controllers were able to fit
onto a circuit board. Microcontrollers now place all of the needed components
16
onto a single chip. Because they control a single function, some complex devices
contain multiple microprocessors.

Microcontrollers have become common in many areas, and can be found in home
appliances, computer equipment, and instrumentation. They are often used in
automobiles, and have many industrial uses as well, and have become a central
part of industrial robotics. Because they are usually used to control a single
process and execute simple instructions, microcontrollers do not require
significant processing power.

Products like CD players, hi-fi equipment, video games, washing machines,


cookers and so on fit into this category. The communications market, automotive
market, and the military share the rest of the application areas. Microcontrollers
have traditionally been programmed using the assembly language of the target
microcontroller. Different microcontrollers from different manufacturers have
different assembly languages.

Assembly language consists of short mnemonic descriptions of the instruction


sets. These mnemonics are difficult to remember and the programs developed
for one microcontroller cannot be used for other types of microcontrollers. The
most common complaint about microcontroller programming is that the
assembly language is somewhat difficult to work with, especially during the
development of complex projects.

The solution to this problem is to use high-level languages. This makes the
programming a much simpler task and the programs are usually more readable,
portable, and easier to maintain. There are various forms of BASIC and C
compilers available for most microcontrollers. BASIC compilers are usually in
the form of interpreters and the code produced is usually slow.
17
Evolution of Microcontroller

First, microcontrollers were developed in the mid-1970s. These were basically


calculator-based processors with small ROM program memories, very limited
RAM data memories, and a handful of input/output ports. As silicon technology
developed, more powerful, 8-bit microcontrollers were produced. In addition to
their improved instruction sets, these microcontrollers included on-chip
counter/timers, interrupt facilities, and improved I/O handling. On-chip memory
capacity was still small and was not adequate for many applications. One of the
most significant developments at this time was the availability of on-chip
ultraviolet erasable EPROM memory. This simplified the product development
time considerably and, for the first time, also allowed the use of microcontrollers
in low-volume applications.

Introduction of 8051 Family

The 8051 family was introduced in the early 1980s by Intel. Since its
introduction, the 8051 has been one of the most popular microcontrollers and has
been second-sourced by many manufacturers. The 8051 currently has many
different versions and some types include on-chip analogue-to-digital
converters, a considerably large size of program and data memories, pulse-width
modulation on outputs, and flash memories that can be erased and reprogrammed
by electrical signals. Microcontrollers have now moved into the 16-bit market.
16-bit micro-controllers are high-performance processors that and applications
in real-time and compute intensive fields (e.g. in digital signal processing or real-
time control). Some of the 16-bit microcontrollers include large amounts of
program and data memories, multi-channel analogue-to-digital converters, a

18
large number of I/O ports, several serial ports, high-speed arithmetic and logic
operations, and a powerful instruction set with signal processing capabilities.

The simplest microcontroller architecture consists of a microprocessor, memory,


and input/output. The microprocessor consists of a central processing unit (CPU)
and the control unit (CU).The CPU is the brain of a microprocessor and is where
all of the arithmetic and logical operations are performed. The control unit
controls the internal operations of the microprocessor and sends control signals
to other parts of the microprocessor to carry out the required instructions.
Memory is an important part of a microcomputer system. Depending upon the
application we can classify memories into two groups: program memory and
data memory. Program memory stores all the program code. This memory is
usually a read-only memory (ROM). Other types of memories, e.g. EPROM and
PEROM flash memories are used for low-volume applications and also during
program development. Data memory is a read/write memory (RAM).In complex
applications where there may be need for large amounts of memory it is possible
to interface external memory chips to most microcontrollers.

Input/ Output (I/O) ports allow external digital signals to be connected to the
microcontroller. I/O ports are usually organized into groups of 8 bits and each
group is given a name. For example, the 8051 microcontroller contains four8-bit
I/O ports named P0, P1, P2, and P3. On some microcontrollers the direction of
the I/O port lines are programmable so that different bits of a port can be
programmed as inputs or outputs. Some microcontrollers (including the8051
family) provide bi-directional I/O ports. Each I/O port line of such
microcontrollers can be used as inputs and outputs. Some microcontrollers
provide `open-drain' outputs where the output transistors are left floating (e.g.

19
port P0 of the 8051 family). External pull-up resistors are normally used with
such output port lines.

8051 Family:

The 8051 family is a popular, industry standard 8-bit single chip micro-computer
(microcontroller) family, manufactured by various companies with many
different capabilities.

The basic standard device, which is the first member of the family, is the 8051,
which is a 40-pin microcontroller. This basic device is now available in several
configurations.

The 80C51 is the low-power CMOS version of the family. The 8751 contains
EPROM program memory, used mainly during development work. The 89C51
contains flash programmable and erasable memory (PEROM) where the
program memory can be reprogrammed without erasing the chip with ultraviolet
light.

The 8052 is an enhanced member of the family which contains more RAM and
also more timer/counters. There are many versions of the 40-pin family which
contain on-chip analogue-to-digital converters, pulse-width modulators, and so
on. At the lower end of the 8051 family we have the 20-pin microcontrollers
which are code compatible with the 40-pin devices.

The 20-pin devices have been manufactured for less complex applications where
the I/O requirements are not very high and where less power is required (e.g. in
portable applications).

20
The AT89C1051 and AT89C2051 (manufactured by Atmel) are such
microcontrollers, which are fully code compatible with the 8051 family and offer
reduced power and less functionality.

The 8051 is an 8-bit, low-power, high-performance microcontroller. There are a


large number of devices in the 8051 family with similar architecture and each
member of the family is downward compatible with each other. The basic
8051microcontroller has the following features:

4 Kbytes of program memory

256*8 RAM data memory

32 programmable I/O lines

Two 16-bit timer/counters

Six interrupt sources

Programmable serial UART port

External memory interface

Standard 40-pin package

PIC16F877A
The term PIC, or Peripheral Interface Controller, is the name given by
Microchip Technologies to its single – chip microcontrollers. PIC micros have
grown to become the most widely used microcontrollers in the 8- bit
microcontroller segment.

The PIC16F877A CMOS FLASH-based 8-bit microcontroller is upward


21
compatible with the PIC16C5x, PIC12Cxxx and PIC16C7x devices. It features
200 ns instruction execution, 256 bytes of EEPROM data memory, self
programming, an ICD, 2 Comparators, 8 channels of 10-bit Analog-to-Digital
(A/D) converter, 2 capture/compare/PWM functions, a synchronous serial port
that can be configured as either 3-wire SPI or 2-wire I2C bus, a USART, and a
Parallel Slave Port.

Special Microcontroller Features

• Flash Memory: 14.3 Kbytes (8192 words)


• Data SRAM: 368 bytes
• Data EEPROM: 256 bytes
• Self-reprogrammable under software control
• In-Circuit Serial Programming via two pins (5V)
• Watchdog Timer with on-chip RC oscillator
• Programmable code protection
• Power-saving Sleep mode
• In-Circuit Debug via two pins
• 10-bit, 8-channel A/D Converter
• Brown-Out Reset
• Analog Comparator module

Peripheral Features

• 33 I/O pins; 5 I/O ports


• Timer0: 8-bit timer/counter with 8-bit prescaler
• Timer1: 16-bit timer/counter with prescaler
o Can be incremented during Sleep via external crystal/clock
• Timer2: 8-bit timer/counter with 8-bit period register, prescaler and postscaler
22
• Two Capture, Compare, PWM modules
o 16-bit Capture input; max resolution 12.5 ns
o 16-bit Compare; max resolution 200 ns
o 10-bit PWM
• Synchronous Serial Port with two modes:
o SPI Master
o I2C Master and Slave
• USART/SCI with 9-bit address detection
• Parallel Slave Port (PSP)
o 8 bits wide with external RD, WR and CS controls
• Brown-out detection circuitry for Brown-Out Reset

23
Block Diagram of PIC16F877A

24
The internal block diagram of PIC16F877 is shown in the figure. It
contains 4-banks of register files such as Bank 0, Bank 1, Bank 2 and Bank 3
from 00h-07h, 80h-FFh, 100h-17Fh and 180h-1FFh respectively. And it is also
having program FLASH memory, Data memory and Data EEPROM of 8K, 368
and 256 Bytes respectively.
Register File
The term register file in PIC terminology used to denote the locations than
an instruction can access via an address. The register file consists of two
components, they are
1. General purpose register file
2. Special purpose register file
General Purpose Register File
The general-purpose register file is another name for the microcontrollers
RAM. Data can be written to each 8-bit location, updated and retrieved any
number of times. All control registers are coming under the general purpose
register file.
Special Purpose Register File
The special purpose register file contains input and output ports as well as
the control registers used to establish each bit of port as either an input or output.
It contains registers that provide the data input and data output to the variety of
resources on the chip, such as the timers, the serial ports and the analog–to–
digital converter.

Pin Configuration And Description

25
Figure 4.1.3 Pin Diagram of PIC16F877A

The pins RB0-RB7, RC0-RC7, and RD0-RD7 are digital I/O pins. The pins
CCP1 and CCP2, which share locations with RC1 and RC2, can be used for a
PWM signal (see DC Motor tutorial). The pins AN0-AN7 are for analog I/O (see
Photo resistor tutorial). TX and RX are for debugging I/O (see Output Messages
to Computer tutorial). The remaining pins deal with power/ground, the clock
signal, and programmer I/O.
A PIC is made of several “ports.” Each port is designated with a letter, RB0-RB7
are a port. RC0-RC7 and RD0-RD7 are a port as well. RA0-RA5 and RE0-RE2
are also ports, but with fewer pins. Some of these pins have special purposes, but
most can be used as basic input/output pins.
For example, you can set pin RB0 to be either an input pin, or an output pin. As
an input pin, the digital voltage on the pin can be read in. For example, if RB0
26
is connected to ground (0v), then you would read a digital 0. If RB0 was
connected to power (5v), then you would read a digital 1.
On the other hand, if you wanted to set RBO as an output pin, you could choose
to make RB0 either be 5v, or 0v. This can be used, for example, to turn off or on
a LED, or to turn off or on a motor.
Memory Organization
There are three memory blocks in each of the PIC16F87XA devices. The
Program Memory and Data Memory have separate buses so that concurrent
access.

Program Memory Organization


The PIC16F87XA devices have a 13-bit program counter capable of
addressing an 8K word x 14 bit program memory space. The PIC16F876A/877A
devices have 8K words x 14 bits of FLASH program memory, while
PIC16F873A/874A devices have 4K words x 14 bits. Accessing a location above
the physically implemented address will cause a wraparound. The RESET vector
is at 0000h and the interrupt vector is at 0004h.

Data Memory Organization


The data memory is partitioned into multiple banks which contain the
General Purpose Registers and the Special Function Registers. Bits RP1
(STATUS<6>) and RP0 (STATUS<5>) are the bank select bits.

27
Figure 4.3 Memory Organization Of Pic16f877a
Table 4.2 Register And Bank Allocation

Each bank extends up to 7Fh (128 bytes). The lower locations of each
28
bank are reserved for the Special Function Registers. Above the Special Function
Registers are General Purpose Registers, implemented as static RAM. All
implemented banks contain Special Function Registers. Some frequently used
Special Function Registers from one bank may be mirrored in another bank for
code reduction and quicker access.
Table 4.3 Register File Maps Used In Pic16f877

ADDRESSING MODES

Direct Addressing

Using this method we are accessing the registers directly by detecting


location inside Data Memory from Opcode and by selecting the bank using bits
RP1 and RP0 of the STATUS register.

Indirect Addressing

To implement indirect addressing, a File Select Register (FSR) and


indirect register (INDF) are used. In addition, when using this method we choose
bank using bit IRP of the STATUS register. Indirect addressing treated like a
stack pointer, allowing much more efficient work with a number of variables.
INDF register is not an actual register (it is a virtual register that is not found in
any bank).

The following figure shows the two addressing methods:

29
FIG .5: Addressing Mode Diagram of PIC16F877A

To the left you can see the direct addressing method, where the bank selection is
made by RP bits and the referencing is made directly from memory Opcode by
using the variable name.

To the right you can see the indirect addressing method, where the bank selection
is made by IRP bit and accessing the variable by pointer FSR.

We want to assign number 5 to the variable TEMP located at address 0X030. In


the first row of each example, we will define the variable TEMP at the address
0X030.

30
16.5.3 Example of direct addressing:

1. TEMP Equ 0x030


2. Movlw 5
3. Movwf TEMP

It's easy to understand, that direct addressing method means working directly
with the variables. In the second line we put the number 5 into the working
register W, and in the line 3, the content of the W passes to the TEMP variable.

16.5.4 Example of indirect addressing:

1. TEMP Equ 0x030


2. Movlw 0x030
3. Movwf FSR
4. Movlw 5
5. Movwf INDF

In the second line, we put a value into the W register. In the third line, the value
passes to the FSR register, and from this moment FSR points to the address of
the TEMP variable. In the fourth line, the number 5 passes to the W register, and
in the fifth line, we move the contents of W register (which is 5) to the INDF. In
fact INDF performs the following: it takes the number 5 and puts it in the address
indicated by FSR register.

31
PIC16F87XA Data EEPROM

The data EEPROM and Flash program memory is readable and writable during
normal operation (over the full VDD range). This memory is not directly mapped
in the register file space. Instead, it is indirectly addressed through the Special
Function Registers.

There are six SFRs used to read and write to this memory:

1. EECON1
2. EECON2
3. EEDATA
4. EEDATH
5. EEADR
6. EEADRH

When interfacing to the data memory block, EEDATA holds the 8-bit data for
read/write and EEADR holds the address of the EEPROM location being
accessed. These devices have 128 or 256 bytes of data EEPROM (depending on
the device), with an address range from 00h to FFh. On devices with 128 bytes,
addresses from 80h to FFh are unimplemented.

A few important points about Data EEPROM memory:

• It lets you save data DURING programming


• The data is saved during the “burning” process
• You can read the data memory during the programming and use it
• The use is made possible with the help of SFR

32
At this point there is no need to learn how to use this memory with special
registers, because there are functions (writing and reading) that are ready.

Write to DATA EEPROM

To write to an EEPROM data location, the user must first write the address to
the EEADR register and the data to the EEDATA register. Then the user must
follow a specific write sequence to initiate the write for each byte.

Read DATA EEPROM

To read a data memory location, the user must write the address to the
EEADR register, clear the EEPGD control bit (EECON1<7>) and then set
control bit RD (EECON1<0>). The data is available in the very next cycle in the
EEDATA register; therefore, it can be read in the next instruction. EEDATA
will hold this value until another read or until it is written to by the user (during
a write operation).

Both of these functions are provided by the manufacturer. There is a


required sequence in order to write/read to/from the memory; that process can
be performed independently, but it is better to use ready functions of Microchip.

PIC Timer0:

Many times, we plan and build systems that perform various processes that
depend on time.

Simple example of this process is the digital wristwatch. The role of this
electronic system is to display time in a very precise manner and change the
33
display every second (for seconds), every minute (for minutes) and so on.

To perform the steps we've listed, the system must use a timer, which needs to
be very accurate in order to take necessary actions. The clock is actually a core
of any electronic system.

In this PIC timer module tutorial we will study the existing PIC timer modules.
The microcontroller PIC16F877 has 3 different timers:

• PIC Timer0
• PIC Timer1
• PIC Timer2

We can use these timers for various important purposes. So far we used “delay
procedure” to implement some delay in the program, that was counting up to a
specific value, before the program could be continued. "Delay procedure" had
two disadvantages:

• we could not say exactly how long the Delay procedure was in progress
• we could not perform any further steps while the program executes the "delay
procedure"

Now, using Timers we can build a very precise time delays which will be based
on the system clock and allow us to achieve our desired time delay well-known
in advance.
In order for us to know how to work with these timers, we need to learn some
things about each one of them. We will study each one separately.

PIC Timer0

The Timer0 module timer/counter has the following features:


34
• 8-bit timer/counter
• Readable and writable
• 8-bit software programmable prescaler
• Internal (4 Mhz) or external clock select
• Interrupt on overflow from FFh to 00h
• Edge select (rising or falling) for external clock

Timer0 has a register called TMR0 Register, which is 8 bits of size. We


can write the desired value into the register which will be increment as the
program progresses. Frequency varies depending on the Prescaler. Maximum
value that can be assigned to this register is 255.

PIC Timer1:

The Timer1 module, timer/counter, has the following features:

• 16-bit timer/counter consisting of two 8-bit registers (TMR1H and TMR1L)


• readable and writable
• 8-bit software programmable prescaler
• Internal (4 Mhz) or external clock select
• Interrupt on overflow from FFFFh to 0000h

Let’s explain the features of PIC Timer1 we have listed above:

Timer1 has a register called TMR1 register, which is 16 bits of size.


Actually, the TMR1 consists of two 8-bits registers:

• TMR1H
• TMR1L

It increments from 0000h to the maximum value of 0xFFFFh (or 0 b1111 1111
35
1111 1111 or 65,535 decimal). The TMR1 interrupt, if enabled, is generated on
overflow which is latched in interrupt flag bit, TMR1IF (PIR1<0>). This
interrupt can be enabled/disabled by setting/clearing TMR1 interrupt enable bit,
TMR1IE (PIE1<0>). You can initialize the value of this register to what ever
you want (not necessarily "0").

TMR1IF – TMR1 overflow Interrupt Flag bit.

This flag marks the end of ONE cycle count. The flag need to be reset in the
software if you want to do another cycle count. We can read the value of the
register TMR1 and write into. We can reset its value at any given moment (write)
or we can check if there is a certain numeric value that we need (read).

Prescaler – Frequency divider.


We can use Prescaler for further division of the system clock. The size of the
register is 2-bit only, so you can make four different division. The options are:
You can choose whether to use an internal system clock (crystal) or external
oscillator that can be connected to a pin RC0.

The structure of the T1CON register

We perform all the necessary settings with T1CON register. As we can see, the
size of the register is 8 bits. Let’s explore the relevant bits:

36
Initializing the T1CON register

The following is an example how we can initialize the T1CON register:

1. TMR1ON=1; // the timer is enable


2. TMR1CS=0; // internal clock source
3. T1CKPS0=0; // Prescaler value set to “00”
4. T1CKPS1=0; // which means 1:1 (no division)

Or you can set all the T1CON register at once as follows: T1CON=0b00000001;

PIC Timer2:

TheTimer2module has the following features:


Two 8-bit registers (TMR2 and PR2) readable and writable prescaler
and a postscaler connected only to an internal clock - 4 MHz crystal
Interrupt on overflow

• Timer2 has 2 count registers: TMR2 and PR2. The size of each registers is 8-
bit in which we can write numbers from 0 to 255. The TMR2 register is readable
and writable and is cleared on any device Reset. PR2 is a readable and writable
register and initialized to FFh upon Reset.
Register TMR2 is used to store the “initial” count value (the value from which
it begins to count). Register PR2 is used to store the “ending” count value (the
maximum value we need/want to reach). ie: using Timer2 we can determine the
started count value, the final count value, and the count will be between these
two values. The Timer2 increment from 00h until it matches PR2 and then resets
to 00h on the next increment cycle.

37
• Prescaler and Postscaler - Timer2 is an 8-bit timer with a prescaler and a
postscaler. Each allows to make additional division of the frequency clock
source.
Prescaler divides the frequency clock source BEFORE the counting take place
at the register TMR2, thus the counting inside the TMR2 register is performed
based on the divided frequency clock source by the Prescaler The
match output of TMR2 goes through a 4-bit postscaler (which gives a 1:1 to1:16
scaling inclusive) to generate a TMR2 interrupt (latched in flag bit, TMR2IF
(PIR1<1>)).
Postscaler divides the frequency that comes out of the Comparator again for the
last time.

INPUT/OUTPUT PROGRAMMING IN PIC16F877A

Introduction
General purpose I/O pins can be considered the simplest of peripherals.
They allow the PIC microcontroller to monitor and control other devices. To add
flexibility and functionality to a device, some pins are multiplexed with an
alternate function(s). These functions depend on which peripheral features are
on the device. In general, when a peripheral is functioning, that pin may not be
used as a general purpose I/O pin.
For most ports, the I/O pin’s direction (input or output) is controlled by
the data direction register, called the TRIS register. TRIS<x> controls the
direction of PORT<x>. A ‘1’ in the TRIS bit corresponds to that pin being an
input, while a ‘0’ corresponds to that pin being an output. An easy way to
remember is that a ‘1’ looks like I (input) and a ‘0’ looks like an O output).
The PORT register is the latch for the data to be output. When the PORT
is read, the device reads the levels present on the I/O pins (not the latch). This
38
means that care should be taken with read-modify-write commands on the ports
and changing the direction of a pin from an input to an output.
. Reading the PORT register reads the status of the pins whereas writing
to it will write to the port latch. All write operations (such as BSF and BCF
instructions) are read-modify-write operations. Therefore a write to a port
implies that the port pins are read; this value is modified, and then written to the
port data latch.

When peripheral functions are multiplexed onto general I/O pins, the
functionality of the I/O pins may change to accommodate the requirements of
the peripheral module. Examples of this are the Analog-to-Digital (A/D)
converter and LCD driver modules, which force the I/O pin to the peripheral
function when the device is reset. In the case of the A/D, this prevents the device
from consuming excess current if any analog levels were on the A/D pins after
a reset occurred.
With some peripherals, the TRIS bit is overridden while the peripheral is
enabled. Therefore, read-modify-write instructions (BSF, BCF, XORWF) with
TRIS as destination should be avoided. The user should refer to the
corresponding peripheral section for the correct TRIS bit settings.
PORT pins may be multiplexed with analog inputs and analog VREF
input. The operation of each of these pins is selected, to be an analog input or
digital I/O, by clearing/setting the control bits in the ADCON1 register (A/D
Control Register1). When selected as an analog input, these pins will read as
‘0’s.
The TRIS registers control the direction of the port pins, even when they
are being used as analog inputs. The user must ensure the TRIS bits are
maintained set when using the pins as analog inputs.

39
PORTA and the TRISA Register
The RA4 pin is a Schmitt Trigger input and an open drain output. All
other RA port pins have TTL input levels and full CMOS output drivers. All pins
have data direction bits (TRIS registers) which can configure these pins as output
or input.
Setting a TRISA register bit puts the corresponding output driver in a hi-
impedance mode. Clearing a bit in the TRISA register puts the contents of the
output latch on the selected pin(s).

PORTB and the TRISB Register


PORTB is an 8-bit wide bi-directional port. The corresponding data direction
register is TRISB. Setting a bit in the TRISB register puts the corresponding
output driver in a high-impedance input mode. Clearing a bit in the TRISB
register puts the contents of the output latch on the selected pin(s).
Each of the PORTB pins has a weak internal pull-up. A single control bit can
turn on all the pull-ups. This is performed by clearing bit RBPU (OPTION<7>).
The weak pull-up is automatically turned off when the port pin is configured as
an output. The pull-ups are disabled on a Power-on Reset.

Four of PORTB’s pins, RB7:RB4, have an interrupt on change feature.


Only pins configured as inputs can cause this interrupt to occur (i.e. any
RB7:RB4 pin configured as an output is excluded from the interrupt on change
comparison). The input pins (of RB7:RB4) are compared with the old value
latched on the last read of PORTB. The “mismatch” outputs of RB7:RB4 are

40
OR’ed together to generate the RB Port Change Interrupt with flag bit RBIF
(INTCON<0>).
This interrupt can wake the device from SLEEP. The user, in the interrupt
service routine, can clear the interrupt in the following manner:
a) Any read or write of PORTB. This will end the mismatch condition.
b) Clear flag bit RBIF.
A mismatch condition will continue to set flag bit RBIF. Reading PORTB
will end the mismatch condition, and allow flag bit RBIF to be cleared. This
interrupt on mismatch feature, together with software configurable pull-ups on
these four pins allow easy interface to a keypad and make it possible for wake-
up on key-depression.
The interrupt on change feature is recommended for wake-up on key
depression and operations where PORTB is only used for the interrupt on change
feature. Polling of PORTB is not recommended while using the interrupt on
change feature.

17.4 PORTC and the TRISC Register


PORTC and the TRISC Register PORTC is an 8-bit bi-directional port.
Each pin is individually configurable as an input or output through the TRISC
register. PORTC pins have Schmitt Trigger input buffers. When enabling
peripheral functions, care should be taken in defining TRIS bits for each PORTC
pin. Some peripherals override the TRIS bit to make a pin an output, while other
peripherals override the TRIS bit to make a pin an input.

41
PORTD and the TRISD Register
PORTD is an 8-bit port with Schmitt Trigger input buffers. Each pin is
individually configurable as an input or output.
PORTE and the TRISE Register
PORTE can be up to an 8-bit port with Schmitt Trigger input buffers. Each pin
is individually configurable as an input or output.
On some devices with PORTE, the upper bits of the TRISE register are used for
the Parallel Slave Port control and status bits.

4.2 SOFTWARE REQUIREMEMTS

4.2.2 EMBEDDED C

Embedded C is a set of language extensions for the C Programming language by the


C Standards committee to address commonality issues that exist between C

extensions for different embedded systems. Historically, embedded C programming


requires nonstandard extensions to the C language in order to support exotic
features such as fixed-point arithmetic, multiple distinct memory banks, and basic I/O
operations.

In 2008, the C Standards Committee extended the C language to address these


issues by providing a common standard for all implementations to adhere to. It
includes a number of features not available in normal C, such as, fixed-point
arithmetic, named address spaces, and basic I/O hardware addressing.

Embedded C uses most of the syntax and semantics of standard C, e.g., main()
function, variable definition, datatype declaration, conditional statements (if,
switch, case), loops (while, for), functions, arrays and strings, structures and

42
union, bit operations, macros, etc.

A Technical Report was published in 2004 and a second revision in 2006.

NECESSITY

During infancy years of microprocessor based systems, programs were developed


using assemblers and fused into the EPROMs. There used to be no mechanism to
find what the program was doing. LEDs, switches, etc. were used to check for
correct execution of the program. Some ‘very fortunate’ developers had In-circuit
Simulators (ICEs), but they were too costly and were not quite reliable as well.
As time progressed, use of microprocessor-specific assembly- only as the
programming language reduced and embedded systems moved onto C as the
embedded programming language of choice. C is the most widely used
programming language for embedded processors/controllers. Assembly is also
used but mainly to implement those portions of the code where very high timing
accuracy, code size efficiency, etc. are prime requirements.
As assembly language programs are specific to a processor, assembly language
didn’t offer portability across systems. To overcome this disadvantage, several
high level languages, including C, came up. Some other languages like PLM,
Modula-2, Pascal, etc. also came but couldn’t find wide acceptance. Amongst
those, C got wide acceptance for not only embedded systems, but also for desktop
applications. Even though C might have lost its sheen as mainstream language
for general purpose applications, it still is having a strong-hold in embedded
programming. Due to the wide acceptance of C in the embedded systems, various
kinds of support tools like compilers & cross-compilers, ICE, etc. came up and
all this facilitated development of embedded systems using C. Assembly
language seems to be an obvious choice for programming embedded devices.
However, use of assembly language is restricted to developing efficient codes in

43
terms of size and speed. Also, assembly codes lead to higher software
development costs and code portability is not there. Developing small codes are
not much of a problem, but large programs/projects become increasingly difficult
to manage in assembly language. Finding good assembly programmers
has also become difficult nowadays. Hence high level languages are preferred
for embedded systems programming.
ADVANTAGES
• It is small and simpler to learn, understand, program and debug.
• Compared to assembly language, C code written is more reliable and
scalable, more portable between different platforms.
• C compilers are available for almost all embedded devices in use today, and
there is a large pool of experienced C programmers.
• Unlike assembly, C has advantage of processor-independence and is not
specific to any particular microprocessor/microcontroller or any system. This
makes it convenient for a user to develop programs that can run on most of
the systems.
• As C combines functionality of assembly language and features of high level
languages, C is treated as a ‘middle-level computer language’ or ‘high level
assembly language’.
• It is fairly efficient.
• It supports access to I/O and provides ease of management of large embedded
projects.
• Java is also used in many embedded systems but Java programs require the
Java Virtual Machine (JVM), which consumes a lot of resources. Hence it is
not used for smaller embedded devices.
• Other High-level programming language like Pascal, FORTRAN also
provide some of the advantages.
44
EMBEDDED SYSTEMS PROGRAMMING
Embedded systems programming is different from developing applications on a
desktop computers. Key characteristics of an embedded system, when compared
to PCs, are as follows:
• Embedded devices have resource constraints(limited ROM, limited RAM,
limited stack space, less processing power)
• Components used in embedded system and PCs are different; embedded
systems t y p i c a l l y u s e s smaller, less power consuming components.
Embedded systems are more tied to the hardware.
Two salient features of Embedded Programming are code speed and code size.
Code speed is governed by the processing power, timing constraints, whereas
code size is governed by available program memory and use of programming
language. Goal of embedded system programming is to get maximum features in
minimum space and minimum time.
Embedded systems are programmed using different type of languages:
• Machine Code
• Low level language, i.e., assembly
• High level language like C, C++, Java, Ada, etc.
• Application level language like Visual Basic, scripts, Access, etc.
Assembly language maps mnemonic words with the binary machine codes that
the processor uses to code the instructions. Assembly language seems to be an
obvious choice for programming embedded devices. However, use of assembly
language is restricted to developing efficient codes in terms of size and speed.

45
Also, assembly codes lead to higher software development costs and code
portability is not there. Developing small codes are not much of a problem, but
large programs/projects become increasingly difficult to manage in assembly
language. Finding good assembly programmers has also become difficult
Nowadays. Hence high level languages are preferred for embedded systems
programming.

Use of C in embedded systems is driven by following advantages


• It is small and reasonably simpler to learn, understand, program and debug.
• C Compilers are available for almost all embedded devices in use today, and
there is a large pool of experienced C programmers.
• Unlike assembly, C has advantage of processor-independence and is not
specific to any particular microprocessor/ microcontroller or any system.
This makes it convenient for a user to develop programs that can run on most
of the systems.
• As C combines functionality of assembly language and features of high level
languages, C is treated as a ‘middle-level computer language’ or ‘high level
assembly language’
• It is fairly efficient
• It supports access to I/O and provides ease of management of large embedded
projects.

Many of these advantages are offered by other languages also, but what sets C
apart from others like Pascal, FORTRAN, etc. is the fact that it is a middle level
language; it provides direct hardware control without sacrificing benefits of high
level languages.
Compared to other high level languages, C offers more flexibility because C is

46
relatively small, structured language; it supports low-level bit-wise data
manipulation.
Compared to assembly language, C Code written is more reliable and scalable,
more portable between different platforms (with some changes). Moreover,
programs developed in C are much easier to understand, maintain and debug.
Also, as they can be developed more quickly, codes written in C offers better
productivity. C is based on the philosophy ‘programmers know what they are
doing’; only the intentions are to be stated explicitly. It is easier to write good
code in C & convert it to an efficient assembly code (using high quality
compilers) rather than writing an efficient code in assembly itself. Benefits of
assembly language programming over C are negligible when we compare the ease
with which C programs are developed by programmers.
Objected oriented language, C++ is not apt for developing efficient programs in
resource constrained environments like embedded devices. Virtual functions &
exception handling of C++ are some specific features that are not efficient in
terms of space and speed in embedded systems. Sometimes C++ is used only with
very few features, very much as C.
And, also an object-oriented language, is different than C++. Originally designed
by the U.S. DOD, it didn’t gain popularity despite being accepted as an
international standard twice (Ada83 and Ada95). However, Ada language has
many features that would simplify embedded software development.
Java is another language used for embedded systems programming. It primarily
finds usage in high-end mobile phones as it offers portability across systems and
is also useful for browsing applications. Java programs require Java Virtual
Machine (JVM), which consume lot of resources. Hence it is not used for smaller
embedded devices.
Dynamic C and B# are some proprietary languages which are also being used in
47
embedded applications.
Efficient embedded C programs must be kept small and efficient; they must be
optimized for code speed and code size. Good understanding of processor
architecture embedded C programming and debugging tools facilitate this.

DIFFERENCE BETWEEN C AND EMBEDDED C


Though C and embedded C appear different and are used in different contexts,
they have more similarities than the differences. Most of the constructs are same;
the difference lies in their applications.
C is used for desktop computers, while embedded C is for microcontroller based
applications. Accordingly, C has the luxury to use resources of a desktop PC like
memory, OS, etc. While programming on desktop systems, we need not bother
about memory. However, embedded C has to use with the limited resources
(RAM, ROM, I/Os) on an embedded processor. Thus, program code must fit into
the available program memory. If code exceeds the limit, the system is likely to
crash.
Compilers for C (ANSI C) typically generate OS dependant executables.
Embedded C requires compilers to create files to be downloaded to the
microcontrollers/microprocessors where it needs to run. Embedded compilers
give access to all resources which is not provided in compilers for desktop
computer applications.
Embedded systems often have the real-time constraints, which is usually not there
with desktop computer applications.
Embedded systems often do not have a console, which is available in case of
desktop applications.
So, what basically is different while programming with embedded C is the
mindset; for embedded applications, we need to optimally use the resources,
48
make the program code efficient, and satisfy real time constraints, if any. All this
is done using the basic constructs, syntaxes, and function libraries of ‘C’.

4.2.3 ARDUINO SOFTWARE (IDE)

The Arduino Integrated Development Environment - or Arduino Software (IDE)


- contains a text editor for writing code, a message area, a text console, a toolbar
with buttons for common functions and a series of menus. It connects to the
Arduino and Genuino hardware to upload programs and communicate with them.

WRITING SKETCHES

Programs written using Arduino Software (IDE) are called sketches. These
sketches are written in the text editor and are saved with the file extension .ino.
The editor has features for cutting/pasting and for searching/replacing text. The
message area gives feedback while saving and exporting and also displays errors.
The console displays text output by the Arduino Software (IDE), including
complete error messages and other information. The bottom right hand corner of
the window displays the configured board and serial port. The toolbar buttons
allow you to verify and upload programs, create, open, and save sketches, and
open the serial monitor.

NB: Versions of the Arduino Software (IDE) prior to 1.0 saved sketches with the
extension .pde. It is possible to open these files with version 1.0, you will be
prompted to save the sketch with the .ino extension on save.

Verify Checks your code for errors compiling it.

49
Upload Compiles your code and uploads it to the configured board.
See uploading below for details.

Note: If you are using an external programmer with your board, you
can hold down the "shift" key on your computer when using this icon.
The text will change to "Upload using Programmer"

New Creates a new sketch.

Open Presents a menu of all the sketches in your sketchbook. Clicking


one will open it within the current window overwriting its content.

Note: due to a bug in Java, this menu doesn't scroll; if you need to
open a sketch late in the list, use the File | Sketch book menu instead.

Save Saves your sketch.

Serial Monitor Opens the serial monitor.

Additional commands are found within the five menus: File,


Edit, Sketch, Tools, Help. The menus are context sensitive, which means only
those items relevant to the work currently being carried out are available.

FILE

• New Creates a new instance of the editor, with the bare minimum
structure of a sketch already in place.

50
• Open Allows to load a sketch file browsing through the computer drives
and folders.
• Open Recent Provides a short list of the most recent sketches, ready to be
opened.
• Sketchbook Shows the current sketches within the sketchbook folder
structure; clicking on any name opens the corresponding sketch in a new
editor instance.
• Examples Any example provided by the Arduino Software (IDE) or library
shows up in this menu item. All the examples are structured in a tree that
allows easy access by topic or library.
• Close Closes the instance of the Arduino Software from which it is clicked.
• Save Saves the sketch with the current name. If the file hasn't been named
before, a name will be provided in a "Save as.." window.
• Save as... Allows saving the current sketch with a different name.
• Page Setup It shows the Page Setup window for printing.
• Print Sends the current sketch to the printer according to the settings
defined in Page Setup.
• Preferences Opens the Preferences window where some settings of the
IDE may be customized, as the language of the IDE interface.
• Quit Closes all IDE windows. The same sketches open when Quit was
chosen will be automatically reopened the next time you start the IDE.

EDIT

• Undo/Redo Goes back of one or more steps you did while editing; when
you go back, you may go forward with Redo.

51
• Cut Removes the selected text from the editor and places it into the
clipboard.
• Copy Duplicates the selected text in the editor and places it into the
clipboard.
• Copy for Forum Copies the code of your sketch to the clipboard in a form
suitable for posting to the forum, complete with syntax coloring.
• Copy as HTML Copies the code of your sketch to the clipboard as HTML,
suitable for embedding in web pages.
• Paste Puts the contents of the clipboard at the cursor position, in the
editor.
• Select All Selects and highlights the whole content of the editor.
• Comment/Uncomment Puts or removes the // comment marker at the
beginning of each selected line.
• Increase/Decrease Indent Adds or subtracts a space at the beginning of each
selected line, moving the text one space on the right or eliminating a space
at the beginning.
• Find Opens the Find and Replace window where you can specify text to
search inside the current sketch according to several options.
• Find Next Highlights the next occurrence - if any - of the string specified
as the search item in the Find window, relative to the cursor position.
• Find Previous Highlights the previous occurrence - if any - of the string
specified as the search item in the Find window relative to the cursor
position.

SKETCH

52
• Verify/Compile Checks your sketch for errors compiling it; it will report
memory usage for code and variables in the console area.
• Upload Compiles and loads the binary file onto the configured board
through the configured Port.
• Upload Using Programmer This will overwrite the boot loader on the board;
you will need to use Tools > Burn Boot loader to restore it and be able to
Upload to USB serial port again. However, it allows you to use the full
capacity of the Flash memory for your sketch. Please note that this
command will NOT burn the fuses. To do so a Tools -> Burn Bootloader
command must be executed.
• Export Compiled Binary Saves a .hex file that may be kept as archive or
sent to the board using other tools.
• Show Sketch Folder Opens the current sketch folder.
• Include Library Adds a library to your sketch by inserting #include
statements at the start of your code. For more details, seelibraries below.
Additionally, from this menu item you can access the Library Manager and
import new libraries from .zip files.
• Add File Adds a source file to the sketch (it will be copied from its current
location). The new file appears in a new tab in the sketch window. Files can
be removed from the sketch using the tab menu accessible clicking on the
small triangle icon below the serial monitor one on the right side o the
toolbar.

53
TOOLS
• Auto Format This formats your code nicely: i.e. indents it so that opening
and closing curly braces line up, and that the statements inside curly braces
are indented more.
• Archive Sketch Archives a copy of the current sketch in .zip format. The
archive is placed in the same directory as the sketch.
• Fix Encoding & Reload Fixes possible discrepancies between the editor
char map encoding and other operating systems char maps.
• Serial Monitor Opens the serial monitor window and initiates the exchange
of data with any connected board on the currently selected Port. This
usually resets the board, if the board supports Reset over serial port opening.
• Board Select the board that you're using. See below for descriptions of the
various boards.
• Port This menu contains all the serial devices (real or virtual) on your
machine. It should automatically refresh every time you open the top-level
tools menu.
• Programmer For selecting a hardware programmer when programming a
board or chip and not using the onboard USB-serial connection. Normally
you won't need this, but if you're burning a boot loader to a new
microcontroller, you will use this.
• Burn Bootloader The items in this menu allow you to burna
bootloader onto the microcontroller on an Arduino board. This is not
required for normal use of an Arduino or Genuino board but is useful if you
purchase a new ATmega microcontroller (which normally come without a
bootloader). Ensure that you've selected the correct board from the Boards
menu before burning the bootloader on the target board. This command also
set the right fuses.

54
HELP

Here you find easy access to a number of documents that come with the Arduino
Software (IDE). You have access to Getting Started, Reference, this guide to the
IDE and other documents locally, without an internet connection. The documents
are a local copy of the online ones and may link back to our online website.
Find in Reference This is the only interactive function of the Help menu: it
directly selects the relevant page in the local copy of the Reference for the
function or command under the cursor.

SKETCHBOOK

The Arduino Software (IDE) uses the concept of a sketchbook: a standard place
to store your programs (or sketches). The sketches in your sketchbook can be
opened from the File > Sketchbook menu or from the Open button on the toolbar.
The first time you run the Arduino software, it will automatically create a
directory for your sketchbook. You can view or change the location of the
sketchbook location from with the Preferences dialog.

Beginning with version 1.0, files are saved with a .ino file extension. Previous
versions use the .pde extension. You may still open .pde named files in version
1.0 and later, the software will automatically rename the extension to .ino.Tabs,
Multiple Files, and Compilation

Allows you to manage sketches with more than one file (each of which appears
in its own tab). These can be normal Arduino code files (no visible extension), C
files (.c extension), C++ files (.cpp), or header files (.h).

55
Uploading

Before uploading your sketch, you need to select the correct items from the
Tools > Board and Tools > Port menus. Theboards are described below. On the
Mac, the serial port is probably something like /dev/tty.usbmodem241 (for anUno
or Mega2560 or Leonardo) or /dev/tty.usbserial-1B1 (for a Duemilanove or
earlier USB board), or/dev/tty.USA19QW1b1P1.1 (for a serial board connected
with a Keyspan USB-to-Serial adapter). On Windows, it's probably COM1 or
COM2 (for a serial board) or COM4, COM5, COM7, or higher (for a USB board)
- to find out, you look for USB serial device in the ports section of the Windows
Device Manager. On Linux, it should be /dev/ttyACMx
,/dev/ttyUSBx or similar. Once you've selected the correct serial port and board,
press the upload button in the toolbar or select the Upload item from the File
menu. Current Arduino boards will reset automatically and begin the upload.With
older boards (pre-Diecimila) that lack auto-reset, you'll need to press the reset
button on the board just before starting the upload. On most boards, you'll see the
RX and TX LEDs blink as the sketch is uploaded. The Arduino Software(IDE)
will display a message when the upload is complete, or show an error.

When you upload a sketch, you're using the Arduino bootloader, a small program
that has been loaded on to the microcontroller on your board. It allows you to
upload code without using any additional hardware. The bootloader is active for
a few seconds when the board resets; then it starts whichever sketch was most
recently uploaded to the microcontroller. The bootloader will blink the on-board
(pin 13) LED when it starts (i.e. when the board resets).

56
Libraries

Libraries provide extra functionality for use in sketches, e.g. working with
hardware or manipulating data. To use a library in a sketch, select it from
the Sketch > Import Library menu. This will insert one or more
#include statements at the top of the sketch and compile the library with your
sketch. Because libraries are uploaded to the board with your sketch, they
increase the amount of space it takes up. If a sketch no longer needs a library,
simply delete its #includestatements from the top of your code.

There is a list of libraries in the reference. Some libraries are included with the
Arduino software. Others can be downloaded from a variety of sources or through
the Library Manager. Starting with version 1.0.5 of the IDE, you do can import
a library from a zip file and use it in an open sketch. See these instructions
for installing a third-party library.

To write your own library, see this tutorial.

Third-Party Hardware

Support for third-party hardware can be added to the hardware directory of your
sketchbook directory. Platforms installed there may include board definitions
(which appear in the board menu), core libraries, bootloaders, and programmer
definitions. To install, create the hardware directory, then unzip the third-party
platform into its own sub-directory. (Don't use "arduino" as the sub-directory
name or you'll override the built-in Arduino platform.) To uninstall, simply delete
its directory.

57
For details on creating packages for third-party hardware, see the Arduino IDE
1.5 3rd party Hardware specification.

Serial Monitor

Displays serial data being sent from the Arduino or Genuino board (USB or serial
board). To send data to the board, enter text and click on the "send" button or
press enter. Choose the baud rate from the drop-down that matches the rate passed
to Serial.begin in your sketch. Note that on Windows, Mac or Linux, the Arduino
or Genuino board will reset (rerun your sketch execution to the beginning) when
you connect with the serial monitor.

You can also talk to the board from Processing, Flash, MaxMSP, etc (see the
interfacing page for details).

Preferences

Some preferences can be set in the preferences dialog (found under the Arduino
menu on the Mac, or File on Windows and Linux). The rest can be foundin the
preferences file, whose location is shown in the preference dialog.

58
Language Support

Since version 1.0.1 , the Arduino Software (IDE) has been translated into 30+
different languages. By default, the IDE loads in the language selected by your
operating system. (Note: on Windows and possibly Linux, this is determined by
the locale setting which controls currency and date formats, not by the language
the operating system is displayed in.)

If you would like to change the language manually, start the Arduino Software
(IDE) and open the Preferences window. Next to the Editor Language there is a
dropdown menu of currently supported languages. Select your preferred language
from the menu, and restart the software to use the selected language. If your
operating system language is not supported, the Arduino Software (IDE) will
default to English.

You can return the software to its default setting of selecting its language based
on your operating system by selectingSystem Default from the Editor Language
drop-down. This setting will take effect when you restart the Arduino
59
Software (IDE). Similarly, after changing your operating system's settings, you
must restart the Arduino Software (IDE) to update it to the new default language.

Boards

The board selection has two effects: it sets the parameters (e.g. CPU speed and
baud rate) used when compiling and uploading sketches; and sets and the file and
fuse settings used by the burn bootloader command. Some of the board
definitions differ only in the latter, so even if you've been uploading successfully
with a particular selection you'll want to check it before burning the bootloader.
You can find a comparison table between the various boards here.

Arduino Software (IDE) includes the built in support for the boards in the
following list, all based on the AVR Core. TheBoards Manager included in the
standard installation allows to add support for the growing number of new boards
based on different cores like Arduino Due, Arduino Zero, Edison, Galileo and so
on.

• Arduino Yùn An ATmega32u4 running at 16 MHz with auto-reset, 12


Analog In, 20 Digital I/O and 7 PWM.
• Arduino/Genuino Uno An ATmega328 running at 16 MHz with auto-
reset, 6 Analog In, 14 Digital I/O and 6 PWM.
• ArduinoDiecimilaorDuemilanovew/ ATmega168 An ATmega168 running at 16
MHz with auto-reset.
• Arduino Nano w/ ATmega328 An ATmega328 running at 16 MHz with auto-
reset. Has eight analog inputs.

60
• Arduino/Genuino Mega 2560 An ATmega2560 running at 16 MHz with auto-
reset, 16 Analog In, 54 Digital I/O and 15 PWM.
• Arduino Mega An ATmega1280 running at 16 MHz with auto-reset, 16
Analog In, 54 Digital I/O and 15 PWM.
• Arduino Mega ADK An ATmega2560 running at 16 MHz with auto-reset, 16
Analog In, 54 Digital I/O and 15 PWM.
• Arduino Leonardo An ATmega32u4 running at 16 MHz with auto-reset, 12
Analog In, 20 Digital I/O and 7 PWM.
• Arduino Micro An ATmega32u4 running at 16 MHz with auto-reset, 12
Analog In, 20 Digital I/O and 7 PWM.
• Arduino Esplora An ATmega32u4 running at 16 MHz with auto-reset.
• Arduino Mini w/ ATmega328An ATmega328 running at 16 MHz with auto-
reset, 8 Analog In, 14 Digital I/O and 6 PWM.
• Arduino Ethernet Equivalent to Arduino UNO with an Ethernet shield: An
ATmega328 running at 16 MHz with auto-reset, 6 Analog In, 14 Digital I/O and
6 PWM.
• Arduino Fio An ATmega328 running at 8 MHz with auto-reset. Equivalent to
Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ATmega328, 6 Analog In, 14 Digital
I/O and 6 PWM.
• Arduino BT w/ ATmega328 ATmega328 running at 16 MHz. The bootloader
burned (4 KB) includes codes to initialize the on-board bluetooth module, 6
Analog In, 14 Digital I/O and 6 PWM..
• LilyPad Arduino USB An ATmega32u4 running at 8 MHz with auto- reset, 4
Analog In, 9 Digital I/O and 4 PWM.
• LilyPad Arduino An ATmega168 or ATmega132 running at 8 MHz with auto-
reset, 6 Analog In, 14 Digital I/O and 6 PWM.

61
• ArduinoProor
ProMini(5V,16 MHz)w/ ATmega328 An ATmega328 runningat
16 MHz with auto reset. Equivalent to Arduino Duemilanove or Nano w/
ATmega328; 6 Analog In, 14 Digital I/O and 6 PWM.
• Arduino NG or older w/ ATmega168 An ATmega168 running at 16 MHz without
auto-reset. Compilation and upload is equivalent to Arduino Diecimila or
Duemilanove w/ ATmega168, but the bootloader burned has a slower timeout(and
blinks the pin 13 LED three times on reset); 6 Analog In, 14 Digital I/O and6
PWM.
• Arduino Robot Control An ATmega328 running at 16 MHz with auto- reset.
• Arduino Robot Motor An ATmega328 running at 16 MHz with auto-reset.
• Arduino Gemma An ATtiny85 running at 8 MHz with auto-reset, 1 Analog In,
3 Digital I/O and 2 PWM.

62
CHAPTER 5

CONCLUSION

In conclusion, IoT-based smart home automation systems offer a transformative


solution to modern living, bringing unprecedented levels of convenience, efficiency,
and security to households. By integrating sensors, microcontrollers like the ESP32,
and mobile applications, these systems empower users to remotely monitor and
control various aspects of their homes in real-time. The ability to customize settings,
optimize energy usage, and receive instant notifications enhances comfort and peace
of mind, while also promoting sustainability and cost savings. With their scalability,
adaptability, and potential for seamless integration with other smart devices, IoT-
based smart home automation systems are poised to redefine the concept of home
living, making our lives easier, safer, and more connected than ever before.

63
CHAPTER 6

REFERENCES

1. Roblek, V.; Meško, M.; Krapež, A. A complex view of industry 4.0. SAGE Open
2016, 6. [Google Scholar] [CrossRef] [Green Version]
2. Pereira, A.C.; Romero, F. A review of the meanings and the implications of the
Industry 4.0 concept. Procedia Manuf. 2017, 13, 1206–1214. [Google Scholar]
[CrossRef]
3. Zhong, R.Y.; Xu, X.; Klotz, E.; Newman, S.T. Intelligent Manufacturing in the
Context of Industry 4.0: A Review. Engineering 2017, 3, 616–630. [Google
Scholar] [CrossRef]
4. Bahrin, M.A.K.; Othman, M.F.; Nor Azli, N.H.; Talib, M.F. Industry 4.0: A review
on industrial automation and robotic. J. Teknol. 2016, 78, 137–143. [Google
Scholar] [CrossRef] [Green Version]
5. Segura, Á.; Diez, H.V.; Barandiaran, I.; Arbelaiz, A.; Álvarez, H.; Simões, B.;
Posada, J.; García-Alonso, A.; Ugarte, R. Visual computing technologies to support
the Operator 4.0. Comput. Ind. Eng. 2020, 139, 105550. [Google Scholar]
[CrossRef]
6. Bortolini, M.; Ferrari, E.; Gamberi, M.; Pilati, F.; Faccio, M. Assembly system
design in the Industry 4.0 era: A general framework. IFAC-PapersOnLine 2017, 50,
5700–5705. [Google Scholar] [CrossRef]
7. Kamble, S.S.; Gunasekaran, A.; Gawankar, S.A. Sustainable Industry 4.0
framework: A systematic literature review identifying the current trends and future
perspectives. Process Saf. Environ. Prot. 2018, 117, 408–425. [Google Scholar]
[CrossRef]
8. Kagermann, H.; Wahlster, W.; Helbig, J. Recommendations for Implementing the
Strategic Initiative INDUSTRIE 4.0—Securing the Future of German

64
Manufacturing Industry; National Academy of Science and Engineering: München,
Germany, 2013. [Google Scholar]
9. Lee, J.; Bagheri, B.; Kao, H.A. A Cyber-Physical Systems architecture for Industry
4.0-based manufacturing systems. Manuf. Lett. 2015, 3, 18–23. [Google Scholar]
[CrossRef]
10. Posada, J.; Toro, C.; Barandiaran, I.; Oyarzun, D.; Stricker, D.; De Amicis, R.; Pinto,
E.B.; Eisert, P.; Döllner, J.; Vallarino, I. Visual Computing as a Key Enabling
technology for Industrie 4.0 and industrial internet. IEEE Comput. Graph. Appl.
2015, 35, 26–40. [Google Scholar] [CrossRef]
11. Langfinger, M.; Schneider, M.; Stricker, D.; Schotten, H.D. Addressing security
challenges in industrial augmented reality systems. In Proceedings of the IEEE 15th
International Conference on Industrial Informatics (INDIN), Emden, Germany, 24–
26 July 2017; pp. 299–304. [Google Scholar]
12. Lucke, D.; Constantinescu, C.; Westkämper, E. Smart factory—A step towards the
next generation of manufacturing. In Manufacturing Systems and Technologies for
the New Frontier; Mitsuishi, M., Ueda, K., Kimura, F., Eds.; Springer: London, UK,
2008; pp. 115–118. [Google Scholar]
13. Belkadi, F.; Dhuieb, M.A.; Aguado, J.V.; Laroche, F.; Bernard, A.; Chinesta, F.
Intelligent assistant system as a context-aware decision-making support for the
workers of the future. Comput. Ind. Eng. 2020, 139, 105732. [Google Scholar]
[CrossRef]
14. Kolberg, D.; Zühlke, D. Lean automation enabled by Industry 4.0 technologies.
IFAC-PapersOnLine 2015, 28, 1870–1875. [Google Scholar] [CrossRef]
15. Longo, F.; Nicoletti, L.; Padovano, A. Smart operators in industry 4.0: A human-
centered approach to enhance operators’ capabilities and competencies within the

65
new smart factory context. Comput. Ind. Eng. 2017, 113, 144–159. [Google
Scholar] [CrossRef]
16. Cardoso, L.F.D.S.; Mariano, F.C.M.Q.; Zorzal, E.R. A survey of industrial
augmented reality. Comput. Ind. Eng. 2020, 139. [Google Scholar] [CrossRef]
17. Paszkiel, S. Analysis and Classification of EEG Signals for Brain Computer
Interfaces; Springer: Cham, Switzerland, 2020; ISBN 978-3-030-30580-2. [Google
Scholar]
18. Chi, H.L.; Kang, S.C.; Wang, X. Research trends and opportunities of augmented
reality applications in architecture, engineering, and construction. Autom. Constr.
2013, 33, 116–122. [Google Scholar] [CrossRef]
19. Tatić, D.; Tešić, B. The application of augmented reality technologies for the
improvement of occupational safety in an industrial environment. Comput. Ind.
2017, 85, 1–10. [Google Scholar] [CrossRef]
20. Fraga-Lamas, P.; Fernández-Caramés, T.M.; Blanco-Novoa, Ó.; Vilar-Montesinos,
M.A. A review on industrial augmented reality systems for the Industry 4.0 shipyard.
IEEE Access 2018, 6, 13358–13375. [Google Scholar] [CrossRef]
21. Bower, M.; Howe, C.; McCredie, N.; Robinson, A.; Grover, D. Augmented Reality
in education—cases, places and potentials. Educ. Media Int. 2014, 51, 1–15.
[Google Scholar] [CrossRef]
22. Cheng, K.H.; Tsai, C.C. Affordances of augmented reality in science learning:
Suggestions for future research. J. Sci. Educ. Technol. 2013, 22, 449–462. [Google
Scholar] [CrossRef] [Green Version]
23. Andújar, J.M.; Mejías, A.; Márquez, M.A. Augmented reality for the improvement
of remote laboratories: An augmented remote laboratory. IEEE Trans. Educ.
2011, 54, 492–500. [Google Scholar] [CrossRef]

66
24. Kesim, M.; Ozarslan, Y. Augmented reality in education: Current technologies and
the potential for education. Procedia Soc. Behav. Sci. 2012, 47, 297–302. [Google
Scholar] [CrossRef] [Green Version]
25. Bloem, J.; van Doorn, M.; Duivestein, S.; Excoffier, D.; Mass, R.; van Ommeren, E.
The Fourth Industrial Revolution—Things to Tighten the Link between IT and
OT. Sogeti VINT. 2014. Available
online: https://www.sogeti.com/globalassets/global/special/sogeti-
things3en.pdf (accessed on 9 April 2021).
26. Fantini, P.; Pinzone, M.; Taisch, M. Placing the operator at the centre of Industry
4.0 design: Modelling and assessing human activities within cyber-physical systems.
Comput. Ind. Eng. 2020, 139, 105058. [Google Scholar] [CrossRef]
27. Smit, J.; Kreutzer, S.; Moeller, C.; Carlberg, M. Industry 4.0, Study for the ITRE
Comittee; Policy Department A: Brussels, Belgium, 2016. [Google Scholar]
28. Syberfeldt, A.; Holm, M.; Danielsson, O.; Wang, L.; Brewster, R.L. Support systems
on the industrial shop-floors of the future—operators’ perspective on augmented
reality. Procedia CIRP 2016, 44, 108–113. [Google Scholar] [CrossRef]
29. Masood, T.; Egger, J. Adopting augmented reality in the age of industrial
digitalisation. Comput. Ind. 2020, 115. [Google Scholar] [CrossRef]

67

You might also like