Ben Nuttall ● Raspberry Pi Community Manager ● Based in Cambridge, UK ● Creator of gpiozero python library ● Columnist on opensource.com ● github.com/bennuttall ● twitter.com/ben_nuttall ● [email protected]
Raspberry Pi Foundation ● Educational charity founded in 2009 ● Incorporates: – Raspberry Pi Trading Ltd – Code Club – CoderDojo ● Trading profits fund education programmes raspberrypi.org/about
Our mission “Putting the power of digital making into the hands of people all over the world” So that people are: ● Capable of understanding and shaping an increasingly digital world ● Able to solve the problems that matter to them, both as makers and entrepreneurs ● Equipped for the jobs of the future raspberrypi.org/about
Moving on from IDLE... ● We have included a new IDE called Thonny ● We are investing in developing Nicholas Tollervery’s Mu editor – watch this space! ntoll.org/article/mu-pi
Multi-paradigm: procedural from gpiozero import LED, Button led = LED(17) button = Button(4) while True: if button.is_pressed: led.on() else: led.off()
AND logic gate from gpiozero import Button, LED from gpiozero.tools import all_values button_a = Button(2) button_b = Button(3) led = LED(17) led.source = all_values(button_a.values, button_b.values)
Is the internet working? from gpiozero import LED, PingServer from gpiozero.tools import negated green = LED(17) red = LED(18) google = PingServer('google.com') green.source = google.values green.source_delay = 60 red.source = negated(green.values)
Supporting multiple pin libraries ● RPi.GPIO ● Implemented in C, current default ● Available in PyPI & apt repository (installed by default in Raspbian) ● RPIO ● Implemented in C, supports hardware PWM, supports Pi 1 only (dead project) ● Available in PyPI ● pigpio ● Python wrapper for C library, supports lots of protocols, runs as daemon, supports remote connections ● Available in PyPI & apt repository (installed by default in Raspbian) ● Native ● Pure Python, limited functionality, experimental ● Included in gpiozero source ● MockPin & MockPWMPin ● Pure Python, used in test suite ● Included in gpiozero source
pigpio - remote GPIO from Pi or PC from gpiozero import LED from gpiozero.pins.pigpio import PiGPIOFactory from signal import pause factory = PiGPIOFactory('192.168.0.2') led = LED(22, pin_factory=factory) led.blink() pause()
pigpio - remote GPIO from Pi or PC $ export GPIOZERO_PIN_FACTORY=pigpio $ export PIGPIO_ADDR=192.168.0.2 $ python3 led.py from gpiozero import LED from signal import pause led = LED(22) led.blink() pause()
Sense HAT ● Special made for Tim Peake's Astro Pi mission ● Sensors, LED display & joystick ● Great for science, games and creativity ● Works on any Pi model ● Emulators also available raspberrypi.org/products/sense-hat
Picamera ● 8 megapixels (v2) – v1 was 5mpx ● Visible light & infra-red versions available ● 1080p30, 720p60 and VGA90 video ● Command line interface and Python library raspberrypi.org/products/camera-module-v2
Picamera - capture from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() sleep(3) camera.capture('/home/pi/Desktop/image.jpg') camera.stop_preview()
Picamera – record video from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() camera.start_recording('/home/pi/video.h264') sleep(10) camera.stop_recording() camera.stop_preview()
Picamera image effects from picamera import PiCamera from time import sleep camera = PiCamera() camera.start_preview() for effect in camera.IMAGE_EFFECTS: camera.image_effect = effect camera.annotate_text = effect sleep(1) camera.stop_preview()
Google AIY Projects kit ● Free with The MagPi #57 ● Google Voice HAT + speaker ● Google assistant ● Write code to process custom voice commands – “Lights on” – “Robot go forward” – “Take a picture” aiyprojects.withgoogle.com
PyPI & ARM Wheels ● PyPI doesn’t support uploading ARM wheels :( ● I have a project called piwheels – I build all PyPI packages on a Raspberry Pi 3 – I host a Python package repository on the same Pi ● Next gen PyPI (warehouse) now supports uploading ARM wheels :) ● See my lightning talk slides at speakerdeck.com/bennuttall ● See the project at github.com/bennuttall/piwheels github.com/bennuttall/piwheels
Python libraries ● Play with, and contribute to: – gpiozero – picamera – sense hat – more! ● Help maintainers upgrade modules to Python 3 ● Create your own Python libraries for Raspberry Pi things
The MagPi ● Community magazine established in 2012 (as free PDF download) ● Now the official Raspberry Pi magazine ● Paper copies on sale in UK/US shops and online ● Still a free PDF download ● Occasionally comes with a free computer ● Book series (also available for free) raspberrypi.org/magpi
Raspberry Jam ● Independently organised community events ● Family-friendly ● Mix of meetup / conference / workshop styles ● Raspberry Jam Guidebook and more resources available ● Contact me about setting one up! raspberrypi.org/jam
Code Club ● Free volunteer-led after school clubs for children ● Projects provided using Scratch, HTML and Python ● Training and support provided for volunteers ● Help translating materials codeclubworld.org