Professional Documents
Culture Documents
+88.8
SERVO MOTOR 1 SERVO MOTOR 2
LCD1
LM016L
ARD1
ON
VDD
VSS
VEE
Reset BTN
RW
RS
D0
D1
D2
D3
D4
D5
D6
D7
E
www.TheEngineeringProjects.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
AREF
13
PB5/SCK
12
PB4/MISO
RESET 11
B1 ~ PB3/MOSI/OC2A
10
~ PB2/OC1B
05 9
~ PB1/OC1A
8
PB0/ICP1/CLKO
ATMEGA328P-PU
1121
7
ANALOG IN
PD7/AIN1
6
A0 ~ PD7/AIN1
5
PC0/ADC0
A1 ~ PD5/T1/OC0B
4
PC1/ADC1
A2 PD4/T0/XCK
3
PC2/ADC2
A3 ~ PD3/INT1/OC2B
2
PC3/ADC3 PD2/INT0
A4 1
PC4/ADC4/SDA PD1/TXD
A5 0
PC5/ADC5/SCL PD0/RXD
ARDUINO UNO
GSM MODULE
RXD
TXD
RTS
BUZ1 CTS
D2 D1
LED-RED LED-GREEN
SUB? R1
BUZZER
1k
CCT001
CODE
#include<LiquidCrystal.h>
#include <Servo.h>
LiquidCrystal lcd(2,3,4,5,6,7);
int temp=0,i;
int stop1=0;
char str[15];
Servo myservo1;
Servo myservo2;
# define led 13
void setup()
pinMode(RED, OUTPUT);
pinMode(GREEN,OUTPUT);
pinMode(BUZZER, OUTPUT);
pinMode(led, OUTPUT);
myservo1.attach(11);
myservo2.attach(12);
lcd.clear();
lcd.print("AUTOMATIC GSM");
lcd.setCursor(5,1);
lcd.print("BASED");
delay(3000);
lcd.clear();
lcd.print("RAILWAY GATE");
lcd.setCursor(2,1);
delay(3000);
gsm_init();
digitalWrite(RED,HIGH);
digitalWrite(GREEN,HIGH);
digitalWrite(BUZZER,HIGH);
lcd.clear();
lcd.setCursor(0,1);
delay(200);
digitalWrite(RED,HIGH);
digitalWrite(GREEN,LOW);
digitalWrite(BUZZER,LOW);
myservo1.write(0);
myservo2.write(0);
Serial.println("AT+CNMI=2,2,2,0,0");
delay(500);
Serial.println("AT+CMGF=1");
delay(1000);
lcd.clear();
lcd.print("PLEASE STOP");
lcd.setCursor(0,1);
delay(1000);
void loop()
if(temp==1)
check();
temp=0;
i=0;
delay(1000);
void serialEvent()
while(Serial.available())
{
if(Serial.find("#A."))
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
while (Serial.available())
char inChar=Serial.read();
str[i++]=inChar;
if(inChar=='*')
temp=1;
return;
void check()
{
lcd.clear();
lcd.print("PLEASE WAIT");
lcd.setCursor(0,1);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
myservo1.write(65);
myservo2.write(65);
delay(200);
digitalWrite(BUZZER, LOW);
digitalWrite(RED,LOW);
digitalWrite(GREEN,HIGH);
GATEOPEN();
lcd.clear();
lcd.setCursor(0,1);
digitalWrite(RED,HIGH);
digitalWrite(GREEN,LOW);
lcd.clear();
lcd.print("PLEASE WAIT");
lcd.setCursor(0,1);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(200);
digitalWrite(BUZZER, HIGH);
myservo1.write(0);
myservo2.write(0);
delay(200);
digitalWrite(BUZZER, LOW);
GATECLOSE();
lcd.clear();
lcd.print("PLEASE STOP");
lcd.setCursor(0,1);
void gsm_init()
lcd.clear();
lcd.print("Finding Module..");
boolean at_flag=1;
while(at_flag)
Serial.println("AT");
while(Serial.available()>0)
if(Serial.find("OK"))
at_flag=0;
delay(1000);
lcd.clear();
lcd.print("Module Connected..");
delay(1000);
lcd.clear();
lcd.print("Disabling ECHO");
boolean echo_flag=1;
while(echo_flag)
Serial.println("ATE0");
while(Serial.available()>0)
if(Serial.find("OK"))
echo_flag=0;
delay(1000);
lcd.clear();
lcd.print("Echo OFF");
delay(1000);
lcd.clear();
lcd.print("Finding Network..");
boolean net_flag=1;
while(net_flag)
Serial.println("AT+CPIN?");
while(Serial.available()>0)
if(Serial.find("+CPIN: READY"))
net_flag=0;
delay(1000);
lcd.clear();
lcd.print("Network Found..");
delay(1000);
lcd.clear();
void init_sms()
Serial.println("AT+CMGF=1");
delay(400);
delay(400);
Serial.println(message);
delay(200);
void send_sms()
Serial.write(26);
void lcd_status()
{ lcd.clear();
lcd.print("Message Sending");
delay(2000);
lcd.clear();
lcd.print("Message Sent");
delay(2000);
lcd.clear();
// lcd.print("System Ready");
return;
void GATEOPEN()
init_sms();
send_sms();
delay(3000);
lcd_status();
void GATECLOSE()
init_sms();
send_sms();
delay(3000);
lcd_status();
}
/*void PUMPON()
init_sms();
send_sms();
delay(3000);
init_smsa();
send_sms();
delay(3000);
lcd_status();
void PUMPOFF()
init_sms();
send_data("THANKU ");
send_sms();
delay(3000);
init_smsa();
send_data("THANKU ");
send_sms();
delay(3000);
lcd_status();
void VOLTAGE()
{ init_sms();
send_sms();
delay(3000);
init_smsa();
send_sms();
delay(3000);
lcd_status();
}*/