Augmenet Reality 1
Augmenet Reality 1
A PROJECT REPORT
Submitted by
621520104060 VIJAYARAGAVAN S
621520104032 MANIKANDAN R
621520104045 SARAVANAN S
621520104301 SANJAY P
of
BACHELOR OF ENGINEERING
in
MAY 2024
i
ANNA UNIVERSITY :: CHENNAI 600025
BONAFIDE CERTIFICATE
SIGNATURE SIGNATURE
......................... at MCE
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 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
5
4.2.1EMBEDDEDC 42
4.2.2ARDUINOIDE 49
5 CONCLUSION 63
6 REFERENCES 64
V
LISTOF FIGURES
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
2
CHAPTER 2
LITERATURE REVIEW
2.1 LITERATUREREVIEW
Title
Medical Augmented Reality: Definition, Principle Components, Domain
Modeling, and Design-Development-Validation Process
Author
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
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
Author
Year
2022
Description
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
7
CHAPTER 3
SYSTEM IMPLEMENTATION
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
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.
10
3.5 BLOCK DIAGRAM
HEART RATE
SENSOR POWER
SUPPLY
RESPIRATORY PIC
SENSOR MICROCONTROLLER
WIRELESS
TRANSMISSION
PULSE
SENSOR
11
CHAPTER 4
SYSTEM REQUIREMENTS
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:
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.
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
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.
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.
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
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.
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.
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.
Peripheral Features
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.
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.
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
Indirect Addressing
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.
30
16.5.3 Example of direct addressing:
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.
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.
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.
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.
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).
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
PIC Timer1:
• 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").
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).
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
Or you can set all the T1CON register at once as follows: T1CON=0b00000001;
PIC Timer2:
• 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.
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).
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.
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.2 EMBEDDED C
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.
NECESSITY
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.
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.
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.
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"
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.
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.
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.
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
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