67% found this document useful (3 votes)
607 views54 pages

Summer Training Report: Embedded Hardware Design

The document summarizes a summer training report on embedded hardware design undertaken at DKOP Labs. It provides details about the training, which focused on topics like microprocessors, microcontrollers, Arduino, and an embedded home automation project. The report describes the objectives, which were to understand embedded systems and apply the knowledge to create a useful project.

Uploaded by

RT
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
67% found this document useful (3 votes)
607 views54 pages

Summer Training Report: Embedded Hardware Design

The document summarizes a summer training report on embedded hardware design undertaken at DKOP Labs. It provides details about the training, which focused on topics like microprocessors, microcontrollers, Arduino, and an embedded home automation project. The report describes the objectives, which were to understand embedded systems and apply the knowledge to create a useful project.

Uploaded by

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

SUMMER TRAINING REPORT

Undertaken at
DKOP Labs
Noida

on
Embedded Hardware Design

Submitted by
Rakshit Tikoo
101406143

Under the Guidance of

Mr. Kirti Karan


Research and Development Department
Embedded Division
DKOP Labs

2015
Electronics and Communication Engineering Department
Thapar University, Patiala
(Declared as Deemed-to-be-University u/s 3 of the UGC Act., 1956)
Post Bag No. 32, Patiala – 147004
Punjab (India)
CERTIFICATION

i
DECLARATION

I hereby declare that the project entitled “Home Automation” is an authentic record of my own
work carried out at DKOP Labs, as requirements of 6 weeks training for the award of degree
of B.E. Electronics & Instrumentation Engineering, Thapar University, Patiala, under the
guidance of Mr. Kirti Karan during the period of 1/6/2016 to 15/7/2016.

(Signature of student)
Name of the student

Date: Roll No.

ii
ACKNOWLEDGEMENT

I would like to thank my training teacher Mr. Kirti Karan for imparting knowledge on Embedded
Systems and for guiding me at every juncture.

I would also like to thank my fellow classmates in the course for providing regular support and inputs.

I am really grateful to the Electronics and Communication Department at Thapar University for
providing guidance and to give us an opportunity to learn beyond the books.

I am really blessed to have really supportive parents to whom I will always be grateful.

And last but not the least I would like to thank all the people publishing content on the internet for
review and research.

iii
ABSTRACT

The report tells what we were taught in the summer training.

It deals with the basic understanding of Embedded Systems, their structure and uses.

It provides information about microcontrollers in detail especially Arduino UNO and ATmega328 and
its difference from a microprocessor. The major goal of the training was the creation of a cost
effective project using the knowledge of microcontrollers.

The use of Arduino IDE (Integrated Development Environment) is extensive in the project and the
report explains the use of AVR-C programming language with a few examples.

The project developed is a simple Home Automation system which uses a user’s phone to wirelessly
switch the appliances of a home on and off.

Then the project section itself deals with a number of things, mainly:

 What is Bootloader?
 Bootloading a Microcontroller
 Arduino as Programmer
 Hardware utilized for basic home automation system

The project provides all the necessary download links along with the android application used. It also
provides the code which could be uploaded to the ATmega328 microcontroller for usage.

The code utilizes the USART (Universal Synchronous Asynchronous Receiver/Transmitter) of the
microchip to receive data from the phone.

The design is explained in a really easy to understand step by step format, from bootloading to the
final upload.

Then the future scope which tells about the possible enhancements to the project have also been
discussed.

iv
TABLE OF CONTENTS:

Chapter 1: INTRODUCTION

1.1 Training Details……...……………………………………………………………………..1

1.2 Course Objectives…….…………………………………………………………………….1

Chapter 2: EMBEDDED SYSTEMS

2.1 What are Embedded Systems?…………….……………………………………………….3

2.2 Types of Embedded Systems……………………………………………………………….4

2.3 Applications of Embedded Systems ………………………………………………………..6

Chapter 3: MICROPROCESSORS AND MICROCONTROLLERS

3.1 Microprocessors……………………...……………………………………………………..8

3.2 Structure of Microprocessors ………………………………………………………………8

3.3 Microcontrollers…….……...………….…………………………………………….……11

3.4 Structure of Microcontrollers……...………………………………………………….…..12

3.5 Microprocessors vs Microcontrollers……………………………………………………..14

Chapter 4: INTRODUCTION TO ARDUINO UNO MICROCONTROLLER

4.1 What is Arduino UNO?……………….……………...………………………………….16


4.2 The ATmega328P……..…………...…………………………………....…………….....17

Chapter 5 : ATMEGA 328 AND AVR-C

5.1 Introduction………………………………………………………….................................21

5.2 Registers......………………………………………………………………………………25
5.3 AVR-C Programming Language...…………………………….………………………….28
5.4 Seven (7) Segment Interfacing……………………………………..……………………..28

v
5.5 Setting ATmega328 to get Digital Input…………………………………………………..29

Chapter 6: PROJECT

6.1 Introduction…………………………………………………………………..…………...31
6.2 Hardware Used.…………………………………………………………………………...31

6.3 Software Utilized………….………………………………………………………………34

6.4 Setup………………………………………………………………………………………35

6.5 The Project………………………………………………………………………………..39

Chapter 7: FUTURE SCOPE AND CONCLUSION

7.1 Future Scope……………………………………………………………………………...44

7.2 Conclusion………………………………………………………………………………..45

REFERENCES.....................................................................................................................................46

vi
LIST OF IMPORTANT CONTENTS

Acronyms used-

1. µP – MicroProcessor
2. µC – MicroController
3. CPU – Central Processing Unit
4. ALU – Arithmetic Logic Unit
5. ROM – Read Only Memory
6. RAM – Random Access Memory
7. EEPROM – Electrically Erasable Programmable ROM
8. SRAM – Static RAM
9. DRAM – Dynamic RAM
10. I/O –Input/Output
11. MIPS – Million Instructions Per Second
12. IDE – Integrated Development Environment
13. USART – Universal Synchronous-Asynchronous Receiver/Transmitter
14. DIY – Do It Yourself

Download links-

 Arduino IDE v1.6.9 : https://www.arduino.cc/download_handler.php


 Arduino IDE v1.01 : https://drive.google.com/open?id=0BxrP3wW7fUS9bGdNV3FyQXpyaHc
 App : https://drive.google.com/open?id=0BxrP3wW7fUS9U1JFY2pmYURrSjA

vii
CHAPTER 1

INTRODUCTION

1.1 Training Details

The course of Embedded Systems at DKOP Labs was a comprehensive course divided into various
parts for the ease of access and thorough understanding. The course mainly focused on the basics of
microprocessors and microcontrollers. The major topics that we dealt with included-

 Arduino UNO – Basics


 Interfacing Arduino UNO with-
o 7 Segment Display
o Motors and motor drivers
o LCD Display
o Bluetooth Module
 Arduino to Arduino Communication(SPI and Wire)
 Multitasking
 Serial Communication
 Introduction to AVR-C
 Explanation of registers
 Timers and Interrupts
 Basics of python
 Basics of using a Raspberry Pi with python

The course also included basics of computer science like data structures and algorithms which helped
in the programming part of the course.

All the topics were covered in a step by step procedure along with lab experiments which helped us
cement the topics being taught and also gave us practical knowledge. All the queries were handled
with care and were clarified.

1.2 Course Objective

1
The objective of the course was to give an overview of Embedded Systems and their use. Our goal was
the understanding of devices like microcontrollers and microprocessors, learning their use, and gaining
knowledge in detail about their programming so that we could apply that knowledge in a useful manner.
We were given examples about how these technologies could be applied for the ease of our day to day
life in the form of various DIY projects. We were also given examples of the use of such devices in
professional environments. These were done to explain us the use of what we learned in various places.

The final and the most important objective of the course was for the students to apply the knowledge
they gained in a useful project of their own.

Therefore the project created by me was ‘Home Automation’ using a Bluetooth module, relays and the
Atmel Atmega328 microcontroller.

2
CHAPTER 2

EMBEDDED SYSTEMS

2.1 What are Embedded Systems?

An embedded system is a special-purpose system in which the computer is completely encapsulated by


the device it controls. Unlike a general-purpose
computer, such as a personal computer, an
embedded system performs pre-defined tasks,
usually with very specific requirements. Since
the system is dedicated to a specific task, design
engineers can optimize it, reducing the size and
cost of the product. Embedded systems are
often mass-produced, so the cost savings may
be multiplied by millions of items.
A close-up of the SMSC LAN91C110 (SMSC 91x) chip,
an embedded Ethernet chip

Embedded systems is a combination of computer hardware and software. As with any electronic system,
this system requires a hardware platform and that is built with a

Microprocessor or Microcontroller. The Embedded


system hardware includes elements like user interface,
Input / Output (I/O) interfaces, display and memory,
etc. Generally, an embedded system comprises power
supply, processor, memory, timers,
serial communication ports and system application
specific circuits.

Embedded system software is written in a high-level


language, and then compiled to achieve a specific Embedded System
function within a non-volatile memory in the
hardware. Embedded system software is designed to keep in view of three limits. They are availability
of system memory and processor speed. When the system runs endlessly, there is a need to limit the
power dissipation for events like run, stop and wake up.

3
Embedded systems are managed by single or multiple processing cores in the form of
microcontrollers or digital signal processors (DSP), field-programmable gate arrays (FPGA),
application-specific integrated circuits (ASIC) and gate arrays. These processing components are
integrated with components dedicated to handling electric and/or mechanical interfacing.

An embedded system's key feature is dedication to specific functions that typically require strong
general-purpose processors. For example, router and switch systems are embedded systems, whereas a
general-purpose computer uses a proper OS for routing functionality. However, embedded routers
function more efficiently than OS-based computers for routing functionalities.

Commercial embedded systems range from digital watches and MP3 players to giant routers and
switches. Complexities vary from single processor chips to advanced units with multiple processing
chips.

2.2 Types of Embedded Systems

Embedded systems can be classified into different types based on performance, functional requirements
and performance of the microcontroller.

Embedded systems are classified into four categories based on their performance and functional
requirements:

 Standalone embedded systems


 Real time embedded systems
 Networked embedded systems
 Mobile embedded systems

Embedded Systems are classified into three types based on the performance of the microcontroller such
as:

 Small scale embedded systems


 Medium scale embedded systems
 Sophisticated embedded systems

4
Types of Embedded Systems

STANDALONE EMBEDDED SYSTEMS-

Standalone embedded systems do not require a host system like a computer, it works by itself. It takes
the input from the input ports either analog or digital and processes, calculates and converts the data
and gives the resulting data through the connected device-Which either controls, drives or displays the
connected devices. Examples for the stand alone embedded systems are mp3 players, digital cameras,
video game consoles, microwave ovens and temperature measurement systems.

REAL TIME EMBEDDED SYSTEMS-

A real time embedded system is defined as, a system which gives a required o/p in a particular time.
These types of embedded systems follow the time deadlines for completion of a task. Real time
embedded systems are classified into two types such as soft and hard real time systems.

NETWORKED EMBEDDED SYSTEMS-

These types of embedded systems are related to a network to access the resources. The connected
network can be LAN, WAN or the internet. The connection can be any wired or wireless. This type of
embedded system is the fastest growing area in embedded system applications. The embedded web
server is a type of system wherein all embedded devices are connected to a web server and accessed
and controlled by a web browser. Example for the LAN networked embedded system is a home
security system wherein all sensors are connected and run on the TCP/IP protocol.

MOBILE EMBEDDED SYSTEMS-

Mobile embedded systems are used in portable embedded devices like cell phones, mobiles, digital
cameras, mp3 players and personal digital assistants, etc. The basic limitation of these devices is the
other resources and limitation of memory.

5
SMALL SCALE EMBEDDED SYSTEMS-

These types of embedded systems are designed with a single 8 or 16-bit microcontroller that may even
be activated by a battery. For developing embedded software for small scale embedded systems, the
main programming tools are an editor, assembler, cross assembler and integrated development
environment (IDE).

MEDIUM SCALE EMBEDDED SYSTEMS-

These types of embedded systems design with a single or 16 or 32 bit microcontroller, RISCs or DSPs.
These types of embedded systems have both hardware and software complexities. For developing
embedded software for medium scale embedded systems, the main programming tools are C, C++, and
JAVA, Visual C++, and RTOS, debugger, source code engineering tool, simulator and IDE.

SOPHISTICATED EMBEDDED SYSTEMS-

These types of embedded systems have enormous hardware and software complexities that may need
ASIPs, IPs, PLAs, scalable or configurable processors. They are used for cutting-edge applications that
need hardware and software Co-design and components which have to assemble in the final system.

2.3 Applications of Embedded Systems

Embedded systems are used in different applications like automobiles, telecommunications, smart
cards, missiles, satellites, computer networking and digital consumer electronics.

EMBEDDED SYSTEMS IN AUTOMOBILES AND IN TELECOMMUNICATIONS-

 Motor and cruise control system


 Body or Engine safety
 Entertainment and multimedia in car
 E-Com and Mobile access
 Robotics in assembly line
 Wireless communication
 Mobile computing and networking

EMBEDDED SYSTEMS IN SMART CARDS, MISSILES AND SATELLITES-

 Security systems
 Telephone and banking
 Defence and aerospace
 Communication

6
EMBEDDED SYSTEMS IN PERIPHERALS AND COMPUTER NETWORKING-

 Displays and Monitors


 Networking Systems
 Image Processing
 Network cards and printers

EMBEDDED SYSTEMS IN CONSUMER ELECTRONICS-

 Digital Cameras
 Set top Boxes
 High Definition TVs
 DVDs

7
CHAPTER 3

MICROPROCESSORS AND MICROCONTROLLERS

3.1 Microprocessors

A microprocessor (µP) is a computer processor which incorporates the functions of


a computer's central processing unit (CPU) on a single integrated circuit (IC), or at most a few
integrated circuits. The microprocessor is a multipurpose, clock
driven, register based, programmable electronic device which accepts digital or binary data as input,
processes it according to instructions stored in its memory,
and provides results as output. Microprocessors contain both
combinational logic and sequential digital logic.
Microprocessors operate on numbers and symbols represented
in the system. The integration of a whole CPU onto a
single chip or on a few chips greatly reduced the cost of
processing power. Integrated circuit processors are produced
in large numbers by highly automated processes resulting in a
low per unit cost. Single-chip processors increase reliability as
Intel 4004, the first commercial
microprocessor there are many fewer electrical connections to fail. As
microprocessor designs get faster, the cost of manufacturing a
chip (with smaller components built on a semiconductor chip the same size) generally stays the same.

3.2 Structure of Microprocessors


The microprocessor or CPU reads each instruction
from the memory, decodes it and executes it. It
processes the data as required in the instructions. The
processing is in the form of arithmetic and logical
operations. The data is retrieved from memory or
taken from an input device and the result of
processing is stored in the memory or delivered to an
appropriate output device, all as per the instructions.
To perform all these functions, the µP
Architecture of Microprocessor

8
(microprocessor) incorporates various functional units in an appropriate manner. Such an internal
structure or organizational structure of µP, which determines how it operates, is known as its
architecture.

A typical microprocessor architecture is shown in Figure above. The various functional units are as
follows:

BUSSES-

Microcomputer, like all computers, manipulates binary information. The binary information is
represented by binary digits, called bits. Microcontroller operates on a group of bits which are referred
to as a word. The number of bits making-µP a word varies with the µP. Common word sizes are 4, 8,
12 and 16 bits (µPs with 32 bit-word and higher have also of late entered the market). Another binary
terms that will be of interest in subsequent discussions are the byte and the nibble, which represent a
set of 8 bits and 4 bits, respectively. Figure 1.2 shows busses interconnecting various blocks. These
busses allow exchange of words between the blocks. A bus has a wire or line for each bit and thus
allows exchange of all bits of a word in parallel. The processing of bits in the µP is also in parallel.
The busses can thus be viewed as data highways. The width of a bus is the number of signal lines that
constitute the bus. The figure shows for simplicity three busses for distinct functions. Over the address
bus, the µP transmits the address of that I/O device or memory locations which it desires to access.
This address is received by all the devices connected to the processor, but only the device which has
been addressed responds. The data bus is used by the µP to send and receive data to and from
different devices (I/O and memory) including instructions stored in memory. Obviously the address
bus is unidirectional and the data bus is bi-directional. The control bus is used for transmitting and
receiving control signals between the µP and various devices in the system.

ARTHIMETIC LOGIC UNIT (ALU)-

The arithmetic-logic unit is a combinational network that performs arithmetic and logical operations
on the data.

INTERNAL REGISTERS-

A number of registers are normally included in the microprocessor. These are used for temporary
storage of data, instructions and addresses during execution of a program. Those in the Intel 8085
microprocessor are typical and are described below:

1. Accumulator (Acc) or Result Register-


This is an 8-bit register used in various arithmetic and logical operations. Out of the two
operands to be operated upon, one comes from accumulator (Acc), whilst the other one may
be in another internal register or may be brought in by the data bus from the main memory.

9
Upon completion of the arithmetic/logical operation, the result is placed in the accumulator
(replacing the earlier operand). Because of the later function, this register is also called as
result register.

2. General Purpose Registers or Scratch Pad Memory-


There are six general purpose 8-bit registers that can be used by the programmer for a variety
of purposes. These registers, labelled as B, C, D, E, H and L, can be used individually (e.g.,
when operation on 8-bit data is desired) or in pairs (e.g., when a 16-bit address is to be
stored). Only B-C, D-E and H-L pairs are allowed.

3. Instruction Register (IR)-


This 8-bit register stores the next instruction to be executed. At the proper time this stored
word (instruction) is fed to an instruction decoder which decodes it and supplied appropriate
signals to the control unit. When the execution has been accomplished the new word in the
instruction register is processed.

4. Program Counter (PC)-


This is a 16-bit register which holds the address of the next instruction that has to be fetched
from the main memory and loaded into the instruction register. The program controlling the
operation is stored in the main memory and instructions are retrieved from this memory
normally in order. Therefore, normally the address contained in the PC is incremented after
each instruction is fetched. However, certain classes of instruction can modify the PC so that
the programmer can provide for branching away from the normal program flow. Examples
are instructions in the ‘jump’ and ‘call subroutine’ groups.

5. Stack Pointer (SP)-


This is also a 16-bit register and is used by the programmer to maintain a stack in the memory
while using subroutines.

6. Status Register or Condition Flags-


A status register consisting of a few flip-flops, called as condition flags (in 8085 the number
of flags is five) is used to provide indication of certain conditions that arise during arithmetic
and logical operations. These are:
‘zero’ Flag is set if result of instruction is 0.
‘sign’ Set if MSB of result is 1.
‘parity’ Set if result has even parity.
‘carry’ Set if carry or borrow resulted.

10
‘auxiliary carry’ Set if instruction caused a carry out of bit 3 and
into
into bit 4 of the resulting value.

7. Dedicated Registers-
Several other registers are incorporated in the µP for its internal operation. They cannot be
accessed by the programmer and hence do not concern much a µP user.

INSTRUCTION DECODER CONTROL UNIT-

It decodes each instruction and under the supervision of a clock controls the external and internal
units ensuring correct logical operation of the system.

3.3 Microcontrollers

Microcontroller (µC) is a single chip microcomputer made through VLSI fabrication. A


microcontroller also called an embedded controller because the microcontroller and its support circuits
are often built into, or embedded in, the devices they control. A microcontroller is available in different
word lengths like microprocessors (4bit,8bit,16bit,32bit,64bit and 128 bit microcontrollers are available
today).

One can find microcontrollers in all kinds of electronic


devices these days. Any device that measures, stores,
controls, calculates, or displays information must have a
microcontroller chip inside. The largest single use for
microcontrollers is in automobile industry (microcontrollers
widely used for controlling engines and power controls in
automobiles). You can also find microcontrollers inside
keyboards, mouse, modems, printers, and other peripherals.
A Microcontroller
In test equipments, microcontrollers make it easy to add
features such as the ability to store measurements, to create and store user routines, and to display
messages and waveforms. Consumer products that use microcontrollers include digital camcorders,
optical players, LCD/LED display units, etc. And these are just a few examples.

1. A microcontroller basically contains one or more following components:

11
 Central processing unit(CPU)
 Random Access Memory)(RAM)
 Read Only Memory(ROM)
 Input/output ports
 Timers and Counters
 Interrupt Controls
 Analog to digital converters
 Digital analog converters
 Serial interfacing ports
 Oscillatory circuits

2. A microcontroller internally consists of all features required for a computing system and functions
as a computer without adding any external digital parts in it.
3. Most of the pins in the microcontroller chip can be made programmable by the user.
4. A microcontroller has many bit handling instructions that can be easily understood by the
programmer.
5. A microcontroller is capable of handling Boolean functions.
6. Higher speed and performance.
7. On-chip ROM structure in a microcontroller provides better firmware security.
8. Easy to design with low cost and small size.

3.4 Structure of Microcontrollers


The basic structure and block diagram of a microcontroller is shown:

12
 CPU-
CPU is the brain of a microcontroller .CPU is responsible for fetching the instruction, decodes
it, and then finally executed. CPU connects every part of a microcontroller into a single system.
The primary function of CPU is fetching and decoding instructions. Instruction fetched from
program memory must be decoded by the CPU.

 MEMORY-
The function of memory in a microcontroller is same as microprocessor. It is used to store data
and program. A microcontroller usually has a certain amount of RAM and ROM (EEPROM,
EPROM, etc.) or flash memories for storing program source codes.

 PARALLEL I/O PORTS-


Parallel input/output ports are mainly used to drive/interface various devices such as LCD’S,
LED’S, printers, memories, etc. to a microcontroller.

 SERIAL PORTS-
Serial ports provide various serial interfaces between microcontroller and other peripherals like
parallel ports.

 TIMERS/COUNTERS-
This is the one of the useful function of a microcontroller. A microcontroller may have more
than one timer and counters. The timers and counters provide all timing and counting functions
inside the microcontroller. The major operations of this section are perform clock functions,
modulations, pulse generations, frequency measuring, making oscillations, etc. This also can
be used for counting external pulses.

 ANALOG TO DIGITAL CONVERTER (ADC)-


ADC converters are used for converting the analog signal to digital form. The input signal in
this converter should be in analog form (e.g. sensor output) and the output from this unit is in
digital form. The digital output can be used for various digital applications (e.g. measurement
devices).

 DIGITAL TO ANALOG CONVERTER (DAC)-

13
DAC perform reversal operation of ADC conversion. DAC convert the digital signal into
analog format. It usually used for controlling analog devices like DC motors, various drives,
etc.

 INTERRUPT CONTROL-
The interrupt control used for providing interrupt (delay) for a working program .The interrupt
may be external (activated by using interrupt pin) or internal (by using interrupt instruction
during programming).

 SPECIAL FUNCTIONING BLOCK-


Some microcontrollers used only for some special applications (e.g. space systems and
robotics) these controllers containing additional ports to perform such special operations. This
considered as special functioning block.

3.5 Microprocessors vs Microcontrollers

Microprocessor and Microcontroller

14
Microprocessors Microcontrollers

It is only a general purpose computer


1 CPU It is a micro computer itself

Memory, I/O ports, timers, interrupts All are integrated inside the microcontroller
2 are not available inside the chip chip

This must have many additional digital Can function as a micro computer without any
3 components to perform its operation additional components.

4 Systems become bulkier and expensive. Make the system simple, economic and compact

Not capable for handling Boolean


5 functions Handling Boolean functions

6 Higher accessing time required Low accessing time

7 Very few pins are programmable Most of the pins are programmable

Very few number of bit handling


8 instructions Many bit handling instructions

Widely Used in modern PC and


9 laptops widely in small control systems

E.g. INTEL 8086,INTEL Pentium series INTEL8051,89960,PIC16F877

15
CHAPTER 4

INTRODUCTION TO ARDUINO UNO MICROCONTROLLER

4.1 What is Arduino UNO?

Arduino/Genuino Uno is a microcontroller board based on the ATmega328P. It has 14 digital


input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs, a 16 MHz quartz crystal,
a USB connection, a power jack, an ICSP header and a reset button. It contains everything needed to
support the microcontroller.

Arduino UNO

TECHNICAL SPECS-

Microcontroller ATmega328P

Operating Voltage 5V

Input Voltage (recommended) 7-12V

16
Input Voltage (limit) 6-20V

Digital I/O Pins 14 (of which 6 provide PWM output)

PWM Digital I/O Pins 6

Analog Input Pins 6

DC Current per I/O Pin 20 mA

DC Current for 3.3V Pin 50 mA

32 KB (ATmega328P)
Flash Memory
of which 0.5 KB used by bootloader

SRAM 2 KB (ATmega328P)

EEPROM 1 KB (ATmega328P)

Clock Speed 16 MHz

Length 68.6 mm

Width 53.4 mm

Weight 25

4.2 The ATmega328P

The Arduino UNO is based on the ATmega 328P microcontroller developed by Atmel. It is a high-
performance picoPower 8-bit AVR RISC-based microcontroller combines 32KB ISP flash memory
with read-while-write capabilities, 1024B EEPROM, 2KB SRAM, 23 general purpose I/O lines, 32
general purpose working registers, three flexible timer/counters with compare modes, internal and
external interrupts, serial programmable USART, a byte-oriented 2-wire serial interface, SPI serial
port, a 6-channel 10-bit A/D converter (8-channels in TQFP and QFN/MLF packages), programmable
watchdog timer with internal oscillator, and five software selectable power saving modes. The device
operates between 1.8-5.5 volts.
By executing powerful instructions in a single clock cycle, the device achieves throughputs
approaching 1 MIPS per MHz, balancing power consumption and processing speed.

17
KEY PARAMETERS-

PARAMETER VALUE
Flash (kBytes): 32 kBytes
Pin Count: 32
Max. Operating Freq. (MHz): 20 MHz
CPU: 8-bit AVR
# of Touch Channels: 16
Hardware QTouch Acquisition: No
Max I/O Pins: 23
Ext Interrupts: 24
USB Speed: No
USB Interface: No

PIN DESCRIPTION-

18
Pin Number Description Function

1 PC6 Reset

2 PD0 Digital Pin (RX)

3 PD1 Digital Pin (TX)

4 PD2 Digital Pin

5 PD3 Digital Pin (PWM)

6 PD4 Digital Pin

7 Vcc Positive Voltage (Power)

8 GND Ground

9 XTAL 1 Crystal Oscillator

10 XTAL 2 Crystal Oscillator

11 PD5 Digital Pin (PWM)

12 PD6 Digital Pin (PWM)

13 PD7 Digital Pin

14 PB0 Digital Pin

15 PB1 Digital Pin (PWM)

16 PB2 Digital Pin (PWM)

17 PB3 Digital Pin (PWM)

18 PB4 Digital Pin

19 PB5 Digital Pin

20 AVCC Positive voltage for ADC (power)

21 AREF Reference Voltage

22 GND Ground

23 PC0 Analog Input

24 PC1 Analog Input

25 PC2 Analog Input

26 PC3 Analog Input

19
27 PC4 Analog Input

28 PC5 Analog Input

ARDUINO IDE-

The Arduino Integrated Development Environment is a text editor software specially designed for the
programming of Arduino boards. It is based on the C++ language and uses various predefined
functions and libraries for the easy programming of Arduino Boards.

20
CHAPTER 5

ATMEGA 328 AND AVR-C

5.1 Introduction

The ATmega328 is a single-chip microcontroller created by Atmel in the megaAVR family. It is


similar to ATmega328P (picoPower) in almost all respects.

The Atmel 8-bit AVR RISC-based microcontroller combines 32 kB ISP flash memory with read-
while-write capabilities, 1 kB EEPROM, 2 kB SRAM, 23 general purpose I/O lines, 32 general
purpose working registers, three flexible timer/counters with compare modes, internal and
external interrupts, serial programmable USART, a byte-oriented 2-wire serial interface, SPI serial
port, 6-channel 10-bit A/D converter (8-channels in TQFP and QFN/MLF packages), programmable
watchdog timer with internal oscillator, and five software selectable power saving modes. The device
operates between 1.8-5.5 volts. The device achieves throughput approaching 1 MIPS per MHz.

KEY PARAMETERS-

Parameter Value

CPU type 8-bit AVR

Performance 20 MIPS at 20 MHz[2]

Flash memory 32 kB

SRAM 2 kB

EEPROM 1 kB

21
Pin count 28-pin PDIP, MLF, 32-pin TQFP, MLF[2]

Maximum operating frequency 20 MHz

Number of touch channels 16

Hardware QTouch Acquisition No

Maximum I/O pins 26

External interrupts 24

USB Interface No

USB Speed No

PIN DESCRIPTION-

22
It is same as ATmega328p-

Pin Number Description Function

1 PC6 Reset

2 PD0 Digital Pin (RX)

3 PD1 Digital Pin (TX)

4 PD2 Digital Pin

5 PD3 Digital Pin (PWM)

6 PD4 Digital Pin

7 Vcc Positive Voltage (Power)

8 GND Ground

9 XTAL 1 Crystal Oscillator

10 XTAL 2 Crystal Oscillator

11 PD5 Digital Pin (PWM)

12 PD6 Digital Pin (PWM)

13 PD7 Digital Pin

14 PB0 Digital Pin

15 PB1 Digital Pin (PWM)

16 PB2 Digital Pin (PWM)

17 PB3 Digital Pin (PWM)

18 PB4 Digital Pin

19 PB5 Digital Pin

20 AVCC Positive voltage for ADC (power)

21 AREF Reference Voltage

22 GND Ground

23 PC0 Analog Input

23
24 PC1 Analog Input

25 PC2 Analog Input

26 PC3 Analog Input

27 PC4 Analog Input

28 PC5 Analog Input

PROGRAMMING-

It has got two programming modes – Parallel and Serial.

Parallel program mode[2]

Programming
Pin Name I/O Function
signal

High means the MCU is ready for a new command,


RDY/BSY PD1 O
otherwise busy.

OE PD2 I Output Enable (Active low)

WR PD3 I Write Pulse (Active low)

BS1 PD4 I Byte Select 1 (“0” = Low byte, “1” = High byte)

XA0 PD5 I XTAL Action bit 0

XA1 PD6 I XTAL Action bit 1

PAGEL PD7 I Program memory and EEPROM Data Page Load

24
BS2 PC2 I Byte Select 2 (“0” = Low byte, “1” = 2nd High byte)

DATA PC[1:0]:PB[5:0] I/O Bi-directional data bus (Output when OE is low)

Programming mode is entered when PAGEL (PD7), XA1 (PD6), XA0 (PD5), BS1 (PD4) is set to
zero.[2] RESET pin to 0V and VCC to 0V. VCC is set to 4.5 - 5.5V. Wait 60 μs, and RESET is set to
11.5 - 12.5 V. Wait more than 310 μs. Set XA1:XA0:BS1: DATA = 100 1000 0000, pulse XTAL1 for
at least 150 ns, pulse WR to zero. This starts the Chip Erase. Wait until RDY/BSY (PD1) goes high.
XA1:XA0:BS1: DATA = 100 0001 0000, XTAL1 pulse, pulse WR to zero. This is the Flash write
command. And so on...

Serial Programming[2]

Symbol Pins I/O Description

MOSI PB3 I Serial data in

MISO PB4 O Serial Data out

SCK PB5 I Serial Clock

Serial data to the MCU is clocked on the rising edge and data from the MCU is clocked on the falling
edge. Power is applied to VCC while RESET and SCK are set to zero. Wait for at least 20 ms and then
the Programming Enable serial instruction 0xAC, 0x53, 0x00, 0x00 is sent to the MOSI pin. The
second byte (0x53) will be echoed back by the MCU.

5.2 Registers

Registers are temporary memory units which can store data in bits. A single register can store a single
bit binary data (0 or 1). Microcontrollers and various other devices use registers to both store data and
use that data for special purposes. Some examples of registers in ATmega 328 include:

25
26
27
5.3 AVR-C Programming Language

It is programming language based on the C language developed to program the Atmel AVR. It helps
us to program AVR microcontrollers much easily as compared to the much tedious Assembly and
Machine Languages. It utilizes the inbuilt registers of the AVR for programming.

The further sections will show some examples of AVR-C language.

5.4 Seven (7) Segment Interfacing

A seven segment display is a set of seven diodes arranged


in the way shown which is used to display decimal
numbers. They are of two types: Common Anode and
Common Cathode.

SETUP-

28
CODE-

#include <avr/io.h>
#define F_CPU 2000000L
#include<avr/delay.h>
int num[10]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF};
int i = 0;
int main(void)
{ DDRD = 0xFF;
/* Replace with your application code */
while (1)
{
PORTD = num[i];
i++;
_delay_ms(500);
if(i==10)
i = 0;
}
}

5.5 Setting ATmega328 to get Digital Input

The setup includes the use of a push button to switch ON and OFF an led.

SETUP-

CODE-

29
#include <avr/io.h>
#define F_CPU 2000000L

int main(void)
{ DDRD = 0x01;
PORTD = 0x02;
/* Replace with your application code */
while (1)
{
if(!(PIND & 0x02))
{PORTD |= 0x01;}
else
{PORTD &= 0xFE;}
}
}

5.6 Interrupts

An event external to the currently executing process that causes a change in the normal flow of
instruction execution; usually generated by hardware devices external to the CPU. Interrupts are used
by microcontrollers to execute various tasks such as Pulse Width Manipulation (PWM), Analog
Inputs, changing duty cycles, Serial Communication, etc.

It's nearly impossible to find compilers that agree on how to handle interrupt code. Since the C
language tries to stay away from machine dependent details, each compiler writer is forced to design
their method of support.

In the AVR-GCC environment, the vector table is predefined to point to interrupt routines with
predetermined names. By using the appropriate name, your routine will be called when the
corresponding interrupt occurs. The device library provides a set of default interrupt routines, which
will get used if you don't define your own.

Patching into the vector table is only one part of the problem. The compiler uses, by convention, a set
of registers when it's normally executing compiler-generated code. It's important that these registers,
as well as the status register, get saved and restored. The extra code needed to do this is enabled by
tagging the interrupt function with __attribute__((signal)).

30
CHAPTER 6

PROJECT

6.1 Introduction

The title of the project is ‘Home Automation’. It is a project utilizing a major part of the knowledge
gained in the training course. It consists of a wireless switching mechanism which one can use to
switch ON and OFF the appliances at their homes. It utilizes the Bluetooth of a phone to control the
appliances. The mobile application used for this project was developed with specialized purpose of
naming each switch of the switching (relay) mechanism. The goal was to create a decent and cost
effective project.

6.2 Hardware used

The basic hardware components used for developing this project include:

 1x ATmega 328 Microcontroller


 1x Bluetooth Module (HC-05)
 1x 8 Relay Module (5V)
 1x Crystal Oscillator (16 MHz)
 Programmer (Arduino UNO)
 2x Ceramic Capacitors (22 pF) and
 1x Resistor(10Kohm)
 External Power Source (5V)

ATMEGA 328 MICROCONTROLLER-

It is the brain of the project. It receives data from the Bluetooth Module Serially and then uses it to
switch the relays ON and OFF. The microcontroller was chosen as it is cheaper than the Pico power
(ATmega328p) version. Furthermore the microcontroller was unbooted make it cheaper.

31
BLUETOOTH MODULE-

The Bluetooth Module used is model HC-05. It is an easy


to use Bluetooth SPP (Serial Port Protocol) module,
designed for transparent wireless serial connection setup.
Serial port Bluetooth module is fully qualified Bluetooth
V2.0+EDR (Enhanced Data Rate) 3Mbps Modulation
with complete 2.4GHz radio transceiver and baseband. It
uses CSR Bluecore 04-External single chip Bluetooth
system with CMOS technology and with AFH(Adaptive
Frequency Hopping Feature). It has the footprint as small
as 12.7mmx27mm. HC-05 Bluetooth Module

Features-

 Typical -80dBm sensitivity


 Up to +4dBm RF transmit power
 Low Power 1.8V Operation ,1.8 to 3.6V I/O 
 PIO control
 USART interface with programmable baud rate
 With integrated antenna
 With edge connector
 Default Baud rate: 38400, Data bits:8, Stop bit:1,Parity:No parity, Data control: has.
Supported baud rate: 9600,19200,38400,57600,115200,230400,460800.
 Given a rising pulse in PIO0, device will be disconnected.
 Status instruction port PIO1: low-disconnected, high-connected;
 PIO10 and PIO11 can be connected to red and blue led separately. When master and slave are
paired, red and blue led blinks 1time/2s in interval, while disconnected only blue led blinks
2times/s.
 Auto-connect to the last device on power as default.
 Permit pairing device to connect as default.
 Auto-pairing PINCODE:”0000” as default
 Auto-reconnect in 30 min when disconnected as a result of beyond the range of connection.

RELAY MODULE-

32
The project utilizes an 8 channel relay board for switching. It contains 8 x 5V relays rated at
10A/250V AC (DC 30V/10A). Each
relay is switched on/off by an opto-
isolated digital input that can be
connected directly to a microcontroller
output pin. It only requires a voltage of
approx. 1.0V to switch the inputs on but
can handle input voltages up to 5V. This
makes it ideal for both 5V and 3.3V
devices.

Features-

 8x 5V relays
 Each relay rated at 10A / 250V
 Each relay consumes approx. 30mA when switched on (at 5V)
 Power supply 5V
 Fully Opto-isolated input signals
 Input signals from 1.0V to 5V
 Individual indicator LEDS for each relay
 Power On LED indicator
 Isolated Input GND
 4x mounting holes
 Board Size: 14cm x 5.5cm

A supply voltage of 5V should be connected to the VCC and GND pins. This is used to power the
relay coils when they are switched on. A power Indicator LED indicates power is supplied.DO NOT
apply power the wrong way round. This can seriously damage the components on the board

Opto-isolated input signals should be supplied between the COM pin (signal GND) and each input
pin. There is a shorting link which links the signal ground to the power ground. If you want full
isolation for your microcontroller from potentially noisy relays, this link can be removed.

CRYSTAL OSCILLATOR-

33
A crystal oscillator is an electronic oscillator circuit that uses the
mechanical resonance of a vibrating crystal of piezoelectric
material to create an electrical signal with a
precise frequency.[1][2][3] This frequency is commonly used to keep
track of time, as in quartz wristwatches, to provide a stable clock
signal for digital integrated circuits, and to stabilize frequencies
16 MHz crystal oscillator
for radio transmitters and receivers.

Even though the ATmega328 has an internal oscillator of 8MHz, the project utilizes an external
quartz crystal of 16MHz as the clock.

PROGRAMMER-

A microcontroller programmer or
microcontroller burner is a hardware device
accompanied with software which is used to
transfer the machine language code to the
microcontroller/EEPROM from the PC. The
compiler converts the code written in
languages like assembly, C, java etc. to machine language code (which is understandable by the
machines/microcontrollers) and stores it in a hex file. A microcontroller programmer acts as an
interface between the PC and the target controller. The API/software of the programmer reads data
from the hex file stored on the PC and feeds it into the controller’s memory. The target controller on
which the program needs to be burned is placed on the programmer using a ZIP socket. The software
transfers the data from the PC to the hardware using serial, parallel or USB port.

The programmer generally contains a microcontroller which is pre-programmed to take data from the
PC and program the target controller. The programmer burns the target controller using any of the
protocols like SPI, parallel interfacing, I2C/TWI or CAN. The speed of burning depends on the way
of programmer is interfaced with PC and the protocols used to burn the target controller.

The project utilizes an Arduino for both programming and bootloading.

6.3 Software Utilized

ARDUINO IDE-

The Arduino IDE was used to program and bootload the µC (ATmega 328). The IDE used was
version 1.6.9 (Download Link: https://www.arduino.cc/download_handler.php) for bootloading and

34
version 1.01 (Download Link:
https://drive.google.com/open?id=0BxrP3wW7fUS9bGdNV3FyQXpyaHc) for programming.

MIT APP INVENTOR-

The application for the project was developed with the help of MIT app inventor. App Inventor for
Android is an open-source web application originally provided by Google, and now maintained by
the Massachusetts Institute of Technology (MIT).

It allows newcomers to computer programming to create software applications for


the Android operating system (OS). It uses
a graphical interface, very similar
to Scratch and the StarLogo TNG user
interface, which allows users to drag-and-
drop visual objects to create an application
that can run on Android devices. In
creating App Inventor, Google drew upon
significant prior research in educational
computing, as well as work done within
Google on online development environments.

6.4 Setup

BOOTLOADING-

A bootloader is a program that runs in the microcontroller to be programmed. It receives new program
information externally via some communication means and writes that information to the program
memory of the processor. Without the bootloader the microcontroller will not be programmed.

35
1).To bootload first make the connections as follows-

2).After this download Optiloader file from this link: https://github.com/WestfW/OptiLoader

An optiloader is a header file along with an Arduino file which helps us bootload a number of
microcontrollers.

3).Download the contents and put them in a folder named optiLoader and save that folder in the
directory where your Arduino programs are saved.

36
4). Open the optiLoader.ino file in Arduino IDE 1.6.9 and upload it to the Arduino UNO. If the
connections are correct as shown above then pressing the reset button of the Arduino UNO will
bootload the ATmega328.

UPLOADING THE CODE-

For uploading the code we use a modified version of Arduino IDE 1.01 (Download link given above).
This version detects ATmega328p to be same as ATmega328.

1).To upload a code open the IDE (v 1.6.9) and select Arduino ISP code from examples and then
upload it.

37
This code turns the Arduino into an ISP (In Serial Programmer) which could be used to upload codes.

2).Then open the modified IDE (v1.01) and select “Arduino UNO” as board and “Arduino as ISP” as
Programmer from the tools menu.

38
4). Keeping the connections same as in the bootloader, press Shift and then click on the upload button
which uploads the code with Arduino as ISP.

6.5 The Project

THE CONNECTIONS-

The connections look as shown in the figure-

39
The connections are-

1. Microcontroller
1.1. Pin 20 , Pin 7 to +5V
1.2. Pin 7 , Pin 22 to GND
1.3. Pins PB5 to PD6 to the relay
2. Relay
2.1. Pin Vcc to +5V
2.2. Pin Gnd to GND
2.3. Rest to the microcontroller
3. Bluetooth Module
3.1. +5V to +5V
3.2. Gnd to GND
3.3. Tx to Pin 2 of microcontroller
3.4. Rx to Pin 3 of microcontroller

THE APP-

The app can be downloaded from here:


https://drive.google.com/open?id=0BxrP3wW7fUS9U1JFY2pmYURrSjA

The app sends two types of strings. One string is to set the relay name and the other is to switch them
on and off.

The string to set a name is send in the configuration:

Com1:EXAMPLE STRING

The number is the relay switch number. You can set up to 9 switches.

To switch a relay on and off send the commands:

EXAMPLE STRING ON - To switch it ON

EXAMPLE STRING OFF – To switch it OFF

There is a reset button in the app too which can be used to send all 9 command string together.

THE CODE-

The code utilizes the USART (Universal Synchronous Asynchronous Receiver/Transmitter) hardware
of the microcontroller. The bits are set according to the USART registers of ATmega328. The device
receives one character at a time which the code converts into a string. The code distinguishes between
the two types of strings (Command and Configuration) and works accordingly.

40
The Code is as follows –

#include <avr/io.h>
#include<avr/interrupt.h>
#include<util/delay.h>
#include <stdio.h>
#define F_CPU 16000000L
#define BUAD 9600
#define BRC ((F_CPU/16/BUAD)-1) //Buad rate calculator
#define RX_BUFFER_SIZE 128
String voice;
char rxBuffer[RX_BUFFER_SIZE];//A character array made to receive characters
uint8_t rxReadPos = 0;
uint8_t rxWritePos = 0;
char getChar(void);// To get character from rxBuffer
char peekChar(void);// To read character from rxBuffer
int m = 0, n;
String com[9];// A String array to store names of relays

int main(void)
{

UBRR0H = (BRC >> 8); // Upper register


UBRR0L = BRC; // Lower register
UCSR0B = (1 << RXEN0) | (1 << RXCIE0);//Enabling receiver + Interrupt
UCSR0C = (1 << UCSZ00) | (1 << UCSZ01); //Setting character size
DDRB = 0xFF;//Setting all pins as Output
DDRD = 0xFF;//Setting all pins as Output
PORTB = 0xFF;//Setting all pins as High
PORTD = 0xFF;//Setting all pins as High
voice = "";
sei();
while (1)
{
char k = getChar();
char l = peekChar();
_delay_ms(20);
voice += k;
while (l != '\0')
{
k = getChar();
l = peekChar();
_delay_ms(20);
voice += k;
}

if (voice[0] == 'C' && voice[1] == 'o' && voice[2] == 'm')// Setting the
command array
{ m = 2;
int x = (int)voice[3];
n = 5;

41
com[x - 48 - 1] = "";
while (n < voice.length())
{
com[x - 48 - 1] += voice[n];
n++;
}
}
if (m == 1)// Referring the command array to do task
{
if (voice == com[0] + " ON")
PORTB &= ~(1 << PORTB5);
if (voice == com[0] + " OFF")
PORTB |= (1 << PORTB5);
if (voice == com[1] + " ON")
PORTB &= ~(1 << PORTB4);
if (voice == com[1] + " OFF")
PORTB |= (1 << PORTB4);
if (voice == com[2] + " ON")
PORTB &= ~(1 << PORTB3);
if (voice == com[2] + " OFF")
PORTB |= (1 << PORTB3);
if (voice == com[3] + " ON")
PORTB &= ~(1 << PORTB2);
if (voice == com[3] + " OFF")
PORTB |= (1 << PORTB2);
if (voice == com[4] + " ON")
PORTB &= ~(1 << PORTB1);
if (voice == com[4] + " OFF")
PORTB |= (1 << PORTB1);
if (voice == com[5] + " ON")
PORTB &= ~(1 << PORTB0);
if (voice == com[5] + " OFF")
PORTB |= (1 << PORTB0);
if (voice == com[6] + " ON")
PORTD &= ~(1 << PORTD7);
if (voice == com[6] + " OFF")
PORTD |= (1 << PORTD7);
if (voice == com[7] + " ON")
PORTD &= ~(1 << PORTD6);
if (voice == com[7] + " OFF")
PORTD |= (1 << PORTD6);
if (voice == com[8] + " ON")
PORTD &= ~(1 << PORTD5);
if (voice == com[8] + " OFF")
PORTD |= (1 << PORTD5);
}

voice = "";
}
}
ISR(USART_RX_vect)// Interrupt Vector .Fired on when new data is incoming
{

42
rxBuffer[rxWritePos] = UDR0;
rxWritePos++;
if (rxWritePos >= RX_BUFFER_SIZE)
rxWritePos = 0;
m = 1;

}
char getChar(void)
{
char ret = '\0';
if (rxReadPos != rxWritePos)
{
ret = rxBuffer[rxReadPos];
rxReadPos++;
if (rxReadPos >= RX_BUFFER_SIZE)
rxReadPos = 0;
}
return ret;
}
char peekChar(void)
{
char ret = '\0';
if (rxReadPos != rxWritePos)
{
ret = rxBuffer[rxReadPos];
}
return ret;
}

This is the working of the Project.

43
CHAPTER 7

FUTURE SCOPE AND CONCLUSION

7.1 Future Scope

Automation is the future. There will be automation everywhere, industries, markets, schools and
homes. The goal of automation is to make our lives easier. Therefore it is necessary to take a first step
in the process.

Even though the project does not exactly work automatically, it does automatically recognize and do
the tasks it has been ordered to do and thus makes it easier for us to control the appliances at our
homes.

1).The first step to improve the project would be to add a “true” automation feature in it. That could a
counter which would automatically switch on and off the appliances in a room when there are one or
more people in it. It could be achieved using PIR sensors.

A passive infrared sensor (PIR sensor) is an electronic sensor that


measures infrared (IR) light radiating from objects in its field of view.
They are most often used in PIR-based motion detectors.

For basic functionality would only require two of these sensors but a
better system would be to use 4-6 sensors. PIR Sensor

2).The second step would be to use analog output which could be used to control the output of
different appliances like fan speed or light intensity.

3).The third step would be an automatic internal environment


manager. This would require a number of sensors like temperature
sensors, humidity sensor, pressure sensor, light sensor, etc. The
device would take data from all these sensors and use a predefined
algorithm to set the appliances like A.C.s, fans, lights etc. to such a
value which would be the most suitable for that environment. The
most difficult part would be the algorithm as it would need to be
Pressure Sensor
user friendly and one should be able to modify it to suit ones needs.

44
4).The final step would to connect it to the internet so that one could control it from anywhere in the
world.

Even though there are many advantages of the project, there are negatives too. First and foremost is
the security issues which would have to be dealt with various measures. The second would be the
misuse and too much dependency on the system which would have to be monitored personally.

7.2 Conclusion

It is said that the best way to learn anything is by doing it. This project was a great example. It helped
to learn about a number of things, especially about microcontrollers, which was the main goal to
begin with.

Along with it the training was able to guide me to a whole world of possibilities including both DIY
and industrial applications.

In the end one should remember that even though knowledge is important, one should never forget
about security and ethics which helps us in building reliable and acceptable technology for the benefit
of mankind.

45
REFERENCES

Internet Links-

 https://en.wikipedia.org/wiki/Embedded_system
 http://www.engineersgarage.com/articles/embedded-systems
 https://en.wikipedia.org/wiki/Microcontroller
 https://en.wikipedia.org/wiki/Microprocessor
 http://www.circuitstoday.com/basics-of-microcontrollers
 http://www.engineersgarage.com/tutorials/difference-between-microprocessor-and-
microcontroller
 https://www.arduino.cc/en/Tutorial/ArduinoISP
 https://learn.sparkfun.com/tutorials/installing-an-arduino-bootloader
 http://www.instructables.com/id/Burning-the-Bootloader-on-ATMega328-using-Arduino-/
 https://github.com/WestfW/OptiLoader
 http://appinventor.mit.edu/explore/ai2/tutorials.html

Books-

 THE AVR MICROCONTROLLER AND EMBEDDED SYSTEMS: Using Assembly and C,


Muhammad Ali Mazidi, Sarmad Naimi, Sepehr Naimi, Prentice Hall

46

You might also like