Automatic room light controller with visible counter
1. AVR PROJECT REPORT
AUTOMATIC ROOM LIGHT CONTROLLER WITH
BIDIRECTIONAL VISITOR COUNTER
Submitted by:
Mafaz Ahmed 1882-F12
2. Abstract:
This Project “Automatic Room Light Controller with Bidirectional
Visitor Counter” is reliable that takes over the task of controlling the room lights
as well us counting number of persons/visitors in the room very accurately. When
somebody enters into the room then the counter is incremented by one and the
light in the room will be switched ON and when any one leaves the room then the
counter is decremented by one. The light will be only switched OFF until all the
persons in the room go out. The total number of persons inside the room is also
displayed on the LCD. Whenever a person enter a room, he or she have to enter a
password using a keypad interfaced with the microcontroller. Only those enter
the room who know the password.
INTRODUCTION:
The objective of this project is to make a controller based
model to count number of persons visiting particular room and accordingly light
up the room. Here we can use sensor and can know present number of persons.
In today’s world, there is a continuous need for automatic appliances. With the
increase in standard of living, there is a sense of urgency for
developing circuits that would ease the complexity of life. Also if at all one wants
to know the number of people present in room so as not to have congestion, this
circuit proves to be helpful.
Block Diagram:
A
T
M
E
G
A
1
6
ENTER SENSOR
EXIT SENSOR
KEYPAD
LCD
DOOR RELAY
FAN Control
LIGHT CONTOL
3. LIST OF COMPONENTS:
Microcontroller – ATMEGA16
Infrared Sensor
Preset – 4.7K
Reset button switch
Diode – IN4148
Transistor – TIP41
LCD 16x2
Keypad
LED’s
IC-LM324
Microcontroller ATMEGA16:
An Atmel ATmega16 microcontroller in a 40 pin DIP
package. It has 16 KB programmable flash memory, static RAM of 1 KB and
EEPROM of 512 Bytes. There are 32 I/O
(input/output) lines which are divided
into four 8-bit ports designated as
PORTA, PORTB, PORTC and PORTD. It
has various in-built peripherals
like USART, ADC, ATmega16 has
various in-built peripherals alternative
task related to in-built peripherals.
4. LCD
LCD (Liquid Crystal Display) screen is an electronic display module and find a wide range of applications.
A 16x2 LCD display is very basic module and is very commonly used in various devices and circuits. These
modules are preferred over seven segments and other multi segment LEDs. The reasons being: LCDs are
economical; easily programmable; have no limitation of displaying special & even custom
characters (unlike in seven segments), animations and so on.
A 16x2 LCD means it can display 16 characters per line and there are 2 such lines. In this LCD each
character is displayed in 5x7 pixel matrix. This LCD has two registers, namely, Command and Data.
The command register stores the command instructions given to the LCD. A command is an instruction
given to LCD to do a predefined task like initializing it, clearing its screen, setting the cursor position,
controlling display etc. The data register stores the data to be displayed on the LCD. The data is the ASCII
value of the character to be displayed on the LCD.
LM324:
LM324 is a 14pin IC consisting of four independent operational
amplifiers (op-amps)
compensated in a single package.
Op-amps are high gainelectronic
voltage amplifier with differential
input and, usually, a single-ended
output. The output voltage is
many times higher than the
voltage difference between input
terminals of an op-amp.
5. IR Sensor-:
This is the most fundamental type of sensor available in the market. The basic concept
is simple. There is an emitter which emits infrared (IR)
rays. These IR rays are detected by a detector. This
concept is used to make proximity sensor (to check if
something obstructs the path or not, etc), contrast
sensors (used to detect contrast difference between black
and white, like in line follower robots), etc.
TIP41:
The Bipolar Power Transistor is designed for general purpose power amplifier and switching
applications. The TIP41, TIP41A, TIP41B, TIP41C (NPN); and TIP42, TIP42A, TIP42B, TIP42C (PNP)
are complementary devices.
Collector-Emitter Saturation Voltage - VCE(sat) = 1.5 V<subdc< sub="" style="font-family: Verdana, Arial, He
serif;"> (Max) @ IC = 6.0 Adc</subdc<>
Collector-Emitter Sustaining Voltage -VCEO(sus) = 60 Vdc (min) - TIP41A, TIP42A
=80 Vdc (min) - TIP41B, TIP42B
=100 Vdc (min) - TIP41C, TIP42C
High Current Gain Bandwidth Product
fT = 3 MHz (min) @ IC = 500 mAdc
Compact TO-220 AB Package
These are Pb-Free Packages
6. Circuit:
CODE:
#define F_CPU 8000000UL // Define the crystal frequency
#include <avr/io.h> // Standard header file for input and output functionality
#include <util/delay.h> // For delay function
#include <avr/interrupt.h>
7. #define LCD_PRT PORTA //LCD DATA PORT
#define LCD_DDR DDRA //LCD DATA DDR
#define LCD_PIN PINA//LCD DATA PIN
#define LCD_RS 0 //LCD RS
#define LCD_RW 1 //LCD RW
#define LCD_EN 2 //LCD EN //Enable/disable pin for
LCD
#define KEY_PRT PORTC
#define KEY_DDR DDRC
#define KEY_PIN PINC
char ROW=0, COL=0;
char keypad[4][3]= {'1','2','3',
'4','5','6',
'7','8','9',
'*','0','#' };
unsigned char cnt=0;
ISR (TIMER2_OVF_vect)
{if(cnt==0){OCR2 =255;}
if(cnt>=1){OCR2 =191;}
if(cnt>=3){OCR2=127;}
if(cnt>=5){OCR2=0;} }
void lcdcmd(unsigned char cmnd)
{ // LCD command function
LCD_PRT = (LCD_PRT & 0x0F) | (cmnd & 0xF0);
LCD_PRT &= ~ (1<<LCD_RS); //RS = 0 for command
LCD_PRT &= ~ (1<<LCD_RW) ; //RW = 0 for write
LCD_PRT |= (1<<LCD_EN); //EN = 1 for H-to-L
_delay_us (50) ; //wait to make EN wider
LCD_PRT &= ~ (1<<LCD_EN); //EN = 0 for H-to-L
_delay_us(50) ; //wait
LCD_PRT = (LCD_PRT & 0x0F) | (cmnd << 4);
LCD_PRT |= (1<<LCD_EN); //EN = 1 for H-to-L
_delay_us (1) ; //wait to make EN wider
LCD_PRT &= ~ (1<<LCD_EN); } //EN = 0 for H-to-L
void lcddata(unsigned char data) // LCD Data function
{
LCD_PRT = (LCD_PRT & 0X0F) | (data & 0XF0);
LCD_PRT |= (1<<LCD_RS); //RS = 1 for data
LCD_PRT &= ~ (1<<LCD_RW) ; //RW = 0 for write
LCD_PRT |= (1<<LCD_EN); //EN = 1 for H-to-L
9. char key_pad() // key pad function
{
while(1)
{
KEY_PRT=0x7E;
//MAKE FIRST ROW IN KEYPAD TO ZERO
// MAKE ALL COL'S AS HIGH
if((KEY_PIN&0x10)==0){while((KEY_PIN&0x10)==
0);ROW=1;COL=1;break;}
if((KEY_PIN&0x20)==0){while((KEY_PIN&0x20)==
0);ROW=1;COL=2;break;}
if((KEY_PIN&0x40)==0){while((KEY_PIN&0x40)==
0);ROW=1;COL=3;break;}
KEY_PRT=0x7D;
//MAKE SECOND ROW IN KEYPAD TO ZERO
// MAKE ALL COL'S AS HIGH
if((KEY_PIN&0x10)==0){while((KEY_PIN&0x10)==
0);ROW=2;COL=1;break;}
if((KEY_PIN&0x20)==0){while((KEY_PIN&0x20)==
0);ROW=2;COL=2;break;}
if((KEY_PIN&0x40)==0){while((KEY_PIN&0x40)==
0);ROW=2;COL=3;break;}
KEY_PRT=0x7B;
//MAKE THIRD ROW IN KEYPAD TO ZERO
// MAKE ALL COL'S AS HIGH
if((KEY_PIN&0x10)==0){while((KEY_PIN&0x10)==
0);ROW=3;COL=1;break;}
if((KEY_PIN&0x20)==0){while((KEY_PIN&0x20)==
0);ROW=3;COL=2;break;}
if((KEY_PIN&0x40)==0){while((KEY_PIN&0x40)==
0);ROW=3;COL=3;break;}
KEY_PRT=0x77;
//MAKE 4TH ROW IN KEYPAD TO ZERO
// MAKE ALL COL'S AS HIGH
if((KEY_PIN&0x10)==0){while((KEY_PIN&0x10)==
0);ROW=4;COL=1;break;}
if((KEY_PIN&0x20)==0){while((KEY_PIN&0x20)==
0);ROW=4;COL=2;break;}
12. PCB CIRCUIT DESIGN:
CONCLUSION:
Hereby we come to the end of our project “AUTOMATIC ROOM
LIGHT CONTROLLER WITH BIDIRECTIONL VISITOR COUNTER”.
Application of this project
For counting purposes
For automatic room light control
13. Advantages of this project
Low cost
Easy to use
Implement in single door
Future Expansion
By using this circuit and proper power supply we can implement
various applications such as fans, tube lights, etc.
By modifying this circuit and using two relays we can achieve a task
of opening and closing the door
Reference:
. http://www.engineersgarage.com/electronic-components/lm324n-datasheet
http://www.engineersgarage.com/electronic-components/atmega16-
microcontroller