Είχα ακούσει κατά καιρούς για την ύπαρξη του Arduino, αλλά η πρώτη μου επαφή με αυτό ήταν όταν κληρώθηκε ένα Arduino Uno για τη συμμετοχή μιας από τις τάξεις μου στο 4ο Φεστιβάλ Ψηφιακής Δημιουργίας για τη παρουσίαση του Υδροπνευματικού Αθροιστή 3-bit. Με την πρώτη γνωριμία μου με το Arduino, ξύπνησαν πάλι μέσα μου οι νεανικές μου αναζητήσεις για τα ηλεκτρονικά. Έτσι πολύ γρήγορα βρέθηκα να ψάχνω και να πειραματίζομαι με αυτόν το μικροελεγκτή και δεν άργησε να έρθει το πρώτο μου πρότζεκτ, που δεν ήταν τίποτε άλλο από ένα ρομπότ ισσοροπιστή (self-balancing robot). Ένα τέτοιο ρομπότ δεν μπορεί να χαρακτηριστεί εύκολη κατασκευή, αλλά είχα πολύ μεγάλο ενθουσιασμό, ένιωθα εξαιρετικά αισιόδοξος και θα ήταν αρκετά εντυπωσιακό και "πιασάρικο" όταν θα το παρουσίαζα στους μαθητές μου καθώς θα τους μιλούσα για τους μικροελεγκτές την επόμενη σχολική χρονιά.
Ένας συνάδελφος μου πρόσφερε το χαλασμένο τηλεκατευθυνόμενο παιγνίδι του γιου του που μου παρείχε μια πολύ βολική συσκευασία μοτέρ και γραναζιών για τις δοκιμές μου.
Το επόμενο που χρειαζόμουν ήταν ένας τρόπος να ελέγχω το μοτέρ μέσα από το Arduino. Μετά από πολύ διάβασμα κατέληξα στο παρακάτω σχέδιο ελεγκτή/οδηγού που χρησιμοποιεί το διάσημο L293D H-Bridge.
Μετά από σχετικές δοκιμές πάνω σε breadboard όλα έδειχναν ότι λειτουργούσαν στην εντέλεια και το μόνο πράγμα που με προβλημάτιζε ήταν η υψηλή θερμοκρασία που αναπτυσσόταν πάνω στο ολοκληρωμένο L293D. Έτσι, στη τελική του μορφή πρόσθεσα μια αυτοσχέδια ψύκτρα από φύλλο χαλκού.
Το τελευταίο που έπρεπε να φτιάξω ήταν ο ανιχνευτής κλήσης. Δεν ήθελα να ξοδέψω επιπρόθετα χρήματα για την αγορά ενός επιταχυνσιόμετρου και γυροσκοπίου καθώς στόχος μου ήταν ο πειραματισμός και η απλότητα της κατασκευής. Έτσι ξεκίνησα αρχικά με τη κατασκευή καθαρά μηχανικών διακοπτών τύπου SPDT που χρησιμοποιούσαν μπαλίτσες από ρουλεμάν. Μετά από πολλές αποτυχημένες δοκιμές, προχώρησα σε ηλεκτρονικό-μηχανικούς διακόπτες που χρησιμοποιούσαν LED, φωτοαντιστάσεις και τις γνωστές μπαλίτσες από ρουλεμάν. Η τύχη δεν με βοήθησε ούτε τότε και κατάλαβα με τον πιο επίπονο τρόπο πως η αδράνεια σε τέτοιου είδους ανιχνευτές δεν είναι καλός σύμμαχος. Είχα αρχίσει να απογοητεύομαι όταν έπεσα τυχαία στο παρακάτω βίντεο.
Πέταξα λοιπόν κι εγώ τις άχρηστες μπαλίτσες των ρουλεμάν (που με παίδευαν τόσο καιρό) όπως και τα LED και χρησιμοποιώντας το παρακάτω απλό σχέδιο, έφτιαξα τον πολυπόθητο ανιχνευτή κλήσης, μόνο με δύο φωτοαντιστάσεις που "κοιτούν" αντικριστά άνω με μία γωνία 40 μοιρών περίπου (και δύο αντιστάσεις) σε κάποιο εξωτερικό σταθερό φωτισμό (φυσικό ή τεχνητό) πάνω από το ρομπότ.
Για το σκελετό του ρομπότ, χρησιμοποιήθηκε το άχρηστο πλέον καπάκι από slot σκληρού δίσκου μιας κεντρικής μονάδας Η/Υ. Η θήκη μπαταρίων από το παιγνίδι που μου πρόσφερε ο συνάδελφος, έγινε η πηγή ενέργειας για το μοτέρ, ενώ η τροφοδοσία του Arduino γίνεται από μια ανεξάρτητη μπαταρία των 9V. Ο προγραμματισμός της ισορροπίας έγινε εφαρμόζοντας το γνωστό αλγόριθμο PID (Proportional Integral Derivative). Η επιλογή των κατάλληλων τιμών των παραμέτρων του αλγόριθμου έγινε με τη βοήθεια σχετικού λογισμικού από το μπλογκ του Patrik Olsson και μετά από προσαρμογή του στις δικές μου ανάγκες.
Στο παρακάτω βίντεο μπορείτε να δείτε το ρομπότ ισορροπιστή στη πρώτη του επιτυχημένη δοκιμή κάτω από τεχνητό φως (σ' αυτό οφείλεται κατά πάσα πιθανότητα η μάλλον αστεία παλινδρομική φαινομενικά ασταθή ισορροπία του).
Η ιδέα κατασκευής ενός δυαδικού αθροιστή που θα λειτουργούσε με νερό (υδροπνευματικός αθροιστής) γύριζε στο μυαλό μου κάμποσα χρόνια μέχρι που τελικά υλοποιήθηκε τα Χριστούγεννα του 2013. Σκοπός μου ήταν να αποδείξω στους μαθητές μου, όσο πιο παραστατικά μπορούσα, πως είναι δυνατό να δημιουργηθεί ένας ψηφιακός υπολογιστής χρησιμοποιώντας οποιοδήποτε υλικό/στοιχείο, αρκεί να υπάρχει η δυνατότητα κατασκευής των λογικών πυλών που θα υλοποιούν τις βασικές πράξεις της δυαδικής λογικής. Με άλλα λόγια, η περίπτωση του νερού, απαιτεί τη κατασκευή διακοπτών νερού που θα λειτουργούν με νερό. Στο σημείο αυτό πρέπει να αναφερθεί, ότι ο δυαδικός αθροιστής, δηλαδή μια συσκευή που έχει τη δυνατότητα πρόσθεσης δύο δυαδικών αριθμών, αποτελεί τον «εγκέφαλο» της μονάδας αριθμητικής και λογικής (Arithmetic and Logic Unit), των μικροεπεξεργαστών των σύγχρονων ηλεκτρονικών υπολογιστών και επομένως, θεωρητικά τουλάχιστο, από τη στιγμή που μπορεί να κατασκευαστεί ένας αθροιστής που λειτουργεί με νερό, θα μπορούσε να κατασκευαστεί και ένα σύστημα υπολογιστή που λειτουργεί εξ’ ολοκλήρου με νερό. Βέβαια, η κατασκευή ενός τέτοιου συστήματος θα είχε μόνο εκπαιδευτικό ενδιαφέρον.
Δυαδικός ημιαθροιστής με πύλες XOR & AND
(Α,Β = Είσοδοι, S = Άθροισμα εισόδων,
C = Κρατούμενο αθροίσματος εισόδων)
Ως γνωστό, ένας δυαδικός αθροιστής πολλών bit, ουσιαστικά αποτελείται από ένα ημιαθροιστή (half adder) και μια σειρά/ακολουθία από πλήρες αθροιστές (full adders). Ο ημιαθροιστής είναι υπεύθυνος για την πρόσθεση των λιγότερων σημαντικών ψηφίων των δύο αριθμών, ενώ οι πλήρες αθροιστές υλοποιούν τη πρόσθεση των υπόλοιπων δυαδικών ψηφιών (bit) των δύο προσθετέων. Τόσο ο ημι-αθροιστής, όσο και ο πλήρης αθροιστής, δίνουν ως έξοδο το άθροισμα (S) και το κρατούμενο (C) της αντίστοιχης δυαδικής πρόσθεσης, ενώ έχουν ως είσοδο, ο μεν ημιαθροιστής τους δύο προσθετέους (Α και Β), ο δε πλήρης αθροιστής τους δύο προσθετέους και το κρατούμενο (Cin) από τη προηγούμενη πρόσθεση. Στη πράξη, ο ημιαθροιστής κατασκευάζεται από μία λογική πύλη XOR (που δίνει το άθροισμα S) και μία λογική πύλη AND (που δίνει το κρατούμενο C). Ο πλήρης αθροιστής κατασκευάζεται με το συνδυασμό δύο ημιαθροιστών (για τον υπολογισμό του αθροίσματος S) και μιας λογικής πύλης OR (για τον υπολογισμό του κρατούμενου Cout). Έτσι, αν μπορούν να κατασκευαστούν οι απαιτούμενες λογικές πύλες που θα λειτουργούν με νερό, είναι δυνατή η κατασκευή ενός υδροπνευματικού αθροιστή.
Πλήρης αθροιστής από το συνδυασμό δύο ημιαθροιστών και μίας πύλης OR
Μετά από πολύμηνες αναζητήσεις και δοκιμές, την ιδέα για τον τελικό σχεδιασμό την έδωσε ο «Υδραυλικός Υπολογιστής» του Paulo Blinkstein (χρησιμοποιείται η ίδια αρχή λειτουργίας αλλά με διαφορετικό τρόπο κατασκευής). Ουσιαστικά, τα σήματα εισόδου και εξόδου δηλ. οι δυαδικοί αριθμοί που θα προστεθούν και το αποτέλεσμα της πρόθεσης του, αναπαρίστανται από νερό που ρέει (ή δε ρέει) μέσα σε σωληνώσεις και οι λογικές πύλες φτιάχνονται από μία ειδική διάταξη από δεξαμενές νερού, ενώ η ενέργεια που απαιτείται για τη ροή του νερού, παρέχεται από την ίδια τη βαρύτητα. Ειδικότερα, μία δεξαμενή νερού που βρίσκεται μέσα σε μια άλλη, υλοποιεί τη συμπεριφορά μιας πύλης AND και ταυτόχρονα μιας XOR δηλ. ενός ημιαθροιστή.
Υδροπνευματικές πύλες XOR και AND σε μία μοναδική σύνθεση (οι σωληνώσεις υπερχείλισης δεν φαίνονται)
Υδροπνευματική πύλη OR (η σωλήνωση υπερχείλισης δεν φαίνεται)
Η λογική πύλη OR υλοποιείται από μία μόνο δεξαμενή που έχει δύο ανεξάρτητες εισερχόμενες ροές νερού και μία εξερχόμενη. Οι δεξαμενές διαθέτουν επίσης σωληνώσεις υπερχείλισης που δεν φαίνονται στα παραπάνω σχηματικά διαγράμματα.
Σύμφωνα με τα παραπάνω, για την κατασκευή ενός κλασσικού αθροιστή 3-bit, απαιτούνται συνολικά 5 ημιαθροιστές και δύο πύλες OR.
Αθροιστής 3-bit με χρήση κλασσικών λογικών πυλών
Τα υλικά που χρησιμοποιήθηκαν για την κατασκευή
του υδροπνευματικού αθροιστή
Τα εργαλεία που χρησιμοποιήθηκαν για την κατασκευή
του υδροπνευματικού αθροιστή
Έτσι, για την κατασκευή του υδροπνευματικού αθροιστή 3-bit, χρειάζονται 5 αντίστοιχες διπλές δεξαμενές και 2 μονές, μαζί με τις αντίστοιχες σωληνώσεις τους. Θέλοντας να κρατήσω τον όλο σχεδιασμό χαμηλό σε κόστος, σκέφτηκα να χρησιμοποιήσω απλά υλικά της καθημερινότητας, ώστε ο καθένας (και κατ’ επέκταση οι μαθητές μου) να έχει τη δυνατότητα υλοποίησης της. Έτσι, για τις δεξαμενές χρησιμοποιήθηκαν πλαστικά μπουκάλια νερού μισού λίτρου και συσκευασίες από φιλμ φωτογραφικών μηχανών. Ενώ για τις σωληνώσεις χρησιμοποιήθηκαν πλαστικά καλαμάκια. Για τις δεξαμενές θα μπορούσαν να χρησιμοποιηθούν πλαστικά μπουκάλια νερού 1,5 και 0,5 λίτρου αλλά η όλη κατασκευή θα γινόταν ογκώδη και το απέφυγα. Όλες οι απαιτούμενες κολλήσεις έγιναν με ζεστή σιλικόνη, ενώ χρησιμοποιήθηκαν και ξύλινα καλαμάκια (για σουβλάκια) για τη στερέωση των σημαντικών/κρίσιμων σωληνώσεων εισόδου (οι υπόλοιπες στερεώσεις έγιναν με blu-tack).
Υδροπνευματικός αθροιστής 3-bit
Η όλη κατασκευή τοποθετήθηκε σε ένα πλαίσιο από πλέξιγκλας και για να υπάρχει συνεχή ροή χρησιμοποιήθηκε μία αντλία νερού, που φέρνει το χρησιμοποιημένο νερό από το κάτω μέρος της συσκευής σε μία δεξαμενή στη κορυφή της για επαναχρησιμοποίηση. Οι σειρά από διπλές δεξαμενές στο πάνω μέρος της κατασκευής χρησιμοποιούνται ως διακόπτες επιλογής των δυαδικών προσθετέων. Στο κάτω μέρος βρίσκονται οι σωληνώσεις που δηλώνουν το αποτέλεσμα της άθροισης, ενώ στο πίσω μέρος, όλες οι σωληνώσεις υπερχείλισης κάθε πύλης καταλήγουνσε ένα κεντρικό σωλήνας υπερχείλισης που οδηγεί το περίσσιο νερό κατευθείαν στο χώρο της αντλίας.
Στο παραπάνω βίντεο μπορείτε να δείτε τον υδροπνευματικό αθροιστή σε λειτουργία μαζί με μία αναλυτικότερη περιγραφή του θεωρητικού υπόβαθρου στην Αγγλική γλώσσα με Ελληνικούς υπότιτλους.
Το παρακάτω βίντεο είναι η παρουσίαση του υδροπνευματικού αθροιστή στο 4ο Φεστιβάλ Ψηφιακής Δημιουργίας από τους μαθητές μου στα πλαίσια του μαθήματος «Βασικές Αρχές Πληροφορικής και Ψηφιακής Τεχνολογίας» για το σχολικό έτος 2013-2014.
Κλείνοντας, πρέπει να σημειωθεί ότι πολύ λίγες παρόμοιες προσπάθειες έχουν στεφθεί με επιτυχία στο παρελθόν σε διεθνές επίπεδο. Βέβαια, ο συγκεκριμένος τρόπος άθροισης αριθμών έχει μόνο εκπαιδευτικό χαρακτήρα και σε καμία περίπτωση δεν μπορεί να συγκριθεί με τις δυνατότητες ενός Η/Υ (ακόμη και αυτών των δεκαετιών του 1930).