Raspberry Pi Les 4: Zaterdag 22 maart 2014 Wim Peeters ([email protected]) Raspberry-Pi Programma Installatie Basis Linux en de commando's Pi als eenvoudig Linux servertje Raspberry PI als mediaspeler Aansturen en uitlezen motoren en LEDs Raspberry PI als fm zender Raspberry-Pi 3 Vorige les Shell scriptjes en webserver Aansturen en uitlezen van LEDs en motoren – Basis elektronica • Stroom, spanning, weerstand • LEDs • Analoog naar Digitaal – Eenvoudig schakelingen – Programeren in python Raspberry-Pi 4 Maak onze website dynamisch #!/bin/bash # Verander de website # Wim Peeters # echo " <html>" echo " <head>" echo " <title> Raspberry PI van Wim </title>" echo " <META HTTP-EQUIV=refresh CONTENT=5>" echo " </head>" echo " <body><h1>Raspberry Pi webserver van Wim</h1>" echo " <p>Dit is de aangemaakte pagina van de webserver op de Pi</p>" echo " <p>het is nu:`/bin/date`</p>" echo " </body>" echo " </html>" Raspberry-Pi 5 Cron: crontab -e S Raspberry-Pi 6 Resultaat S Raspberry-Pi 7 Vandaag Shell scriptjes en webserver Aansturen en uitlezen van LEDs en motoren – Basis elektronica • Stroom, spanning, weerstand • LEDs • Analoog naar Digitaal – Eenvoudig schakelingen – Programeren in python Raspberry-Pi 8 Vandaag Eenvoudige schakelingen Knipper LED LED Dimmen (8 segmenten display) Drukknop Analoog signaal meten Raspberry-Pi 9 Basis elektronica Spanning: Eenheid: Volt (V) Spanning “staat over” een component Stroom Eenheid: Ampere (A) Stroom “stroomt door” een component Weerstand Eenheid: Ohm (Ω) Weerstand tegen stroom Raspberry-Pi 10 Wetten van Kirchhoff Som spanning in een lus = 0V Som v/d Stroom in – Som v/d Stroom uit een knoop = 0A Raspberry-Pi 11 Wet van Ohm Verband :Spanning, stroom en weerstand U= I x R Gegeven: U=10V, R=1000Ω Gevraagd: I? I=U/R 10V/1000Ω=0,01A=10mA Raspberry-Pi 12 Kleurcode weerstanden Waarde? Raspberry-Pi 13 Truuk Zin: zij bracht rozen op Gerrits graf bij vies grijs weer Raspberry-Pi → zwart → bruin → rood → oranje → geel → groen → blauw → violet → grijs → wit 14 →0 →1 →2 →3 →4 →5 →6 →7 →8 →9 Oefening Zin: Raspberry-Pi 15 LED: Light Emitting Diode Zin: Raspberry-Pi 16 LED en voorwaartse spanning Zin: Raspberry-Pi 17 Raspberry-Pi 18 GPIO: connector P1 Raspberry-Pi 19 GPIO 3,3V Hoog/laag → 1/0 Opgepast: niet beschermd Kortsluiting → stuk Spanning opzetten → stuk Raspberry-Pi 20 LED en PI Pi: 5V pin 2 GND pin 6 3,3V elke IN/OUT 5V max 250mA 3,3V max 50mA Advies: 3-5mA Raspberry-Pi 21 LED en PI Pi: Raspberry-Pi 22 Bereken de weerstand U: 5V Rode LED: Max 5mA R? 470Ω Raspberry-Pi 23 Oplossing Pin: 3,3 Volt → 3mA → rode led: 2V: R=(U-U )/I → 1,3V/3mA 433Ω → dus 470Ω led Pin: 5 Volt → 3mA → rode led: 2V: R=(U-Uled)/I → 3V/3mA 1000Ω Stel 470Ω? Raspberry-Pi 24 GPIO programmeren sudo apt-get install python-dev sudo apt-get install python-rpi.gpio Raspberry-Pi 25 Programmeertaal python #!/usr/bin/python # # Voorbeeldje: Wim Peeters # for i in range(1,10): print(i) Raspberry-Pi 26 Led aan, Led uit pi@raspberrypi ~ $ sudo python Python 2.7.3 (default, Jan 13 2013, 11:20:46) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import RPi.GPIO as GPIO >>> GPIO.setmode(GPIO.BCM) >>> GPIO.setup(18, GPIO.OUT) >>> GPIO.output(18,True) >>> GPIO.output(18,False) Raspberry-Pi 27 Led aan, Led uit pi@raspberrypi ~ $ sudo python Python 2.7.3 (default, Jan 13 2013, 11:20:46) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import RPi.GPIO as GPIO >>> GPIO.setmode(GPIO.BCM) >>> GPIO.setup(18, GPIO.OUT) >>> GPIO.output(18,True) >>> GPIO.output(18,False) Raspberry-Pi 28 Led aan, Led uit pi@raspberrypi ~ $ sudo python Python 2.7.3 (default, Jan 13 2013, 11:20:46) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import RPi.GPIO as GPIO >>> GPIO.setmode(GPIO.BCM) >>> GPIO.setup(18, GPIO.OUT) >>> GPIO.output(18,True) >>> GPIO.output(18,False) Raspberry-Pi 29 Python program: pinker.py #!/usr/bin/python # Led tss pin 18 en GND # Wim Peeters import RPi.GPIO as GPIO import time GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) while (True): GPIO.output(18, True) time.sleep(0.5) GPIO.output(18, False) time.sleep(0.5) Raspberry-Pi 30 Programma: pinker.py sudo ./pinker.py Raspberry-Pi 31 Puls breedte: fader.py Raspberry-Pi 32 Oefening Zin: Raspberry-Pi 33 Programma: fader.py sudo ./fader.py Raspberry-Pi 34 Drukknop VCC: 3,3 V pin 1 GND: pin 6 Meeting: pin16 → GPIO 23 R=U/I 3,3V/0,3mA = 11000Ω → 10KΩ Raspberry-Pi 35 Drukknop Naar GPIO 1 (3,3V) Naar GPIO 23 → pin 16 Naar GND pin 6 Raspberry-Pi 36 Drukknop Raspberry-Pi 37 sudo ./drukknop.py Raspberry-Pi 38 Oefening Als je even op de knop drukt, knippert de LED 2 maal Raspberry-Pi 39 Raspberry-Pi 40 Meten van een spanning De PI heeft geen analoog digitaal convertor (ADC) Truk: – Vervang Spannings meting door tijdsmeting Raspberry-Pi 41 Condensator: C Kan elektrische lading opslagen En vrijgeven. → maar dat duurt een tijd Symbool: Eenheid: Farad (F) Raspberry-Pi 42 Weerstand en Condensator in serie Vin -VR -VC=0 VR = wet van Ohm VR=IR VC =Vin(1-e-t/RC) Met τ=RC Raspberry-Pi 43 Laden: opgeladen na 5RC t=RC Raspberry-Pi 44 Ontladen: na 5RC t=RC Raspberry-Pi 45 Met de PI Opgepast: kortsluiting! Pin1: 3,3V Pin6: GND GPIO 24 – (pin 18) Raspberry-Pi 46 Raspberry-Pi 47 Sudo ./AD.py Raspberry-Pi 48 In onze Website duwen? Raspberry-Pi 49 meet.py: eenmalige meting Raspberry-Pi 50 website-meeting.sh Raspberry-Pi 51 Uitvoeren + redirect naar webserver Raspberry-Pi 52