Виктор Петин Санкт-Петербург «БХВ-Петербург» 2015 УДК 004 ББК 32.973 П29 Петин В. А. П29 Микрокомпьютеры Raspberry Pi. Практическое руководство. — СПб.: БХВ-Петербург, 2015. — 240 с.: ил. — (Электроника) ISBN 978-5-9775-3519-9 Рассмотрены вопросы подбора и настройки периферийных устройств для мик- рокомпьютеров Raspberry Pi. Подробно описана установка операционной системы. Большая часть материала посвящена работе с дистрибутивом Raspbian. Описаны настройка и установка дополнительных пакетов, удаленный доступ к компьютеру с помощью SSH и VNC, использование Raspberry Pi в качестве веб-сервера, torrent- клиента, сервера видеонаблюдения, голосовое управление компьютером, взаимо- действие с библиотекой "компьютерного зрения" openCV, операционной системой роботов ROS, платой Arduino и многое другое. Рассмотрено применение Raspberry Pi в качестве медиаплеера XBMC. Разобрано использование выводов GPIO и платы расширения Gertboard и XMOS Starter Kit для Raspberry. На сайте издательства размещен архив с примерами и проектами из книги. Для разработчиков УДК 004 ББК 32.973 Группа подготовки издания: Главный редактор Екатерина Кондукова Зав. редакцией ЕкатеринаКапалыгина Редактор Григорий Добин Компьютерная верстка Ольги Сергиенко Корректор Зинаида Дмитриева Дизайн серии Инны Тачиной Оформление обложки Марины Дамбиевой Подписано в печать 29.08.14. Формат 70 1001/ . Печать офсетная. Усл. печ. л. 19,35. 16 Тираж 2000 экз. Заказ № "БХВ-Петербург", 191036, Санкт-Петербург, Гончарнаяул., 20. ПерваяАкадемическая типография"Наука" 199034, Санкт-Петербург, 9 линия, 12/28 ISBN 978-5-9775-3519-9 © Петин В. А., 2015 © Оформление, издательство "БХВ-Петербург", 2015 Оглавление Глава 1. Общие сведения ............................................................................................... 7(cid:2) (cid:2) 1.1. История создания ...................................................................................................................... 7 (cid:2) 1.2. Технические характеристики и возможности ........................................................................ 8 Глава 2. Установка ОС на Raspberry Pi ................................................................... 13(cid:2) (cid:2) 2.1. Дистрибутивы Raspberry Pi .................................................................................................... 13 (cid:2) 2.2. Установка ОС с помощью NOOBS ....................................................................................... 15 (cid:2) 2.3. Установка дистрибутива Raspbian с помощью загрузочной карты .................................... 18 Глава 3. Дополнительное оснащение мини-ПК Raspberry Pi .............................. 21(cid:2) (cid:2) 3.1. Корпус...................................................................................................................................... 21 (cid:2) 3.2. Источник питания ................................................................................................................... 22 (cid:2) 3.3. Клавиатура и мышь ................................................................................................................ 23 (cid:2) 3.4. Монитор .................................................................................................................................. 24 (cid:2) 3.5. Увеличение тактовой частоты (разгон) ................................................................................ 27 (cid:2) 3.6. Подключение USB-накопителя ............................................................................................. 29 (cid:2) 3.7. Подключение жесткого диска................................................................................................ 31 (cid:2) 3.8. Подключение Wi-Fi ................................................................................................................ 33 (cid:2) 3.9. Подключение 3G-модема ....................................................................................................... 36 (cid:2) 3.10. Подключение веб-камеры USB ........................................................................................... 39 (cid:2) 3.11. Подключение камеры Raspberry Camera Board .................................................................. 41 (cid:2) 3.12. Неисправности Raspberry Pi и борьба с ними .................................................................... 43 (cid:2) 3.12.1. Проблемы с питанием или в момент включения ..................................................... 44 (cid:2) Красный индикатор не горит, нет изображения на экране ..................................... 44 (cid:2) Красный индикатор мигает ....................................................................................... 44 (cid:2) Красный индикатор горит, зеленый не мигает, нет изображения на экране ........ 44 (cid:2) Зеленый индикатор мигает в определенном порядке ............................................. 44 (cid:2) На экране появляется только разноцветный квадрат .............................................. 44 (cid:2) Ошибка Kernel Panic при загрузке ........................................................................... 45 (cid:2) Raspberry Pi выключается или перезагружается сразу после загрузки ................. 45 (cid:2) Компьютер иногда загружается, но не каждый раз ................................................ 45 (cid:2) 3.12.2. Клавиатура, мышь и другие устройства ввода ........................................................ 45 Компьютер не реагирует на клавиатуру, или нажатая клавиша (cid:2) многократно повторяется .......................................................................................... 45 4 Оглавление (cid:2) Клавиатура и мышь не работают вместе с USB-адаптером Wi-Fi ......................... 46 (cid:2) Проблемы с беспроводной клавиатурой .................................................................. 46 (cid:2) Введенные символы не соответствуют клавиатуре ................................................ 46 (cid:2) Долго загружаются настройки клавиатуры ............................................................. 46 (cid:2) 3.12.3. Обновление прошивки Raspberry Pi ......................................................................... 46 (cid:2) 3.12.4. SD-карты ..................................................................................................................... 47 (cid:2) 3.12.5. Звук .............................................................................................................................. 48 (cid:2) Нет звука на мониторе, подключенном по HDMI ................................................... 48 (cid:2) Нет звука совсем или в отдельных приложениях .................................................... 48 (cid:2) 3.12.6. Изображение ............................................................................................................... 49 (cid:2) Команда startx не выполняется ................................................................................. 49 (cid:2) Неверные цвета на экране ................................................................................. 49 (cid:2) Видео не воспроизводится или воспроизводится очень медленно ............... 49 Большие черные поля вокруг небольшого изображения на мониторе (cid:2) высокой четкости (HD) ..................................................................................... 49 (cid:2) Изображение выходит за границы экрана ............................................................... 50 (cid:2) Помехи или искажение цветов на мониторах HDMI или DVI ............................... 50 (cid:2) 3.12.7. Проблемы с сетью ...................................................................................................... 50 (cid:2) Соединение теряется при подключении устройства USB ...................................... 50 (cid:2) Микросхемы сетевого адаптера и контроллера USB сильно греются .................. 50 Сеть перестает работать при переносе SD-карты с одного Raspberry Pi (cid:2) на другой ..................................................................................................................... 50 (cid:2) Происходят сбои при высокой нагрузке на сеть ..................................................... 51 (cid:2) Пропадает сетевое соединение при запуске графической среды .......................... 51 (cid:2) 3.12.8. Проблемы с GPIO ....................................................................................................... 51 Глава 4. Дистрибутив Raspbian — настройка и установка дополнительных пакетов ............................................................................................................................ 52(cid:2) (cid:2) 4.1. Поддержка русского языка .................................................................................................... 52 (cid:2) 4.2. Файловый менеджер ............................................................................................................... 52 (cid:2) 4.3. Создание скриншотов............................................................................................................. 52 (cid:2) 4.4. Доступ к Raspberry Pi по SSH в консольном и графическом режиме ................................ 53 (cid:2) 4.5. Удаленный рабочий стол VNC .............................................................................................. 57 (cid:2) 4.6. Установка пакета Samba......................................................................................................... 60 (cid:2) 4.7. Подключение Яндекс.Диска .................................................................................................. 62 (cid:2) 4.8. FTP-сервер ............................................................................................................................... 65 (cid:2) 4.9. Веб-сервер ............................................................................................................................... 66 (cid:2) 4.10. Торрент-клиент ..................................................................................................................... 69 (cid:2) 4.11. Видеотрансляция с помощью веб-камеры .......................................................................... 71 (cid:2) 4.11.1. Сервер видеонаблюдения ........................................................................................ 74 (cid:2) 4.11.2. Передача потокового видео с камеры Raspberry Pi Camera Board ....................... 78 (cid:2) 4.12. Синтез речи на Raspberry Pi ................................................................................................. 79 (cid:2) 4.12.1. Голосовой синтезатор Espeak .................................................................................. 79 (cid:2) 4.12.2. Голосовое оповещение о приходящих письмах на почту gmail.com ................... 80 (cid:2) 4.13. Raspberry Pi и голосовое управление .................................................................................. 83 (cid:2) 4.13.1. Движок распознавания речи Julius ......................................................................... 84 (cid:2) 4.13.2. Голосовое управление с использованием Google Speech API .............................. 89 (cid:2) 4.14. Raspberry Pi и ROS ................................................................................................................ 91 (cid:2) 4.14.1. Установка ROS-дистрибутива Hydro на Raspberry Pi ........................................... 92 (cid:2) 4.14.2. Создание тестового проекта .................................................................................... 95 Оглавление 5 (cid:2) 4.15. Raspberry Pi и OpenCV ......................................................................................................... 98 (cid:2) 4.15.1. Получение в OpenCV изображения с камеры ...................................................... 100 (cid:2) 4.16. Подключение платы Arduino ............................................................................................. 104 4.16.1. Отправка данных на сайт Народного мониторинга связкой (cid:2) Raspberry Pi + Arduino........................................................................................................ 105 (cid:2) 4.17. Размещение изображения с камеры Raspberry Pi на сайте Народного мониторинга ....... 111 Глава 5. Медиапроигрыватель Xbox Media Center (XBMC) .............................. 114(cid:2) (cid:2) 5.1. Установка дистрибутива Raspbmc ....................................................................................... 114 (cid:2) 5.2. Установка начальных параметров ....................................................................................... 116 (cid:2) 5.3. Новостная лента .................................................................................................................... 118 (cid:2) 5.4. Погода .................................................................................................................................... 121 (cid:2) 5.5. Подключение репозитория русскоязычных дополнений .................................................. 124 (cid:2) 5.6. Фото ....................................................................................................................................... 125 (cid:2) 5.7. Музыка ................................................................................................................................... 129 (cid:2) 5.8. Видео ..................................................................................................................................... 132 (cid:2) 5.9. Программы ............................................................................................................................ 134 (cid:2) 5.10. Разгон системы ................................................................................................................... 135 (cid:2) 5.11. Управление Raspberry Pi на ОС Raspbmc с помощью планшета Android ...................... 136 (cid:2) 5.12. Управление Raspbmc с помощью пульта .......................................................................... 142 (cid:2) 5.13. Написание плагина для Raspbmc ....................................................................................... 142 (cid:2) 5.13.1. Немного теории, необходимой для написания простого плагина ..................... 142 (cid:2) 5.13.2. Структура простого плагина ................................................................................. 147 5.13.3. Проект создания плагина для получения погоды (cid:2) с сайта Народного мониторинга ....................................................................................... 147 Глава 6. Работа с интерфейсом GPIO ...................................................................... 154(cid:2) (cid:2) 6.1. Особенности работы с GPIO ................................................................................................ 155 (cid:2) 6.1.1. Управление GPIO из оболочки bash ......................................................................... 156 (cid:2) 6.1.2. Управление GPIO из языка Python ........................................................................... 157 (cid:2) 6.1.3. Управление GPIO из языка C .................................................................................... 159 (cid:2) 6.1.4. Подключение к Raspberry Pi жидкокристаллического дисплея ............................. 161 6.1.5. Схема подключения телевизионного пульта к Raspberry Pi на дистрибутиве (cid:2) Raspbmc ................................................................................................................................. 164 (cid:2) 6.2. Доступ к портам GPIO через веб-интерфейс ...................................................................... 168 (cid:2) 6.2.1. Установка пользовательского пароля WebIOPi ...................................................... 170 (cid:2) 6.2.2. Настройка WebIOPi ................................................................................................... 171 (cid:2) 6.2.3. Библиотека Javascript ................................................................................................. 172 (cid:2) Функции библиотеки webiopi.js ................................................................................ 172 (cid:2) Функция WebIOPi.ready .................................................................................. 173 (cid:2) Функция WebIOPi.setFunction ........................................................................ 173 (cid:2) Функция WebIOPi.digitalWrite ........................................................................ 173 (cid:2) Функция WebIOPi.digitalRead ........................................................................ 174 (cid:2) Функция WebIOPi.toggleValue ........................................................................ 174 (cid:2) Функция WebIOPi.callMacro .......................................................................... 174 (cid:2) Функция WebIOPi.outputSequence .................................................................. 174 (cid:2) Функция WebIOPi.pulse ................................................................................... 175 (cid:2) Функция WebIOPi.pulseRatio .......................................................................... 175 (cid:2) Функция WebIOPi.pulseAngle ......................................................................... 175 6 Оглавление (cid:2) Функция WebIOPi.createButton ...................................................................... 176 (cid:2) Функция WebIOPi.createFunctionButton ........................................................ 176 (cid:2) Функция WebIOPi.createGPIOButton ............................................................. 176 (cid:2) Функция WebIOPi.createMacroButton ............................................................ 177 (cid:2) Функция WebIOPi.createSequenceButton ....................................................... 177 (cid:2) Функция WebIOPi.createRatioSlider ............................................................... 177 (cid:2) Функция WebIOPi.createAngleSlider .............................................................. 178 (cid:2) Функция WebIOPi.setLabel .............................................................................. 178 (cid:2) 6.2.4. Проект управления веб-камерой на сервоприводах ................................................ 180 (cid:2) 6.2.5. WebIOPi — подключение устройств ........................................................................ 185 (cid:2) 6.3. Плата расширения Gertboard ............................................................................................... 186 (cid:2) 6.3.1. Включение платы Gertboard ...................................................................................... 188 (cid:2) 6.3.2. Контакты портов GPIO .............................................................................................. 189 (cid:2) 6.3.3. Тестовые программы для Gertboard ......................................................................... 190 (cid:2) Буферизированные порты ввода/вывода ................................................................. 192 (cid:2) Светодиоды ................................................................................................................ 192 (cid:2) Кнопки ........................................................................................................................ 193 (cid:2) Тестирование кнопок ...................................................................................... 194 (cid:2) Тестирование светодиодов ............................................................................. 196 (cid:2) Драйвер с открытым коллектором ........................................................................... 199 (cid:2) Контроллер двигателя ............................................................................................... 200 (cid:2) Аналого-цифровые и цифроаналоговые преобразователи ..................................... 205 (cid:2) Тестирование D/A и A/D ................................................................................. 206 (cid:2) 6.3.4. Программирование ATmega ...................................................................................... 211 (cid:2) 6.3.5. Проект для платы Gertboard: контроль входа .......................................................... 217 (cid:2) Программа для RFID-считывателя на ATmega ....................................................... 218 (cid:2) Создание базы данных с использованием Python и MySQL .................................. 221 (cid:2) Обработка данных из ATmega Gertboard ................................................................. 223 (cid:2) 6.4. XMOS StartKIT для Raspberry Pi ......................................................................................... 226 (cid:2) 6.4.1. Подсоединение StartKIT к Raspberry Pi по протоколу SPI ..................................... 230 (cid:2) Протокол SPI .............................................................................................................. 230 (cid:2) Установка поддержки SPI в Raspberry Pi ................................................................. 232 (cid:2) Модуль spidev для Python .......................................................................................... 233 (cid:2) 6.4.2. Создание программы для XMOS StartKIT ............................................................... 235 Заключение ................................................................................................................... 238(cid:2) Приложение. Описание электронного архива ....................................................... 239(cid:2) 1 ГЛАВА Общие сведения Raspberry Pi — это маленький, размером с кредитную карту, компьютер стои- мостью порядка 25 долларов за базовую модель и 35 — за более продвинутую. Raspberry Pi основан на процессоре с архитектурой ARM11 и частотой в 700 МГц. В последних версиях прошивки официально разрешили разгонять процессор до 1000 МГц, что обеспечивает достижение приемлемой производительности при низ- ком энергопотреблении. Raspberry Pi по сути представляет собой полноценный системный блок, с помощью которого можно обучать работе с компьютером, вос- производить видео, программировать, пользоваться Интернетом, слушать музыку. Одна из главных и привлекательных особенностей Raspberry Pi — наличие на плате аппаратных портов ввода/вывода GPIO (General Purpose Input/Output, вхо- ды/выходы общего назначения), что открывает перспективы использования его в робототехнических проектах. 1.1. История создания История появления и развития Raspberry Pi берет начало с 2006 года. Основатели проекта — сотрудники и преподаватели Компьютерной лаборатории Кембридж- ского университета. Одной из задач инициативы явилось возрождение интереса подрастающего поколения к программированию на достаточно продвинутом уров- не. Предполагалось, что основными потребителями компактного компьютера будут школы и другие учебные заведения, в которых дети изучают программирование. Пара лет ушла на создание различных вариантов устройства, пока к 2008 году не укрепилось понимание, что процессоры для мобильных устройств стали доступны- ми и достаточно мощными для работы с медиаконтентом и именно их, а не микро- контроллеры, следует использовать для претворения идеи в жизнь. В 2009 году бы- ла создана благотворительная организация Raspberry Pi Foundation, в задачи кото- рой входили разработка и продвижение компьютера Raspberry Pi. Еще два года потребовалось на создание аппаратной и программной части будущего устройства, заключение договоров и соблюдение прочих формальностей. И вот, в мае 2011 года британский программист и предприниматель Дэвид Брэбен (David John Braben) представил концепт компьютера Raspberry Pi, после чего были созданы альфа- и 8 Глава 1 бета-версии его плат. Но только в начале 2012 года первая партия Raspberry Pi отправилась на сборочный конвейер, а до заказчиков она добралась ближе к лету, потому что китайский подрядчик умудрился ошибиться при сборке, что вызвало дополнительные затраты времени на исправление ошибки. Пробная партия Raspberry Pi объемом 10 тыс. экземпляров разошлась за несколько минут, причем поначалу действовало правило "одна штука в одни руки". Год спус- тя, во время старта продаж в США, история повторилась. А за полтора года, ис- текших после запуска, продано более полутора миллионов устройств, и это, похо- же, не предел. Лицензией на производство плат обладают компании Premier Farnell, RS Components и Egoman. Причем последняя выпускает платы красного цвета, ко- торые могут предлагаться только на китайских территориях. К первой годовщине проекта компанией RS Components была выпущена юбилейная партия плат синего цвета объемом 1000 штук. Указанные компании имеют право и продавать Raspberry Pi, а в США его распространением занимается компания Allied Electronics. Соот- ветственно, все остальные магазины попросту закупают большие партии устройств у этой четверки и перепродают конечным потребителям. Обе модели плат от раз- ных производителей (сборкой занимаются заводы Sony, Qisda и Egoman) имеют некоторые несущественные различия, но, по большому счету, они идентичны. 1.2. Технические характеристики и возможности Raspberry Pi, как уже отмечалось ранее, представляет собой одноплатный компью- тер размером с кредитную карту. На самом деле сама плата чуть крупнее: × × 85,6 56 21 мм — и не имеет скругленных краев, к тому же некоторые порты по- просту торчат снаружи, не говоря уж про карту SD, которая более чем на половину выпирает за пределы платы. Весит устройство всего 54 грамма. Raspberry Pi выпус- кается в двух комплектациях: модель "A" и модель "B" (рис. 1.1). Сравнительные характеристики моделей "А" и "B" приведены в табл. 1.1. Обе версии Raspberry Pi оснащены процессором Broadcom BCM2835 архитектуры ARM11 с тактовой частотой 700 МГц и модулем оперативной памяти на 256 (или 512) Мбайт, размещенным по технологии package-on-package1 непосредственно на процессоре. Модель "A" обладает одним портом USB 2.0, тогда как модель "B" — двумя. У модели "B" наличествует и порт Ethernet. Помимо основного ядра, про- цессор BCM2835 включает в себя графическое ядро с поддержкой OpenGL ES 2.0, аппаратного ускорения и видео Full HD, а также ядро DSP (цифрового сигнального процессора). Питание компьютера осуществляется через разъем micro-USB, при этом сила тока должна составлять минимум 0,5–0,7 А. При меньших значениях компьютер все еще 1 Package on Package (PoP) — метод монтажа интегральных схем, когда один или более компонентов монтируются поверх друг друга (так называемый вертикальный монтаж). Эта технология значитель- но повышает плотность упаковки электронных компонентов на плате. Общие сведения 9 может включиться, но будет уходить в перезагрузку при запуске ресурсоемких задач. Следовательно, подключать плату лучше не через хаб, а напрямую к USB- порту компьютера или в розетку через специальный переходник. Рис. 1.1. Схема Raspberry Pi, модель "B" Таблица 1.1. Сравнительные характеристики моделей ″A″ и ″B″ Raspberry Pi Одноплатный мини-ПК Raspberry Pi Характеристики Model A Model B Цена, доллары США 25 35 System-on-a-Chip (SoC) Broadcom BCM2835 (CPU + GPU) CPU 700 МГц ARM11 (ядро ARM11 76JZF-S), возможен разгон до 1 ГГц GPU Broadcom VideoCore IV Стандарты OpenGL ES 1.1/2.0, OpenVG 1.1, Open EGL, OpenMAX Аппаратные кодеки H.264(1080p30,high-profile); MPEG-2 и VC-1 (лицензия продается отдельно) Память (SDRAM, общая) 256 Мбайт 512 Мбайт; 256 Мбайт (до 15.10.2012) Порты USB 2.0 1 2
Description: