Μετάβαση στο περιεχόμενο

Φυσική υπολογιστική και ρομποτική

Αισθητήρες και μικροελεγκτές (micro:bit, Arduino, Raspberry Pi) που προγραμματίζονται να μετρούν και να κινούνται.

45 λεπτά

Θα μάθεις να

  1. Να περιγράφεις μια φυσική υπολογιστική διάταξη ως είσοδο από αισθητήρες, επεξεργασία στον μικροελεγκτή και έξοδο σε ενεργοποιητές.
  2. Να ξεχωρίζεις αισθητήρες από ενεργοποιητές, και ψηφιακές από αναλογικές μετρήσεις.
  3. Να εξηγείς τη διαφορά ενός μικροελεγκτή, όπως το micro:bit ή το Arduino, από έναν υπολογιστή μιας πλακέτας, όπως το Raspberry Pi.
  4. Να γράφεις και να προσομοιώνεις σε Python τον βρόχο «μέτρα, αποφάσισε, ενέργησε» μιας διάταξης ή ενός ρομπότ.

Ο υπολογιστής βγαίνει από την οθόνη

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

Όλα αυτά μετρούν κάτι στον φυσικό κόσμο, αποφασίζουν, και κάνουν κάτι στον φυσικό κόσμο. Ο προγραμματισμός τέτοιων διατάξεων λέγεται φυσική υπολογιστική (physical computing). Όταν η διάταξη κινείται μόνη της, μιλάμε για ρομπότ.

Είσοδος, επεξεργασία, έξοδος

Κάθε τέτοια διάταξη έχει τρία μέρη:

ΜέροςΤι κάνειΠαραδείγματα
Αισθητήρες (είσοδος)μετρούν κάτι και το κάνουν αριθμόκουμπί, φωτός, θερμοκρασίας, απόστασης, υγρασίας, κίνησης, επιταχυνσιόμετρο
Μικροελεγκτής (επεξεργασία)τρέχει το πρόγραμμα: διαβάζει τις μετρήσεις και αποφασίζειmicro:bit, Arduino
Ενεργοποιητές (έξοδος)κάνουν κάτι στον κόσμολυχνία LED, βομβητής, κινητήρας, σερβοκινητήρας, αντλία, οθόνη

Ο αισθητήρας απόστασης με υπερήχους, για παράδειγμα, δουλεύει όπως η νυχτερίδα: στέλνει έναν ήχο που δεν ακούμε, μετρά πόσο αργεί να γυρίσει η ηχώ, και από αυτό ο μικροελεγκτής υπολογίζει την απόσταση.

Αισθητήρας ή ενεργοποιητής;

Για κάθε εξάρτημα, σκέψου: φέρνει πληροφορία από τον κόσμο στο πρόγραμμα, ή κάνει κάτι στον κόσμο επειδή το είπε το πρόγραμμα;

Τι είναι;

Κουμπί που πατάς

0 / 8

Μικροελεγκτής ή υπολογιστής;

Ένας μικροελεγκτής είναι ένας ολόκληρος μικρός υπολογιστής πάνω σε ένα τσιπ: επεξεργαστής, λίγη μνήμη, και ακίδες (pins) όπου συνδέονται αισθητήρες και ενεργοποιητές. Δεν έχει λειτουργικό σύστημα. Τρέχει ένα πρόγραμμα, από τη στιγμή που θα πάρει ρεύμα ως τη στιγμή που θα το χάσει. Είναι φθηνός, μικρός και καταναλώνει ελάχιστη ενέργεια, γι' αυτό υπάρχει μέσα σε πλυντήρια, τηλεχειριστήρια και παιχνίδια.

Στα σχολεία χρησιμοποιούνται συχνά δύο εκπαιδευτικές πλακέτες με μικροελεγκτή:

  • Το micro:bit, που κυκλοφόρησε το 2016 στη Βρετανία για μαθητές. Έχει πάνω του έτοιμα 2525 LED σε πλέγμα 5×55 \times 5, δύο κουμπιά (A και B), επιταχυνσιόμετρο, πυξίδα, αισθητήρα θερμοκρασίας, και μετρά το φως με τα ίδια τα LED του. Προγραμματίζεται με πλακίδια ή με MicroPython, μια μικρή εκδοχή της Python.
  • Το Arduino, που ξεκίνησε το 2005 σε ένα ινστιτούτο σχεδιασμού στην Ιβρέα της Ιταλίας. Δεν έχει σχεδόν τίποτα έτοιμο πάνω του: συνδέεις εσύ τους αισθητήρες που θέλεις. Προγραμματίζεται συνήθως σε μια γλώσσα βασισμένη στη C/C++.

Το Raspberry Pi μοιάζει με αυτά, αλλά είναι κάτι άλλο: ένας υπολογιστής μιας πλακέτας. Τρέχει κανονικό λειτουργικό σύστημα, συνδέεται σε οθόνη και πληκτρολόγιο, ανοίγει ιστοσελίδες, και έχει επιπλέον ακίδες για αισθητήρες. Είναι πιο ισχυρό, αλλά θέλει περισσότερη ενέργεια και χρόνο για να ξεκινήσει.

Ψηφιακό ή αναλογικό;

Οι μετρήσεις φτάνουν στο πρόγραμμα με δύο τρόπους:

  • Ψηφιακή μέτρηση έχει δύο τιμές: πατημένο ή όχι, κίνηση ή όχι. Στον κώδικα, True ή False.
  • Αναλογική μέτρηση έχει πολλές τιμές σε μια κλίμακα: πόσο φως, πόσοι βαθμοί, πόσα εκατοστά. Ο μικροελεγκτής τη μετατρέπει σε ακέραιο. Στο micro:bit, για παράδειγμα, το φως δίνεται από 00 (σκοτάδι) ως 255255 (πολύ φως).

Ο βρόχος που δεν τελειώνει

Ένα πρόγραμμα για μικροελεγκτή έχει σχεδόν πάντα το ίδιο σχήμα: έναν βρόχο που επαναλαμβάνεται για πάντα, όσο η διάταξη έχει ρεύμα.

  1. Μέτρα: διάβασε τους αισθητήρες.
  2. Αποφάσισε: σύγκρινε με ένα όριο, με if.
  3. Ενέργησε: άναψε, σβήσε, κινήσου.
  4. Περίμενε λίγο, και ξανά από την αρχή.

Σε ένα micro:bit, με MicroPython, ένα πρόγραμμα που δείχνει τη θερμοκρασία όταν πατάς το κουμπί A μοιάζει έτσι:

from microbit import *

while True:
    if button_a.is_pressed():
        display.scroll(temperature())
    sleep(100)

Το while True δεν σταματά ποτέ, κι αυτό εδώ είναι σωστό: η διάταξη πρέπει να προσέχει το κουμπί όσο είναι αναμμένη. Το sleep(100) την κάνει να περιμένει 100100 χιλιοστά του δευτερολέπτου πριν ξαναμετρήσει.

Αν δεν έχεις πλακέτα: προσομοίωση

Δεν χρειάζεσαι υλικό για να δοκιμάσεις τη λογική. Βάζεις τις μετρήσεις σε μια λίστα, σαν να τις έδωσε ο αισθητήρας η μία μετά την άλλη, και τρέχεις την ίδια απόφαση σε κανονική Python. Ένα φως νυκτός που ανάβει όταν η μέτρηση πέσει κάτω από 5050:

metriseis = [180, 120, 70, 45, 30, 55, 200]

for fos in metriseis:
    if fos < 50:
        print(fos, "λάμπα ΑΝΑΜΜΕΝΗ")
    else:
        print(fos, "λάμπα σβηστή")

Οι μετρήσεις είναι φανταστικές: ένα δωμάτιο που σκοτεινιάζει, μια στιγμή που περνά ένα φως αυτοκινήτου, και το πρωί.

Η προσομοίωση του φωτός νυκτός

Κάθε γραμμή είναι ένας γύρος του βρόχου. Πριν πατήσεις, πες αν η λάμπα θα ανάψει.

ΓύροςΓύροςfosfos < 50;Λάμπα
Ζωντανή ενημέρωση

Ένα ρομπότ που ακολουθεί γραμμή

Ένα κλασικό σχολικό ρομπότ ακολουθεί μια μαύρη γραμμή στο πάτωμα. Έχει δύο αισθητήρες στραμμένους προς τα κάτω, έναν αριστερά και έναν δεξιά, που λένε True όταν βλέπουν μαύρο. Η απόφαση είναι μια συνάρτηση:

def apofasi(aristero, dexi):
    if aristero and dexi:
        return "ευθεία"
    elif aristero:
        return "αριστερά"
    elif dexi:
        return "δεξιά"
    else:
        return "στάση"

Αν μόνο ο αριστερός βλέπει τη γραμμή, η γραμμή έχει στρίψει αριστερά, άρα το ρομπότ στρίβει αριστερά για να τη βρει. Ο μικροελεγκτής καλεί την apofasi πολλές φορές το δευτερόλεπτο, και η μετάφραση σε κινήσεις γίνεται στους δύο κινητήρες: για να στρίψει αριστερά, ο δεξής κινητήρας γυρίζει πιο γρήγορα από τον αριστερό.

Ποιος αισθητήρας για ποια δουλειά;

Διάλεξε μια διάταξη και μετά τον αισθητήρα που χρειάζεται.

Ποια διάταξη;

Ποιος αισθητήρας;

Ποιος αισθητήρας;

Λυμένα παραδείγματα

Παράδειγμα 1

Ένα αυτόματο πότισμα ανάβει την αντλία όταν η υγρασία του χώματος πέσει κάτω από 40. Οι μετρήσεις μιας εβδομάδας, μία κάθε πρωί, ήταν (φανταστικές) 62, 48, 35, 28, 55, 41, 33. Γράψε προσομοίωση που μετρά πόσες φορές πότισε.

Δοκίμασέ το πρώτα. Μετά δες τη λύση.

Παράδειγμα 2

Ένα ρομπότ πρέπει να πηγαίνει γρήγορα όταν το εμπόδιο απέχει 50 cm ή περισσότερο, αργά από 20 ως κάτω από 50 cm, και να σταματά κάτω από 20 cm. Τι κάνει για αποστάσεις 120, 35, 18 και 50;

Δοκίμασέ το πρώτα. Μετά δες τη λύση.

Ασκήσεις

Πρώτα ερωτήσεις με επιλογές: διαλέγεις, πατάς «Έλεγξε» και μαθαίνεις αμέσως αν το βρήκες και γιατί. Στο τέλος, λίγες ασκήσεις χωρίς επιλογές — εκεί κρύβεται μόνο η απάντηση.

Πολλαπλή επιλογήΆσκηση 1 από 12
Ποιο από τα παρακάτω είναι ενεργοποιητής;

Τα κατάφερες;

  • Να περιγράφεις μια φυσική υπολογιστική διάταξη ως είσοδο από αισθητήρες, επεξεργασία στον μικροελεγκτή και έξοδο σε ενεργοποιητές.
  • Να ξεχωρίζεις αισθητήρες από ενεργοποιητές, και ψηφιακές από αναλογικές μετρήσεις.
  • Να εξηγείς τη διαφορά ενός μικροελεγκτή, όπως το micro:bit ή το Arduino, από έναν υπολογιστή μιας πλακέτας, όπως το Raspberry Pi.
  • Να γράφεις και να προσομοιώνεις σε Python τον βρόχο «μέτρα, αποφάσισε, ενέργησε» μιας διάταξης ή ενός ρομπότ.

Λύσε τις ασκήσεις πιο πάνω και θα δεις εδώ πού στέκεσαι.