«python of things», Кирилл Борисов, Яндекс

50
Python of Things Борисов Кирилл PyCon Russia 2017

Upload: it-people

Post on 22-Jan-2018

102 views

Category:

Internet


4 download

TRANSCRIPT

Page 1: «Python of Things», Кирилл Борисов, Яндекс

Python of ThingsБорисов Кирилл

PyCon Russia 2017

Page 2: «Python of Things», Кирилл Борисов, Яндекс

О докладчике

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

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

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

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

Page 3: «Python of Things», Кирилл Борисов, Яндекс

Disclaimer

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

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

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

Page 4: «Python of Things», Кирилл Борисов, Яндекс

О чем этот доклад?

• На дворе - 2017 год

• Интернет вещает из каждой урны и зубной щетки

• Победить это нельзя, самое время присоединиться

• Python + прямые руки = интересные результаты

Page 5: «Python of Things», Кирилл Борисов, Яндекс

Internet of ThingsВеликая куча вещей

Page 6: «Python of Things», Кирилл Борисов, Яндекс

Internet of Things

• Различные устройства связаны между собой

• Все они собирают данные…

• …либо воздействуют на окружающий мир

• Работают автономно

Page 7: «Python of Things», Кирилл Борисов, Яндекс

Грубая схема

Page 8: «Python of Things», Кирилл Борисов, Яндекс

Зарождение идеиУстройство с высоты птичьего полета

Page 9: «Python of Things», Кирилл Борисов, Яндекс

Weatherful

• Индикатор пригодности погоды для прогулок

• Данные забирает из Яндекс.Погоды

• Отображать разные цвета для каждого часа

• Должен работать на Питоне! (sic!)

• Работает от батарейки

Page 10: «Python of Things», Кирилл Борисов, Яндекс

Большой конструктор

Source: https://amperka.ru

Page 11: «Python of Things», Кирилл Борисов, Яндекс

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

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

Page 12: «Python of Things», Кирилл Борисов, Яндекс

Что это?

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

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

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

• Залог успеха Raspberry Pi и Arduino

Page 13: «Python of Things», Кирилл Борисов, Яндекс

Примерная схема

Page 14: «Python of Things», Кирилл Борисов, Яндекс

Большой конструктор

Source: https://adafruit.com

Page 15: «Python of Things», Кирилл Борисов, Яндекс

Связь c внешним миром“Major Tom to Ground Control…”

Source: https://i-o-t.ru

Page 16: «Python of Things», Кирилл Борисов, Яндекс

Wi-Fi

• Высокая скорость передачи данных

• Типичная модель работы - точка доступа + клиенты

• Большие расходы на обеспечение связи

• Самый массовый способ связи с Интернетом

Page 17: «Python of Things», Кирилл Борисов, Яндекс

Bluetooth

• Беспроводная связь двух устройств

• Высокая скорость передачи данных

• Применяется для связи с приложением на смартфоне

• Потребляет много энергии в пассивном режиме

Page 18: «Python of Things», Кирилл Борисов, Яндекс

Bluetooth Low Energy

• Развитие идеи Bluetooth

• Цель - минимизация энергопотребления

• Требует поддержки со стороны ОС смартфона

• Ещё не достигла такой же популярности

Page 19: «Python of Things», Кирилл Борисов, Яндекс

Message Queue Telemetry TransportПростое решение для простой проблемы

Source: https://i-o-t.ru

Page 20: «Python of Things», Кирилл Борисов, Яндекс

MQTT

• Работает по принципу “Publish-Subscribe”

• Реализован поверх TCP/IP

• Для ограниченных в ресурсах устройств

• Практически незащищен

Page 21: «Python of Things», Кирилл Борисов, Яндекс

Принцип работы

Page 22: «Python of Things», Кирилл Борисов, Яндекс

Наша схема

Page 23: «Python of Things», Кирилл Борисов, Яндекс

Большой конструктор

Page 24: «Python of Things», Кирилл Борисов, Яндекс

Что нам нужно?

• Маленький размер

• Имеет GPIO-выходы

• Может соединяться с Wi-Fi

• Способен запускать Python

Page 25: «Python of Things», Кирилл Борисов, Яндекс

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

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

Page 26: «Python of Things», Кирилл Борисов, Яндекс

Raspberry Pi

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

• Полноценный компьютер с Linux

• Множество GPIO входов-выходов

• Широко распространен

Page 27: «Python of Things», Кирилл Борисов, Яндекс

Raspberry Pi 3 Raspberry Pi Zero W

CPU 1.2 GHz,4 ядра

1 GHz, 1 ядро

Память 1 GB 512 MB

Порты 4 USB 1 USB On-The-Go 1 USB для питания

СвязьWi-Fi (b/g/n)

Bluetooth 4.0 (BLE)Ethernet-порт

Wi-Fi (b/g/n)Bluetooth 4.0 (BLE)

Размер 85,6 × 53,98 × 17 мм 66 x 30,5 x 5 мм

Page 28: «Python of Things», Кирилл Борисов, Яндекс

gpiozero

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

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

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

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

Page 29: «Python of Things», Кирилл Борисов, Яндекс

Примерfrom gpiozero import LED from time import sleep

led = LED(25)

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

led.off() sleep(1)

Page 30: «Python of Things», Кирилл Борисов, Яндекс

MicroPythonНовый Python для новых условий

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

Page 31: «Python of Things», Кирилл Борисов, Яндекс

Микроконтроллеры

• Вычислительные устройства малой мощности

• Специализированное железо

• Имеют на борту ЦАП\АЦП, таймеры, и т.д.

• Малые объемы оперативной памяти

Page 32: «Python of Things», Кирилл Борисов, Яндекс

MicroPython

• Написан с нуля по подобию Python 3.4

• Предназначен для работы на микроконтроллерах

• Работает на “живом железе”

• Имеет много специфики

Page 33: «Python of Things», Кирилл Борисов, Яндекс

Примерfrom machine import Pin from time import sleep

led = Pin(15, Pin.OUT)

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

led.low() sleep(1)

Page 34: «Python of Things», Кирилл Борисов, Яндекс

Тонкости MicroPython

• Несколько отличий от синтаксиса Python

• Функциональность отличается для разных устройств

• Сильно урезанный набор “батареек”

• Позволяет использовать REPL на устройстве

Page 35: «Python of Things», Кирилл Борисов, Яндекс

pyboardПлата, с которой всё началось

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

Page 36: «Python of Things», Кирилл Борисов, Яндекс

pyboard

• Референсная плата

• Основная платформа разработки MicroPython

• Удобна для изучения MicroPython

• 2 порта CAN, ЦАП, АЦП, 2 I2C, 2 SPI, 3 (!) UART

• Отсутствует Wi-Fi и Bluetooth

Page 37: «Python of Things», Кирилл Борисов, Яндекс

WeMOS d1 miniДешево и сердито

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

Page 38: «Python of Things», Кирилл Борисов, Яндекс

WeMOS d1 Mini

• Создан на основе ESP8266 со встроенным Wi-Fi

• Весьма дешевая (~300 рублей с AliExpress)

• Скудные ресурсы: 256 Kb RAM, 1 МБ флэша

• Мало портов: 1 АЦП, 1 I2C, 1 SPI, ~1 UART

Page 39: «Python of Things», Кирилл Борисов, Яндекс

Конечный результат

Page 40: «Python of Things», Кирилл Борисов, Яндекс

Конечный результат

Page 41: «Python of Things», Кирилл Борисов, Яндекс

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

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

Page 42: «Python of Things», Кирилл Борисов, Яндекс

Make: Electronics

Second Edition

Charles Platt

Page 43: «Python of Things», Кирилл Борисов, Яндекс

Simple electronics

with GPIO Zero

Phil King

Page 44: «Python of Things», Кирилл Борисов, Яндекс

Python for

Microcontrollers

Donald Norris

Page 45: «Python of Things», Кирилл Борисов, Яндекс

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

Page 46: «Python of Things», Кирилл Борисов, Яндекс

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

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

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

Page 47: «Python of Things», Кирилл Борисов, Яндекс

• https://micropython.org/Сайт с говорящим названием, на котором вы можете узнать всё о MicroPython.

• http://amperka.ru/ Интернет-магазин, для тех кто занимается радиоэлектроникой в свободное время.

• http://fritzing.org/ Отличная утилита для рисования красивых схем и иллюстраций.

Page 48: «Python of Things», Кирилл Борисов, Яндекс

- Вопросы?

Page 49: «Python of Things», Кирилл Борисов, Яндекс

Вперед,на следующий доклад!

Page 50: «Python of Things», Кирилл Борисов, Яндекс

- Спасибо!

lensvol

[email protected]