1o ΓΕΛ Γιαννιτσών – Το “έξυπνο” φανάρι

1o ΓΕΛ Γιαννιτσών – Το “έξυπνο” φανάρι

Φτιάξε το δικό σου έξυπνο φανάρι με Arduino

 

[youtube https://www.youtube.com/watch?v=O30eo1EwZo0&w=560&h=315]

Υλικά:

  1. 1 Arduino UNO
  2. 1 Breadboard
  3. 2 LED ΚΟΚΚΙΝΑ (κόκκινο φανάρι)
  4. 2 LED ΚΙΤΡΙΝΑ ή ΠΟΡΤΟΚΑΛΙ (κίτρινο φανάρι)
  5. 2 LED ΠΡΑΣΙΝΑ (πράσινο φανάρι)
  6. 1 Αισθητήρα
    ς Ultrasonic
  7. 2 ανιτστάσεις 220 ohm (1 για κάθε φανάρι)
  8. Breadboard wires
  9. 1 καλώδιο UTP (προαιρετικά)

Περιγραφή

To “έξυπνο” φανάρι είναι ένα φανάρι κυκλοφορίας, το οποίο είναι αρχικά κόκκινο και δέχεται εντολή από αισθητήρα, ο οποίος “αντιλαμβάνεται” πότε έρχεται κάποιο όχημα και τότε δίνει εντολή να αλλάξει η κατάσταση των φαναριών της διασταύρωσης, ώστε να επιτραπεί η κυκλοφορία στο όχημα που περιμένει.

Είναι ιδιαίτερα χρήσιμο σε διασταυρώσεις κεντρικών δρόμων με δευτερεύοντες επαρχιακούς δρόμους (στους οποίους συνήθως κινούνται λίγα οχήματα). Αυτό που ισχύει προς το παρόν σε τέτοιες διασταυρώσεις στους ελληνικούς δρόμους είναι ότι υπάρχουν χρονισμένα φανάρια, τα οποία λειτουργούν με σταθερούς χρόνους αναμονής. Πολύ συχνά, όμως οι οδηγοί του δρόμου ταχείας κυκλοφορίας αναγκάζονται να περιμένουν στο φανάρι, ακόμα και όταν δεν υπάρχει διερχόμενο όχημα στον δευτερεύοντα δρόμο.

Κατασκευή μακέτας

Για την κατασκευή αρχικά χρησιμοποιήσαμε μακετόχαρτο διαστάσεων 70 x 50 cm και χρωματιστό/καφέ χαρτόνι για την κατασκευή του δρόμου. Χρησιμοποιήσαμε διορθωτικό σε μορφή ταινίας για να σχεδιάσουμε τις διακεκομμένες γραμμές του δρόμου και κατασκευάσαμε τα φανάρια όπως αναλυτικά περιγράφονται παρακάτω. Στην συνέχεια τοποθετήσαμε/οικοδομήσαμε κτίρια για να διακοσμήσουμε τη μακέτα.

 

Κατασκευή του φαναριού

Κολλήσαμε με την βοήθεια ενός εργαλείου συγκόλλησης όλες τις γειώσεις από τα τρία led και στη συνέχεια ενώσαμε σε αυτό το άκρο μία αντίσταση 220Ω. Το άλλο άκρο του κάθε led το κολλήσαμε σε ένα ξεχωριστό καλώδιο (χρησιμοποιήσαμε τα καλώδια ενός UTP επειδή έχουν μεγαλύτερο μήκος από τα κλασικά breadboard wires) και τα τυλίξαμε με μονωτική ταινία ώστε να μην βραχυκυκλώνουν. Έτσι, ενώ αρχικά θα χρειαζόμασταν 6 καλώδια και 3 αντιστάσεις για το κάθε φανάρι, τώρα απαιτούνται 4 καλώδια και 1 αντίσταση.

Στη συνέχεια προχωρήσαμε στην κατασκευή του περιβλήματος του φαναριού. Σε ένα κομμάτι μαύρο χαρτόνι σχεδιάσαμε το ανάπτυγμα ενός ορθογωνίου παραλληλεπιπέδου και με την βοήθεια ενός διακορευτή δημιουργήσαμε τρία ανοίγματα για τα τρία led. Για να στηρίζεται το πάνω μέρος του φαναριού περάσαμε τα καλώδια μέσα από ένα μαύρο καλαμάκι και το στερεώσαμε στη μακέτα.

 

Ο κώδικας:

int red=11,green=9,yellow=10,red2=6,green2=5,yellow2=3;

int echoPin = 12; // Echo Pin

int trigPin = 13; // Trigger Pin

int maximumRange = 3;

int minimumRange = 0;

float duration, distance;

 

void setup () {

 pinMode (red,OUTPUT);

 pinMode (green,OUTPUT);

 pinMode (yellow,OUTPUT);

 pinMode (red2,OUTPUT);

 pinMode (green2,OUTPUT);

 pinMode (yellow2,OUTPUT);

 digitalWrite (green,LOW);

 digitalWrite (red,LOW);

 digitalWrite (yellow,LOW);

 digitalWrite (green2,LOW);

 digitalWrite (red2,LOW);

 digitalWrite (yellow2,LOW);

 pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

}

 

void loop (){

 digitalWrite (green2,HIGH);

 digitalWrite (red,HIGH);

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);

distance = duration/58.138;

if (distance <= maximumRange) {

 digitalWrite (yellow2,HIGH);

 digitalWrite (green2,LOW);

 delay(400);

 digitalWrite (yellow2,LOW);

 digitalWrite (red2,HIGH);

 digitalWrite (red,LOW);

 digitalWrite (green,HIGH);

 delay(5600);

 digitalWrite (yellow,HIGH);

 digitalWrite (green,LOW);

 delay(400);

 digitalWrite (red,HIGH);

 digitalWrite (yellow,LOW);

 digitalWrite (green2,HIGH);

 digitalWrite (red2,LOW);

 delay(5600);

}

}