diff --git a/.README.md.swp b/.README.md.swp new file mode 100644 index 0000000..068c8d1 Binary files /dev/null and b/.README.md.swp differ diff --git a/README.md b/README.md index 9db2ef6..316a5ed 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ - At folder sensorNode/ there is the Arduino code that sense the parking position sta--tus and send it via serial port the information if there is a car or no. -- At folder iNode/ there is the application that runs on Raspberry Pi, get +- At folder gatewayNode/ there is the application that runs on Raspberry Pi, get the information from Arduino and post it to REST-API as JSON. - At folder webInterface/ there is an html page that provide the parking status simply get diff --git a/project.adoc b/project.adoc index 78f3aa9..eb7e486 100644 --- a/project.adoc +++ b/project.adoc @@ -14,7 +14,7 @@ // Metadata: :description: IoT Εφαρμογή Smart & Autonomous parking -:keywords: IoT, parking, smart-parking , autonomous parking +:keywords: IoT, parking, smart-parking, autonomous parking :data-uri: :toc: right :toc-title: Πίνακας Περιεχομένων @@ -24,18 +24,25 @@ :sectnums: == Smart Parking +Το "Smart Parking" Έξυπνο πάρκινγκ βασίζεται στη διαδικασία όπου η κατάσταση του πάρκινγκ κοινοποιείται +μέσω ενός συνόλου hardware και software στο διαδίκτυο και έτσι πετυχαίνουμε η κατάσταση του να είναι διαθέσιμη +"accesable" από το διαδίκτυο. Αυτό το χαρακτηριστικό κάνει αυτό το αντικειμένο μέρος του διαδικτύου και του κόσμου IoT. -*Η υλοποίηση χωρίζεται σε 3 βασικά μέρη:* +*Η υλοποίηση του Smart Parking χωρίζεται σε 3 βασικά μέρη:* -* Το 1ο μέρος αποτελείται από τα αντικείμενα του parking (sensors) τα οποία είναι -ένας αισθητήρας μέτρησης απόστασης (distance measurement sensor) σε κάθε θέση του πάρκινγκ, έτσι ώστε να ανιχνεύει για -μία συγκεκριμένη θέση έαν υπάρχει κάποιο όχημα, καθώς και μία συσκευή Arduino Uno. +* Το 1~ο~ μέρος αποτελείται από ένα σύνολο αισθητήρων που εγκαθιστούντε σε κάθε θέση parking (sensor), τα οποία αποτελούνται +από έναν αισθητήρα μέτρησης απόστασης (ultrasonic) και έναν μικροελεγκτή (Arduino Uno), έτσι ώστε να ανιχνεύει και να κωδικοποιεί +για μία συγκεκριμένη θέση έαν υπάρχει κάποιο όχημα ή όχι. -* Το 2ο μέρος αποτελείται από την συσκευή gateway σε Raspberry Pi1 η οποία διαβάζει στη σειριακή -της πληροφορία από το Arduino Uno, που κάνει sense την θέση, και στέλνει αυτή την πληροφορία +* Το 2~ο~ μέρος αποτελείται από την συσκευή gateway σε Raspberry Pi1, η οποία διαβάζει στη σειριακή του +τη πληροφορία από το Arduino Uno, που κάνει sense μία θέση parking, και στέλνει αυτή την πληροφορία σε έναν web server με χρήση REST API. -* Το 3o μέρος αποτελείται από τον client ο οποίος μέσω μίας web σελίδας βλέπει την κατάσταση +* To 3~o~ μέρος αποτελείται από τον WEB Server ο οποίος αποτελείται από ένα process γραμμένο σε python που υλοποιεί +ένα REST API έτσι ώστε να μπορεί να αποθηκεύει την κατάσταση κάθε θέσης parking σε μία δομή λίστας με χαρακτηριστικό +κλειδί τον κωδικό κάθε θέσης parking. + +* Το 4~o~ μέρος αποτελείται από την διεπαφή (Interface), με την οποία μέσω web σελίδας βλέπει κανείς την κατάσταση του parking, δηλαδή πόσες και ποιές θέσεις μέσα στον χώρο είναι ελεύθερες. === Parking Sensor Node @@ -66,19 +73,21 @@ image::Photos/arduino2.jpg[300,200] -- Ο κόμβος διαθέτει επιπλέον δύο leds ένα κόκκινο και ένα μπλε, σαν έξοδο της κατάστασης -της θέσης του parking για το οποίο είναι υπεύθυνος. Με κόκκινο χαρακτηρίζεται η θέση που είναι +της θέσης του parking για τον οποίο είναι υπεύθυνος. Με κόκκινο χαρακτηρίζεται η θέση που είναι δεσμευμένη από ένα όχημα και με μπλε η ελεύθερη θέση, όπως φαίνεται στις παραπάνω εικόνες. ==== Λειτουργία του Parking Sensor Κάθε κόμβος στέλνει στην σειριακή του τον κωδικό της θέσης, με τον οποίο έχει προγραμματιστεί το Arduino, και την κατάσταση του parking, κωδικοποιημένα με τον διαχωριστή "#". Για την κατάσταση του parking ορίζουμε με "1" ότι η θέση είναι ελεύθεση και με "0" ότι η θέση είναι δεσμευμένη. Ο έλεγχος του sensor γίνεται κάθε -500ms. Η έξοδος στη σειριακή γίνεται με την μορφή ενός string +500ms. Η έξοδος στη σειριακή γίνεται με την μορφή ενός string. + +<κωδικός θέσης>#<διαθεσιμότητα 0 ή 1> ==== Διασύνδεση Κόμβου Ο κόμβος αυτός συνδέεται με ένας "Gateway" κόμβο (βασισμένος σε Raspberry Pi) ο οποίος είναι υπεύθυνος για την μετάδοση της πληροφορίας που αφορά την διαθεσιμότητα της θέσης του parking στο διαδίκτυο. Η πληροφορία αυτή -λαμβάνεται και αποθηκεύεται στον "Gateway" κόμβο. +λαμβάνεται στον "Gateway" κόμβο οποίος στη συνέχεια την αποκωδικοποιεί και την αποστέλει στον WEB server μέσω του διαδικτύου. === Gateway Node @@ -90,10 +99,10 @@ image::Photos/arduino2.jpg[300,200] * 1 x Ethernet Link (Connects to nearest Network) ==== Υλοποίηση και Προγραμματισμός -Η υλοποίηση αποτελείται από την εγκατάσταση του Raspbian OS στο Raspberry και δημιουργία ενός proccess -σε γλώσσα python το οποίο διαβάζει από την σειριακή θύρα του την πληροφορία που στέλνει το Arduino με -την μορφή μίας συμβολοσειράς. Ύστερα αποκωδικοποιεί αυτή την πληροφορία η οποία περιγράφει τον κωδικό της θέσης -και την διαθεσιμότητα της και την αποστέλει μέσω ενός API με την μέθοδο POST σε έναν WEB Server. +Η υλοποίηση αποτελείται από την εγκατάσταση του Raspbian OS στο Raspberry και τη δημιουργία ενός proccess +σε γλώσσα python το οποίο διαβάζει από την σειριακή θύρα του την πληροφορία που λαμβάνει από το Arduino με +την μορφή <κωδικός θέσης>#<διαθεσιμότητα 0 ή 1>. Ύστερα αποκωδικοποιεί αυτή την πληροφορία η οποία περιγράφει τον κωδικό της θέσης +και την διαθεσιμότητα της και την αποστέλει μέσω ενός REST API με την μέθοδο POST σε έναν WEB Server. ==== Διασύνδεηση στο Διαδίκτυο Ο κόμβος Gateway έχει διασύνδεση με το διαδίκτυο μέσω ενός καλωδίου Ethernet (UTP) έτσι ώστε να μπορέσει @@ -105,12 +114,12 @@ image::Photos/arduino2.jpg[300,200] να μάθει μέσω του διαδικτύου το "Status" του parking και να παρκάρει στην 1η διαθέσιμη θέση εφ' όσων υπάρχει μία τουλάχιστων διαθέσιμη θέση στον χώρο στάθμευσης. -*Η υλοποίηση χωρίζεται σε δύο βασικά μέρη.* +*Η υλοποίηση του αυτόνομου parking χωρίζεται σε δύο βασικά μέρη.* -* Το 1ο μέρος αποτελείται από τον μικροελεγκτή για τον έλεγχο των αισθητήρων και των κινητήρων του οχήματος και +* Το 1~ο~ μέρος αποτελείται από τον μικροελεγκτή για τον έλεγχο των αισθητήρων και των κινητήρων του οχήματος και εκτελώντας τα απαραίτητα βήματα, να μπορέσει να παρκάρει το όχημα. -* Το 2ο μέρος αποτείται από τον κόμβο ο οποίος θα έχει πρόσβαση στο διαδίκτυο, ο οποίος αφού ελέγξει αν υπάρχει +* Το 2~ο~ μέρος αποτείται από τον κόμβο ο οποίος θα έχει πρόσβαση στο διαδίκτυο, όπου αφού ελέγξει αν υπάρχει διαθέσιμη θέση και γνωρίζει ποια είναι η πρώτη ελεύθερη θέση, να δώσει εντολή στον μικροελεγκτή να παρκάρει σε αυτή. === Microcotroller and Car diff --git a/project.html b/project.html index 3b9c34c..6f64f4f 100644 --- a/project.html +++ b/project.html @@ -472,22 +472,32 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b

1. Smart Parking

-

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

+

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

+
+
+

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

@@ -545,7 +555,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b

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

@@ -555,7 +565,10 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b

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

+500ms. Η έξοδος στη σειριακή γίνεται με την μορφή ενός string.

+ +
+

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

@@ -563,7 +576,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b

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

+λαμβάνεται στον "Gateway" κόμβο οποίος στη συνέχεια την αποκωδικοποιεί και την αποστέλει στον WEB server μέσω του διαδικτύου.

@@ -594,10 +607,10 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b

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

-

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

+

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

@@ -620,16 +633,16 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b υπάρχει μία τουλάχιστων διαθέσιμη θέση στον χώρο στάθμευσης.

-

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

+

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

@@ -710,7 +723,7 @@ SLOW SUCCESS BUILDS CHARACTER, FAST SUCCESS BUILDS EGO.