Introduction: Automatic Railway Crossing Using Arduino

About: i am an electronic lover who want to make something superb.

This is a simple college project. It automatically turn off the railway gate when train arrival and after train departure.

Step 1: Collect the Material

1. Arduino UNO (Or other)
2. L293d motor driver ic or shild
3. Two IR sensor
4. one Dc geared motor 30 RPM
5. 12volt Power supply (SMPS)
6. A toy train
7. A cardboard (as base)
8. solder
9. hot melt gun
10. A buzzer
11. A wooden or plastic rod for gate
12. some wires, screws

Step 2: Fix the Material on Cardboard

1. fix the track on cardboard as shown in pic or in my youtube video, link shown below
https://youtu.be/1Oc5R_yByNw
you can fix this by using hot melt glue, screw, rubber strip.

2. fix the moter on cardboard as shown in pic by screw or rubber strip.

3. connect a plastic or wooden rod to motor's axis, this is used as gate.

4. fix two IR sensor in both side of gate(motor) and should be at equal distance as shown in my video
https://youtu.be/1Oc5R_yByNw

5. Remove the LED's from circuit of sensor and fix opposite to PHOTO TRANSISTOR and connect by wires


Step 3: Circuit Connection and Wiring

circuit diagram is shown in pic.
1. connect the IR sensor's Vcc and GND pin to Arduino

2. connect the output pins of IR sensors to Arduino's pin no 2 and 3

3. connect the pin no 4 and 5 of Arduino to L293D's input pins as shown in circuit.

4. connect the motor as shown in circuit.

5. connect all the connection as shown in circuit.

6. also connect the buzzer to both motors pins.

Step 4: #program and Code

here code is shown
just copy and paste it

int sensor1=2;
int sensor2=3;
int motor1=4;
int motor2=5;

void setup(){
pinMode(sensor1,INPUT);
pinMode(sensor2,INPUT);
pinMode(motor1,OUTPUT);
pinMode(motor2,OUTPUT);
}

void loop(){
C:
if(sensor1==LOW){
digitalWrite(motor1,HIGH);
digitalWrite(motor2,LOW);
delay(500);
digitalWrite(motor1,HIGH);
digitalWrite(motor2,HIGH);
A:
if(sensor2==LOW){
digitalWrite(motor1,LOW);
digitalWrite(motor2,HIGH);
delay(500);
digitalWrite(motor1,HIGH);
digitalWrite(motor2,HIGH);
delay(1000);
goto C;
}goto A;
if(sensor2==LOW){
digitalWrite(motor1,HIGH);
digitalWrite(motor2,LOW);
delay(500);
digitalWrite(motor1,HIGH);
digitalWrite(motor2,HIGH);
B:
if(sensor1==LOW){
digitalWrite(motor1,LOW);
digitalWrite(motor2,HIGH);
delay(500);
digitalWrite(motor1,HIGH);
digitalWrite(motor2,HIGH);
delay(1000);
goto C;
}
goto B;
}
}
}

here 500ms delay is used because gate is closed in this time. you can change this according to practical response

Step 5: Look My Video for More Information

guys this is my first instructable and here I write this "short and sweet". you can see my video on youtube, if you like then hit a like and subscribe. and give a feedback. Thanks a lot.
https://youtu.be/1Oc5R_yByNw