Ένα απλό remote presence bot

Άλλο ένα πρόγραμμα για το Robot της DeA (αυτό με τον Basic Stamp II). Είναι της εποχής που είχα καεί με τους micro (και ας είχα μόνο έναν :P )! Στην ουσία, το robot αυτό μπορείς να το χειρίζεσαι από κάπου απομακρυσμένα και μέσω κάποιας κάμερας, μικροφώνου και ηχείων, είναι σαν να βρίσκεσαι ο ίδιος εκεί.

Τι είχα κάνει.. :P Πατέντες. Είχα πάρει το μισό «κουτί» του robot της DeA, από την σειρά «Κατασκεύασε και προγραμμάτισε το δικό σου Ρομπότ». Έτσι είναι συναρμολογημένο πλήρως..
DeA Robot

Είχα βγάλει δηλαδή το πάνω-πάνω πλαστικό. Πάνω εκεί είχα βάλει ένα βιβλίο, ήταν σαν «τραπεζάκι» ένα πράμα. Πάνω σε αυτό έβαζα το πιστό και πολύ αγαπημένο μου EEE PC 1000H, το οποίο έτρεχε Skype και ένα serial to tcp προγραμματάκι (θα εξηγήσω στη συνέχεια). Έτσι λοιπόν μπορούσα να χειριστώ το robot μέσω Internet και να βλέπω που πάει μέσω της κάμερας του netbook! Ε και φυσικά να ακούω και να μιλάω :) Δεν το δοκίμασα ποτέ εκτός σπιτιού, μόνο από διαφορετικά δωμάτια, αλλά τέλος πάντων :P

Όπως είπα το netbook έτρεχε Skype και ένα πρόγραμμα.. Για να χειριστείς το robot έπρεπε να στείλεις κάποιες «εντολές» σε αυτό μέσω σειριακής θύρας. Αυτό γίνεται μόνο απ’ το ίδιο PC. Εδώ έρχεται το serial to tcp που σου επιτρέπει να χειριστείς (να στείλεις και να λάβεις δεδομένα) απ’ την σειριακή πόρτα ενός υπολογιστή μέσω δικτύου! Κάτι σαν γέφυρα ένα πράμα ;) :P

Το πρόγραμμα που είχα γράψει για το robot είναι αυτό. Μέσα σε ένα απόγευμα όλα αυτά. Εκτός από μερικά κομμάτια του κώδικα!

' Program: Remote Presence Bot
' Author : giannoug
' - email: giannoug@gmail.com
' - site : www.giannou.net
' Version: v18.2.2009
'=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-
' {$STAMP BS2}
' {$PBASIC 2.5}
'=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-
'     Σταθερές / Μεταβλητές | Constants / Variables
'=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-
turns           VAR       Nib
cmd             VAR       Word

SrvLStop        CON       765 'Σε αυτή την τιμή οι
SrvRStop        CON       750 'servo είναι νεκροί.
Gear1           CON       25  '"Ταχύτητες" για τους servo.
Gear2           CON       50  'Για μελλοντική χρήση και αν.
Gear3           CON       75
Gear4           CON       100
Gain            CON       50
'=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-
'     Pins
'=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-
ServoL          PIN       13
ServoR          PIN       12

'=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-
'     Αρχικοποίηση | Startup
'=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-

'Κανά τσέκ αν θες.
DEBUG "D"

'=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-
'     Κύριο πρόγραμμα | Main program
'=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-

DO
  DEBUGIN cmd

  IF cmd = "F" THEN
    GOSUB ForwardPulse
  ELSEIF cmd = "B" THEN
    GOSUB BackwardPulse
  ELSEIF cmd = "L" THEN
    GOSUB LeftPulse
  ELSEIF cmd = "R" THEN
    GOSUB RightPulse
  ENDIF

LOOP

'=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-
'     Υπορουτίνες | Subroutines
'=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-

ForwardPulse:
  FOR turns = 0 TO 10
    PULSOUT ServoL, SrvLStop + Gear4
    PULSOUT ServoR, SrvRStop - Gear4 - Gain
  NEXT
RETURN

BackwardPulse:
  FOR turns = 0 TO 10
    PULSOUT ServoL, SrvLStop - Gear4
    PULSOUT ServoR, SrvRStop + Gear4 + Gain - 90
  NEXT
RETURN
LeftPulse:
  FOR turns = 0 TO 10
    PULSOUT ServoL, SrvLStop - Gear4
    PULSOUT ServoR, SrvRStop - Gear4 - Gain
  NEXT
RETURN

RightPulse:
  FOR turns = 0 TO 10
    PULSOUT ServoL, SrvLStop + Gear4
    PULSOUT ServoR, SrvRStop + Gear4 - Gain
  NEXT
RETURN

'=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-
'     Τέλος | End
'=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-

Αυτό ήταν.. Άλλη μια καμμενο-πρότζεκτ παρουσίαση έλαβε τέλος :P

2 Responses to “Ένα απλό remote presence bot”


Leave a Reply