Browse Source

Update v1.1

master
cs161079 5 years ago
parent
commit
64d0a595cc
  1. 55
      autonomousCar/autonomousCar.ino
  2. 26
      autonomousCarGateway/carClient.py
  3. 10
      project.adoc
  4. 19
      serverNode/serv.py

55
autonomousCar/autonomousCar.ino

@ -255,38 +255,57 @@ void moveCar(){
} }
} }
void park() { void park(int parkingNo) {
int row = (parkingNo / 2) + 1;
int side = (parking % 2) //If side is 1 then the parking is to right
// else if is 0 the parking is to left.
while (row > 0) {
absolute(255);
forward();
delay(FORWARD_STEP);
motor_stop();
r--;
}
//Check the side value to turn.
if (side == 1) {
turnRight(255); turnRight(255);
else {
turnLeft(255);
}
forward(); forward();
delay(TURN_TIME); delay(TURN_TIME);
absolute(255);
motor_stop(); motor_stop();
absolute(255);
forward(); forward();
delay(400); delay(400);
} }
String inString;
void Serial_Input()
{
while (Serial.available() > 0) {
int inChar = Serial.read(); int Serial_Input()
if (isDigit(inChar)) { {
int number;
if (Serial.available() > 0) {
number = Serial.parseInt();
while (number <= 0) {
// convert the incoming byte to a char and add it to the string: // convert the incoming byte to a char and add it to the string:
inString += (char)inChar; number = Serial.parseInt();
} }
// if you get a newline, print the string, then the string's value: // if you get a newline, print the string, then the string's value:
if (inChar == '\n') {
Serial.print("Value:"); Serial.print("Value:");
Serial.println(inString.toInt()); Serial.println(number);
Serial.print("String: ");
Serial.println(inString);
// clear the string for new input: // clear the string for new input:
inString = "";
}
}
} }
return number;
}
void loop() { void loop() {
// Calculating the distance // Calculating the distance
//distance= getDistance(); //distance= getDistance();
@ -295,8 +314,8 @@ void loop() {
//Serial.print("Distance: "); //Serial.print("Distance: ");
//Serial.println(distance); //Serial.println(distance);
// Read serial input: // Read serial input:
Serial_Input();
park(); park(Serial_Input());
//delay(1000); //delay(1000);
// if (distance <15) { // if (distance <15) {
// // Change direction to motors // // Change direction to motors

26
autonomousCarGateway/carClient.py

@ -11,27 +11,27 @@ server_port = "443"
API_ENDPOINT = 'https://' + server_ip + ':' + server_port + '/' API_ENDPOINT = 'https://' + server_ip + ':' + server_port + '/'
try: try:
ser = serial.Serial( # ser = serial.Serial(
port='/dev/ttyACM0', # port='/dev/ttyACM0',
baudrate = 9600, # baudrate = 9600,
parity=serial.PARITY_NONE, # parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE, # stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS, # bytesize=serial.EIGHTBITS,
timeout=1 # timeout=1
) # )
c = requests.get(url=API_ENDPOINT, params = {}) c = requests.get(url=API_ENDPOINT, params = {})
doc = c.json() doc = c.json()
parking = None parking = None
for park in doc: for park in doc:
if doc[str(park)] == 1: if park['status'] == True:
parking = park parking = park #{"no": park['no'], "status": park['status']}
break break
print ("Free parking is Number: " + parking) print ("Free parking is Number: " + str(parking['no']))
ser.write("b'" + parking + "'") # ser.write("b'" + parking['no'] + "'")
ser.flush() # ser.flush()
except (NameError, TypeError) as e: except (NameError, TypeError) as e:
print ("No free parking") print ("No free parking")
except requests.exceptions.ConnectionError: except requests.exceptions.ConnectionError:

10
project.adoc

@ -162,7 +162,13 @@ image::Photos/itops-pizza_as_a_service.png[1000,800]
== Διεπαφή Χρήστη (4~ο~ μέρος) == Διεπαφή Χρήστη (4~ο~ μέρος)
<<<<<<< HEAD
Η διεπαφή του χρήστη Η διεπαφή του χρήστη
=======
Η διεπαφή του χρήστη αποτελείται από μία HTML σελίδα η οποία ενσωματώνει και δύο JavaScript Processes.
Σκοπός αυτής είναι η ανααπαράσταση της κατάστασης του Parking. Η σελίδα λοιπόν ενσωματώνει για κάθε θέση
parking
>>>>>>> a4925739363f066457a17d4c039bbe93c0311576
== Autonomous Parking == Autonomous Parking
@ -193,8 +199,8 @@ image::Photos/itops-pizza_as_a_service.png[1000,800]
* 1 x Raspberry Pi * 1 x Raspberry Pi
==== Υλοποίηση και Προγραμματισμός ==== Υλοποίηση και Προγραμματισμός
Ο motor driver, το Servo motor καθώς και ο Ultrasonic αισθητήρας συνδέονται στον μικροελεγκτή Arduino Uno που χρησιμοποιούμε, Ο motor driver, το Servo motor καθώς και ο Ultrasonic αισθητήρας κουμπώνουν στον μικροελεγκτή Arduino Uno που χρησιμοποιούμε,
τον οποίο τον εγκαθηστούμε πάνω στο καλούπι του οχήματος το οποίο έχει εγκατεστημένα 4 τροχούς. Οι τροχοί οδηγούνται από 4 moters τον οποίο τον εγκαθηστούμε πάνω στο καλούπι του οχήματος το οποίο έχει εγκατεστημένα 4 τροχούς. Οι τροχοί οδηοούνται από 4 moters
τα οποία τροφοδοτούνται από τον motor driver. τα οποία τροφοδοτούνται από τον motor driver.
Η συνδεσμολογία έχει την διάταξη που παρουσιάζεται παρακάτω: Η συνδεσμολογία έχει την διάταξη που παρουσιάζεται παρακάτω:

19
serverNode/serv.py

@ -33,13 +33,16 @@ myCursor = mydb.cursor()
# Define a function that gets the parking status # Define a function that gets the parking status
# for all parking codes. # for all parking codes.
def getParkings(): def getParkings():
parks = dict() parks = []
myCursor.execute("SELECT * FROM PARKING") myCursor.execute("SELECT * FROM PARKING")
myRes = myCursor.fetchall() myRes = myCursor.fetchall()
for res in myRes: for res in myRes:
parks[res[0]] = res[1] if res[1] == 1:
parks.append({"no": res[0], "status": True})
else:
parks.append({"no": res[0], "status": False})
return parks return parks
# ================================================================== # ==================================================================
@ -65,18 +68,26 @@ class ParkingStatus(Resource):
# SQL get all Parking places status. # SQL get all Parking places status.
parks = getParkings() parks = getParkings()
currentParking = {}
for park in parks:
if park['no'] == data['no']:
currentParking = park
break;
thereIs = False thereIs = False
toUpdate = False toUpdate = False
try: try:
if parks[int(data['no'])] != int(data['status']): if currentParking['status'] != data['status']:
toUpdate = True toUpdate = True
thereIs = True thereIs = True
except IndexError: except IndexError:
# handle Index Error # handle Index Error
thereIs = False thereIs = False
toUpdate = False
except KeyError: except KeyError:
# handle the KeyError # handle the KeyError
thereIs = False thereIs = False
toUpdate = False
if not thereIs: if not thereIs:
# Make a new insert entry for a new Parking Code. # Make a new insert entry for a new Parking Code.
@ -91,7 +102,7 @@ class ParkingStatus(Resource):
mydb.commit() mydb.commit()
parks = getParkings() parks = getParkings()
return parks[data['no']], 201 return currentParking, 201
# ================================================================== # ==================================================================

Loading…
Cancel
Save