Chapter Two: ARDUINO
2.1.1 Meaning of Term Arduino
Arduino is a platform used for making electronics projects. Arduino consist of two
units in whole , one is the physical or hardware programmable circuit board (often
referred to as microcontroller) and second is the piece of software, or IDE (Integrated
development environment) that runs on computer used to write and upload computer code to the physical board.
Arduino works as brain of the projects made on it ,and act as the controller of the project.
Arduino was first made at Ivera interaction Design Institute as an easy tool for fast
connections for students without a background in electronics and programming.
Unlike most older programmable circuits boards the arduino does not require a separate
partof hardware in order to program a new code onto board you can just use a USB cable.
Arduino uses a basic version of c++ , making it simpler to learn the program. Arduino
boards offers a typical form factor that breaks out the function of microcontroller into a
more variable package.
2.1.2 ARDUINO BOARDS
There are different types of arduino boards available according to the processor,
memory, digital I/O, analog I/O used in these boards.
The list of arduino board include :
*Arduino Uno(R3) *Lilypad Arduino *Red Board *Arduino Mega(R3)
Arduino Board Processor Memory Digital I/O Analogue I/O
Arduino Uno 16Mhz ATmega328 2KB SRAM, 32KB flash 14 6 input, 0 output
Arduino Due 84MHz AT91SAM3X8E 96KB SRAM, 512KB flash 54 12 input, 2 output
Arduino Mega 16MHz ATmega2560 8KB SRAM, 256KB flash 54 16 input, 0 output
Arduino Leonardo 16MHz ATmega32u4 2.5KB SRAM, 32KB flash 20 12 input, 0 output
TABLE 2.1(Different Arduino Boards)
The term “open source hardware” in defining of arduino means that these arduino boards
can be modified further for more form factors and functionality. There can be more
derivatives of these boards.
2.2 Board Used (Arduino Uno R3)
2.2.1 Reason To Choose Arduino Uno :
The Arduino Uno R3 is a best choice for us because it is the best for the students to get started initially in this field of Arduino.
It has got everything which are useful for initial start such has 14 digital input/output
pins out of these 14 pins, 6 can be used as PWM output pins. 6 Analog input pins, a
USB connection , Power Jack, Reset Button , Power Led Indicator, TX RX Leds, Main
IC, Voltage ,Regulator.
2.2.2 Components of Arduino
FIGURE 2.1(ARDUINO BOARD)
1) Power USB (USB Connector)
Power USB acts as a way to connect the power source with Arduino . If the power supply is coming from the USB then we use power USB as a connector.
It is also used to load code into Arduino board.
2) Barrel Jack (Power Connector)
Barrel Jack is also used as a way to connect power source with Arduino . If the power
supply is coming from wall power then we use Barrel Jack as a connector.
Do not use the power supply greater than 20 volts. If the supply is greater than 20 volts there is overpowering of Aduino and due to this Arduino can destroy.
Suitable operating voltage for most Arduino boards is between 6 and 12 volts.
The pins are the places on Arduino where we connect the wire coming from breadboard
in order to implement a circuit.
Made up of black plastics headers that allows you to just plug a wire right into the board.
3) Ground Pins (GND)
There are two ground pins on Arduino which are used to ground the circuit we are
making on breadboard.
4) 5V Pin
The 5V pin supplies a power of 5 volt which is used to drive different components
such as sensors.
5) 3.3V Pin
The 3.3V pin supplies a power of 3.3 volt which is used to drive different components
such as sensors.
6) Analog Pins
The Analog pins as shown in Arduino given by “Analog In” from pin A0 to pin A5 on
UNO used only as Analog input pins.
The pins are used to read signal/values from the the Analog sensor and convert it to a digital value that is understandable by microcontroller of Arduino.
Each of analog input pins provide 10 bits of resolution(i.e 1024 different values of sensor).
By default they measure from ground to 5 volts though it is possible to change upper end of this range by using AREF pin.
A4 and A5 are also known as SDA(Serial data) and SCL(Serial clock) pins for TWI
communication using wire library. These are the two wires for communicate using I2C
bus between I2C master and I2C device , and hence communication is know as Two
7) Digital Pins
The Digital pins as shown in Arduino given by “Digital (PWM~)” from pin 0 to pin
13 on UNO can be used in both ways as Digital input pins or Digital output pins. Out of
these 14 pins some are also used as PWM output pins, Interrupts pins(2 and 3) to trigger
interrupt at low values or rising edge or falling edge or due to change in value, pin 13 an
inbuilt led and TX RX pins(used for serial communication).
8) PWM Pins
The PWM output pins denoted by the symbol of “~” with the some of the Digital pins on UNO. These pins are 5, 6, 9, 10, 11 on UNO.
These pins normally acts as Digital pins but can also be used as PWM pins. The pulse
width modulation allow us to vary how much time the signal is high in analog fashion.
The PWM pins are able to simulate analog output.
9) Analog Reference(AREF)
AREF pins used to set an external refrence voltage as an limit for the Analog input
10) Reset Button
The Reset Button on Arduino will act as a switch. When the switch is pressed it will
temporarily connects the Reset pin to the ground and restart any code that is loaded in
arduino at that time.
This pin can be very useful if your code does not repeat but you want to test it multiple
Reset button will reset microcontroller when low.
11) Power Led Indicator
The Power led indicator is the small led located just below the point on the Board
where UNO is written.
This led always light up whenever we plug the Arduino to the Power source. If this light
does not turn on there is a good chance that there is a fault in the circuit.
12) TX RX LEDs
The word TX stands for transmitter and RX stands for receiver. These types of
definition of TX and RX are frequently used in electronics to indicate pins responsible
for serial communication.
In this Arduino board there are two times these TX and RX appear i.e one time by the
digital pins 0 and 1 , and second times on the indicator leds.
These Leds will provide the information when the Arduino is transmitting data or
receiving data by glowing that Led at the moment (for ex : when we are loading new
program onto the board RX led will glow).
13) MAIN IC (Microcontroller IC ATMEGA328)
The black thing with metal legs is know as the main IC also known as ATmega328 is a microcontroller which is the Brain of arduino. The IC is made by ATMEL.
Main focus to understand that the Arduino board includes a microcontroller, and this
microcontroller is what executes the program instruction. If you know this the there is
a difference between Arduino and ATmega328.
The ATmega328 microcontroller is the microcontroller used in Arduino UNO as a
controller. ATmega328 belongs to family AVR , it is an 8-bit device means it has data
bus of 8 bit, internal registers are designed to handle 8 parallel data signals.
ATmega328 has three types of memory:
*Flash memory: 32KB nonvolatile memory.(for storing codes)
*SRAM memory: 2KB volatile memory.(for storing variables used at time of running the code)
*EEPROM memory: 1KB nonvolatile memory.(for storing data that will be needed Arduino is switched on)
?Pin diagram of Atmega328
FIGURE 2.2(ATMEGA 328P PIN DIAGRAM)
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
27 PC4 Analog Input
28 PC5 Analog Input
TABLE 2.2(ATMEGA 328P PIN DESCRIPTION)
?Features Of Atmega328
CPU 8-bit AVR
Number of Pins 28
Operating Voltage (V) +1.8 V TO +5.5V
Number of programmable I/O lines 23
Communication Interface Master/Slave SPI Serial Interface(17,18,19 PINS) Can be used for programming this controller
Programmable Serial USART(2,3 PINS) Can be used for programming this controller
Two-wire Serial Interface(27,28 PINS)Can be used to connect peripheral devices like Servos, sensors and memory devices
JTAG Interface Not available
ADC Module 6channels, 10-bit resolution ADC
Timer Module Two 8-bit counters with Separate Prescaler and compare mode, One 16-bit counter with Separate Prescaler,compare mode and capture mode.
Analog Comparators 1(12,13 PINS)
DAC Module Nil
PWM channels 6
External Oscillator 0-4MHz @ 1.8V to 5.5V
0-10MHz @ 2.7V to 5.5V
0-20MHz @ 4.5V to 5.5V
Internal Oscillator 8MHz Calibrated Internal Oscillator
Program Memory Type Flash
Program Memory or Flash memory 32Kbytes10000 write/erase cycles
CPU Speed 1MIPS for 1MHz
RAM 2Kbytes Internal SRAM
EEPROM 1Kbytes EEPROM
Watchdog Timer Programmable Watchdog Timer with Separate On-chip Oscillator
Program Lock Yes
Power Save Modes Six ModesIdle, ADC Noise Reduction, Power-save, Power-down, Standby and Extended Standby
Operating Temperature -40°C to +105°C(+105 being absolute maximum, -40 being absolute minimum)
TABLE 2.3(FEATURES OF ATMEGA 328P)
14) Crystal Oscillator
The silver colour plate behind barrel jack is known as crystal oscillator. Crystal
oscillator is available with a frequency of 16 MHZ.
In Our project we have main use of this oscillator in calculating time taken by the
level sensor signal in twice leg travel ,first leg before deflection from object and
second leg after deflection from the object.
14) Voltage Regulator
The work of voltage regulator is similar as it name suggest. It will fix the voltage
entering the Arduino. If the voltage greater thanvoltage given by voltage regulator trys to
enter Arduino , it will be stopped by this Voltage regulator.
15) Icsp pin
Icsp pin generally consist of MOSI, MISO, RESET, VCC, GND, SCK all these
things together makes icsp pin which is nothing but AVR (small program header for
The oher name given to iscp pin is SPI(serial peripheral interface). SPI can be taken as
expansion of the output. The output device is a slave to the master of SPI bus which is
used for programming this microcontroller.
2.3 Arduino Advantages
1) Inexpensive: Due to this less cost of Arduino can be used by students easily to make DIY PROJECTS.
2)Less hardware: During the period of code uploading it does not require extra
hardware, uses a boot loader of 0.5 kb of space which allow program to burn directly to
3)Compatibility : Can be used with all types of operating system such as windows, linux etc.
4)Open Source Hardware : This is the thing which help the user to make their individual kit by taking guide with available kit.
5)Open Source Software : This is the thing which help the programmers to merge the
Arduino code with existing programming language libraries.
6)Convenient : All the peoples who are using arduino for the first time it is easy to
understand and people get used to it in less time due to this quality.
Therefore people who are starting from their first project are generally advised to work on Arduino than any other microntroller.
7)Easy Connections : The uno can be connected easily with the computer cpu by using the usb port of cpu and can transfer code by using serial communication.
The serial communication is decided by the transmitter and receiver pins on the Arduino.
2.4 Arduino Architecture
FIGURE 2.3(ARDUINO ARCHITECTURE)
Arduino processor uses the architecture in which the program code and program data
have individual separate memory. There are two memories one is program memory and
the other one is data memory.
The code is stored in the memory which is known as flash program memory and the
data is stored in the data memory.
Atmega 328 has 32kb of flash memory for storing code out of this 32kb , 0.5kb is used
for the storing code by the bootloader, 2kb of SRAM, 1kb of EEPROM and operates
with clock speed of 15MHZ.
2.5 Programming of Arduino
In Arduino is the program can be directly loaded to the device without usng any
hardware programmer to burn the program, this all is done by 0.5kb bootloader which
makes the program to burn into the circuit directly.
All we need for direct loading is Arduino software IDE on which code is written.
?STEPS TO PROGRAM ARDUINO
1) Declaration of variables.
2) Inialization: written in setup() function.
3) Control code: written in loop() function.
4) Sketch is saved with .ino extension.(in sketch book directory).
5) Choose the proper board from tool menu and the serial port number. And then click
6) on the upload button then code uploaded by bootloader onto the microcontroller.
?Arduino Basic Functions
• digitalRead(pin): Reads the digital value at the given pin.
• digitalWrite(pin, value): Writes the digital value to the given pin.
• pinMode(pin, mode): Sets the pin to input or output mode.
• analogRead(pin): Reads and returns the value.
• analogWrite(pin, value): Writes the value to that pin.
• serial.begin(baud rate): Sets the beginning of serial communication by setting the bit rate.
2.6 Making of Arduino
Parts needed to make an Arduino are Breadboard, a Led, a Power Jack, a IC socket, a Microcontroller atmega328, few resistors , 2 capacitors, 2 regulators.
?STEPS TO MAKE
1) First of all put Power Jack and IC socket on board by soldering.
2) Then by using capacitor and regulators make 5v and 3.3 v regulator ckts.
3) Make power connection to MCU pins.
4) The reset pin of IC socket attached with 10k resistor and then to reset puch button.
5) Attach crystal oscillator to pins 9, 10.
6) Connect the Power led.
7) Attach the pins with female headers.
8) Alternative should be kept with 6 male headers to upload program.
9) Upload the code on MCU of readymade Arduino.
Chapter Three : MOISTURE MEASUREMENT
3.1 Soil Moisture Sensor
This sensor can be used to test the moisture of soil, when soil is having water shortage, the module output is at high level, else the output is at low level. By using this sensor one can automatically water the flower plant, or any otherplants requiring automatic watering technique. Module triple output mode, digital output is simple, analog output more accurate, serial output with exact readings.
Has fixed bolt hole, convenient installation.
Threshold level can be configured.
Module triple output mode, digital output is simple, analog output more accurate,
serial output with exact readings.
Operating Voltage +5v dc regulated
Soil moisture Digital value is indicated by out pin
Table 3.1 (pin description of fc-28)
3.2 Using The Sensor
Connect +5v to pin 2 and ground to pin 5 and 6.
Pin 4 and 5 should be connected to particular transmitter and receiver pin of
Output pin may be connected to any port pins and can be used to any application.
Soil moisture sensors measure the water content in soil. A soil moisture probe is made up of multiple soil moisture sensors. One common type of soil moisture sensors in commercial use is a Frequency domain sensor such as a capacitance sensor. Another sensor, the neutron moisture gauge, utilize the moderator properties of water for neutrons.
Soil moisture content may be determined via its effect on dielectric constant by measuring the capacitance between two electrodes implanted in the soil. Where soil moisture is predominantly in the form of free water (e.g., in sandy soils), the dielectric constant is directly proportional to the moisture content. The probe is normally given a frequency excitation to permit measurement of dielectric constant. The readout from the probe is not linear with water content and is influenced by soil type and soil temperature. Therefore, careful calibration is required and long-term stability of the calibration is questionable
In This sensor We are using 2 Probes to be dipped into the Soil As per Moisture We will get
Analog Output variations from 0.60volts – 5volts
Input Voltage 5V DC.
3.4 High Sensitivity Moisture Sensor
Figure 3.2(soil moisture sensor fc 28)
This Moisture Sensor uses Immersion Gold which protects the nickel from oxidation. Electroless nickel immersion gold (ENIG) has several advantages over more conventional (and cheaper) surface platings such as HASL (solder), including excellent surface planarity (particularly helpful for PCB’s with large BGA packages), good oxidation resistance, and usability for untreated contact surfaces such as membrane switches and contact points.
This Moisture Sensor can read the amount of moisture present in the soil surrounding it. It’s a low tech sensor, but ideal for monitoring an urban garden, or your pet plant’s water level. This is a must have tool for a connected garden.
This Moisture Sensor can be used to detect the moisture of soil or judge if there is water around the sensor, let the plants in your garden reach out for human help. They can be very to use, just insert it into the soil and then read it. With help of this sensor, it will be realizable to make the plant remind you: Hey, I am thirsty now, please give me somewater.
This Moisture Sensor uses the two probes to pass current through the soil, and then it reads that resistance to get the moisture level. More water makes the soil conduct electricity more easily (less resistance), while dry soil conducts electricity poorly (more resistance).
It will be helpful to remind you to water your indoor plants or to monitor the soil moisture in your garden. The IO Expansion Shield is the perfect shield to connect this senor to Arduino.
This item have low power consumption, and high sensitivity, which are
the biggest characteristics of this mdoule.
This item can be compatible with Arduino UNOs Arduino mega2560s Arduino ADK etc.
Figure 3.3(SILVER ALUMINIUM PROBES)
1. Working voltage: 5V