Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

20 простых проектов на Raspberry Pi®. Игрушки, инструменты, гаджеты и многое другое

Покупка
Артикул: 747799.01.99
Эта книга подходит для всех новичков, которые хотят максимально использовать возможности Raspberry Pi, будь то дети, мечтающие открыть для себя мир электроники и программирования, родители и педагоги, желающие им помочь, или же любители и изобретатели, намеревающиеся с помощью Raspberry Pi воплотить свои идеи в жизнь. Мы совсем не предполагаем, что вы знакомы с Raspberry Pi и к тому же разбираетесь в схемотехнике или программировании. Этому вы научитесь, прочитав книгу. Но если у вас уже есть некоторые базовые навыки, то эта книга поможет развить их и дать вам идеи, что делать дальше.
Сантос, Р. 20 простых проектов на Raspberry Pi®. Игрушки, инструменты, гаджеты и многое другое : научно-популярное издание / Р. Сантос, С. Сантос ; пер. с англ. М. А. Федотенко. - Москва : Лаборатория знаний, 2020. - 323 с. - ISBN 978-5-00101-884-1. - Текст : электронный. - URL: https://znanium.com/catalog/product/1203930 (дата обращения: 20.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
EASY

PROJECTS

SAN FRANCISCO

Москва
Лаборатория знаний
2020

RASPBERRY PI

Перевод с английского
М. А. Федотенко

20 простых проектов 

ИГРУШКИ, ИНСТРУМЕНТЫ, ГАДЖЕТЫ 
 
и многое другое

Электронное издание

на

Руи Сантос и Сара Сантос

УДК 087.5:004
ББК 32.816
С18

Сантос Р.
С18
20 простых проектов на Raspberry Pi

R○. Игрушки,
инструменты, гаджеты и многое другое / Р. Сантос,
С. Сантос
;
пер.
с
англ.
М. А. Федотенко. — Электрон. изд. — М. : Лаборатория знаний, 2020. — 323 с. —
Систем. требования: Adobe Reader XI ; экран 10". —
Загл. с титул. экрана. — Текст : электронный.
ISBN 978-5-00101-884-1
Эта книга подходит для всех новичков, которые хотят
максимально использовать возможности Raspberry Pi, будь
то
дети,
мечтающие
открыть
для
себя
мир
электроники
и программирования, родители и педагоги, желающие им
помочь, или же любители и изобретатели, намеревающиеся
с помощью Raspberry Pi воплотить свои идеи в жизнь.
Мы совсем не предполагаем, что вы знакомы с Raspberry Pi
и к тому же разбираетесь в схемотехнике или программировании. Этому вы научитесь, прочитав книгу. Но если у вас
уже есть некоторые базовые навыки, то эта книга поможет
развить их и дать вам идеи, что делать дальше.
УДК 087.5:004
ББК 32.816

Деривативное издание на основе печатного аналога: 20 простых проектов на Raspberry Pi

R○. Игрушки, инструменты,
гаджеты и многое другое / Р. Сантос, С. Сантос ; пер. с англ.
М. А. Федотенко. — М. : Лаборатория знаний, 2020. — 320 с. :
ил. — ISBN 978-5-00101-231-3.

В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель
вправе требовать от нарушителя возмещения убытков или выплаты компенсации

ISBN 978-5-00101-884-1

c○
Copyright
2018 by Rui Santos and Sara Santos.
Англоязычное оригинальное
название: 20 Easy Raspberry Pi
Projects: Toys, Tools, Gadgets,
and More! ISBN 978-1-59327-843-4,
опубликовано No Starch Press.
Все права защищены.

c○ Лаборатория знаний, 2020

4

Оглавление

Благодарности  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Введение  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Для кого эта книга?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
О книге  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Что вам понадобится для реализации проектов данной книги? . . . . . . 14
Структура книги  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Руководство для начинающих  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Начало работы с платой Raspberry Pi   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Возможности использования Raspberry Pi   . . . . . . . . . . . . . . . . . . . . . . . . . 19
Различия между версиями плат Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . 20
Знакомство с Raspberry Pi и ее компонентами . . . . . . . . . . . . . . . . . . . . . . 21
Список необходимых компонентов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Загрузка операционной системы   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

• Загрузка NOOBS  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
• Форматирование карты microSD в Windows или macOS. . . . . . . . . 27
• Форматирование карты microSD в Linux   . . . . . . . . . . . . . . . . . . . . . . . 29
• Загрузка Raspbian на карту памяти microSD  . . . . . . . . . . . . . . . . . . . . 31

Настройка Raspberry Pi в качестве настольного компьютера  . . . . . . . . 31

• Подключение Raspberry Pi  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
• Первый запуск вашей Pi   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
• Обзор рабочего стола  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
• Выключение, перезагрузка и выход из системы  . . . . . . . . . . . . . . . . . 41

Знакомство с языком Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Интегрированная среда разработки Python 3 . . . . . . . . . . . . . . . . . . . . . . . 42
Основные команды Python  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Редактор Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Ваша первая программа на Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Разработка простого калькулятора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

СВЕТОДИОДЫ  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Проект 1. Мигание светодиодом. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Знакомство с портами GPIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

Оглавление

Знакомство со светодиодами. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Подбор подходящего резистора  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Программирование   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

• Написание скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
• Запуск скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Проект 2. Кнопочный светодиодный фонарик . . . . . . . . . . . . . . . . . . . . . 69
Знакомство с переключателями и кнопками   . . . . . . . . . . . . . . . . . . . . . . . 69
Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Программирование   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Проект 3. Регулятор яркости светодиода. . . . . . . . . . . . . . . . . . . . . . . . . . 75
Знакомство с потенциометрами   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Чтение аналоговых сигналов с помощью Raspberry Pi. . . . . . . . . . . . . . . 76

• Аналого-цифровые преобразователи. . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
• Широтно-импульсная модуляция  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Программирование. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

• Написание скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
• Запуск скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

Проект 4. Графический пользовательский интерфейс для 
управления многоцветным светодиодом. . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Знакомство с RGB-светодиодами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Программирование. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

• Управление интенсивностью цвета и закрытие окна   . . . . . . . . . . . . 90
• Проектирование пользовательского интерфейса с помощью 
Tkinter  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

• Запуск скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

Проект 5. Радужная светодиодная лента  . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Знакомство с адресуемой лентой RGB-светодиодов WS2812B  . . . . . . 95
Знакомство с преобразователем логического уровня. . . . . . . . . . . . . . . . 97
Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Программирование   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

• Установка библиотеки WS281X  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
• Подключение интерфейса SPI   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
• Написание скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
• Запуск скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

Оглавление

ДИСПЛЕИ  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Проект 6. Отображение напоминаний на ЖК-дисплее. . . . . . . . . . . . . 111
Знакомство с ЖК-дисплеями . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

• Пайка штыревого разъема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
• Назначение выводов ЖК-модуля. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Программирование   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

• Подключение библиотеки Python для символьных ЖКдисплеев   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

• Вывод символьного сообщения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
• Добавление дополнительных функций. . . . . . . . . . . . . . . . . . . . . . . . . . 118
• Прокрутка сообщения напоминания . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
• Запуск скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

Проект 7. Мини-устройство прогноза погоды. . . . . . . . . . . . . . . . . . . . . . 125
Знакомство с OLED-дисплеями  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Использование API-сервиса OpenWeatherMap  . . . . . . . . . . . . . . . . . . . . . 126

• Структура синтаксиса JSON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
• Создание API-запроса. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Программирование   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

• Установка библиотеки для OLED-дисплея. . . . . . . . . . . . . . . . . . . . . . 133
• Активация протокола I2C  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
• Написание скрипта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
• Запуск скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

Проект 8. Игра в Pong с Sense HAT  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Знакомство с Pong  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Знакомство с платой расширения Sense HAT для Raspberry Pi  . . . . . . 142

• Монтаж платы   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
• Применение эмулятора платы Sense HAT . . . . . . . . . . . . . . . . . . . . . . . 143

Работа с функциями и управлением Sense HAT. . . . . . . . . . . . . . . . . . . . . 144

• Управление светодиодной матрицей . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
• Чтение данных с джойстика  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

Программирование   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

• Написание скрипта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
• Запуск скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

ДАТЧИКИ  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Проект 9. Сенсорная погодная станция «все-в-одном»  . . . . . . . . . . . . 159
Sense HAT как метеостанция. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

• Датчик температуры  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
• Датчик влажности  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
• Датчик атмосферного давления. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

Чтение показаний температуры, влажности и давления . . . . . . . . . . . . . 161
Создание пользовательского интерфейса для считанных данных . . . . 163
Программирование   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

• Создание пользовательского интерфейса . . . . . . . . . . . . . . . . . . . . . . . 166
• Автоматическое обновление данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
• Запуск скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

Проект 10. Охранная сигнализация с уведомлением по e-mail  . . . . . 171
Знакомство с PIR-датчиком движения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Отправка e-mail из Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

• Поиск настроек вашего SMTP-сервера. . . . . . . . . . . . . . . . . . . . . . . . . . 172
• Скрипт для отправки e-mail-сообщения. . . . . . . . . . . . . . . . . . . . . . . . . 173
• Запуск скрипта, отправляющего e-mail-сообщение  . . . . . . . . . . . . . . 175

Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Программирование   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

Проект 11. Газовая и дымовая сигнализация. . . . . . . . . . . . . . . . . . . . . . . 183
Знакомство с датчиком газа и дыма MQ-2 . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Знакомство с пьезоэлектрическим зуммером  . . . . . . . . . . . . . . . . . . . . . . . 185
Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Программирование   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

• Установка порогового значения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
• Запуск скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

Проект 12. Регистратор температуры и влажности  . . . . . . . . . . . . . . . . 193
Знакомство с датчиком DHT22  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Программирование   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

• Установка библиотеки DHT22. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
• Написание скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
• Создание, редактирование и закрытие файлов .txt. . . . . . . . . . . . . . . 198
• Запуск скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

КАМЕРЫ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

Проект 13. Детектор взлома с фоторегистрацией   . . . . . . . . . . . . . . . . . 203
Знакомство с модулем камеры V2 Raspberry Pi  . . . . . . . . . . . . . . . . . . . . . 203
Создание детектора взлома . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

• Активация камеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
• Подключение камеры  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Программирование   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

• Написание скрипта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
• Запуск скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

Оглавление

Проект 14. Система домашнего видеонаблюдения   . . . . . . . . . . . . . . . . 213
Запись видео в файл. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Программирование   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

• Написание скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
• Запуск скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

ВЕБ-ПРИЛОЖЕНИЯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

Проект 15. Ваш первый веб-сайт  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Создание файлов проекта. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Создание веб-страницы на языке HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

• Создание базовой структуры веб-страницы  . . . . . . . . . . . . . . . . . . . . . 224
• Добавление названия веб-страницы, заголовков и абзацев . . . . . . . 225
• Просмотр вашей веб-страницы в браузере  . . . . . . . . . . . . . . . . . . . . . . 227
• Добавление ссылок, изображений и кнопок  . . . . . . . . . . . . . . . . . . . . . 227

Изменение стилей веб-страницы с помощью CSS   . . . . . . . . . . . . . . . . . . 231

• Подключение таблицы стилей   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
• Применение стилей к HTML-файлу  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
• Применение стилей к верхнему колонтитулу. . . . . . . . . . . . . . . . . . . . 232
• Применение стилей к классу title   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
• Применение стилей к заголовкам, абзацам и ссылкам  . . . . . . . . . . . 236
• Применение стилей к кнопкам  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

Проект 16. Подключение электроники к Интернету  . . . . . . . . . . . . . . . 241
Знакомство с веб-серверами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Знакомство с релейным модулем. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

• Контакты релейного модуля   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
• Использование реле   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244

Обзор проекта. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Подготовка Pi к работе в качестве веб-сервера . . . . . . . . . . . . . . . . . . . . . . 248

• Установка Flask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
• Организация файлов проекта. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

Программирование   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

• Создание веб-сервера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
• Создание HTML-файла  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
• Создание файла CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
• Запуск веб-сервера. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

Проект 17. Создание центра управления Интернетом вещей 
с помощью Node-RED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Знакомство с Node-RED. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

• Установка узлов DHT22   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
• Начало работы с Node-RED  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

Оглавление

Оглавление

Создание потока Node-RED  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

• Создание панели инструментов пользовательского интерфейса   . 264
• Подключение узлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

Запуск приложения  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

ИГРЫ И ИГРУШКИ  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273

Проект 18. Цифровая барабанная установка  . . . . . . . . . . . . . . . . . . . . . . 275
Подготовка аудиофайлов  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

• Настройка аудио. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
• Получение нужных семплов аудиофайлов  . . . . . . . . . . . . . . . . . . . . . . 276

Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Программирование   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

Проект 19. Игра Hungry Monkey на языке Scratch. . . . . . . . . . . . . . . . . 283
Знакомство со Scratch 3.0   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Создание скрипта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

• Создание спрайтов и выбор фона сцены  . . . . . . . . . . . . . . . . . . . . . . . . 287
• Редактирование спрайтов  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
• Добавление элементов управления в спрайт обезьянки . . . . . . . . . . 289
• Тестирование скрипта. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
• Создание таймера обратного отсчета. . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
• Подсчет и отображение результатов  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
• Падение бананов с неба . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
• Добавление гнилых бананов   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

Запуск игры   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

Проект 20. Робот с дистанционным Wi-Fi-управлением  . . . . . . . . . . . 301
Краткое описание проекта  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Подготовка Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Сборка схемы  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

• Подключение двигателей к модулю MotoZero   . . . . . . . . . . . . . . . . . . 305
• Управление двигателями с помощью MotoZero  . . . . . . . . . . . . . . . . . 307

Разработка приложения  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

• Определение IP-адреса Raspberry Pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
• Создание потока Node-RED  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
• Написание скрипта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

Запуск приложения  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
Запуск робота   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Идеи для продолжения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

Приложения  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Приложение А. Руководство по портам GPIO Raspberry Pi  . . . . . . . . . 317
Приложение Б. Таблица цветовой маркировки резисторов . . . . . . . . . . 319

Посвящается удивительным людям (помимо нас самих),
благодаря которым выход этой книги стал возможным

Благодарности

Мы хотим поблагодарить команду No Starch Press, которая проделала 
такую огромную работу по созданию этой книги. Особая благодарность Лиз Чэдвик за приглашение написать эту книгу и за ее бесконечное терпение, проявленное при редактировании книги, написанной 
на неродном нам английском языке. Мы также хотим поблагодарить 
Лорел Чун за ее внимание к деталям и за красивый макет этой книги. Спасибо Лесу Паундеру за его технический вклад и предложения.
Огромная благодарность Фонду Raspberry Pi за разработку этого 
крошечного, но мощного компьютера, сделавшего электронику и программирование гораздо доступнее для широкой публики.
Мы также должны поблагодарить наших друзей и семью за их поддержку на протяжении всего этого приключения. И наконец, мы хотели бы поблагодарить сообщество Random Nerd Tutorials, которое, 
хотя и косвенно, но тоже способствовало выходу этой книги.

Написание этой книги было бы невозможным без помощи и поддержки Сары Сантос и ее неустанного старания делать все вовремя. 
Я безмерно благодарен ей.
Руи Сантос

Я хотела бы поблагодарить моего соавтора Руи Сантоса за приглашение принять участие в этом приключении. Спасибо, что показал 
мне, что мы можем вместе работать над чем-то, что мы любим. Нам 
нужно лишь следовать нашим мечтам.
Сара Сантос

Введение

Вы когда-нибудь предполагали, что сможете купить компьютер за 35 
долларов? Нет, мы не имеем в виду старый б / у компьютер. Мы говорим о Raspberry Pi — одноплатном компьютере размером с кредитную карту. Но не обманывайтесь его хрупким внешним видом — 
Raspberry Pi гораздо мощнее, чем кажется.
Плата Raspberry Pi была разработана в Великобритании Эбеном 
Аптоном, основателем Фонда Raspberry Pi. Аптон и его коллеги заметили общее снижение навыков студентов, поступающих в Кембриджский университет на информатику, и связали это с тем, что 
новые поколения студентов выросли с компьютерами, которыми просто пользоваться. Студентам крайне редко приходилось разбираться 
в том, как именно устроены и работают компьютеры, программировать непосредственно аппаратную часть компьютера или возиться 
с его «внутренностями». Аптон разработал Raspberry Pi для популяризации преподавания основ информатики в школах. Вот почему 
Raspberry Pi — это не компьютер в привычном нам виде, а «голая» 
плата, без корпуса. Так каждый может видеть все ее компоненты.
Более 10 млн плат Raspberry Pi было продано с момента ее появления в 2012 году. Raspberry Pi стала популярной не только среди 
студентов, но и у любителей электроники, изобретателей, ученых-информатиков, а также «детей» всех возрастов.
Плата Raspberry Pi способна работать как обычный компьютер. 
С ее помощью вы сможете искать что-то в Интернете, отправлять 
электронные письма, создавать документы, смотреть видео и так далее, но это не основное ее назначение. Главное, Raspberry Pi — это то, 
с чем вы можете экспериментировать, взламывать и играть, создавать 
свои собственные программы и изобретения. Появление Raspberry 
Pi и других подобных плат вызвало волну креативных изобретений 
по всему миру, потому что теперь попасть в мир электроники и программирования стало не только возможно, но и легко. Попробуйте 
и вы что-нибудь изобрести!

О книге

13

Для кого эта книга?

Эта книга подходит для всех новичков, которые хотят максимально 
использовать возможности Raspberry Pi, будь то дети, которые хотят 
открыть для себя мир электроники и программирования, родители 
и педагоги, желающие им помочь, или же любители и изобретатели, 
которые хотят использовать Raspberry Pi для воплощения своих идей 
в жизнь.
Мы не предполагаем, что вы знакомы с Raspberry Pi, разбираетесь 
в схемотехнике или программировании. Но если у вас уже есть некоторые базовые навыки, то эта книга поможет развить их и даже 
предложит вам идеи для дальнейшего творчества.

О книге

«20 простых проектов на Raspberry Pi» — это коллекция из 20 проектов, создаваемых с использованием Raspberry Pi. Мы считаем, что 
лучший способ открывать для себя новые направления — это практика, а книга с проектами — отличный способ начать работу.
Книга начинается с быстрого введения в Raspberry Pi и язык 
программирования Python, а затем переходит к проектам. Она придерживается концепции обучения на практике, а это значит, что вам 
не придется тратить долгие часы на изучение теории, прежде чем 
создать что-то свое и действительно классное.
Вы будете учиться, создавая забавные интерактивные проекты, 
такие как домашняя система наблюдения и управляемый по Wi-Fi 
робот. Вы также разработаете удобные пользовательские интерфейсы 
для управления электроникой, создадите проекты для Интернета вещей, разработаете веб-сайт, придумаете и реализуете свои собственные игры и многое другое.
Не переживайте, если у вас нет опыта программирования или сборки схем. В каждом проекте даются пошаговые инструкции по сборке 
схем и код для программирования Raspberry Pi. Вы можете перепечатывать код из книги или перейти на сайт http://pilotlz.ru/books/
files/10857/ и скачать его оттуда.
Ваше обучение Raspberry Pi не должно ограничиваться предложенными в книге проектами. С этой целью в каждом из них есть раздел 
«Идеи для продолжения», где мы предлагаем решения по дальнейшему развитию ваших проектов и обобщению понятий, изученных 

Введение

14

в книге, для создания более сложных и интересных вещей. Мы надеемся, что к концу книги у вас появятся необходимые навыки для 
воплощения в жизнь идей ваших собственных проектов.

Что вам понадобится для реализации 
проектов данной книги?

Проекты в этой книге были разработаны с использованием платы 
Raspberry Pi 3. Если у вас уже есть более старая модель Raspberry 
Pi, вы можете использовать и ее, но все же проще будет создавать 
предлагаемые проекты именно с третьей версией. Более старые версии имеют низкую производительность, а совсем старые — меньше 
портов GPIO.
Мы не знаем, когда будет выпущена Raspberry Pi 4 и выйдет ли 
она вообще, но до сих пор все версии Raspberry Pi были совместимы 
с более старыми, поэтому есть надежда, что будущие версии также 
будут подходить для проектов этой книги.
В большинстве наших проектов Raspberry Pi применяется для взаимодействия с окружающим миром при помощи электронных схем. 
Это значит, что помимо Raspberry Pi вам понадобятся и другие электронные компоненты. В начале каждого проекта дается список необходимых компонентов, указываются их примерная стоимость и расчетное время сборки. Проекты, отмеченные одним символом доллара 
$, скорее всего, будут стоить не больше $10, а проекты с двумя 
символами $ могут стоить от $10 до $50. Широкий диапазон цен 
на детали объясняется зависимостью от места покупки. Если вы захотите купить все сразу, обратитесь к разделу «Список необходимых 
компонентов». Там вы найдете полный список всех компонентов, используемых в этой книге.

Структура книги

Книга разделена на семь частей. Первая часть «Руководство для начинающих» знакомит читателя с Raspberry Pi; ее нужно обязательно 
прочитать, чтобы правильно настроить свою Pi. В последующих частях содержатся сами проекты. Расскажем кратко о каждой части.

Руководство для начинающих. В этой части мы расскажем о том, 
что вам нужно, чтобы начать работу с Raspberry Pi и настроить ее 
при первом подключении. Мы также познакомим вас с основами 
языка программирования Python, используемого в этой книге.

Структура книги

15

Светодиоды. Вы начнете с создания проектов со светодиодами. 
Если вы новичок в мире электроники, эта часть научит вас основам 
сборки схем.

Дисплеи. Здесь вы узнаете, как с помощью различных дисплеев 
сделать ваши проекты более интерактивными. Кроме вывода простого текста на экран, как вам могло показаться, вы также узнаете, как 
собирать данные из Интернета, и напишете программу игры в пингпонг.

Датчики. В этих проектах применяются датчики нескольких типов. 
Датчики — замечательные устройства! Они позволяют вашим проектам реагировать на внешние события и взаимодействовать с окружающим миром. В настоящее время существуют датчики буквально для 
всего, что вы только можете придумать. Вы узнаете, как использовать 
датчик температуры, датчик движения PIR и многие другие.

Камеры. В проектах этой части используется собственный модуль 
камеры Raspberry Pi. Вы узнаете, как фотографировать этой камерой 
и как передавать видео, а затем примените полученные навыки для 
создания интересных проектов, например детектора взлома и домашней системы наблюдения.

Веб-приложения. В этой части вы разработаете свой собственный веб-сайт, а затем научитесь удаленно управлять портами GPIO 
Raspberry Pi, создав собственный веб-сервер. Вы также познакомитесь с Node-RED — мощным инструментом создания приложений 
для Интернета вещей.

Игры и игрушки. Проекты этой части помогут вам создать вещи, 
с которыми можно поиграть: цифровую ударную установку, свою 
собственную игру на языке Scratch и Wi-Fi-робота, управляемого 
со смартфона.

В приложении вы найдете справочную информацию, в том числе 
руководство по портам GPIO для всех доступных на сегодняшний 
день плат Raspberry Pi, а также таблицу цветовой маркировки резисторов для определения значений номиналов сопротивления разных 
резисторов.
Проекты в книге не зависят друг от друга, поэтому вы можете 
начинать с любого проекта.
Надеемся, что вам понравится создавать проекты вместе с этой 
книгой и вы получите удовольствие от процесса обучения.

Руководство для 
начинающих

В этой части вы сможете настроить все, что вам 
понадобится в следующих проектах. Мы познакомим вас с платой Raspberry Pi и ее наиболее важными и интересными компонентами. Затем мы 
расскажем вам, как настроить Raspberry Pi и какое для этого необходимо оборудование и программное обеспечение.

Процесс настройки достаточно простой. После него вы сможете применять Raspberry Pi для многих целей, в том числе как обычный 
компьютер! Мы произведем настройку Raspberry Pi для работы в качестве компьютера и покажем вам, как ориентироваться на рабочем 
столе и в файловой системе. Мы научим вас пользоваться терминалом для ввода команд для Raspberry Pi (его еще называют командной строкой). И наконец, мы познакомим вас с языком программирования Python, с помощью которого вы будете программировать 
проекты.
Освоив сведения, изложенные в этом руководстве, вы будете готовы приступить к проектам.

Начало работы с платой Raspberry Pi

Мы начнем с изучения возможностей платы Raspberry Pi, а затем перейдем к сбору всего необходимого для ее запуска и к загрузке опе