page contents Verification: 3e521cb8638cc050

Design and Construction of an Automatic Gate by using VB.net and Arduino Microcontroller

Introduction: In this project, we control the home gate from pc. This project is very important for security purposes. Here you control a home gate from a remote and safe place or from the control room.

 This project is also used in a hydropower project where you can control the water flow coming from forebay to pin stock or from pin stock to turbine the butterfly valve. You can also control the flow of water to the spillway.
There are lots of applications of the Auto Door project in industries.

Problems statement:

                         If we don’t use Auto door technology then we have lots of problems you can’t control it automatically you will be going for it and manually control it which is a time waste and hard work. Also, you can’t control it precisely these errors will interrupt the whole system.

Objectives:

          In this project, we control the home Gate from PC. The software used for HMI is VB.NET.  We send data from vb.net HMI to Arduino microcontroller  .the Arduino receives the data serially And sending a command to the output pins which control the relays .the relays are further connected to the motor of the gate.
      In this project, we use two computer languages the 1st one is  Visual Basic Dot Net (VB.NET)  and the 2nd language is C++. In VB.NET we use the Animation library. In this animation, we animated the door to watch the output result continuously. The C++ language is used in the Arduino Command Line Interface (CLI). From this language, we control the whole circuits.
Both languages will be serially connected.

 Scope and limitation:

                                    The aim of the design of an automatic Door mechanism for domestic use successfully realized.
             The system worked according to specification and proved quite satisfactory. It is relatively affordable, durable and efficient. Hence, it gives room for ease of operation and a high level of reliability.
Finally, it reduces the stress associated with the manual Door controller, which requires that somebody go to physically switch them on and off. 

Components used:

               There are so many components used in our project. Names of these components are mentioned below,
  • Voltage Regulator    lm7805,lm7812
  • Arduino Uno R3
  • Relay
  • Diodes
  • Tip122 Transistors
  • LED
  • Resistors
  • capacitors
  • Power supply
  • Gate (CdRom  used as a gate)
  • Computer
  • PCB(perf board)

  CD ROM (AS A GATE):*

                           We use a computer CD ROM as a gate  .which  can open or close from the PC.the gate (CD ROM) is connected to the microcontroller and the microcontroller is connected to the pc.

Programming VB.NET   HMI:

 Public Class Form1
    Private g As Graphics
    Private xPosition As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Height = 550
        Me.Width = 800
        Me.Show()
        g = Me.CreateGraphics
        Me.BackColor = Color.Aqua
        Timer3.Start()
         End Sub
    Private Sub DrawNewRectangle1(ByVal y As Integer, ByVal x As Integer)   REM DOOR OPENING RECTANGLE
        Me.Refresh()
        g.DrawRectangle(Pens.Black, 130, 50, 400, 400)
        g.FillRectangle(Brushes.Yellow, 130, 50, 400, x)
        g.FillEllipse(Brushes.Green, 7, 184, 30, 30)
        g.DrawRectangle(Pens.Black, 120, 50, 10, 30)
        g.DrawRectangle(Pens.Black, 120, 420, 10, 30)
        If x <= 7 Then
            g.FillRectangle(Brushes.Green, 120, 50, 10, 30)
            g.FillEllipse(Brushes.Black, 7, 184, 30, 30)
            Button1.ForeColor = Color.Black
            REM  Timer1.Stop()
        End If
    End Sub
    Private Sub DrawNewRectangle2(ByVal y As Integer, ByVal x As Integer)   REM DOOR CLOSING RECTANGLE
        ‘g.DrawRectangle(Pens.Black, 130, 50, 400, 400)
        g.FillRectangle(Brushes.Red, 130, 50, 400, x)   REM  DOOR CLOSE FILL RECTANGLE
        ‘g.DrawRectangle(Pens.Black, 120, 420, 10, 30) REM(X,Y,W,H)
        ‘g.DrawRectangle(Pens.Black, 120, 50, 10, 30)
        If x >= 400 Then
            Button3.ForeColor = Color.Black
        End If
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick     REM DOOR OPENING TIMER
        If xPosition < 7 Then
            REM  xPosition = 7
 
            ‘If CheckBox1.Checked = True Then
            My.Computer.Audio.Play(My.Resources.b, AudioPlayMode.Background)
            ‘Else
            g.FillRectangle(Brushes.Green, 120, 50, 10, 30)
            Timer1.Stop()
            Button3.Enabled = True
            ‘End If
        End If
            xPosition -= 15.5
            DrawNewRectangle1(400, xPosition)       REM DOOR OPENING RECTANGLE
 
    End Sub
    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick      REM DOOR CLOSING TIMER
        If xPosition > 370 Then
            REM xPosition = 400  355
            My.Computer.Audio.Play(My.Resources.b, AudioPlayMode.Background)
            g.FillEllipse(Brushes.Black, 7, 184, 30, 30)        REM RGB BLACK
            g.FillRectangle(Brushes.Green, 120, 420, 10, 30)    REM LIMIT SWITCH 2 GREEEN
            Timer2.Stop()
            Button1.Enabled = True
        End If
        xPosition += 15.5                                   REM   30.6    15.5
        DrawNewRectangle2(400, xPosition)
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Timer1.Start()
        Timer2.Stop()
        g.FillEllipse(Brushes.Green, 7, 184, 30, 30)
        Button1.ForeColor = Color.Green
        REM Button1.BackColor = Color.Violet
        My.Computer.Audio.Play(My.Resources.a, AudioPlayMode.Background)
        Button3.Enabled = False
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Timer2.Stop()
        Timer1.Stop()
        g.FillEllipse(Brushes.Black, 7, 184, 30, 30)
        Button1.ForeColor = Color.Black
        Button3.ForeColor = Color.Black
        My.Computer.Audio.Play(My.Resources.b, AudioPlayMode.Background)
        Button1.Enabled = True
        Button3.Enabled = True
    End Sub
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Timer2.Start()
        Timer1.Stop()
        Me.Refresh()
        g.FillEllipse(Brushes.Red, 7, 184, 30, 30)    REM  RGB   Red
        Button3.ForeColor = Color.Red
        My.Computer.Audio.Play(My.Resources.a, AudioPlayMode.Background)
        Button1.Enabled = False
    End Sub
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Me.Hide()
        Form3.Show()
    End Sub
    Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
        g.DrawRectangle(Pens.Black, 120, 50, 10, 30)    REM limit switch 1
        g.DrawRectangle(Pens.Black, 120, 420, 10, 30)    REM limit switch 2
        g.DrawRectangle(Pens.Black, 130, 50, 400, 400)    REM door rec
        g.DrawEllipse(Pens.Black, 7, 184, 30, 30)        REM rgb
        Button1.BackColor = Color.BlueViolet
        Button2.BackColor = Color.BlueViolet
        Button3.BackColor = Color.BlueViolet
        Button4.BackColor = Color.BlueViolet
    End Sub
End Class
 
 
 
 
Imports System.IO.Ports
Public Class Form2
    Private mySerialPort As New SerialPort
    Dim instance As SerialPort
    Private g As Graphics
    Private yPosition As Integer
    Dim a As Integer
    Dim b As Integer
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Call CommPortSetup()
        Me.Height = 550
        Me.Width = 800
        Me.Show()
        g = Me.CreateGraphics
        Me.BackColor = Color.Aqua
        Timer1.Start()
        Dim i As Integer
        Try
            mySerialPort.Open()
        Catch ex As Exception
            i = MessageBox.Show(ex.Message)
        End Try
        If i = 1 Then
            Form1.Show()
            Me.Dispose()
        End If
        g.DrawRectangle(Pens.Black, 130, 50, 400, 400)
        g.DrawEllipse(Pens.Black, 7, 184, 30, 30)
    End Sub
    Private Sub CommPortSetup()
        With mySerialPort
            ‘a = ComboBox1.Text
            ‘b = ComboBox1.Text
            .PortName = “COM” & Module1.uname1
            .BaudRate = 9600                            REM Module1.uname2                      
            .DataBits = 8
            .Parity = Parity.None
            .StopBits = StopBits.One
            .Handshake = Handshake.None
        End With
    End Sub
    Private Sub DrawNewRectangle1(ByVal x As Integer, ByVal y As Integer)
        Me.Refresh()
        g.DrawRectangle(Pens.Black, 130, 50, 400, 400)
        g.FillRectangle(Brushes.Yellow, 130, 50, 400, y)
        g.FillEllipse(Brushes.Green, 7, 184, 30, 30)
        g.DrawRectangle(Pens.Black, 120, 50, 10, 30)
        g.DrawRectangle(Pens.Black, 120, 420, 10, 30)
        If x <= 7 Then
 
            g.FillRectangle(Brushes.Green, 120, 50, 10, 30)
            g.FillEllipse(Brushes.Black, 7, 184, 30, 30)
            Button1.ForeColor = Color.Black
            REM  Timer1.Stop()
        End If
    End Sub
    Private Sub DrawNewRectangle2(ByVal x As Integer, ByVal y As Integer)
        g.DrawRectangle(Pens.Black, 130, 50, 400, 400)                 REM
        g.FillRectangle(Brushes.Red, 130, 50, 400, y)           REM DOOR OPEN REC
        g.DrawRectangle(Pens.Black, 120, 420, 10, 30)                  REM
        g.DrawRectangle(Pens.Black, 120, 50, 10, 30)                   REM
        If x >= 400 Then
            Button7.ForeColor = Color.Black
        End If
    End Sub
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Timer3.Start()
        Timer4.Stop()
        g.FillEllipse(Brushes.Yellow, 7, 184, 30, 30)
        Button5.ForeColor = Color.Yellow
        My.Computer.Audio.Play(My.Resources.a, AudioPlayMode.Background)
        Button7.Enabled = False
    End Sub
    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        My.Computer.Audio.Play(My.Resources.b, AudioPlayMode.Background)
        Timer4.Stop()
        Timer3.Stop()
        Try
            mySerialPort.Write(“3”)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
        g.FillEllipse(Brushes.Red, 7, 184, 30, 30)
        Button5.ForeColor = Color.Black
        Button7.ForeColor = Color.Black
        Button5.Enabled = True
        Button7.Enabled = True
        End Sub
    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        Timer4.Start()
        Timer3.Stop()
        Me.Refresh()
        g.FillEllipse(Brushes.Green, 7, 184, 30, 30)
        Button7.ForeColor = Color.Green
        My.Computer.Audio.Play(My.Resources.a, AudioPlayMode.Background)
        Button5.Enabled = False
    End Sub
    Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer3.Tick
        If yPosition < 7 Then
            REM   yPosition = 7
            Timer3.Stop()
            Button7.Enabled = True
            My.Computer.Audio.Play(My.Resources.b, AudioPlayMode.Background)
        End If
        yPosition -= 30
        DrawNewRectangle1(400, yPosition)                    REM DOOR OPEN RECTANGLE
        g.FillRectangle(Brushes.Green, 120, 50, 10, 30)      REM LIMIT SWITCH 1
        Try
            mySerialPort.Write(“2”)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick
        If yPosition > 355 Then                                     REM door down limit
            REM(yPosition = 400)
            My.Computer.Audio.Play(My.Resources.b, AudioPlayMode.Background)
            Timer4.Stop()
            g.FillEllipse(Brushes.Black, 7, 184, 30, 30)            REM    RGB LED
            g.FillRectangle(Brushes.Green, 120, 420, 10, 30)        REM   LIMIT SWITCH  2
            Button5.Enabled = True
        End If
        yPosition += 30
        DrawNewRectangle2(400, yPosition)                           REM  DOOR CLOSE RECTANGLE
        REM g.FillRectangle(Brushes.Red, 550, 110, 40, 41)
        Try
            mySerialPort.Write(“1”)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Hide()
        Dim i As Integer
        Try
            mySerialPort.Close()
        Catch ex As Exception
            i = MessageBox.Show(ex.Message)
        End Try
        Form1.Show()
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        g.DrawRectangle(Pens.Black, 120, 50, 10, 30)       REM    fORM Loading time limit switch 1 line
        g.DrawRectangle(Pens.Black, 120, 420, 10, 30)      REM    fORM Loading time limit switch 2 line
        g.DrawRectangle(Pens.Black, 130, 50, 400, 400)     REM fORM START RECTANGLE LINE
        g.DrawEllipse(Pens.Black, 7, 184, 30, 30)          REM    RGB LED AT FORM LOADING TIME
        Button1.BackColor = Color.BlueViolet
        Button5.BackColor = Color.BlueViolet
        Button6.BackColor = Color.BlueViolet
        Button7.BackColor = Color.BlueViolet
 
    End Sub
 
  
End Class
 
 
Public Class Form3
    Private g As Graphics
    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Show()
        g = Me.CreateGraphics
        Me.BackColor = Color.Aqua
        Button1.BackColor = Color.BlueViolet
        Button2.BackColor = Color.BlueViolet
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      
        Module1.uname1 = ComboBox1.Text
        Module1.uname2 = ComboBox1.Text
        Form2.Show()
        Me.Hide()
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Form1.Show()
        Me.Hide()
 
    End Sub
 
Module Module1
    Public uname1 As String
    Public uname2 As String
End Module
 
 
Arduino Programming :
 
  int dooropen = 13;
     int doorclose = 12;
     int LS1 =11;                 
     int LS2 = 10;
     int led1 =9;
     int led2=8;
     int led3=7;
    
void setup() { pinMode(dooropen, OUTPUT);
               pinMode(doorclose, OUTPUT);
               pinMode(LS1,INPUT);
               pinMode(LS2,INPUT);
                pinMode(led1,OUTPUT);
               pinMode(led2,OUTPUT);
               pinMode(led3,OUTPUT);
               Serial.begin(9600);}
void loop()  {
                delay(500);
           while(Serial.available() > 0)
                         {
                                byte incomingByte = Serial.read(); // Reads incoming byte from serial
               if (LS1 == LOW)
                  {
                               if( incomingByte == ‘1’)
                                           {
                                             digitalWrite(dooropen, HIGH);
                                             digitalWrite(doorclose, LOW);
                                             digitalWrite(led1,HIGH);
                                             digitalWrite(led2,LOW);
                                             digitalWrite(led3,LOW);
                                             delay(100);
                                             digitalWrite(dooropen, LOW);
                                             digitalWrite(led1,LOW);
                                           }
                                 else     {
                                            digitalWrite(dooropen, LOW);
                                            digitalWrite(led1,LOW);
                                          }
                  }    
               if (LS2 == LOW)
                       {
                               if( incomingByte == ‘2’)
                                         {
                                           digitalWrite(dooropen, LOW);
                                           digitalWrite(doorclose,HIGH);
                                           digitalWrite(led1,LOW);
                                           digitalWrite(led2,HIGH);
                                           digitalWrite(led3,LOW);
                                           delay(100);
                                           digitalWrite(doorclose, LOW);
                                           digitalWrite(led2,LOW);
                                         }
                                else
                                        {
                                          digitalWrite(doorclose, LOW);
                                          digitalWrite(led2,LOW);
                                        }
                       }
                              if( incomingByte == ‘3’)
                                       {
                                           digitalWrite(dooropen, LOW);
                                           digitalWrite(doorclose,LOW);
                                           digitalWrite(led1,LOW);
                                           digitalWrite(led2,LOW);
                                           digitalWrite(led3,HIGH);
                                           delay(100);   
                                       }
                        
                        
//                          if( LS1 == HIGH)
                                      //{
                                      //digitalWrite(dooropen, LOW);}
//                          else  digitalWrite(dooropen,HIGH); 
//                        
//                         if( LS2 == HIGH)
                                       //{
                                          //digitalWrite(doorclose, LOW);
                                        //}
//                          else digitalWrite(doorclose,HIGH);                          
                       }
                  }  
 
 

                                              Block Diagram:

                                                             

 

                                               Circuit diagrams:

 

Project Images:

                                          

Watch Video Tutorial:

Hello, Friends, My name is Mohsin Habib and I am an Electrical Engineer. I have Experience In Circuit Designing, Arduino Projects, PLC’s Projects, HMI Designing, Networking and much more. I have done lots of projects in Arduino.

Leave a Reply

Your email address will not be published. Required fields are marked *