Желание попробовать платформу Raspberry у меня возникло после нескольких лет работы с проектами на базе Ардуино. Программирование микроконтроллеров – это очень увлекательная вещь, с помощью платформы Ардуино мне удалось создать довольно много различных проектов, которые использовались и как наглядный материал для увлеченных юных (и не очень) любителей микроэлектроники и как довольно полезные в быту вещи (всевозможные таймеры, часы, реле времени, роботы, системы контроля полива растений и т.д.). Но у микроконтроллеров есть один минус – они однозадачны. С помощью одного микроконтроллера ты сможешь создать единовременно только один проект.
С Raspberry все намного интереснее, поскольку сама по себе эта платформа является мини-ПК, пусть и с довольно ограниченным функционалом. Эти маленькие платы, соизмеримые размером с габаритами Ардуино, совмещают в себе функционал обычных ПК и микроконтроллеров. То есть ты можешь ими пользоваться для решения обычных пользовательских задач (условно – обычная офисная работа с текстовыми документами и таблицами, а также серфингом в интернете), но при этом ты можешь подключать прямо к плате те же девайсы, что обычно работают с микроконтроллерами – всевозможные датчики, а также дисплеи, светодиоды, микросхемы и дискретные электронные элементы.
Для начала я решил приобрести один из самых бюджетных вариантов платформы – Raspberry Pi 3 A+ и на его базе изучить основные возможности платы, о чем и рассказываю теперь в этой заметке.
Итак, для начала, с сайта проекта Raspberrypi.com скачиваем программку Raspberry Pi Imager, устанавливаем ее на своем основном ПК и запускаем. Вначале указываем какая именно у нас плата Raspberry Pi, а далее выбираем операционную систему, которая будет установлена на наш мини-ПК (выбираем рекомендуемую) и дальше в процессе установки указываем регион (столица страны, временная зона, раскладка клавиатуры), дальше придумываем – имя пользователя (username) и пароль.
Потом необходимо обязательно(!) указать данные нашего вай-фай (SSID и пароль), иначе в процессе первого запуска нашей платы мини-ПК компьютер просто не загрузится. Далее выбираем ‘Включить SSH’ и ‘Использовать аутентификацию по паролю’, на следующем поле можно пока не включать ползунок: ‘Enable Raspberry Pi Connect’. Далее наша система в течение некоторого времени (у меня процедура длилась около 10 минут) загружается на предварительно вставленную флеш-карту формата micro SD (важно, чтобы флешка была не менее 16 Гб и была отформатирована в системе FAT 32).
Теперь мы вставляем флэш-карточку в нужный разъем на плате, подключаем через HDML-разъем монитор,к USB-разъему подключаем USB-хаб (поскольку на нашей плате только один юэсбишный разъем) и уже к этому хабу подключаем как минимум клавиатуру и мышь. Желательно, чтобы в хабе оставалось еще, как минимум, два разъема для подключения нужных девайсов - например, USB-камеры и дополнительной флешки.
Итак, все подключено, осталось к мини-USB порту подключить блок питания. Производитель советует приобретать свой фирменный блок питания. Думаю, что так и нужно сделать, но у меня на тот момент такого блока не было, поэтому я подключил питание через блок от своего телефона, он имеет выходное напряжение 5 Вольт и может обеспечить силу тока до 3 Ампер. Как показала дальнейшая эксплуатация, мой блок питания вполне подошел.
После подачи питания Raspberry устанавливает с флешки систему и загружается. Операционная система платы Raspbian является вариацией ОС Ubuntu, соответственно, если вы работали с линуксообразными системами, то общаться с этой платой вам будет легко и, возможно, даже приятно. Но если вы до этого работали только с Windows, то рекомендую для начала изучить хотя бы основы работы систем на Линуксе. Впрочем, это уже совсем другая история (С), о которой в этой заметке мы не будем распространяться.
Сразу отмечу, что Raspberry Pi 3 A+ имеет на борту лишь 512 Мегабайт ОЗУ. И это очень мало для работы с платой как с полноценным, пусть и мини, но все-же компьютером. Будьте готовы к тому, что браузер, а здесь сразу предустановлен браузер Хромиум, наиболее быстрый и наименее требовательный к ресурсам ПК, так вот даже он будет ооочень медленно работать, поэтому про веб-серфинг здесь нужно сразу забыть. В более старших моделях Raspberry уже установлено минимум 1 ГБ ОЗУ, вот на них уже вполне можно пользоваться браузером. Но с 512 Мб про любые большие и требовательные к размеру памяти программы (например, игры) тоже нужно здесь забыть. Да что там игры! LibreOffice (аналог офиса от Микрософта) также не ахти работает на 512 Мегабайтах и периодически ПК полностью зависает. Кстати, при зависании тут Ctrl-Alt-Del не работает. То есть он вообще не работает в этих линуксообразных системах. Если вам нужно остановить тормозящую программу, то нужно в консоле сначала вывести список всех активных процессов. Для этого набираем: ps ax, затем ищем в списке требуемый нам тормозящий процесс, точнее ищем его номер и найдя его, набираем в консоле: kill номер_процесса.
Теперь о приятном.
Первое. Относительно небольшие программы работают в Raspbian вполне себе нормально. Например, с текстом вполне справляется такой редактор, как Text editor (аналог Блокнота в Windows). Он уже предустановлен в ОС. Кстати, помучившись с зависающим текстовым редактором от LibreOffice, я потом вполне комфортно для себя работал с текстами именно в Text editor. Текст этой заметки, кстати, набирал именно в нем. Для общего развития, скажу, что в системе сразу установлен еще один текстовый редактор под названием Nano, в нем можно работать сразу из консоли, что не совсем обычно для пользователей Windows. Кстати, вполне работают тут очень несложные игрушки, типа Тетриса и Змейки и прочие арканоиды. Также вполне достойно работают встроенные программы просмотра изображений (ImageViewer) и мультимедия (VLC Media Player). Так что послушать музыку и посмотреть с флешки фильм вполне себе можно.
Второе. Для программирования здесь имеются (уже предустановленные) вполне удобные программы (IDE). По крайней мере, работая с небольшими по размеру кодами на языке Python 3 и Си++ мне вполне нормально работалось с Geany, Code::Blocks. Программы работают шустро, имеют подсветку синтаксиса, возможности свернуть-развернуть блоки кода и много разного другого. В общем, даже на моей слабенькой плате вполне можно заниматься программированием.
Третье. Да, веб-серфингом тут не позаниматься, но зато вполне можно настроить свои почтовые ящики и электронная почта будет работать без сбоев. Все это делает небольшая, но очень эффективная программка Claws Mail. Установить ее можно прямо из основного меню ОС. Заходим в 'Preferences', выбираем 'Recommended Software' и там уже находим и устанавливаем Claws Mail.
Четвертое - из этого микрокомпьютера можно сделать систему видеонаблюдения. Прямо на плате есть разъем для подключения по шлейфу модуля камеры. А можно подключить и обычную USB-вебкамеру. Я пока тестировал только второй вариант, поскольку специальный модуль камеры мне еще не пришел из Китая. Алгоритм подключения прост: подключаем камеру через USB-хаб, затем в консоли набираем команду lsusb, которая показывает все подключенные к плате устройства. Если среди этих устройств есть веб-камера, значит с ней все в порядке и можно устанавливать специализированный софт. В этой заметке я расскажу только о том, как можно протестировать работу камеры. Для тестирования веб-камеры, устанавливаем программку fswebcam командой в консоли:'sudo apt install fswebcam'. Затем сделаем тестовый снимок, для чего также в консоли набираем:'fswebcam test.jpg'. Файл сохраняется в: /home/пользователь/ . В команде можно указывать размеры файла и убрать баннер(дату и время внизу снимка): 'fswebcam -r 640x480 --no-banner test.jpg'. Для воспроизведение потокового видео набираем в консоли: 'ffplay /dev/video0'открывается окошко и мы видим видеопоток с камеры, чтобы его остановить, нужно просто закрыть окно (нажать в углу окна х).
Пятое - и это главное! Эта плата дает вам огромный простор для творчества в сфере микроэлектроники. Собственно, для этого я и решил начать пользоваться Raspberry Pi. Все, что раньше вы делали на базе микроконтроллеров, всё это можно делать и тут, плюс возможность легкого программирования тех же микроконтроллеров на Python. И вот тут я как раз поподробнее расскажу о двух конкретных проектах, которые я в первую очередь сделал на Raspberry Pi.
Начну, как и водится, с мигания светодиодом.Подключаем минусовый контакт светодиода к земле (через резистор 220 Ом) к 39 пину (Gnd) нашей платы, а плюсовой контакт к пину 35 (gpio19). Пишем в Geany программку:
import RPi.GPIO as IO
import time
IO.setmode (IO.BOARD)
while 1:
IO.setup(35,IO.OUT)
IO.output(35,1)
time.sleep(0.2)
IO.output(35,0)
time.sleep(0.2)
После нажимаем исполнение программы (F5) и любуемся мигающим светодиодом.
Следующий несложный проект: подключение датчика измерения температуры DS18B20. Выводы питания датчика соединяем с +5 (например, пин 2 платы), а землю - с Gnd (например, пин 9 платы), дата-вывод датчика подключаем к пину 7 (gpio4) платы. В консоле набираем следующую команду: 'sudo modprobe w1-gpio && sudo modprobe w1_therm'. Затем заходим: /boot/config.txt (другой вариант: /boot/firmware/config.txt) и добавляем в текстовый файл одну строчку: 'dtoverly=w1_gpio' . А после находим файлик w1_slave по пути: /sys/bus/w1/devices/28-*****/w1_slave в котором всего две строчки, но нам важны самые последние цифры второй строки после 'т='. Там будет трех-, четырех- или пятизначная цифра, которую нам надо поделить на 1000. Это и будет температура, которую показывает наш датчик.
Пожалуй, на этом закончу статью о моих первых опытах с платой Raspberry Pi. Думаю, работа с ней принесет еще много интересных проектов. Желаю удачи и успешных решений задач, в которых вам обязательно поможет этот мини-ПК.