@ -100,6 +100,14 @@ image::Photos/arduino2.jpg[300,200]
της θέσης του parking για τον οποίο είναι υπεύθυνος. Με κόκκινο χαρακτηρίζεται η θέση που είναι
δεσμευμένη από ένα όχημα και με μπλε η ελεύθερη θέση, όπως φαίνεται στις παραπάνω εικόνες.
[.float-group]
--
[.center]
.Παρουσίαση ενός σχηματικού του κυκλώματος.
image::Photos/diagram1.png[1000,800]
--
==== Προγραμματισμός Κόμβου
Για τον προγραμματισμό του Arduino Uno χρησιμοποιήσαμε μία σειριακή σύνδεση του μικροελεγκτή με τον
υπολογιστή μας ο οποίος έφερε εγκατεστημένο το IDE του Arduino στον οποίο υπήρχαν όλες οι απαραίτητες
@ -156,6 +164,15 @@ ttyACM0 που βρίσκεται στο directory (/dev/ στα linux) και
}
----
Μετά της αυθεντικοποίηση του από τον Server τότε λαμβάνει ένα μύνημα το οποίο περιέχει το Session ID το οποίο χρησιμοποιεί
για την μετέπειτα επικοινωνία με αυτόν. Η απάντηση του αιτήματος αυθεντικοποίησης έχει την παρκάτω μορφή.
[source, JSON]
----
{
"cookie": "8yhuxQL0iCid++BPZFXPM959EclBhDmvvrZrqt+yv1s="
}
----
==== Προγραμματισμός Κόμβου
Ο επικοινωνία και ο προγραμματισμός του κόμβου αυτού, που είναι βασισμένος σε ένα Raspberry Pi 1, έγινε με σύνδεση (ssh)
@ -359,18 +376,32 @@ image::Photos/screenshot_web_ui.png[1000,800]
==== Υλικά Κόμβου
* 1 x Arduino Uno
* 1 x Servo Motor
* 1 x Motor Driver
* 1 x Motor Driver (Shield 1.1 - L2981)
* 4 x Moter για τους 4 τροχούς
* 1 x Ultrasonic
* 1 x 9V Battery
* 1 x 4,8V Battery
* 1 x USB Power from Raspberry PI
* 1 x Car
* 1 x Raspberry Pi
==== Υλοποίηση Microcontroller on Car
Ο motor driver, το Servo motor καθώς και ο Ultrasonic αισθητήρας κουμπώνουν στον μικροελεγκτή Arduino Uno που χρησιμοποιούμε,
τον οποίο τον εγκαθηστούμε πάνω στο καλούπι του οχήματος το οποίο έχει εγκατεστημένα 4 τροχούς. Οι τροχοί οδηοούνται από 4 moters
τα οποία τροφοδοτούνται από τον motor driver.
τα οποία τροφοδοτούνται από τον motor driver. Ο motor driver πέρνει εντολές από το Arduino , ενώ το Arduino περιμένει μέχρι το Rasperry να στείλει πληροφορία.
Μόλις λάβει την πληροφορία από το Rasperry, υπολογίζουμε με το υπόλοιπο & το πηλίκο της θέσης του parking με το 2, την γραμμή και την θέση που το όχημα πρέπει να παρκάρει.
Στην συνέχεια , μόλις το όχημα έχει φτάσει μπροστά από την θέση που πρέπει να παρκάρει , με τις μετρήσεις του ultrasonic ελέγχει το πόσο μπροστά ή πίσω θα πάει το όχημα.
[source, C]
----
row = (parkingNo / 2);
side = (parkingNo % 2);
if (side == 0) {
row = row - 1;
}
----
==== Προγραμματισμός Microcontroller on Car
O προγραμματισμός του Arduino έγινε με την ίδια λογική όπως έγινε και ο προγραμματισμός του Arduino παραπάνω.
Η συνδεσμολογία έχει την διάταξη που παρουσιάζεται παρακάτω:
@ -383,12 +414,36 @@ image::Photos/diagram.png[1000,800]
=== Gateway Κόμβος (2~ο~ Μέρος)
Ο Gateway κόμβος του αυτόνομου οχήματος που θα έρθει στην θέση να παρκάρει μόνο του στο parking (ΙοΤ), είναι υπεύθυνος
==== Υλικά Κόμβου
* 1 x Raspberry Pi 1
* 1 x TP-Link WiFi Adapter
* 1 x Powerbank Power
Ο Gateway κόμβος του αυτόνομου οχήματος που θα έρθει στην θέση να παρκάρει μόνο του στο parking, είναι υπεύθυνος
για την διασύνδεση του οχήματος με το διαδίκτυο. Γι' αυτό το λόγο το process που σχεδιάσαμε να τρέχει σε αυτό το σημείο
είναι υπεύθυνο για την αναζήτηση της πληροφορίας ποια είναι η πρώτη ελεύθερη για να παρκάρει το όχημα και στη συνέχεια
είναι υπεύθυνο για την αναζήτηση της πληροφορίας, ποια είναι η πρώτη ελεύθερη για να παρκάρει το όχημα και στη συνέχεια
να αποστέλει τον αριθμό της θέσης στον μικροελεγκτή Arduino ο οποίος είναι υπεύθυνος να πάρει αυτή την τιμή και να κατευθύνει
το όχημα.
==== Υλοποίηση Gateway on Car
Ο gateway κόμβος ξεκινά μια HTTP σύνδεση με τον κετντρικό Server, ζητώντας μέσω υπηρεσίας REST API το 1~ο~ διαθέσιμο parking.
Αφού διαβάσει την απάντησή του τότε την απόστέλει σε μορφή String στο Arduino μέσω σειριακής επικοινωνίας στο arduino.
==== Προγραμματιμός Gateway on Car
Το process που εκτελεί αυτή την επικοινωνία μεταξύ του κεντρικου Server και το Arduino στο όχημα είναι προγραμματισμένο σε γλώσσα
προγραμματισμού Python.
== Προβλήματα που αντιμετωπίσαμε
* Δεν καταφέραμε να κάνουμε Deploy στο swarmlab τον κεντρικό Server μας έτσι ώστε να έχουμε
via Internet επικοινωνία.
* Δεν καταφέραμε να τελειοποιήσουμε το αυτόνομο παρκάριμα, και την ενορχύστρωσή του με το υπόλοιπο σύστημα. Το πρόβλημα που
αντιμετωπίσαμε συγκεκριμένα ήταν ο έλεγχος των δεδομένων που από το raspberry στο Arduino και το καθαρισμό του buffer στο
Arduino. Αυτό συνεπώς δεν μας επέτρεπε στο Arduino να διαβάσουμε από την σειριακή τον ακέραιο αριθμό (θέση parking) που έστελνε
το raspberry.
.Reminder
[NOTE]