Σύντοµη εισαγωγική παρουσίαση του Raspberry Pi και η χρήση του σε συνδυασµό σε την Python και Το Scratch Σαλπασαράνης Κωνσταντίνος Εκπαιδευτικός ΠΕ19 Πληροφορικής Ηλεκτρολόγος Μηχανικός & Τεχνολογίας Υπολογιστών Πολυτεχνικής Σχολής Πανεπιστηµίου Πατρών
Περιεχόµενα Γενικά στοιχεία του Raspberry pi και τεχνικά χαρακτηριστικά του 3 Τεχνικά Χαρακτηριστικά Raspberry Pi Model B 512MB RAM 3 Σύνδεση του Raspberry pi µε Υπολογιστή και αποµακρυσµένος έλεγχός του 5 Γιατί Python 9 Παράδειγµα ελέγχου τηλεκατευθυνόµενου αυτοκινήτου µέσω Python 11 Ελέγχοντας το GPIO του Raspberry pi µέσω του Scratch 13 Εφαρµογές του Raspberry Pi 15 Tutorial του Raspberry pi 15 Αναφορές 16
Γενικά στοιχεία του Raspberry pi και τεχνικά χαρακτηριστικά του Το Raspberry pi είναι ένας φθηνός υπολογιστής. Το µέγεθός του δεν ξεπερνά αυτό της πιστωτικής κάρτας και αναπτύχθηκε στο Ηνωµένο Βασίλειο από την εταιρεία Raspberry Pi Foundation µε σκοπό την προώθηση της διδασκαλίας της επιστήµης των υπολογιστών στα σχολεία [1]. Η πιο νέα έκδοση είναι το Model B µε 512 MB µνήµη RAM όπως φαίνεται στην Εικόνα 1, µε τα ακόλουθα τεχνικά χαρακτηριστικά: Εικόνα 1 Τεχνικά Χαρακτηριστικά Raspberry Pi Model B 512MB RAM Broadcom BCM2835 700MHz ARM1176JZFS επεξεργαστής FPU και Videocore 4 GPU Η GPU παρέχει Open GL ES 2.0 και 1080p30 H.264 high-profile αποκωδικοποίηση 512MB RAM 10/100 BaseT Ethernet υποδοχή HDMI (rev 1.3 & 1.4) υποδοχή 2xUSB 2.0 υποδοχή RCA video υποδοχή (PAL and NTSC) SD card υποδοχή Φορτίζει από υποδοχή microusb 3.5mm audio out jack Header footprint for camera connection Μέγεθος 85.6 x 53.98 x 17mm Τα επιµέρους στοιχεία του Raspberry pi φαίνονται στην παρακάτω Εικόνα 2
Εικόνα 2 [Πηγή http://www.raspberrypi.org/wp-content/uploads/2011/07/raspimodelb.png] Μπορούµε λοιπόν να το συνδέσουµε σε monitor που έχει υποδοχή HDMI (µε καλή ποιότητα εικόνας) ή ακόµα και αναλογικά µέσω της RCA video θύρας (µε χαµηλότερης ποιότητας εικόνα). Παρακάτω θα παρουσιαστεί η διαδικασία µε την οποία µπορούµε αποµακρυσµένα, µέσω του προσωπικού µας υπολογιστή και του τοπικού δικτύου να ελέγξουµε το Raspberry pi, χωρίς να χρειαζόµαστε επιπλέον οθόνη [2]. Η βασική έκδοση στην SD κάρτα είναι η διανοµή του Linux Raspbian [3], που στηρίζεται στη Debian. Μια ενδεικτική έκδοση που περιλαµβάνει προεγκατεστηµένα προγράµµατα κυρίως για τον έλεγχο των θυρών (ports) και κάποια άλλα όπως τα: Scratch Python 2.7 Python IDLE Midori Browser Libre Office Xpdf Pidgin Synaptic VLC Player
Σύνδεση του Raspberry pi µε Υπολογιστή και αποµακρυσµένος έλεγχός του Για να έχουµε αποµακρυσµένο παραθυρικό έλεγχο του Raspberry pi µπορούµε να εγκαταστήσουµε τον X Server Xming που είναι Ελεύθερο Λογισµικό και µπορούµε να το κατεβάσουµε από: http://sourceforge.net/projects/xming/?source=navbar ή από http://www.straightrunning.com/xmingnotes/ Αφού γίνει η εγκατάσταση, τρέχουµε το Xming Launch και θα έχουµε τις επόµενες οθόνες, ακολουθώντας τα βήµατα που θα βρείτε στο http://simonthepiman.com/2-10- how_to_view_my_pi_console_on_a_windows_pc.php : Εικόνα 3 Επιλέγουµε ένα παράθυρο (One Window) και συνεχίζουµε (πατάµε Next).
Εικόνα 4 Επιλέγουµε το Start a Program και πατάµε Next. Εικόνα 5 Γράφουµε στο πεδίο Start Program το startlxde. Επιλέγουµε να χρησιµοποιήσουµε το PuTTY.Επίσης γράφουµε την IP του Raspberry pi που του έχει δοθεί από τη σύνδεσή του
στο LAN µέσω του Router. Τέλος γράφουµε τον προκαθορισµένο χρήστη που έχει το Raspberry pi: pi και password: raspberry. Κατόπιν πατάµε Next. Εικόνα 6 Πατάµε Next. Εικόνα 7 Και αποθηκεύουµε το configuration σε κάποιο εύκολα προσβάσιµο φάκελο (π.χ Επιφάνεια Εργασίας) ως Config.
Κατόπιν εκτελούµε το Config και γράφουµε το password του Raspberry pi και είµαστε έτοιµοι. Έχουµε την οθόνη του Raspberry pi στην οθόνη του υπολογιστή µας. Εικόνα 8 [video, http://users.sch.gr/salpk/vid/xming_config.flv ]
Γιατί Python Σύµφωνα µε την τεκµηρίωση της Python [4]: «Η Python είναι µια εύκολη στην εκµάθηση, ισχυρή γλώσσα προγραµµατισµού. Έχει υψηλού επιπέδου δοµές δεδοµένων και µια απλή, αλλά αποτελεσµατική προσέγγιση στον αντικειµενοστρεφή προγραµµατισµό.» Επίσης, η κοµψή σύνταξη της Python και οι δυναµικοί τύποι, µαζί µε την χρήση του διερµηνευτή (interpreter), την καθιστούν µια ιδανική γλώσσα για την εύκολη και γρήγορη ανάπτυξη εφαρµογών σε πολλούς τοµείς και στις περισσότερες πλατφόρµες.[4] Πέρα των άλλων ευκολιών της Python υπάρχει και ενσωµατωµένο το στοιχείο (Module) των Γραφικών Χελώνας. Τα «Γραφικά της χελώνας» είναι ένας δηµοφιλής τρόπος για την εισαγωγή των παιδιών στο χώρο της αλγοριθµικής σκέψης και του προγραµµατισµού γενικότερα. Ήταν µέρος της αρχικής γλώσσας προγραµµατισµού Logo που αναπτύχθηκε από τους Wally Feurzig και Seymour Papert το 1966 [5]. Έτσι εύκολα εισάγουµε τη βιβλιοθήκη turtle και πλέον ο χειρισµός της χελώνας µας γίνεται µε τις γνωστές εντολές κατεύθυνσης. Εικόνα 9 Έτσι µε απλές εντολές ελέγχουµε τη χελώνα όπως φαίνεται παρακάτω:
>>> turtle.circle(50) Εικόνα 10
Παράδειγµα ελέγχου τηλεκατευθυνόµενου αυτοκινήτου µέσω Python Παρακάτω παρουσιάζεται ένα παράδειγµα ελέγχου ενός τηλεκατευθυνόµενου αυτοκινήτου µέσω της Python. Στην παρακάτω εικόνα φαίνεται ο κώδικάς που µας επιτρέπει να ενεργοποιούµε την κατάλληλη θύρα του Raspberry pi που θέλουµε να ελέγξουµε. Εικόνα 11 Στο αρχείο remote.py της Python αρχικά εισάγουµε τη βιβλιοθήκη RPi.GPIO και µέσω αυτής ενεργοποιούµε κατά βούληση όποιο Ι/Ο pin της µονάδας GPIO θέλουµε. Στο lxterminal εκτελούµε το παρακάτω: Εικόνα 12 Εισάγουµε τη θύρα που θέλουµε να ελέγξουµε. Στο παράδειγµά µας την GPIO 25. Γενικά η διάταξη των pins της GPIO για το Raspberry pi είναι η ακόλουθη στην Εικόνα 13. [video, http://users.sch.gr/salpk/vid/python_raspberry_pi.flv ]
Εικόνα 13 [Η δηµοσίευση στο http://blogs.sch.gr/salpk/ ]
Ελέγχοντας το GPIO του Raspberry pi µέσω του Scratch Επειδή ο αρχικός σχεδιασµός του συστήµατος είχε ως αποδέκτες τους εκπαιδευτικούς και τα παιδιά, δε θα µπορούσε να λείπει το Scratch και η Python από το σύστηµα. Ο έλεγχος των I/O θυρών γίνεται µε πολύ απλό κώδικα στην Python µέσω των κατάλληλων βιβλιοθηκών και παράλληλα επειδή το Scratch έχει ενταχθεί ενεργά στην εκπαιδευτική διαδικασία, έχουν δηµιουργηθεί πολλές βιβλιοθήκες σε Python που επιτρέπουν τη διεπαφή Scratch-Python και εποµένως τον εύκολο έλεγχο των I/O του Raspberry pi [6]. Εικόνα 14 Εν προκειµένω, ο έλεγχος των I/O µέσω του Scratch επιτυγχάνεται µε εγκατάσταση του Scratch GPIO [http://cymplecy.wordpress.com/2012/08/26/scratch-controlling-thegpio-on-a-raspberrypi/], που αποτελεί ουσιαστικά τη διεπαφή Scratch και Python. Για την εγκατάσταση ανοίγουµε το LX Terminal και πληκτρολογούµε: sudo wget https://dl.dropbox.com/s/gery97qildl7ozd/install_scratch_gpio.sh -O /boot/install_scratch_gpio.sh και κατόπιν κάνουµε την εγκατάσταση ως
sudo /boot/install_scratch_gpio.sh Εκτελώντας το ScratchGPIO που υπάρχει, µπορούµε πλέον να ελέγξουµε το GPIO του Raspberry pi από τον «Έλεγχο» του Scratch όπως φαίνεται και παρακάτω. Στην Εικόνα 15 φαίνεται το πρόγραµµα σε Scratch, όπου έχουµε ορίσει το pin11 σαν έξοδο του GPIO του Raspberry pi στην οποία έχουµε συνδέσει ένα LED. Εκτελώντας το πρόγραµµα αυτό το LED θα ανάβει για 1 δευτερόλεπτο και θα σβήνει για 2 δευτερόλεπτα, επαναληπτικά. [ video, http://users.sch.gr/salpk/vid/scratch_raspberry_led_blink.flv ] Εικόνα 15
Εφαρµογές του Raspberry Pi http://www.youtube.com/watch?v=upvhy-kveli http://www.youtube.com/watch?v=rjzznbzxpkc http://cymplecy.wordpress.com/2013/03/19/scratch-gpio-development/ http://raspi.tv/2013/raspberry-pi-in-the-classroom-y5-sensors-and-switching Tutorial του Raspberry pi http://www.youtube.com/user/raspberrypitutorials
Αναφορές [1] http://www.raspberrypi.org/about [2] http://learn.adafruit.com/raspberry-pi-e-mail-notifier-using-leds [3] http://www.raspbian.org/ [4] http://docs.python.org/2/tutorial/ [5] http://docs.python.org/2/library/turtle.html [6] http://cymplecy.wordpress.com/2012/08/26/scratch-controlling-the-gpio-on-araspberrypi/