Raspberry Pi 3: Εγκατάσταση Raspbian και εισαγωγή σε GPIO Pins (μέρος 1)

Raspberry Pi 3

Το Raspberry Pi αποτελεί μία από τις αγαπημένες μου πλατφόρμες, τόσο για τις δυνατότητές του ως Single Board PC, όσο και ως Development Board.

Στην 3η γενιά του το Raspberry Pi απέκτησε και ενσωματωμένο WiFi και Bluetooth, καθιστώντας το ακόμα πιο ενδιαφέρουσα πρόταση για τους χρήστες και τους developers.

Θέλω αρχικά να ξεκαθαρίσουμε τι μπορούμε να κάνουμε και τι όχι με ένα Raspberry Pi, απαντώντας στις πιο συνηθισμένες ερωτήσεις γύρω από αυτό.

Μπορεί να τρέξει Windows 10;

Όχι.

Μα άκουσα ότι μπορεί να τρέξει Windows 10!

Μπορεί να τρέξει Windows 10 IoT Core-που δεν έχουν καμία σχέση με τα Windows 10 που περιμένεις-. Τα w10iot είναι πλατφόρμα για ανάπτυξη εφαρμογών του Internet of Things της Microsoft.

Τι λειτουργικό τρέχει το Raspberry Pi;

Το επίσημα "υποστηριζόμενο" λειτουργικό είναι το Raspbian, μία Linux-ο-διανομή βασισμένη στο Debian, αλλά βελτιωμένη για να τρέχει καλύτερα στην πλακέτα. Υπάρχουν και λοιπές άψογα λειτουργικές διανομές Linux (π.χ. Ubuntu Mate), ή και άλλα λειτουργικά (π.χ. RISC OS).

Σκέφτομαι να αγοράσω ένα Raspberry Pi για να δοκιμάσω Linux για 1η φορά!

Ναι, αποτελεί μία ιδανική λύση για να εισαχθεί κάποιος στον κόσμο του Linux.

Μπρορεί να τρέξει Android;

Περίπου.

Θέλω ένα απλό PC "μόνο για να μπαίνω Internet" και να κατεβάζω/βλέπω ταινίες. Θα με καλύψει το Raspberry Pi;

Περίπου. Δυστυχώς το "να μπαίνω Internet" έχει γίνει αρκετά πιο πολύπλοκο και βαρύ απ' ότι αντιλαμβάνεται ο μέσος χρήστης. Δηλαδή το "θα έχω σε ένα Tab ανοιχτό το Facebook, και στο άλλο θα βλέπω ένα 1080p video στο YouTube" ενώ παράλληλα κατεβάζω ταινίες από torrent ΔΕΝ μπορείς να το έχεις ούτε στο πιο δυνατό Raspberry Pi, το 3. Για την ακρίβεια θα εισαι τυχερός και μόνο να καταφέρεις να δεις 720p video χωρίς ενοχλητικά σπασίματα.

Σε τι διαφέρει ένα Raspberry Pi από ένα Arduino;

Το Raspberry Pi είναι ένα Single Board PC που μπορεί να τρέξει πλήρεις Linux-ο-διανομές, ενώ παράλληλα διαθέτει και GPIO PINs για σύνδεση λοιπών κυκλωμάτων και Shields δρώντας παράλληλα ως Development Board. Το Arduino είναι μόνο Development Board που σε βοηθάει να προγραμματίσεις έναν μικροελεγκτή (π.χ. τον ATMEGA328).

Άρα το Raspberry Pi είναι καλύτερο από το Arduino;

Είναι διαφορετικό από το Arduino.

Μα το Pi3 είναι τετραπύρηνο στα 1200Mhz, ενώ το Arduino είναι μόλις στα (!) 16Mhz. Άρα το Pi ΠΡΕΠΕΙ να είναι καλύτερο.

Είναι διαφορετικό από το Arduino, δεν μπορεί να γίνει άμεσα σύγκριση. Το ποιο είναι κατάλληλο για κάθε χρήση εξαρτάται από τους λόγους για τους οποίους το αγοράζεις. Αν θέλεις να φτιάξεις κάποιο Project ηλεκτρονικών, τότε το Arduino (με π.χ. τον ATMEGA328) ή το Launchpad (με τον MSP430) είναι "καλύτερα". Αν θέλεις ένα Single Board PC παίρνεις το Raspberry Pi.

Τι είναι τα GPIO Pins;

Αποτελούν κάποιους ακροδέκτες που μας επιτρέπουν να συνδέσουμε στο Raspberry Pi άλλα κυκλώματα/άλλες συσκευές. Ένα απλό παράδειγμα της χρήσης τους θα δούμε παρακάτω.

Ποιο Raspberry Pi απ' όλα τα αγοράσω;

Σίγουρα το Raspberry Pi 3 Model B -η διαφορά στην τιμή είναι ελάχιστη σε σχέση με τα προηγούμενα, ενώ είναι πολύ καλύτερο για τον μέσο χρήστη-.

Τι θα χρειαστεί να αγοράσω για να κάνω το Raspberry Pi 3 να δουλέψει;

Η τροφοδοσία του γίνεται από MicroUSB, οπότε ο "φορτιστής" που έχεις για το κινητό σου κάνει και για το Pi. (Προτείνεται έξοδος 2+Α). Επίσης θα χρειαστείς καλώδιο HDMI, μία οθόνη με είσοδο HDMI (μάλλον η τηλεόραση που έχεις ήδη κάνει), ένα πληκτρολόγιο, ένα ποντίκι, και μία κάρτα MicroSD.

Πόσο κοστίζει το Raspberry Pi 3;

Περίπου 45 ευρώ στα Ελληνικά καταστήματα.

 

Αφήνοντας το παραπάνω FAQ στην άκρη, υποθέτουμε ότι μόλις αγόρασες το Raspberry Pi 3 σου! Μεγειά λοιπόν.

Πάμε να εγκαταστήσουμε το "προτεινόμενο" λειτουργικό στην κάρτα μνήμης που θα βάλουμε στο Pi 3. Κατεβάζουμε το Raspbian και το Win32DiskImager από τα παρακάτω links:

Download Raspbian

Download Win32DiskImager

Αν κάνουμε extract σε έναν φάκελο το .zip του Raspbian, θα δούμε το .img αρχείο που πρέπει να "γράψουμε" στην κάρτα μνήμης. Τρέχουμε το Win32DiskImager και του δείχνουμε το Directory του .img, επιλέγουμε το Drive Letter του Card Reader μας και στην συνέχεια "Write".

Raspberry Pi 3 write image to MicroSD

Συνδέουμε το HDMI, το πληκτρολόγιο, το ποντίκι, την κάρτα μνήμης και τέλος την τροφοδοσία στο Pi μας. Στην οθόνη μας θα bootάρει το Raspbian.

Raspberry Pi 3 ConnectionRaspberry Pi 3 Raspbian

Επιλέγουμε να συνδεθούμε στο WiFi μας (υπάρχει Panel πάνω δεξιά), και στην συνέχια ανοίγουμε το Terminal (Accessories, Terminal) για να αναβαθμίσουμε τα πακέτα/προγράμματα στην τελευταία έκδοση. Πληκτρολογούμε:

sudo apt-get update
sudo apt-get upgrade

Επιβεβαιώνουμε με Y(Yes) το Update.

Raspberry Pi 3 Raspbian

Μόλις τελειώσει η διαδικασία αναβάθμισης, πάμε να κάνουμε κάποιες ακόμα "ρυθμίσεις" στην διανομή μας. Δίνοντας df -h στο Terminal, παρατητούμε ότι η διανομή μας δεν "βλέπει" όλο τον διαθέσιμο χώρο της κάρτας μνήμης.

df -h

Raspberry Pi 3 Raspbian Expand Filesystem

Πηγαίνουμε Menu, Preferences, Raspberry Pi Configuration και στην συνέχεια επιλέγουμε το Expand Filesystem. Αν θέλουμε επίσης αλλάζουμε τον Default κωδικό από "Change Password".

Raspberry Pi 3 Raspbian Expand Filesystem

Μετά από την καρτέλα Performance επιλέγουμε ως GPU Memory 256MB. Θα μας ζητηθεί Reboot, το οποίο και δεχόμαστε.

Raspberry Pi 3 GPU Memory

Εναλλακτικά για τα παραπάνω θα μπορούσαμε να τρέξουμε από Terminal:

sudo raspi-config

Και εδώ τελειώνει το βασικό κομμάτι εγκατάστασης, αναβάθμισης, και ρύθμισης του Raspberry Pi 3 (well, με εξαίρεση το WiFi τα ίδια ισχύουν και για τα προηγούμενα μοντέλα).

Πάμε όμως να δείξουμε και μία ενδεικτική χρήση των GPIO PINs.

Θα μας διευκολύνει αρκετά σε μελλοντικά projects να βλέπουμε άμεσα το ποιο Pin ειναι τι, οπότε για ευκολία μας τυπώνουμε το Raspberry Pi Leaf από το παρακάτω link και το ενσωματώνουμε στην πλακέτα μας.

Raspberry Pi 3 leaf

Raspberry Pi 3 Pins Layout

Για να δείξουμε την βασική χρήση των Pins, θα χρειαστούμε μία Breadboard, ένα LED, δύο jumper καλώδια female to male και μία αντίσταση 180-270Ω. Την άνοδο του LED την συνδέω στο GPIO18, την κάθοδο στην αντίσταση και την αντίσταση σε ένα (από τα διάσπαρτα) GND Pins.

Raspberry Pi 3 Connect Led

Στην συνέχεια ανοίγω το Terminal και δίνω:

sudo -i
cd ..
echo "18" > sys/class/gpio/export
echo "out" > sys/class/gpio/gpio18/direction
echo "1" > sys/class/gpio/gpio18/value

Raspberry Pi 3 GPIO

Παρατηρούμε το LED να ανάβει. Στην ουσία, μόλις γράψαμε το "1" στο αρχείο value, το PIN18 μας έδωσε 3,3V και ενεργοποίησε το LED. Αν γράψουμε το 0 στο αρχείο value, το LED θα σβήσει.

echo "0" > sys/class/gpio/gpio18/value

Να εξηγήσουμε όμως λίγο καλύτερα ότι κάναμε: Αρχικά το sudo -i είναι για να τρέξουμε ως root το Terminal μας. Γράφοντας το 18 στο export κάνουμε initialize το Pin18 στην Board μας. Γράφοντας out στο direction του gpio18, δηλώνουμε ότι θα το χρησιμοποιήσουμε ως έξοδο. Αν γράφαμε in, θα δηλώναμε την χρήση του ως είσοδο. Και τέλος το value (0 ή 1) ορίζει το αν το Pin θα γίνει HIGH (δίνοντας 3,3V) ή LOW (0V).

Το παραπάνω αποτελεί έναν εύκολο και γρήγορο τρόπο για να ελέγξουμε κάποιο PIN. Ήθελα να τον δείξω για να γίνει η "αντιστοιχία" του "γράφω σε Registers για να ενεργοποιήσω ή απενεργοποιήσω PINs" που έδειξα στον MSP430, με το "γράφω σε κάποιο αρχείο" στο Raspberry Pi. Σε επόμενα parts θα αναφερθούμε σε λοιπές λειτουργίες αλλά και στην χρήση του WiringPi ή της βιβλιοθήκης RPi.GPIO για να διευκολυνθούμε στο prototyping. Το Demo όσων δείξαμε (της εισαγωγής στο Raspberry Pi 3), στο βίντεο παρακάτω:

aByte