Το raspberry pi - ΔΔΕ Χίουdide.chi.sch.gr/keplhnet/raspberry_pi_keplinet_seminar.pdf ·...

Post on 29-Jul-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Το Raspberry Piκαι ο προγραμματισμός

του σε Python

Γιώργος ΧατζηνικολάκηςΥπεύθυνος ΚΕΠΛΗΝΕΤ Χίου

Φεβρουάριος 2016

Τι θα δούμε

• Τι είναι το Raspberry Pi• Πως μπορεί να φανεί χρήσιμο• Τι σχέση έχει με την Python

Τι θα κάνετε

• Θα εξασκηθείτε στην Python• Θα έρθετε σε επαφή με το physical computing• Θα υλοποιήσετε ένα μίνι project ή παιχνίδι

• Θα αποφασίσετε αν αξίζει να το δοκιμάσετε σπίτι σας ή/και στο σχολείο σας

Κάποιες γενικότερες έννοιεςπολύ σχετικές

IoT

Πηγή: http://brilliency.com/

Physical Computing

είσοδος έξοδοςυπολογιστής

Physical Computing

αισθητήρεςκινητήρες

αυτοματισμοί

φώτα

στο έδαφος ή …και στο διάστημα

στο φυσικό κόσμο

DIY

Do It Yourself

Το Raspberry Piυλικό και λογισμικό

"Raspberry Pi 2 Model B v1.1 top new (bg cut out)" by Multicherry. Licensed under CC BY-SA 4.0 via Wikimedia Commons

Model B+ Generation 2 Model B

CPU 700 MHz single-core ARM 900 MHz quad-core ARM Cortex-A7

RAM 512 MB 1 GB

GPU Broadcom VideoCore IV @ 250 MHz (1080p H.264 decoder & encoder)

USB ports 4 x USB 2.0

Network 100 Mb/sec

Storage MicroSD slot

Video output HDMI 1.3 & 1.4 (1920x1200) και 3.5mm composite Video + audio out

Power ratings 600 mA (3.0 W) 800 mA (4.0 W)

Τεχνικά χαρακτηριστικά

Raspberry Pi Zero

Βασικά χαρακτηριστικά:

• $5 computer• 65mm x 30mm• 1 GHz single-core CPU• 512 MB RAM• Mini-HDMI & USB on-the-go• 40-pin header

Δεν διαθέτει Ethernet και υποδοχή για την Raspberry camera

«Κοινότυπες» διεπαφές επικοινωνίας

• HDMI έξοδο εικόνας & ήχου• Ethernet για ενσύρματο δίκτυο• Υποδοχή microSD για αποθήκευση

• Δεν υπάρχει κουμπί On/Off

http://elinux.org/RPi_VerifiedPeripherals

«Κοινότυπες» διεπαφές επικοινωνίας

USB θύρες για σύνδεση:• Πληκτρολογίου - ποντικιού• Web camera• Bluetooth dongle (...)• Wi-Fi ή 3G/4G dongle• Σκληρών δίσκων• Arduino

http://elinux.org/RPi_VerifiedPeripherals

Λίγο πιο ιδιαίτερες διεπαφές επικοινωνίας

Ειδικές θύρες για σύνδεση:• Raspberry Pi Camera module• Touchscreen display

http://swag.raspberrypi.org/products/raspberry-pi-7-inch-touchscreen-display Camera Module (5MP - 1080p)

Χρήση ως αυτόνομος desktop υπολογιστής

Συνδέουμε οθόνη ή τηλεόραση με HDMI ή DVI (όχι VGA)

Δεν προτείνεται να αγοράσουμε ένα Pi για να αντικαταστήσουμε το pc μας

Επίσημο/προτεινόμενο λειτουργικό σύστημα

Η επιφάνεια εργασίας του Raspbian

Χρήση ως headless device (χωρίς οθόνη & πληκτρολόγιο)

Δύο εναλλακτικοί τρόποι απομακρυσμένης πρόσβασης:

Τρόπος Β: SSH (Secure Shell)

π.χ. Putty ή MobaXterm

Τρόπος Α: Remote Desktop / Control (VNC)

π.χ. TightVNC

Τρόπος Α: Remote Desktop / Control (TightVNC)

Τρόπος Β: SSH (MobaXterm)

Αυτονομία

Εφαρμογή Pi Power Estimator

• Εκτίμηση με βάση το μοντέλο, τις ενεργές συνδέσεις, τις μπαταρίες ή το Power Bank.

• Από λίγα λεπτά έως και μέρες.

Προτεινόμενος συνδυασμός για remote access

www.netsarang.com

Προσαρμόσιμη γραμμή εργαλείωνμε συχνά χρησιμοποιούμενεςή μακροσκελείς εντολές

Xshell SSH client

Xftp SFTP client+

http://tiny.cc/piapps

Δραστηριότητα

0απομακρυσμένη σύνδεση

εντολές στην κονσόλαλίγη python

Τα Pi του εργαστηρίου

chatzipi.local

eliaspi.local

papapi.local

parispi.local

blackpi.local

clearpi.local

rectapi.local

shinyblackpi.local

Τι προσδίδει στο Pi…το κάτι παραπάνωπέρα από το σχετικά χαμηλό κόστοςκαι τη φορητότητα

28 GPIO (general purpose input/output) pins

http://pinout.xyz/

Πρόσθετεςπλακέτες (Add-ons)

Κουμπώνουν απευθείας πάνω στο Pi

https://www.raspberrypi.org/products/sense-hat/ https://astro-pi.org/

http://www.dexterindustries.com/Arduberry/

Πρόσθετεςπλακέτες(Add-ons)

http://piandbash.co.uk/

Adafruit Capacitive Touch HAT for Raspberry Pi

Πρόσθετεςπλακέτες (Add-ons)

http://thepihut.com/collections/raspberry-pi-hats/products/adafruit-capacitive-touch-hat-for-raspberry-pi

8 input capacitive touch sensor (~ £ 2.00)Παρόμοιος με το Makey Makey

http://www.ncl.ac.uk/computing/outreach/resources/cas-tyneside-hub-03-07-14/physical-computing-lamb.pptx

Πιθανές χρήσειςεκπαιδευτικές ή άλλες

Media Center (RaspBMC ή openELEC)

Server

• BitTorrent client/server (π.χ. Transmission)

• NAS/Backup server (π.χ. Samba, rSync)

• Ιδιωτικός cloud server (π.χ. Owncloud)

Arcade Machine

http://www.raspberrypi.org/tag/mame/

Minecraft Pi

http://www.raspberrypi.org/learning/getting-started-with-minecraft-pi/

Αξιοποίηση της κάμερας• Motion sensing camera

• Baby monitor

• Συναγερμός

• IP camera

• Time lapse camera

Αναγνώριση αντικειμένων με το OpenCVή με το SimpleCV

http://www.pyimagesearch.com/2015/10/26/how-to-install-opencv-3-on-raspbian-jessie/

Μετεωρολογικός Σταθμός

http://www.raspberrypi.org/school-weather-station-project/

Ρομποτική

https://learn.adafruit.com/simple-raspberry-pi-robot

https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/robot/

Συνοψίζονταςκαι επεκτείνονταςτα … περί ιδιαίτερων δυνατοτήτων του Pi

ανότανόσο

όποτε

αυτό εκείνοτότε κάνε

αυτό

• πατηθεί ένα κουμπί• ανιχνεύσεις κίνηση, θόρυβο, φωτιά, σκοτάδι• αναγνωρίσεις κάποιο πρόσωπο/αντικείμενο• σε πλησιάσουν αρκετά• η θερμοκρασία/υγρασία/άνεμος αυξηθεί• βρίσκεσαι κάπου (θέση, ύψος, περιοχή)• η στάθμη ξεπεράσει/κατέβει• η κλίση αυξηθεί• προβλέπεται καταιγίδα• λάβεις e-mail, SMS

διακόπτες(τηλε)χειριστήρια

αισθητήρεςμικρόφωνα

κάμερεςinternet

εκείνο

• τράβα φωτογραφία/βίντεο • παίξε ήχο/βίντεο• εκτέλεσε κάποιο πρόγραμμα/εντολή• δώσε ρεύμα σε συσκευή• δώσε εντολή σε κινητήρα• στείλε e-mail/tweet• ειδοποίησε σε κινητό (push notification)

οθόνες/ηχείασυσκευέςκινητήρες

internet

Πως γίνονται όλα αυτά τα ωραίαμε την Python

28 GPIO (general purpose input/output) pins

To breadboard a board for cutting bread on

https://learn.sparkfun.com/tutorials/how-to-use-a-breadboard

To breadboard

https://learn.sparkfun.com/tutorials/how-to-use-a-breadboard

To breadboard

Μόνιμα αναμμένο LED

R330 Ω

LED που ελέγχεται με κώδικαΧρήση της βιβλιοθήκης GPIO Zero

LED που ελέγχεται με κώδικαΧρήση της βιβλιοθήκης GPIO Zero

from gpiozero import LED

from time import sleep

led = LED(17)

led.on()

sleep(1)

led.off()

from gpiozero import LEDfrom time import sleep

led = LED(17)

led.on()sleep(1)led.off()

import RPi.GPIO as GPIO from time import sleep

GPIO.setmode(GPIO.BCM)GPIO.setwarnings(False)led = 17GPIO.setup(led,GPIO.OUT)

GPIO.output(led,GPIO.HIGH)sleep(1)GPIO.output(led,GPIO.LOW)

GPIO.cleanup()

Rpi.GPIOgpiozero

from gpiozero import LED

from time import sleep

led = LED(17)

led.on()

sleep(1)

led.off()

gpiozero scratch

http://gpiozero.readthedocs.org/

gpio zero

1 beeper.off()2 sleep( )3 beeper = Buzzer( )4 from gpiozero import Buzzer5 beeper.on()6 from time import sleep

Παραγγελιά: ένα μπιπ διάρκειας 0.5 sec στο 4

1 from gpiozero import Buzzer2 from time import sleep 3 beeper = Buzzer(4)4 beeper.on()5 sleep(0.5)6 beeper.off()

Παραγγελιά: ένα μπιπ διάρκειας 0.5 sec στο 4

from gpiozero import LED, Buzzerfrom time import sleep……

for i in range(x):# εδώ μπαίνουν κατάλληλα στοιχισμένες οι εντολές # που έτσι θα εκτελεστούν x φορές

Ένα SOS παρακαλώ!

def onoma(parametros1, parametros2):# εντολές

Ένα SOS παρακαλώ!

play(3, 0.1) # Ssleep(.4)play(3, 0.3) # Osleep(.4)play(3, 0.1) # S

from time import sleepfrom gpiozero import LED, Buzzerbeeper = Buzzer(4)led = LED(21)

def play(n,t):for i in range(n):

beeper.on()led.on()sleep(t)beeper.off()led.off()sleep(0.2)

φύλλο δραστηριοτήτων

1έλεγχος LED ή/και Buzzer

Διακόπτης - πλήκτρο

Για μεγαλύτερη ασφάλεια

1 kΩ 10 kΩ

Ένας τρόπος ελέγχου του κουμπιού

from gpiozero import LED, Button

led = LED(17)

button = Button(2)

while True:

if button.is_pressed:

led.on()

else:

led.off()

sleep(0.2)

from gpiozero import LED, Buttonfrom time import sleep

led = LED(26)b1 = Button(12)b2 = Button(22)

def hello():print(“Button1 pressed")led.on()

b1.when_pressed = hellob2.when_pressed = led.off

while True:# …

from gpiozero import LED, Buttonfrom time import sleepfrom signal import pause

b1.when_pressed = hellob2.when_pressed = led.off

pause()

Ένας καλύτερος τρόπος ελέγχου του κουμπιού

Tο LED ανάβει μόνο για όσο το κουμπί είναι πατημένο

from gpiozero import LED, Button

from signal import pause

led = LED(17)

b = Button(2)

b.when_pressed = led.on

b.when_released = led.off

pause()

Tο LED ανάβει μόνο για όσο το κουμπί είναι πατημένο

state = Falsewhile True:if b.is_pressed and state==False:

if led.is_lit:led.off()

else:led.on()

state = b.is_pressedsleep(0.1)

state = Falsewhile True:b.wait_for_press()if b.is_pressed:if state == False:led.on()

else:led.off()

state = not statesleep(0.1)

state = Falsewhile True:b.wait_for_press()if b.is_pressed:state = not stateled.value = statesleep(0.1)

Αισθητήρας ανίχνευσης κίνησηςPassive Infra-Red Sensor

from gpiozero import MotionSensor, LEDfrom signal import pause

pir = MotionSensor(23)led = LED(16)

pir.when_motion = led.onpir.when_no_motion = led.off

pause()

Ιεραρχία κλάσεων gpiozero

Μαγνητικός διακόπτηςDoor Magnetic Switch (Reed)

φύλλο δραστηριοτήτων

2Button και άλλα

Περισσότερες πληροφορίες

και ιδέες

Raspberry Pi documentation

https://www.raspberrypi.org/documentation/

The MagPi

https://www.raspberrypi.org/magpi/

Ιδέες και tutorials για projects

http://www.raspberrypi.org/resources/

Ιδέες και tutorials για projects

http://www.modmypi.com/blog/tutorials http://www.instructables.com/id/Raspberry-Pi-Projects/

https://learn.adafruit.com/category/raspberry-pi

Κάνει για το σχολείο;

πως συγκρίνεται με ένα υπολογιστή ή ένα tablet;

Μπορεί το Raspberry Pi να αντικαταστήσει ένα tablet ή ένα PC;

Pi vs iPad vs PC

Μπορεί το Raspberry Pi να αντικαταστήσει ένα tablet ή ένα PC;

Εκπαιδευτικό εργαλείο• Look under the hood …• Tinker with the settings…• Experiment …• Be creative …

Pi vs iPad vs PC

ICT ή Computing ;

Μπορεί το Raspberry Pi να αντικαταστήσει ένα tablet ή ένα PC;

Pi vs iPad vs PC

https://www.raspberrypi.org/blog/what-does-a-good-computing-classroom-look-like/

Μπορεί το Raspberry Pi να αντικαταστήσει ένα tablet ή ένα PC;

Pi vs iPad vs PC

https://www.raspberrypi.org/blog/what-does-a-good-computing-classroom-look-like/

Παράρτημα

Όλα τα υπόλοιπα

Εγκατάσταση λειτουργικών συστημάτων

Λύση Β:Κατεβάζουμε έτοιμα imagesκαι τα γράφουμε σε SD: https://www.raspberrypi.org/downloads/

Λύση Α:NOOBS installer

Λειτουργικά συστήματα τρίτων

Δυνατότητα στησίματος εργαστηρίου τύπου LTSP

Server: Ubuntu Linux 14.04 (Οκτ. 2015)

http://pinet.org.uk/

Artwork by Andy Hunt and PiNet logo by Amy Mather

http://alkisg.mysch.gr/steki/index.php?topic=6441.0

Server: Ubuntu LTSP ≥ 12.04 (Νοε. 2015)

https://help.ubuntu.com/community/UbuntuLTSP/RaspberryPi

sch-scripts epoptes

Περίπου αυτοσχέδιο UPSγια επιπλέον σιγουριά και φορητότητα

Raspberry Pi UPS με τη χρήση ενός Power Bank και ενός LAN switchκαι της εφαρμογής upsd

To UPS ενεργοποιείται όταν διακοπεί η LAN σύνδεση με το switch

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Εντοπισμός της IP διεύθυνσης

Τοπικάεκτέλεση της εντολής: ifconfig [eth0 ή wlan0]

Εντοπισμός της IP διεύθυνσης

Από άλλη συσκευή στο ίδιο LANΧρήση κάποιου IP scanner (π.χ. Advanced IP Scanner ή Angry IP Scanner)

Εντοπισμός της IP διεύθυνσης

Από κινητή συσκευή (Android ή iOS) στο ίδιο LANΧρήση κάποιου IP scanner (π.χ. Fing)

Εναλλακτική λύση (χωρίς IP)

Χρήση του <hostname>.local από Η/Υ με τη βοήθεια του zeroconf.

α) Εγκατάσταση στο Pi του Avahi service:sudo apt-get install avahi-daemon

β) Εγκατάσταση στον Η/Υ του Bonjour Print Services:Version 2.02: http://support.apple.com/kb/DL999Version 3.0: Εξαγωγή installer από τον iTunes installer.

Περισσότερα: https://learn.adafruit.com/bonjour-zeroconf-networking-for-windows-and-linux/

http://www.digikey.com/en/resources/conversion-calculators/conversion-calculator-resistor-color-code-4-band

LED πολλών χρωμάτων (RGBLED)

from gpiozero import RGBLEDled = RGBLED(14, 15, 18)

Ιδιότητες (όλες παίρνουν πραγματική τιμή από 0 μέχρι 1.0):● red η φωτεινότητα του κόκκινου (πραγματικός αριθμός)● green η φωτεινότητα του πράσινου (πραγματικός αριθμός)● blue η φωτεινότητα του μπλε (πραγματικός αριθμός)● value η φωτεινότητα καθενός εκ των 3 led

(λίστα 3 πραγματικών αριθμών - με δυνατότητα ορισμού των τιμών)

Breathing LED

while True:

for n in range(0,100,1):led.value = n/100sleep(0.02)

for n in range(100,0,-1):led.value = n/100sleep(0.02)

led.off()sleep(0.2)

Λήψη φωτογραφιών

from gpiozero import Buttonfrom picamera import PiCamera

button = Button(5)

with PiCamera() as camera:camera.vflip = Trueframe = 1while True:

button.wait_for_press()camera.capture('/home/pi/frame%03d.jpg' % frame)frame += 1

Pushbullet

#coding: utf-8

from pushbullet import Pushbullet

pb = Pushbullet(" το_μοναδικό_σας_κλειδί ")

# παραδείγματα pushed notification

push = pb.push_note("Τίτλος", "Κυρίως κείμενο")

push = pb.push_link("ΣΕΠ Χίου", "http://www.sepchiou.gr")

with open("intruder.jpg", "rb") as pic:

file_data = pb.upload_file(pic, "picture.jpg")

push = pb.push_file(**file_data)

https://pypi.python.org/pypi/pushbullet.py/0.9.1

https://www.pushbullet.com/

top related