Les 5: Zaterdag 29 maart 2014 Wim Peeters (Wim.Peeters@acm.org) Raspberry Pi Les 5: Zaterdag 29 maart 2014 Wim Peeters (Wim.Peeters@acm.org)
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
Vorige Les Eenvoudige schakelingen Knipper LED LED Dimmen (8 segmenten display) Drukknop Analoog signaal meten Raspberry-Pi
GPIO: connector P1 Raspberry-Pi
LED en PI Pi: 5V pin 2 GND pin 6 3,3V elke IN/OUT 5V max 250mA Advies: 3-5mA Raspberry-Pi
GPIO programmeren sudo apt-get install python-dev sudo apt-get install python-rpi.gpio Raspberry-Pi
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) Raspberry-Pi
Drukknop Naar GPIO 1 (3,3V) Naar GPIO 23 → pin 16 Naar GND pin 6 Raspberry-Pi
Meten van een spanning De PI heeft geen analoog digotaal convertor (ADC) Truuk: Vervang Spannings meting door tijdsmeting Raspberry-Pi
Condensator: C Kan elektrische lading opslagen En vrijgeven. → maar dat duurt een tijd Symbool: Eenheid: Farad (F) Raspberry-Pi
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
Laden: opgeladen na 5RC t=RC Raspberry-Pi
Ontladen: na 5RC t=RC Raspberry-Pi
Met de PI Opgepast: kortsluiting! Pin1: 3,3V Pin6: GND GPIO 24 Raspberry-Pi
In onze Website duwen? Raspberry-Pi
meet.py: eenmalige meting Raspberry-Pi
website-meeting.sh Raspberry-Pi
Uitvoeren + redirect naar webserver Raspberry-Pi
Vandaag Eenvoudige schakelingen ... Temperatuur meten Reageren op licht Servo motor Raspberry-Pi
Temperatuur meten NTC-thermistor M891 Raspberry-Pi
NTC: Negatieve Temperatuur Coëfficiënt (weerstand) Weerstand neemt toe met dalende Temperatuur T25 = 10K NTC 10K Raspberry-Pi
Exponentieel verband ( ) BENADERENDE RECHTE Lineair benaderen temp = -(temp/20)+66 Raspberry-Pi
Raspberry-Pi
Temperatuur Raspberry-Pi
Reageren op Licht Fotoweerstand THT Perkin Elmer VT 93 N2 Raspberry-Pi
LDR: hoe meer licht hoe kleiner de weerstand In onze schakeling < 500: veel licht >1000: weining licht Raspberry-Pi
Raspberry-Pi
Meting: <500 licht, >1000 donker Raspberry-Pi
Oefening Als donker: LED aan Als Licht: LED uit Raspberry-Pi
Oplossing Raspberry-Pi GPIO.setup(18, GPIO.OUT) # LED op Pin6, GPIO 18 … zie vorige oefening.... # Hoofdprogramma while (True): licht = RCtime(24) # We meten op GPIO24 if licht < 500: print("Het is licht, zet de led uit") GPIO.output(18, False) # Led uit else: print("Het is donker, zet de led aan") GPIO.output(18, True) # Led aan Raspberry-Pi
Servo motor MC-1811 Technische specificaties Raspberry-Pi Instelkoppel bij 4,8 V 15 Ncm Lagertype Glijlagers Stekkersysteem JR Servo-technologie Analoge servo Fabrikantnr. MC1811 Servo-type Micro-servo Raspberry-Pi
Breedte van de puls bepaalt positie Raspberry-Pi
Aansluiting Voeding: – 5V: Pin2 – GND: Pin 6 – Control: pin22 GPIO25 Weerstand 1K Control Raspberry-Pi
Via Duty cycle op 100Hz 100Hz: 10ms per period Raspberry-Pi Duty=10% geeft pulse 1ms = hoek 0 Duty=20% geeft pulse 2ms = hoek 180 Duty=15% geeft pulse 1ms = hoek 90 Raspberry-Pi
Run Raspberry-Pi pi@raspberrypi ~/LES5 $ sudo ./servo.py Duty moet tussen 10 en 20 liggen, we starten op 15 Duty=10% geeft pulse 1ms = hoek 0 Duty=20% geeft pulse 2ms = hoek 180 Duty=15% geeft pulse 1ms = hoek 90 Duty: 10 Duty: 20 Duty: 15 Raspberry-Pi
Raspberry-Pi #!/usr/bin/python # # pin1 3,3V --> 2K2,LDR 48k, pin18 (gpio24) --> GND (pin6) # pin2 5V --> Servo # pin6 (gpio18) --> R 470 --> LED --> GND (pin6) # pin22 (gpio25) --> R 1K --> signal servo # Wim Peeters import RPi.GPIO as GPIO import time GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) servopin = 25 GPIO.setup(servopin, GPIO.OUT) pwm = GPIO.PWM(servopin, 100) # pin en frequency, geeft 10ms/periode pwm.start(15) # start op 5% print "Duty moet tussen 10 en 20 liggen, we starten op 15" print " Duty=10% geeft pulse 1ms = hoek 0" print " Duty=20% geeft pulse 2ms = hoek 180" print " Duty=15% geeft pulse 1ms = hoek 90" while True: duty = int(input('Duty: ')) pwm.ChangeDutyCycle(duty) # Beweeg de Servo Raspberry-Pi
Oefening: servo sturen met LDR Zelfde hardware … vb output Het is licht, zet de led uit en servo naar links Het is donker, zet de led aan en servo naar rechts Raspberry-Pi
Oplossing Raspberry-Pi …. zie vorige oefening # Hoofdprogramma while (True): licht = RCtime(24) # We meten op GPIO24 if licht < 500: print("Het is licht, zet de led uit en servo naar links") GPIO.output(18, False) # Led uit pwm.ChangeDutyCycle(10) # Beweeg de Servo naar links else: print("Het is donker, zet de led aan en servo naar rechts") GPIO.output(18, True) # Led aan pwm.ChangeDutyCycle(20) # Beweeg de Servo naar rechts 2ms puls Raspberry-Pi
Raspberry pi als FM zender Star Wars
Pifm.tar.gz van icrobotics.ci.uk wget http://www.icrobotics.co.uk/wiki/images/c/c3/Pifm.tar.gz pi@raspberrypi ~/LES5/pifm $ sudo ./pifm sound.wav 103.2 Raspberry-Pi
Pi grafisch Remote: VNC server sudo apt-get tightvncserver sudo tightvncserver Raspberry-Pi
Raspberry-Pi
Raspberry-Pi
sudo apt-get install pistore Raspberry-Pi
PI als Mediacenter: RaspBMC http://www.raspberrypi.org/downloads Raspberry-Pi
Raspberry-Pi