Licenta Autosaved21 [306032]
4.2. Structura programelor realizate
4.2.1. Program realizat pentru comanda roților
Program realizat pentru comanda rotilor este scris în Python și reprezintă o conexiune TCP de tip P2P (peer to peer) între componente.
import RPi.GPIO as GPIO
from time import sleep
import socket
import numpy
import cv2
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('0.0.0.0', 12345))
s.listen(5)
in1 = 24
in2 = 23
en = 25
is1 = 27
is2 = 17
en2 = 22
capture = cv2.VideoCapture(0)
GPIO.setmode(GPIO.BCM)
GPIO.setup(in1,GPIO.OUT)
GPIO.setup(in2,GPIO.OUT)
GPIO.setup(en,GPIO.OUT)
GPIO.setup(is1,GPIO.OUT)
GPIO.setup(is2,GPIO.OUT)
GPIO.setup(en2,GPIO.OUT)
GPIO.output(in1,GPIO.LOW)
GPIO.output(in2,GPIO.LOW)
GPIO.output(is1,GPIO.LOW)
GPIO.output(is2,GPIO.LOW)
p=GPIO.PWM(en,1000)
p.start(25)
p2=GPIO.PWM(en2,1000)
p2.start(25)
def send_picture(conn):
ret, frame = capture.read()
encode_param=[int(cv2.IMWRITE_JPEG_QUALITY),90]
result, imgencode = cv2.imencode('.jpg', frame, encode_param)
data = numpy.array(imgencode)
stringData = data.tostring()
conn.send( (str(len(stringData)).ljust(16)).encode())
conn.send( stringData );
def goFront():
GPIO.output(in1,GPIO.HIGH)
GPIO.output(in2,GPIO.LOW)
GPIO.output(is1,GPIO.HIGH)
GPIO.output(is2,GPIO.LOW)
def goLeft():
GPIO.output(in1,GPIO.HIGH)
GPIO.output(in2,GPIO.LOW)
GPIO.output(is1,GPIO.LOW)
GPIO.output(is2,GPIO.HIGH)
def goRight():
GPIO.output(in1,GPIO.LOW)
GPIO.output(in2,GPIO.HIGH)
GPIO.output(is1,GPIO.HIGH)
GPIO.output(is2,GPIO.LOW)
def goLeft():
GPIO.output(in1,GPIO.LOW)
GPIO.output(in2,GPIO.HIGH)
GPIO.output(is1,GPIO.HIGH)
GPIO.output(is2,GPIO.LOW)
def goBack():
GPIO.output(in1,GPIO.LOW)
GPIO.output(in2,GPIO.HIGH)
GPIO.output(is1,GPIO.LOW)
GPIO.output(is2,GPIO.HIGH)
def stopIt():
GPIO.output(in1,GPIO.LOW)
GPIO.output(in2,GPIO.LOW)
GPIO.output(is1,GPIO.LOW)
GPIO.output(is2,GPIO.LOW)
while True:
c, addr = s.accept()
msj = 's'
while msj != 'q':
msj = c.recv(1024).decode('ascii')
print(msj)
if msj == 'f':
goFront()
elif msj == 'd':
goRight()
elif msj == 's':
goLeft()
elif msj == 'b':
goLeft()
elif msj == 'o':
stopIt()
elif msj == 'poza':
print('saddas')
send_picture(c)
c.close()
4.2.2. Program realizat pentru utilizarea camerei
#!/usr/bin/python
import socket
import cv2
import numpy
import time
def zeroFirst(str):
if len(str) == 1:
return '0' + str
return str
def get_time(start_time):
dict = {
'1' : 'Ianuarie',
'2' : 'Februarie',
'3' : 'Martie',
'4' : 'Aprilie',
'5' : 'Mai',
'6' : 'Iunie',
'7' : 'Iulie',
'8' : 'August',
'9' : 'Septembrie',
'10' : 'Octombrie',
'11' : 'Noiembrie',
'12' : 'Decembrie',
}
date = str(start_time.tm_mday) + ' ' + dict[str(start_time.tm_mon)] + ' ' + str(start_time.tm_year) + ',' + zeroFirst(str(start_time.tm_hour)) + ':' + zeroFirst(str(start_time.tm_min)) + ':' + zeroFirst(str(start_time.tm_sec))
return date
def recvall(sock, count):
buf = b''
while count:
newbuf = sock.recv(count)
if not newbuf: return None
buf += newbuf
count -= len(newbuf)
return buf
start_time = time.localtime(time.time())
TCP_IP = socket.gethostname()
TCP_PORT = 12345
sock = socket.socket()
sock.connect(('192.168.1.118', TCP_PORT))
command = 't'
while command != 'q':
print "f,d,s,b,poza – fata, dreapta, stanga, back"
command = raw_input()
print command
sock.send(command)
if command == 'poza':
length = recvall(sock,16)
stringData = recvall(sock, int(length))
data = numpy.fromstring(stringData, dtype='uint8')
sock.close()
decimg = cv2.imdecode(data,1)
cv2.imwrite(get_time(start_time) + '.jpg', decimg)
s.close()
4.2.1. Program realizat pentru comanda brațului robotic
def close_claw():
if claw_closed_indicator is not True:
clawServo.write_position(170)
print “Claw was closed”
else:
print “Claw already closed”
def open_claw():
if claw_open_indicator is not True:
clawServo.write_position(10)
print “Claw was opened”
else:
print “Claw already opened”
5. Observații
Datorită dezvolatrii rapide a sistemelor actuale de informare și comunicare, roboții sunt proiectați pentru a fi utilizați pe scară largă în toate domeniile vieții cotidiene și ale industriei. Acestea sunt folosite pentru a reduce dependețele umane în îndeplinirea unei sarcini și pentru a reduce timpul de producție, menținând în același timp o calitate constantă a producției.
Obiectivul principal al acestui proiect este dezvoltarea și implementarea unui vehicul de suprabeghere care realizează automat sau manual patrularea unui perimetru. Astfel, resursele umane și financiare, timp, energie sunt optimizate neavând nevoie in primul rând de șofer. Au trecut de mult zilele în care realizarea automatizărilor într-un anumit domeniu erau minimale și foarte scumpe, bucurându-ne de o piață cu o ofertă mult mai lardgă si prețuri mult mai joase decât a fost vreodatâ.
Robotul de supraveghere poate surveni îmbunătățiri adiționale prin încorporarea unui sistem GPS pentru localizare constantă și setarea unui perimetru de matrulare mult mai relevant decât dotarea actuală.
Lucrarea este realizată ca un robot funcțional, el fiind o demonstrație practică a funcționării unei vehicul comandat, capabil să ruleze pe un traseu configurat sau în mod manual și să realizeze intrucțiunile pe care mașina le are implementate de ex utilizarea brațului robotic.
Arhitectura mașinii include un șasiu, patru motoare de curent continuu pentru tracțiune, un senzor de ultrasunete pentru detecția potențialelor obstacole si acționarea camerei.
Demonstrația practică este efectuată de către robot, acționând funcția de comandă a motoarelor, ghearei și camerei de fi
6. Bibliografie
https://www.microchip.com/wwwproducts/en/ATmega328P
https://www.allaboutcircuits.com/technical-articles/understanding-arduino-uno-hardware-design/
https://i2.wp.com/www.technobyte.org/wp-content/uploads/2016/08/Arduino-Uno-multiple-input-management-circuit-op-amp-comparator-min.jpg
http://www.ntu.edu.sg/home/ehchua/programming/arduino/arduino.html
https://learn.sparkfun.com/tutorials/what-is-an-arduino/whats-on-the-board â
https://electronics.stackexchange.com/questions/61537/what-is-the-cap-for-in-arduino-reset-circuit
https://arduino.stackexchange.com/questions/986/whats-the-2nd-icsp-header-for-in-arduino-uno-r3
https://startingelectronics.org/software/arduino/learn-to-program-course/01-program-structure-flow/
T. Mohammad Baloch and Timothy Thien Ching Kae, "Design and modelling a prototype of a robotic lawn mower," 2008 International Symposium on Information Technology, Kuala Lumpur, 2008, pp. 1-5.
Price Runner, „Top 22 best robotic lawn mowers of 2019.” : URL: https://www.pricerunner.com/test/robotic-lawn-mower
https://www.google.com/search?q=ingeniously+continental&source=lnms&tbm=isch&sa=X&ve d=0ahUKEwiswuvi3fPiAhVwSxUIHU3pBwwQ_AUIECgB&biw=1366&bih=657#imgrc=4JfD rVDiMuJAOM:
DFRobot – Pirate: 4WD Arduino : https://www.dfrobot.com/product-116.html
Fut-electronic Tech Co., Limited, Blue Ultrasonic Sensor, URL: https://fut688.en.made-in-china.com/
https://www.google.com/search?q=driver+de+motoare+pwm&source=lnms&tbm=isch&sa=X& ved=0ahUKEwj56OqH3_PiAhUPKuwKHW5mAuEQ_AUIECgB&biw=1366&bih=657#imgrc=i-urSDWQg4GXsM:
“Schottky Diodă”, RIVERGLENNAPTS, URL: https://riverglennapts.com/ro/diode/305-schottky-diode.html
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Licenta Autosaved21 [306032] (ID: 306032)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
