Welcome to Hackster!
Hackster is a community dedicated to learning hardware, from beginner to pro. Join us, it's free!
Hackster is hosting Impact Spotlights: Smart Home. Watch the stream live on Thursday!Hackster is hosting Impact Spotlights: Smart Home. Stream on Thursday!
Chpritam Patro
Published © GPL3+

IOT Social Distancing & Monitoring Robot For Queue

To prevent corona spread social distancing must be followed. this bot will help us doing that job perfectly.

AdvancedFull instructions provided8 hours6,644
IOT Social Distancing & Monitoring Robot For Queue

Things used in this project

Story

Read more

Schematics

circuit diagram

Code

arduino

Python
for rc design
#include <AFMotor.h>

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);

void setup() {
  Serial.begin(9600); // set baud rate
  Serial.setTimeout(50);
  Serial.println("WELCOME++++");
  motor1.setSpeed(255);
  motor2.setSpeed(255);
  motor3.setSpeed(255);
  motor4.setSpeed(255);

  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(RELEASE);
  motor4.run(RELEASE);

}

void loop() {
String ch;
 if (Serial.available() > 0) {
    ch= Serial.readString();
    Serial.println(ch);
  if (ch=="F") { 
  motor1.run(FORWARD);
  motor2.run(FORWARD);
  motor3.run(FORWARD);
  motor4.run(FORWARD);
 }
 if(ch=="B"){
  motor1.run(BACKWARD);
  motor2.run(BACKWARD);
  motor3.run(BACKWARD);
  motor4.run(BACKWARD);
 }
  if(ch=="L"){
  motor1.run(FORWARD);
  motor2.run(BACKWARD);
  motor3.run(FORWARD);
  motor4.run(BACKWARD);
 }
  if(ch=="S"){
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(RELEASE);
  motor4.run(RELEASE);
 }
  if(ch=="LF"){
  motor1.run(RELEASE);
  motor2.run(FORWARD);
  motor3.run(RELEASE);
  motor4.run(FORWARD);
 }
  if(ch=="RF"){
  motor1.run(FORWARD);
  motor2.run(RELEASE);
  motor3.run(FORWARD);
  motor4.run(RELEASE);
 }
   if(ch=="LB"){
  motor1.run(RELEASE);
  motor2.run(BACKWARD);
  motor3.run(RELEASE);
  motor4.run(BACKWARD);
 }
   if(ch=="RB"){
  motor1.run(FORWARD);
  motor2.run(RELEASE);
  motor3.run(FORWARD);
  motor4.run(RELEASE);
 }
   if(ch=="R"){
  motor1.run(BACKWARD);
  motor2.run(FORWARD);
  motor3.run(BACKWARD);
  motor4.run(FORWARD);
 }
}
}

pyqt5

Python
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'queuebot.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Dialog(object):
    def startclick(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialBegin("9600")
        print(response)
    def highclick(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("H")
        print(response)
    def lowclick(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("LO")
        print(response)
    def mediumclick(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("M")
        print(response)
    def lfclick(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("LF")
        print(response)
    def fclick(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("F")
        print(response)
    def rfclick(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("RF")
        print(response)
    def lfclick(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("LF")
        print(response)
    def lclick(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("L")
        print(response)
    def sclick(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("S")
        print(response)
    def rclick(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("R")
        print(response)
    def lbclick(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("LB")
        print(response)
    def bclick(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("B")
        print(response)
    def rbclick(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("RB")
        print(response)
    def s0click(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("TR")
        print(response)
    def s90click(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("P")
        print(response)
    def s180click(self):
        from boltiot import Bolt
        api_key = "91a27806-4174-4001-9d24-b42a37a3a513"
        device_id  = "BOLT5778783"
        mybolt = Bolt(api_key, device_id)
        response=mybolt.serialWrite("PL")
        print(response)   
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(1192, 855)
        self.layoutWidget = QtWidgets.QWidget(Dialog)
        self.layoutWidget.setGeometry(QtCore.QRect(20, 20, 1141, 811))
        self.layoutWidget.setObjectName("layoutWidget")
        self.gridLayout = QtWidgets.QGridLayout(self.layoutWidget)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setObjectName("gridLayout")
        self.high = QtWidgets.QPushButton(self.layoutWidget)
        self.high.setObjectName("high")
        self.gridLayout.addWidget(self.high, 0, 0, 1, 1)
        self.low = QtWidgets.QPushButton(self.layoutWidget)
        self.low.setObjectName("low")
        self.gridLayout.addWidget(self.low, 0, 1, 1, 1)
        self.medium = QtWidgets.QPushButton(self.layoutWidget)
        self.medium.setObjectName("medium")
        self.gridLayout.addWidget(self.medium, 0, 2, 1, 1)
        self.lf = QtWidgets.QPushButton(self.layoutWidget)
        self.lf.setObjectName("lf")
        self.gridLayout.addWidget(self.lf, 1, 0, 1, 1)
        self.f = QtWidgets.QPushButton(self.layoutWidget)
        self.f.setObjectName("f")
        self.gridLayout.addWidget(self.f, 1, 1, 1, 1)
        self.rf = QtWidgets.QPushButton(self.layoutWidget)
        self.rf.setObjectName("rf")
        self.gridLayout.addWidget(self.rf, 1, 2, 1, 1)
        self.l = QtWidgets.QPushButton(self.layoutWidget)
        self.l.setObjectName("l")
        self.gridLayout.addWidget(self.l, 2, 0, 1, 1)
        self.s = QtWidgets.QPushButton(self.layoutWidget)
        self.s.setObjectName("s")
        self.gridLayout.addWidget(self.s, 2, 1, 1, 1)
        self.r = QtWidgets.QPushButton(self.layoutWidget)
        self.r.setObjectName("r")
        self.gridLayout.addWidget(self.r, 2, 2, 1, 1)
        self.lb = QtWidgets.QPushButton(self.layoutWidget)
        self.lb.setObjectName("lb")
        self.gridLayout.addWidget(self.lb, 3, 0, 1, 1)
        self.b = QtWidgets.QPushButton(self.layoutWidget)
        self.b.setObjectName("b")
        self.gridLayout.addWidget(self.b, 3, 1, 1, 1)
        self.rb = QtWidgets.QPushButton(self.layoutWidget)
        self.rb.setObjectName("rb")
        self.gridLayout.addWidget(self.rb, 3, 2, 1, 1)
        self.s0 = QtWidgets.QPushButton(self.layoutWidget)
        self.s0.setObjectName("s0")
        self.gridLayout.addWidget(self.s0, 4, 0, 1, 1)
        self.s90 = QtWidgets.QPushButton(self.layoutWidget)
        self.s90.setObjectName("s90")
        self.gridLayout.addWidget(self.s90, 4, 1, 1, 1)
        self.s180 = QtWidgets.QPushButton(self.layoutWidget)
        self.s180.setObjectName("s180")
        self.gridLayout.addWidget(self.s180, 4, 2, 1, 1)
        self.start = QtWidgets.QPushButton(self.layoutWidget)
        self.start.setObjectName("start")
        self.gridLayout.addWidget(self.start, 5, 1, 1, 1)

        self.retranslateUi(Dialog)
        self.high.clicked.connect(self.highclick)
        self.low.clicked.connect(self.lowclick)
        self.medium.clicked.connect(self.mediumclick)
        self.lf.clicked.connect(self.lfclick)
        self.f.clicked.connect(self.fclick)
        self.rf.clicked.connect(self.rfclick)
        self.l.clicked.connect(self.lclick)
        self.s.clicked.connect(self.sclick)
        self.r.clicked.connect(self.rclick)
        self.lb.clicked.connect(self.lbclick)
        self.b.clicked.connect(self.bclick)
        self.rb.clicked.connect(self.rbclick)
        self.s0.clicked.connect(self.s0click)
        self.s90.clicked.connect(self.s90click)
        self.s180.clicked.connect(self.s180click)
        self.start.clicked.connect(self.startclick)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.high.setText(_translate("Dialog", "high"))
        self.low.setText(_translate("Dialog", "low"))
        self.medium.setText(_translate("Dialog", "medium"))
        self.lf.setText(_translate("Dialog", "LF"))
        self.f.setText(_translate("Dialog", "F"))
        self.rf.setText(_translate("Dialog", "RF"))
        self.l.setText(_translate("Dialog", "L"))
        self.s.setText(_translate("Dialog", "S"))
        self.r.setText(_translate("Dialog", "R"))
        self.lb.setText(_translate("Dialog", "LB"))
        self.b.setText(_translate("Dialog", "B"))
        self.rb.setText(_translate("Dialog", "RB"))
        self.s0.setText(_translate("Dialog", "0"))
        self.s90.setText(_translate("Dialog", "90"))
        self.s180.setText(_translate("Dialog", "180"))
        self.start.setText(_translate("Dialog", "START"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

ultraf

Python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)

TRIG=19
ECHO=26

GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)

GPIO.output(TRIG, False)
time.sleep(2)
def valb():
	GPIO.output(TRIG, True)
	time.sleep(0.00001)
	GPIO.output(TRIG, False)
	while GPIO.input(ECHO)==0:
		pulse_start = time.time()
	while GPIO.input(ECHO)==1:
		pulse_end = time.time()
	pulse_duration = pulse_end - pulse_start
	distancem = pulse_duration*17150
	distance = round(distancem, 2)
	return distance

ultrab

Python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)

TRIG=19
ECHO=26

GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)

GPIO.output(TRIG, False)
time.sleep(2)
def valb():
	GPIO.output(TRIG, True)
	time.sleep(0.00001)
	GPIO.output(TRIG, False)
	while GPIO.input(ECHO)==0:
		pulse_start = time.time()
	while GPIO.input(ECHO)==1:
		pulse_end = time.time()
	pulse_duration = pulse_end - pulse_start
	distancem = pulse_duration*17150
	distance = round(distancem, 2)
	return distance

main

Python
from ultrab import valb
from ultraf import valf
import RPi.GPIO as GPIO
import time
from picamera import PiCamera
from servercode import sendit
GPIO.setmode(GPIO.BCM)
ledb=21
ledf=22
GPIO.setup(ledb,GPIO.OUT)
GPIO.setup(ledf,GPIO.OUT)
while True:
   try:
       x=valb()
       print(x)
       y=valf()
       print(y)
       if x<=100 or y<=100:
          print("got it")
          camera=PiCamera()
          camera.capture("pritam.jpg")
          print("captured")
          if x>=y:
             GPIO.output(ledb, True)
             time.sleep(5)
             GPIO.output(ledb, False)
          if y>=x:
             GPIO.output(ledf, True)
             time.sleep(5)
             GPIO.output(ledf, False)   
          sendit()
   except:
      GPIO.cleanup()
       
       

twilio

Python
import boltcrd
from boltiot import Sms, Bolt
import json, time 
import credentials

mybolt = Bolt(boltcrd.api_key, boltcrd.device_id)

sms = Sms(credentials.account_sid,credentials.auth_token,credentials.my_mobile,credentials.my_cell)
def sendit():
    while True:
        print ("Reading sensor value")
        response = mybolt.digitalRead('0')
        data = json.loads(response)
        print("Sensor value is: " + str(data['value']))
        try:
            sensor_value = int(data['value'])
            if sensor_value<=100:
                print("Making request to Twilio to send a SMS ")          
                response = sms.send_sms("maintain social distance" +str(sensor_value))
                print("Response received from Twilio is: " + str(response))
                print("Status of SMS at Twilio is :" + str(response.status))

        except Exception as e:
            print ("Error occured: Below are the details")
            print (e)
        time.sleep(10)

Credits

Chpritam Patro
3 projects • 9 followers
Contact

Comments

Please log in or sign up to comment.