«python of things», Кирилл Борисов, Яндекс
TRANSCRIPT
Python of ThingsБорисов Кирилл
PyCon Russia 2017
О докладчике
• Имя ему - Кирилл Борисов
• 10 лет программирует за деньги
• 5 лет души не чает в Python
• Работает в Яндексе и не знает забот
Disclaimer
• Докладчик - не настоящий сварщик электронщик
• Докладчик не несет ответственности за убитое время
• Доклад никак не связан с работой
О чем этот доклад?
• На дворе - 2017 год
• Интернет вещает из каждой урны и зубной щетки
• Победить это нельзя, самое время присоединиться
• Python + прямые руки = интересные результаты
Internet of ThingsВеликая куча вещей
Internet of Things
• Различные устройства связаны между собой
• Все они собирают данные…
• …либо воздействуют на окружающий мир
• Работают автономно
Грубая схема
Зарождение идеиУстройство с высоты птичьего полета
Weatherful
• Индикатор пригодности погоды для прогулок
• Данные забирает из Яндекс.Погоды
• Отображать разные цвета для каждого часа
• Должен работать на Питоне! (sic!)
• Работает от батарейки
GPIOВвод-вывод на каждый день
Source: https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/
Что это?
• Физический интерфейс для связи с миром вокруг
• Может работать на вход, так и на выход
• Цифровой интерфейс
• Залог успеха Raspberry Pi и Arduino
Примерная схема
Wi-Fi
• Высокая скорость передачи данных
• Типичная модель работы - точка доступа + клиенты
• Большие расходы на обеспечение связи
• Самый массовый способ связи с Интернетом
Bluetooth
• Беспроводная связь двух устройств
• Высокая скорость передачи данных
• Применяется для связи с приложением на смартфоне
• Потребляет много энергии в пассивном режиме
Bluetooth Low Energy
• Развитие идеи Bluetooth
• Цель - минимизация энергопотребления
• Требует поддержки со стороны ОС смартфона
• Ещё не достигла такой же популярности
Message Queue Telemetry TransportПростое решение для простой проблемы
Source: https://i-o-t.ru
MQTT
• Работает по принципу “Publish-Subscribe”
• Реализован поверх TCP/IP
• Для ограниченных в ресурсах устройств
• Практически незащищен
Принцип работы
Наша схема
Большой конструктор
Что нам нужно?
• Маленький размер
• Имеет GPIO-выходы
• Может соединяться с Wi-Fi
• Способен запускать Python
Raspberry PiПродукт, запустивший тысячи проектов
Source: https://www.sparkfun.com/products/retired/11546
Raspberry Pi
• Размером с кредитную карту
• Полноценный компьютер с Linux
• Множество GPIO входов-выходов
• Широко распространен
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 мм
gpiozero
• Основная цель - уменьшение избыточности
• Встроенные “батарейки” для многих вещей
• Хорошая документация и много примеров
https://github.com/RPi-Distro/python-gpiozero/
Примерfrom gpiozero import LED from time import sleep
led = LED(25)
while True: led.on() sleep(1)
led.off() sleep(1)
MicroPythonНовый Python для новых условий
Source: https://www.sparkfun.com/products/retired/11546
Микроконтроллеры
• Вычислительные устройства малой мощности
• Специализированное железо
• Имеют на борту ЦАП\АЦП, таймеры, и т.д.
• Малые объемы оперативной памяти
MicroPython
• Написан с нуля по подобию Python 3.4
• Предназначен для работы на микроконтроллерах
• Работает на “живом железе”
• Имеет много специфики
Примерfrom machine import Pin from time import sleep
led = Pin(15, Pin.OUT)
while True: led.high() sleep(1)
led.low() sleep(1)
Тонкости MicroPython
• Несколько отличий от синтаксиса Python
• Функциональность отличается для разных устройств
• Сильно урезанный набор “батареек”
• Позволяет использовать REPL на устройстве
pyboardПлата, с которой всё началось
Source: https://www.sparkfun.com/products/retired/11546
pyboard
• Референсная плата
• Основная платформа разработки MicroPython
• Удобна для изучения MicroPython
• 2 порта CAN, ЦАП, АЦП, 2 I2C, 2 SPI, 3 (!) UART
• Отсутствует Wi-Fi и Bluetooth
WeMOS d1 miniДешево и сердито
Source: https://www.sparkfun.com/products/retired/11546
WeMOS d1 Mini
• Создан на основе ESP8266 со встроенным Wi-Fi
• Весьма дешевая (~300 рублей с AliExpress)
• Скудные ресурсы: 256 Kb RAM, 1 МБ флэша
• Мало портов: 1 АЦП, 1 I2C, 1 SPI, ~1 UART
Конечный результат
Конечный результат
Домашнее чтениеКниги - это хорошо
Source: https://ourdelhistruggle.com/2008/12/02/delhis-sunday-book-market/
Make: Electronics
Second Edition
Charles Platt
Simple electronics
with GPIO Zero
Phil King
Python for
Microcontrollers
Donald Norris
Дополнительные ссылки “Я покажу тебе, как глубоко уходит кроличья нора”
• https://www.raspberrypi.org/Официальный сайт “Raspberry Pi Foundation”
• https://raspberrypi.ruРусскоязычное сообщество пользователей
• https://circuits.io/Дружелюбный симулятор электронных схем.
• https://micropython.org/Сайт с говорящим названием, на котором вы можете узнать всё о MicroPython.
• http://amperka.ru/ Интернет-магазин, для тех кто занимается радиоэлектроникой в свободное время.
• http://fritzing.org/ Отличная утилита для рисования красивых схем и иллюстраций.
- Вопросы?
Вперед,на следующий доклад!