Python Picamera with GPIO Zero - Picademy USA

A1995c9abe48450ce2f82d93ca0b863f?s=47 Ben Nuttall
February 27, 2016

Python Picamera with GPIO Zero - Picademy USA

Python camera GPIO workshop given at Picademy USA, featuring picamera and GPIO Zero

A1995c9abe48450ce2f82d93ca0b863f?s=128

Ben Nuttall

February 27, 2016
Tweet

Transcript

  1. Python Picamera featuring GPIO Zero Introducing the camera board and

    Python module
  2. Who's this guy? Ben Nuttall Education Developer Advocate Raspberry Pi

    Foundation @ben_nuttall ben@raspberrypi.org github.com/bennuttall
  3. USA Tour 2014

  4. Raspberry Pi camera module - 5Mpx - Full HD -

    Photo & video - Command line - Python module - Infra-red camera
  5. What you will learn • How to connect the camera

    module • How to use the Python picamera module to control the camera • How to use the GPIO Zero Button interface to control the camera • How to use loops to repeat commands • How simple changes to code make different projects • Ideas for camera projects
  6. Connect the camera

  7. Add a GPIO Button

  8. Boot the Pi and open Python 3

  9. IDLE Python Shell >>> from picamera import PiCamera >>> from

    gpiozero import Button >>> camera = PiCamera() >>> button = Button(17) >>> button.when_pressed = camera.start_preview >>> button.when_released = camera.stop_preview
  10. GPIO Zero Button button.is_pressed button.wait_for_press() button.wait_for_release() button.when_pressed = some_function button.when_released

    = some_function
  11. GPIO Zero Button while True: if button.is_pressed: print("Pressed") while True:

    if not button.is_pressed: print("Not pressed")
  12. GPIO Zero Button while True: button.wait_for_press() print("Pressed") button.wait_for_release() print("Released")

  13. GPIO Zero Button led = LED(4) button = Button(17) button.when_pressed

    = led.on button.when_released = led.off
  14. GPIO Zero Button def hello(): print("Pressed") button.when_pressed = hello

  15. Open a new file • File > New File •

    File > Save • Save as camera.py
  16. Take a selfie from picamera import PiCamera from time import

    sleep with PiCamera() as camera: camera.start_preview() sleep(3) camera.capture("/home/pi/image.jpg") camera.stop_preview() Save and run: Ctrl + S F5
  17. Add GPIO Button code from picamera import PiCamera from gpiozero

    import Button from time import sleep button = Button(17) with PiCamera() as camera: camera.start_preview() button.wait_for_press() sleep(3) camera.capture("/home/pi/image2.jpg") camera.stop_preview() Save and run: Ctrl + S F5
  18. Add a loop with PiCamera() as camera: camera.start_preview() for i

    in range(5): button.wait_for_press() sleep(3) camera.capture("/home/pi/image%s.jpg" % i) camera.stop_preview() Save and run: Ctrl + S F5
  19. What's the difference? for i in range(5): button.wait_for_press() sleep(3) camera.capture("/home/pi/image%s.jpg"

    % i) button.wait_for_press() for i in range(5): sleep(3) camera.capture("/home/pi/image%s.jpg" % i)
  20. What next? • Time-lapse • Stop motion animation • Wildlife

    camera
  21. What next? • Sensor trigger • Send to social media

    • Robotics
  22. Two Buttons? left = Button(4) right = Button(14) left.when_pressed =

    camera.start_preview left.when_released = camera.stop_preview right.when_pressed = camera.capture ← Why wouldn't this work?
  23. Custom capture function def capture(): camera.capture("/home/pi/image.jpg") right.when_pressed = capture

  24. Custom capture function i = 0 def capture(): global i

    camera.capture("/home/pi/image%s.jpg" % i) i += 1 right.when_pressed = capture Alternatively, use the datetime module
  25. GPIO Zero Motion Sensor sensor = MotionSensor(14) sensor.is_motion sensor.wait_for_motion() sensor.wait_for_no_motion()

    sensor.when_motion = some_function sensor.when_no_motion = some_function
  26. picamera camera.start_preview() camera.stop_preview() camera.capture(output) camera.start_recording(output) camera.stop_recording() camera.add_overlay(source)

  27. picamera camera.resolution = (1280, 720) camera.rotation = 180 camera.annotate_text =

    "Hello world"
  28. Documentation and help guides • picamera.readthedocs.org • gpiozero.readthedocs.org • raspberrypi.org/resources

    • raspberrypi.org/education/downloads
  29. Python Picamera featuring GPIO Zero Introducing the camera board and

    Python module