Authors

Ουλής Ευάγγελος

cs151051@uniwa.gr

Ουλής Νικόλαος

cs161079@uniwa.gr

Κατσίμπρας Δρόσος

cs131110@uniwa.gr

1. Smart Parking

Το "Smart Parking" Έξυπνο πάρκινγκ βασίζεται στη διαδικασία όπου η κατάσταση του πάρκινγκ κοινοποιείται μέσω ενός συνόλου hardware και software στο διαδίκτυο και έτσι πετυχαίνουμε η κατάσταση του να είναι διαθέσιμη "accesable" από το διαδίκτυο. Αυτό το χαρακτηριστικό κάνει αυτό το αντικειμένο μέρος του διαδικτύου και του κόσμου IoT.

Η υλοποίηση του Smart Parking χωρίζεται σε 3 βασικά μέρη:

  • Το 1ο μέρος αποτελείται από ένα σύνολο αισθητήρων που εγκαθιστούντε σε κάθε θέση parking (sensor), τα οποία αποτελούνται από έναν αισθητήρα μέτρησης απόστασης (ultrasonic) και έναν μικροελεγκτή (Arduino Uno), έτσι ώστε να ανιχνεύει και να κωδικοποιεί για μία συγκεκριμένη θέση έαν υπάρχει κάποιο όχημα ή όχι.

  • Το 2ο μέρος αποτελείται από την συσκευή gateway σε Raspberry Pi1, η οποία διαβάζει στη σειριακή του τη πληροφορία από το Arduino Uno, που κάνει sense μία θέση parking, και στέλνει αυτή την πληροφορία σε έναν web server με χρήση REST API.

  • To 3o μέρος αποτελείται από τον WEB Server ο οποίος αποτελείται από ένα process γραμμένο σε python που υλοποιεί ένα REST API έτσι ώστε να μπορεί να αποθηκεύει την κατάσταση κάθε θέσης parking σε μία δομή λίστας με χαρακτηριστικό κλειδί τον κωδικό κάθε θέσης parking.

  • Το 4o μέρος αποτελείται από την διεπαφή (Interface), με την οποία μέσω web σελίδας βλέπει κανείς την κατάσταση του parking, δηλαδή πόσες και ποιές θέσεις μέσα στον χώρο είναι ελεύθερες.

1.1. Parking Sensor Node

1.1.1. Υλικά Κόμβου

  • 1 x Bread-Board

  • 1 x Arduino Uno

  • 1 x Red led

  • 1 x Blue led

  • 8 x links

  • 1 x Ultrasonic Sensor

1.1.2. Υλοποίηση του Parking Sensor

Σε κάθε θέση parking υπάρχει ένας κόμβος απότελούμενος από ένα Arduino και έναν αισθητήρα απόστασης (ultrasonic) εγκατεστημένος πάνω στο Arduino. Η λειτουργία αυτού βασίζεται στη μέτρηση της απόστασης από τον κόμβο μέχρι κάποιο αντικείμενο (αυτοκίνητο) που εμποδίζει τη θέση του parking και την εξαγωγή της κατάσταασης της αυτής της θέσης στη σειριακή θύρα του Arduino.

300
Figure 1. Ο κόμβος αντιλαμβάνεται παρουσία οχήματος στη θέση.
300
Figure 2. Ο κόμβος αντιλαμβάνεται κενή θέση.

Ο κόμβος διαθέτει επιπλέον δύο leds ένα κόκκινο και ένα μπλε, σαν έξοδο της κατάστασης της θέσης του parking για τον οποίο είναι υπεύθυνος. Με κόκκινο χαρακτηρίζεται η θέση που είναι δεσμευμένη από ένα όχημα και με μπλε η ελεύθερη θέση, όπως φαίνεται στις παραπάνω εικόνες.

1.1.3. Λειτουργία του Parking Sensor

Κάθε κόμβος στέλνει στην σειριακή του τον κωδικό της θέσης, με τον οποίο έχει προγραμματιστεί το Arduino, και την κατάσταση του parking, κωδικοποιημένα με τον διαχωριστή "#". Για την κατάσταση του parking ορίζουμε με "1" ότι η θέση είναι ελεύθεση και με "0" ότι η θέση είναι δεσμευμένη. Ο έλεγχος του sensor γίνεται κάθε 500ms. Η έξοδος στη σειριακή γίνεται με την μορφή ενός string.

<κωδικός θέσης>#<διαθεσιμότητα 0 ή 1>

1.1.4. Διασύνδεση Κόμβου

Ο κόμβος αυτός συνδέεται με ένας "Gateway" κόμβο (βασισμένος σε Raspberry Pi) ο οποίος είναι υπεύθυνος για την μετάδοση της πληροφορίας που αφορά την διαθεσιμότητα της θέσης του parking στο διαδίκτυο. Η πληροφορία αυτή λαμβάνεται στον "Gateway" κόμβο οποίος στη συνέχεια την αποκωδικοποιεί και την αποστέλει στον WEB server μέσω του διαδικτύου.

1.2. Gateway Node

1.2.1. Υλικά Κόμβου

  • 1 x Raspberry Pi 1

  • 1 x Serial Link (Connects to Arduino)

  • 1 x Power Link (Micro Usb)

  • 1 x micro SD (Loaded with Raspbian OS)

  • 1 x Ethernet Link (Connects to nearest Network)

1.2.2. Υλοποίηση και Προγραμματισμός

Η υλοποίηση αποτελείται από την εγκατάσταση του Raspbian OS στο Raspberry και τη δημιουργία ενός proccess σε γλώσσα python το οποίο διαβάζει από την σειριακή θύρα του την πληροφορία που λαμβάνει από το Arduino με την μορφή <κωδικός θέσης>#<διαθεσιμότητα 0 ή 1>. Ύστερα αποκωδικοποιεί αυτή την πληροφορία η οποία περιγράφει τον κωδικό της θέσης και την διαθεσιμότητα της και την αποστέλει μέσω ενός REST API με την μέθοδο POST σε έναν WEB Server.

1.2.3. Διασύνδεηση στο Διαδίκτυο

Ο κόμβος Gateway έχει διασύνδεση με το διαδίκτυο μέσω ενός καλωδίου Ethernet (UTP) έτσι ώστε να μπορέσει να στείλει την πληροφορία

2. Server Node (Κεντρικός Server όπου κρατά την κατάσταση της κάθε θέσης του Parking)

Ο κόμβος αυτός υλοποιεί ένα process γραμμένο σε γλώσσα προγραμματισμού Python 3.

2.1. Εκτέλεση του Process στο Cloud

Για την εκτέλεση του process χρησιμοποιούμε την πλατφόρμα IAAS (Infrastructure as a Service) Heroku, για την οποιά μπορούμε να βρούμε περεταίρω πληροφορίες στον σύνδεσμο παραπάνω.

1000
Figure 3. Συνδεσμολογία moter, motor driver, arduino, ultrasonic sensor και servo motor.

Για την διαδικασία του deployment εκτελούμε ένα σύνολο βημάτων τα οποία αποτελούνται από

3. Autonomous Parking

Το αυτότομο πρκάριμα αποτελείται από το όχημα με εκατεστημένους τους απάραίτητους αισθητήρες και ελεγκτές καθός και έναν μικροελεγκτή (Arduino) για τον έλεγχο αυτών των ελεγκτών. Σκοπός είναι το όχημα να μπορεί να μάθει μέσω του διαδικτύου το "Status" του parking και να παρκάρει στην 1η διαθέσιμη θέση εφ' όσων υπάρχει μία τουλάχιστων διαθέσιμη θέση στον χώρο στάθμευσης.

Η υλοποίηση του αυτόνομου parking χωρίζεται σε δύο βασικά μέρη.

  • Το 1ο μέρος αποτελείται από τον μικροελεγκτή για τον έλεγχο των αισθητήρων και των κινητήρων του οχήματος και εκτελώντας τα απαραίτητα βήματα, να μπορέσει να παρκάρει το όχημα.

  • Το 2ο μέρος αποτείται από τον κόμβο ο οποίος θα έχει πρόσβαση στο διαδίκτυο, όπου αφού ελέγξει αν υπάρχει διαθέσιμη θέση και γνωρίζει ποια είναι η πρώτη ελεύθερη θέση, να δώσει εντολή στον μικροελεγκτή να παρκάρει σε αυτή.

3.1. Microcotroller and Car

3.1.1. Υλικά Κόμβου

  • 1 x Arduino Uno

  • 1 x Servo Motor

  • 1 x Motor Driver

  • 4 x Moter για τους 4 τροχούς

  • 1 x Ultrasonic

  • 1 x 9V Battery

  • 1 x 4,8V Battery

  • 1 x Car

  • 1 x Raspberry Pi

3.1.2. Υλοποίηση και Προγραμματισμός

Ο motor driver, το Servo motor καθώς και ο Ultrasonic αισθητήρας κουμπώνουν στον μικροελεγκτή Arduino Uno που χρησιμοποιούμε, τον οποίο τον εγκαθηστούμε πάνω στο καλούπι του οχήματος το οποίο έχει εγκατεστημένα 4 τροχούς. Οι τροχοί οδηοούνται από 4 moters τα οποία τροφοδοτούνται από τον motor driver.

Η συνδεσμολογία έχει την διάταξη που παρουσιάζεται παρακάτω:

1000
Figure 4. Συνδεσμολογία moter, motor driver, arduino, ultrasonic sensor και servo motor.
Reminder
SLOW SUCCESS BUILDS CHARACTER, FAST SUCCESS BUILDS EGO.