python + raspberry pi gpio

59
Python + GPIO = Борисов Кирилл PyCon Belarus 2017

Upload: -

Post on 18-Feb-2017

119 views

Category:

Software


5 download

TRANSCRIPT

Page 1: Python + Raspberry Pi GPIO

Python + GPIO = ❤Борисов Кирилл

PyCon Belarus 2017

Page 2: Python + Raspberry Pi GPIO

О докладчике

• Имя ему - Кирилл Борисов

• 10 лет программирует за деньги

• 5 лет души не чает в Python

• Работает в Яндексе и не знает забот

Page 3: Python + Raspberry Pi GPIO

Disclaimer

• Докладчик - не настоящий сварщик электронщик

• Не будет ни слова об IoT (почти)

• Доклад никак не связан с моей работой

• Автор не несет ответственности за убитое время

Page 4: Python + Raspberry Pi GPIO

Raspberry PiПродукт, запустивший тысячи проектов

Source: https://www.sparkfun.com/products/retired/11546

Page 5: Python + Raspberry Pi GPIO

Базовые факты• Размером с кредитную карту

• Производится Raspberry Pi Foundation

• Первый прототип создал Eben Upton

• Цель - заинтересовать детей

• Вдохновлялись BBC Micro

• Не является “open source”

Page 6: Python + Raspberry Pi GPIO

Model B (2012)

Source: https://www.sparkfun.com/products/retired/11546

Page 7: Python + Raspberry Pi GPIO

Model B (2012)

• 700 MHz, 1 ядро, 32-bit, ARM

• 512 MB RAM

• 2 USB-порта

• 100Mb Ethernet-порт

Page 8: Python + Raspberry Pi GPIO

Pi 3 Model B (2016)

Source: https://www.raspberrypi.org/magpi/pi-3-interview/

Page 9: Python + Raspberry Pi GPIO

Pi 3 Model B (2016)• 1.2GHz 64-bit, 4 ядра, ARMv8 CPU

• 1 GB RAM

• 4 USB-порта

• Wi-Fi (b/g/n), Bluetooth 4.1 / BLE

• Ethernet-порт

Page 10: Python + Raspberry Pi GPIO

Pi Zero (2015)

Source: https://www.raspberrypi.org/blog/raspberry-pi-zero/

Page 11: Python + Raspberry Pi GPIO

Pi Zero (2015)• 1GHz 32-bit, 1 ядро, ARMv11 CPU

• 512 MB RAM

• 1 Micro USB порт

• Wi-Fi (b/g/n), Bluetooth 4.1 / BLE

• Ethernet отсутствует, GPIO без коннектора

Page 12: Python + Raspberry Pi GPIO

Доводы “за”• Большая мощность

• Встроенный WiFi и Bluetooth, Ethernet

• Многофункциональность

• Доступность

• GPIO с поддержкой SPI, I2C, UART

Page 13: Python + Raspberry Pi GPIO

Доводы “против”• Нет своего ЦАП и АЦП

• Достаточно высокая цена

• Не подходит для real-time

• Большое энергопотребление

• Заточен под 3.3v

Page 14: Python + Raspberry Pi GPIO

GPIOВвод-вывод на каждый день

Source: https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/

Page 15: Python + Raspberry Pi GPIO

Что это?

• Физический интерфейс для связи с миром вокруг

• Может работать на вход, так и на выход

• Цифровой интерфейс

• 26 пинов на Model A, 40 пинов на Model B

Page 16: Python + Raspberry Pi GPIO

Нумерация по Broadcom

Source: https://raspberrypi.org

Page 17: Python + Raspberry Pi GPIO

Физическая нумерация

Source: https://raspberrypi.org

Page 18: Python + Raspberry Pi GPIO

Общая схема

• UART - универсальный асинхронный приёмопередатчик

• I2C - последовательная асимметричная шина

• SPI - последовательный периферийный интерфейсSource: https://pinout.xyz

Page 19: Python + Raspberry Pi GPIO

SPI

• Serial Peripheral Interface Bus

• Полнодуплексная шина обмена данными

• Архитектура “master-slave”

• Для общения с SD-карты, ЖК-дисплеи и т.д.

Source: https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus

Page 20: Python + Raspberry Pi GPIO

I2C

• Inter-Integrated Circuit

• Способ низкоскоростного обмен данными

• Много мастеров, много подчиненных устройств

• EEPROM, OLED-дисплеи, датчики и т.д.

Source: https://en.wikipedia.org/wiki/I%C2%B2C

Page 21: Python + Raspberry Pi GPIO

Hardware-On-Top (HAT)• Спецификация расширений для Pi:

• Прямоугольная плата (65 x 56 мм)

• Коннектор на 40 пинов

• EEPROM для автоконфигурации

• Для моделей B+ и выше

Page 22: Python + Raspberry Pi GPIO

Hardware-On-Top (HAT)

Source: https://grobotronics.com/raspberry-pi-sense-hat.html https://thepihut.com/products/raspberry-pi-sense-hat-astro-pi

Page 23: Python + Raspberry Pi GPIO

СхемотехникаЗа 60 секунд или более

Page 24: Python + Raspberry Pi GPIO

Техника безопасности

• Работайте со схемой при отключенном питании

• Не путайте “плюс” с “минусом”

• Внимательно читайте документацию

• Статика - ваш враг

Page 25: Python + Raspberry Pi GPIO

Простейшая схема

Page 26: Python + Raspberry Pi GPIO

Простейшая схема

Page 27: Python + Raspberry Pi GPIO

Вариант с Raspberry Pi

Page 28: Python + Raspberry Pi GPIO

Вариант с Raspberry Pi

Page 29: Python + Raspberry Pi GPIO

Работа из PythonRPi.Zero, GPIO Zero и все-все-все

Source: https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/

Page 30: Python + Raspberry Pi GPIO

RPi.GPIO

• “Официальная” библиотека

• Поставляется с Raspbian

• Поддерживает только программную ШИМ

• Очень много избыточного кода :(

https://sourceforge.net/p/raspberry-gpio-python

Page 31: Python + Raspberry Pi GPIO

RPi.GPIOimport RPi.GPIO as GPIOGPIO.setmode(GPIO.BOARD)GPIO.setup(22, GPIO.OUT)while True: sleep(0.5) GPIO.output(12, GPIO.HIGH) sleep(0.5) GPIO.output(12, GPIO.LOW)

Page 32: Python + Raspberry Pi GPIO

gpiozero

• Основная цель - уменьшение избыточности

• Встроенные “батарейки” для многих вещей

• Удаленная разработка с помощью pigpiod

• Хорошая документация и много примеров

• Выбор редакции :)

https://github.com/RPi-Distro/python-gpiozero/

Page 33: Python + Raspberry Pi GPIO

gpiozerofrom gpiozero import LED from time import sleep

led = LED(25)

while True: led.on() sleep(1)

led.off() sleep(1)

Page 34: Python + Raspberry Pi GPIO

Специализированные библиотеки

• SMbus - работа с I2C

• pyserial - работа с SPI

• RPLCD - работа с ЖК-дисплеями (HD44780)

Page 35: Python + Raspberry Pi GPIO

gpiozero на примерахМигаем лампочками, давим на кнопочки

Source: https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/

Page 36: Python + Raspberry Pi GPIO

Светодиод: вид сверху

Page 37: Python + Raspberry Pi GPIO

Светодиод: схема

Page 38: Python + Raspberry Pi GPIO

Светодиод: схемаfrom gpiozero import LED from time import sleep

led = LED(25)

while True: led.on() sleep(1)

led.off() sleep(1)

Page 39: Python + Raspberry Pi GPIO

Светофор: вид сверху

Page 40: Python + Raspberry Pi GPIO

Светофор: схема

Page 41: Python + Raspberry Pi GPIO

Светофор: кодfrom gpiozero import LEDfrom itertools import cyclelights = cycle([ LED(pin) for pin in [12, 16, 20] ]) current = next(lights)while True: current.on() sleep(1) current.off()

current = next(lights)

Page 42: Python + Raspberry Pi GPIO

Кнопка: вид сверху

Page 43: Python + Raspberry Pi GPIO

Кнопка: схема

Page 44: Python + Raspberry Pi GPIO

Кнопка: кодfrom gpiozero import LED, Buttonfrom itertools import cyclelights = cycle([ LED(pin) for pin in [12, 16, 20] ])

button = Button(25)

current = next(lights)while True: current.on() button.wait_for_press() current.off() current = next(lights)

Page 45: Python + Raspberry Pi GPIO

Кнопка: ещё кодfrom gpiozero import LED, Buttonfrom itertools import cycle from signal import pauselights = cycle([ LED(pin) for pin in [12, 16, 20] ])

button = Button(25) current_led = next(lights)

def switch(): current_led.off() current_led = next(lights) current_led.on()

button.when_pressed = switch pause()

Page 46: Python + Raspberry Pi GPIO

Идеи для реализации• Табло статуса сборки для CI сервера

• Уничтожитель флэшек по нажатию на кнопку

• Автоматический отпугиватель кота

• Отображение температуры процессора Pi

• …

Page 47: Python + Raspberry Pi GPIO

АльтернативыArduino, OrangePi и прочие

Source: https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/ https://micropython.org/

Page 48: Python + Raspberry Pi GPIO

OrangePi• Совместимый с Raspberry Pi

• 1GB RAM

• 8GB прошитой на плате памяти

• ИК-приемник

• SATA

Page 49: Python + Raspberry Pi GPIO

BananaPi

• Совместимый с Raspberry Pi

• 2GB RAM

• 8GB прошитой на плате памяти

• Может запускать Android 4.4 (sic!)

Page 50: Python + Raspberry Pi GPIO

pyboard• Полный open source

• На основе микроконтроллера STM32F405RG

• Сделан для MicroPython

• 168 MHz Cortex M4 CPU

• 3 АЦП, 2 ЦАП, 4 светодиода, акселерометр

• 1024KB ROM, 192 KB RAM

Page 51: Python + Raspberry Pi GPIO

Домашнее чтениеКниги - это хорошо

Source: https://ourdelhistruggle.com/2008/12/02/delhis-sunday-book-market/

Page 52: Python + Raspberry Pi GPIO

Make: Action

Simon Monk

Page 53: Python + Raspberry Pi GPIO

Simple electronics

with GPIO Zero

Phil King

Page 54: Python + Raspberry Pi GPIO

Make: Electronics

Second Edition

Charles Platt

Page 55: Python + Raspberry Pi GPIO

Дополнительные ссылки “Я покажу тебе, как глубоко уходит кроличья нора”

Page 56: Python + Raspberry Pi GPIO

• https://www.raspberrypi.org/Официальный сайт “Raspberry Pi Foundation”

• https://raspberrypi.ruРусскоязычное сообщество пользователей

• https://www.raspberrypi.org/magpi/ Официальный журнал про Raspberry Pi

• https://circuits.io/Дружелюбный симулятор электронных схем.

Page 57: Python + Raspberry Pi GPIO

• https://clck.ru/AYVhd Отличный доклад на PyCon Russia от создателяgpiozero.

• https://adafruit.com Магазин с большим количеством шилдов и аксессуаров для Raspberry Pi.

Page 58: Python + Raspberry Pi GPIO

Вопросы?

Page 59: Python + Raspberry Pi GPIO

- Спасибо!

lensvol

[email protected]