0% found this document useful (0 votes)
3 views8 pages

CODE FOR Door Locking and Opening System Using GSM

This document provides a Python code implementation for a door locking and opening system using GSM, an LCD display, and a DC motor. The system allows the door to be opened or closed based on SMS commands received via a GSM modem, with visual feedback displayed on an LCD. Key functions include initializing the LCD, controlling the motor direction, and handling incoming SMS messages to trigger the door mechanism.

Uploaded by

impact2017batch
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views8 pages

CODE FOR Door Locking and Opening System Using GSM

This document provides a Python code implementation for a door locking and opening system using GSM, an LCD display, and a DC motor. The system allows the door to be opened or closed based on SMS commands received via a GSM modem, with visual feedback displayed on an LCD. Key functions include initializing the LCD, controlling the motor direction, and handling incoming SMS messages to trigger the door mechanism.

Uploaded by

impact2017batch
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

CODE FOR Door Locking and Opening

System Using GSM, LCD and DC Motor

import serial
import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BOARD)

GPIO.setup(18,GPIO.OUT)#DC
GPIO.output(18,GPIO.LOW)
GPIO.setup(19,GPIO.OUT)
GPIO.output(19,GPIO.LOW)

# Define GPIO to LCD mapping


LCD_RS = 10
LCD_E = 11
LCD_D4 = 12
LCD_D5 = 13
LCD_D6 = 15
LCD_D7 = 16

# Define some device constants


LCD_WIDTH = 16 # Maximum characters per line
LCD_CHR = True
LCD_CMD = False
LCD_LINE_1 = 0x80 # LCD RAM address for the 1st line
LCD_LINE_2 = 0xC0 # LCD RAM address for the 2nd line

# Timing constants
E_PULSE = 0.0005
E_DELAY = 0.0005

# Enable Serial Communication


port = serial.Serial("/dev/ttyUSB0", baudrate=9600, timeout=1)

# Transmitting AT Commands to the Modem


# '\r\n' indicates the Enter key
def forward():
GPIO.output(18,GPIO.HIGH)
GPIO.output(19,GPIO.LOW)

def reverse():
GPIO.output(18,GPIO.LOW)
GPIO.output(19,GPIO.HIGH)

def stp():
GPIO.output(18,GPIO.HIGH)
GPIO.output(19,GPIO.HIGH)

port.write(str.encode('AT'+'\r\n'))
rcv = port.read(10)
print (rcv)
sleep(1)

port.write(str.encode('ATE0'+'\r\n')) # Disable the Echo


rcv = port.read(10)
print (rcv)
sleep(1)

port.write(str.encode('AT+CMGF=1'+'\r\n')) # Select Message format as Text


mode
rcv = port.read(10)
print (rcv)
sleep(1)

port.write(str.encode('AT+CNMI=2,2,0,0,0'+'\r\n')) # New SMS Message


Indications
rcv = port.read(10)
print (rcv)
sleep(1)

port.write(str.encode('AT+CMGL="ALL"\r\n'))
rcv = port.read(10)
print (rcv)
sleep(1)

def main():
# Main program block
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD) # Use BCM GPIO numbers
GPIO.setup(LCD_E, GPIO.OUT) # E
GPIO.setup(LCD_RS, GPIO.OUT) # RS
GPIO.setup(LCD_D4, GPIO.OUT) # DB4
GPIO.setup(LCD_D5, GPIO.OUT) # DB5
GPIO.setup(LCD_D6, GPIO.OUT) # DB6
GPIO.setup(LCD_D7, GPIO.OUT) # DB7

# Initialise display
lcd_init()

lcd_string(' GSM based ',LCD_LINE_1)


lcd_string(' doorlock ',LCD_LINE_2)
sleep(3)
lcd_display(0x01,LCD_CMD)

while True:
data = port.readline()
data = data.decode('utf-8').rstrip()
#print(data)
if data == 'OPEN':
lcd_string(' OPEN ',LCD_LINE_1)
lcd_string(' DOOR ',LCD_LINE_2)
sleep(1)
lcd_display(0x01,LCD_CMD)
print('DOOR OPENING')
forward()
sleep(3)
stp()
sleep(3)
print('DOOR CLOSING')
reverse()
sleep(3)
stp()
lcd_string(' DOOR ',LCD_LINE_1)
lcd_string(' CLOSED ',LCD_LINE_2)
sleep(3)
lcd_display(0x01,LCD_CMD)

def lcd_init():
lcd_display(0x28,LCD_CMD) # Selecting 4 - bit mode with two rows
lcd_display(0x0C,LCD_CMD) # Display On,Cursor Off, Blink Off
lcd_display(0x01,LCD_CMD) # Clear display

sleep(E_DELAY)

def lcd_display(bits, mode):


# Send byte to data pins
# bits = data
# mode = True for character
# False for command

GPIO.output(LCD_RS, mode) # RS

# High bits
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&0x10==0x10:
GPIO.output(LCD_D4, True)
if bits&0x20==0x20:
GPIO.output(LCD_D5, True)
if bits&0x40==0x40:
GPIO.output(LCD_D6, True)
if bits&0x80==0x80:
GPIO.output(LCD_D7, True)

# Toggle 'Enable' pin


lcd_toggle_enable()

# Low bits
GPIO.output(LCD_D4, False)
GPIO.output(LCD_D5, False)
GPIO.output(LCD_D6, False)
GPIO.output(LCD_D7, False)
if bits&0x01==0x01:
GPIO.output(LCD_D4, True)
if bits&0x02==0x02:
GPIO.output(LCD_D5, True)
if bits&0x04==0x04:
GPIO.output(LCD_D6, True)
if bits&0x08==0x08:
GPIO.output(LCD_D7, True)
# Toggle 'Enable' pin
lcd_toggle_enable()

def lcd_toggle_enable():
# Toggle enable
sleep(E_DELAY)
GPIO.output(LCD_E, True)
sleep(E_PULSE)
GPIO.output(LCD_E, False)
sleep(E_DELAY)

def lcd_string(message,line):
# Send string to display

message = message.ljust(LCD_WIDTH," ")

lcd_display(line, LCD_CMD)

for i in range(LCD_WIDTH):
lcd_display(ord(message[i]),LCD_CHR)

if __name__ == '__main__':

try:
main()
except KeyboardInterrupt:
pass
finally:
lcd_display(0x01, LCD_CMD)
GPIO.cleanup()

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy