Diamantopoulos on Press

if(!success){try++;}

Software

 

Έχω γράψει αρκετά προγράμματα εκ των οποίων τα πιο πλήρη είναι τα εξής :

  • FINDER : Το robot ακολουθεί αντικέιμενα μέσω υπερύθρων (π.χ.κινούμενο άνθρωπο) και αποφύγει εμπόδια μέσω αισθητήρων επαφής.
  • CLEVER_REMOTE_CONTROL : To robot λειτουργεί ως τηλεκατευθυνόμενο (4 κανάλια RF – 4 κινήσεις) αλλά αποφέυγει εμπόδια από όλους τους αισθητήρες. Εδώ σημασία έχει η ουρά προταιρεοτήτων. To robot θα κινείται σύμφωνα με τον τηλεχειρισμό αλλά αν βρεί επόδιο θα στρίψει παρόλο που εμείς πατάμε το button για εμπρός κίνηση.
  • PHOTOBORE : Όπως λέει και το όνομά του , το robot ακολουθεί το φώς μέσω των αισθητήεων φωτός και αποφεύγει εμπόδια από τους υπόλοιπους αισθητήρες. Ακόμα δεν έχει καλή απόκριση λόγω χαμηλής ποιότητας αισθητήρων. Όταν βρώ (αν βρω – έχω ψάξει παντού) θα προσθέσω κατά σειρά και άλλους ώστε η αποφόρτιση του πυκνωτή να γίνεται πιο αντικειμενικά με τοποθέτηση φωτοαντιστάσεων σε όλη την δεξιά και αριστερή αντίστοιχα πλευρά του robot. Τώρα έχω διακύμανση στο διάστημα [78,90] ενώ άν συνδέσω και τους δυο αισθητήρες που διαθετω κατά σειρά παίρνω δείγματα από το [180,65536] .Βέβαια η συνάρτηση μετάβασης είναι λογαριθμική με βάση το 550 – δηλαδή οι περισσότερες τιμές βρίσκονται στο[180,550] και οι υπόλοιπες σε ακραίες περιπτώσεις έντονου φωτισμού.
  • Πρωτόκολλο S2oBO_v1.0 : Το πρωτόκολλο επικοινωνίας S2oBO_v1.0 (Serial 2 (to) only Buffered Output) αναπτύχθηκε ως μια προσπάθεια σειριακής επικοινωνίας του bs2 επεξεργαστή με έναν καταχωρητή 74HC164 και αυτού με ένα flip-flop ic 74HC374 με σκοπό την αύξηση των εξόδων του επεξεργαστή. Είναι πολύ απλό στην πρώτη του έκδοση καθώς η λειτουργία του βασίζεται μόνο στα σήματα data_ , clock_ , clear_ , enable_ , δηλαδή σε αυτά που απαιτούνται για την λειτουργία των παραπάνω ic’s . Ωστόσο η βελτίωση του πρωτοκόλου μέσω πρόσθεσης επιπλέον εσωτερικών σημάτων και buffers κρίνεται απαραίτητη καθώς τώρα γίνεται αλλαγή όλων των bit/pin εξόδου έστω εαν εγώ θέλω να αλλάξω μόνο 1-2. Εν ολίγοις χρειάζεται softwar-ική δουλεία…. Γιατί κάτι μου λέει ότι θα αργήσουμε να δούμε την v2.0 ?? :) :)

Μια τυπική υλοποίηση του πρωτοκόλλου είναι η παρακάτω

‘flip-flop 1
number=%10000000
LOW clear_
HIGH clear_
‘flip-flop 1
HIGH enable_
LOW enable_
PAUSE 50
FOR n=0 TO 7
data_=number.LOWBIT(n)
OUT5 = data_
HIGH clock_
LOW clock_
NEXT
HIGH enable_
LOW enable_

LOW clear_
HIGH clear_
RETURN

 

[Small GPLv3 logo]
Όλα τα προγράμματα που έχω αναπτύξει διανέμονται ελεύθερα κάτω από την GNU GPL v.3 license. Όποιος ενδιαφέρεται ας επικοινωνήσει μαζί μου στην διεύθυνση d_diamantopoulos (at) yahoo (dot) gr.

 

 

(mod on 4/2/08:) Πρόσφατα ανέπτυξα ένα γενικό πρόγραμμα (σαν template) πάνω στο οποίο να μπορώ να αναπτύσσω ότι συγκεκριμένο πρόγραμμα θέλω. Η ιδέα ήταν η εξής : γιατί να έχω κάθε φορά φορτωμένο στην eeprom του robokit μόνο ένα πρόγραμμα και κάθε φορά θα πρέπει να το προγραμματίζω από την αρχή μέσω σειριακής για να του βάλω κάποιο καινούριο?? Έτσι σκέφτηκα να ενώσω όλα τα προγράμματά μου σε ένα ενιαίο στο οποίο ο RoboKit θα βρίσκεται σε κατάσταση IDLE (άρα low power) και θα μεταβαίνει σε κάποιο από τα διαθεσιμα προγράμματα μέσω μιας εντολής προγραμματισμού. Αυτή προφανώς θα δίνεται μέσω του RF συστήματος τηλεχειρισμού. Συγκεκριμένα το button που λειτουργούσε πριν ως “πίσω κίνηση” είναι τώρα το button προγραμματισμού. Η μετάβαση στα εκάστοτε προγράμματα γίνεται μέσω κωδικοποίησής τους από τα υπόλοιπα 3 button τηλεχειρισμού. Συνεπώς με αυτόν τον τρόπο θα έχω 2^3=8 ταυτόχρονα προγράμματα -1(που είναι η idle) = 7. Ωστόσο με μια διαδικάσία που ανέπτυξα σε επίπεδο προγραμματισμού κάθε φορά που γίνεται κάποιο jump σε ένα πρόγραμμα ζητάω επαλήθευση του κωδικού που αντιπροσωπεύει το πρόγραμμα. Σε αυτήν την επαλήθευση συμμετέχει και το button προγραμματισμού. Επομένως για κάθε ένα από τα 7 προγράμματα προσθέτω 2 επιλογές για προγράμματα (λόγω του 1 bit πλεονασμού). Άρα συνολικά μπορώ να κάνω μεταβάσεις σε 14 προγράμμτα που είναι υπερ-αρκετά (~140 byte καθε πρόγραμμα) για τα 2K eeprom που έχει στην διάθεσή του ο RoboKit.

Η διαδικασία update του RoboKit σύμφωνα με το παραπάνω σχέδιο δεν ήταν μόνο προγραμματιστική. Κι αυτό γιατί κάποια pins είχαν άλλη χρήση στα διάφορα προγράμματα. Επομένως χρειάστηκε να γίνει δουλειά και στο HARDware. Και τονίζω το hard γιατί πέρα από αντιστασούλες και διοδάκια πήραν μέρος και σκλήρά εργαλε’ια όπως τρυπάνια , τροχοί , θερμοκολλητήρια κτλ.. Παραθέτω μια ενδεικτική φωτογραφία :

 

 

 

room.jpg

 

Υποβολή απάντησης

XHTML: Μπορείτε να χρησιμοποιήσετε αυτές τις ετικέτες: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>