5 способов полезного использования Raspberry Pi
Raspberry Pi наверное есть дома почти у каждого, и рискну предположить, что у многих она валяется без дела. А ведь Raspberry это не только ценный мех, но и вполне мощный fanless-компьютер с Linux. Сегодня мы рассмотрим полезные возможности Raspberry Pi, для использования которых код писать не придется совсем.
Для тех кому интересно, подробности под катом. Статья рассчитана для начинающих.
Примечание: статья рассчитана для начинающих, но имеющих хотя бы базовые понятия о том, что такое IP-адрес, как зайти на Raspberry Pi по SSH с помощью putty или любого другого терминала, и как редактировать файлы редактором nano. В качестве эксперимента, в этот раз я не буду «грузить» читателей кодом для Python, программирования здесь не будет совсем. Для всего ниженаписанного будет достаточно лишь командной строки. Насколько такой формат востребован, буду смотреть по оценкам текста.
Разумеется, я не буду рассматривать совсем уж очевидные вещи типа FTP-сервера или сетевой шары. Ниже я постарался выделить что-то более-менее полезное и оригинальное.
Перед тем, как мы будем что-то устанавливать, важный совет: правильный блок питания (лучше фирменный на 2.5А, а не noname-зарядка от телефона) и радиатор на процессор крайне важны для стабильной работы Raspberry Pi. Без этого Raspberry может зависать, могут появляться ошибки копирования файлов и пр. Коварность таких ошибок в том, что проявляются они только изредка, например при пиковой загрузке CPU или в момент записи больших файлов на SD-карту.
Перед установкой каких-либо компонентов желательно обновить систему, иначе старые адреса для команды apt могут не сработать:
sudo apt-get update
Теперь можно приступать к установке и настройке.
1. WiFi точка доступа
Raspberry Pi легко превратить в беспроводную точку доступа, причем ничего докупать не придется, WiFi «на борту» уже есть. Для этого необходимо установить 2 компонента: hostapd (Host access point daemon, сервис точки доступа) и dnsmasq (DNS/DHCP-сервер).
Устанавливаем dnsmasq и hostapd:
sudo apt-get install dnsmasq hostapd
Задаем статический IP-адрес, который будет иметь Raspberry Pi в WiFi-сети. Для этого нужно отредактировать файл dhcpcd.conf, введя команду sudo nano /etc/dhcpcd.conf. В файл нужно добавить следующие строки:
interface wlan0
static ip_address=198.51.100.100/24
nohook wpa_supplicant
Как можно видеть, в WiFi-сети наша Raspberry Pi будет иметь адрес 198.51.100.100 (это важно запомнить, если на ней будет работать какой-то сервер, адрес которого нужно будет ввести в браузере).
Далее, мы должны активировать IP forwarding, для чего выполняем команду sudo nano /etc/sysctl.conf и раскомментируем строку net.ipv4.ip_forward=1.
Теперь нужно настроить DHCP-сервер — он будет раздавать IP-адреса подключаемым устройствам. Вводим команду sudo nano /etc/dnsmasq.conf и добавляем следующие строки:
interface=wlan0
dhcp-range=198.51.100.1,198.51.100.99,255.255.255.0,24h
Как можно видеть, подключаемые устройства будут иметь IP-адреса в диапазоне 198.51.100.1… 198.51.100.99.
Наконец, настало время настроить Wi-Fi. Редактируем файл /etc/default/hostapd и вводим там строку DAEMON_CONF=»/etc/hostapd/hostapd.conf». Теперь отредактируем файл hostapd.conf, введя команду sudo nano /etc/hostapd/hostapd.conf.
Вводим параметры точки доступа:
interface=wlan0
driver=nl80211
ssid=Raspberry Pi
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
Здесь важно обратить внимание на параметры «ssid» (имя точки доступа), «wpa_passphrase» (пароль), «channel» (номер канала) и «hw_mode» (режим работы, a = IEEE 802.11a, 5 GHz, b = IEEE 802.11b, 2.4 GHz, g = IEEE 802.11g, 2.4 GHz). К сожалению, автоматического выбора канала нет, так что наименее занятый канал WiFi придется выбрать самостоятельно.
Важно: в этом тестовом примере указан пароль 12345678, в реальной точке доступа нужно использовать что-то посложнее. Существуют программы, осуществляющие перебор паролей по словарю, и точку доступа с простым паролем могут взломать. Ну а расшаривать интернет посторонним при современных законах может быть чревато.
Все готово, можно активировать все сервисы.
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd
sudo systemctl reload dnsmasq
Теперь мы должны уже увидеть новую WiFi-точку доступа в списке сетей. Но чтобы в ней появился интернет, необходимо активировать перенаправление пакетов из Ethernet в WLAN, для чего вводим команду sudo nano /etc/rc.local и добавляем строку настройки iptables:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Теперь все. Перезагружаем Raspberry Pi, и если все было сделано правильно, мы можем увидеть точку доступа и подключиться к ней.
Как можно видеть, скорость не так уж плоха, и пользоваться таким WiFi вполне можно.
Кстати, небольшой совет: поменять сетевое имя Raspberry Pi можно, выполнив команду sudo raspi-config. По умолчанию оно равно (сюрприз:) raspberrypi. Это наверно общеизвестно. Однако не все знают, что это имя доступно и в локальной сети, но к нему нужно добавить «.local». Например, зайти на Raspberry Pi по SSH можно, введя команду putty pi@raspberrypi.local. Тут правда, есть один нюанс: это работает в Windows и в Linux, но не работает в Android — там по-прежнему придется вводить IP-адрес вручную.
2. Медиа-сервер
Существует 1001 способ сделать медиа-сервер на Raspberry Pi, я рассмотрю лишь самый простой. Допустим, у нас есть любимая коллекция MP3-файлов, и мы хотим, чтобы она была доступна в локальной сети для всех медиа-устройств. Мы поставим на Raspberry Pi сервер MiniDLNA, который может сделать это для нас.
Для установки введем команду sudo apt-get install minidlna. После чего нужно настроить конфиг, введя команду sudo nano /etc/minidlna.conf. Там необходимо добавить лишь одну строку, указывающую путь к нашим файлам: media_dir=/home/pi/MP3 (путь разумеется, может быть другим). Закрыв файл, перезапускаем сервис:
sudo systemctl restart minidlna
Если мы все сделали правильно, мы получим готовый медиа-сервер в локальной сети, с которого можно играть музыку через настольное WiFi-радио или через VLC-Player в Android:
Совет: загружать файлы на Raspberry Pi очень удобно с помощью WinSCP — эта программа позволяет работать с папками RPi также легко, как и с локальными.
3. SDR приемник
Если у нас есть приемник RTL-SDR или SDRPlay, мы можем использовать его на Raspberry Pi с помощью программы GQRX или CubicSDR. Это позволит иметь автономный и бесшумный SDR-приемник, способный работать даже круглосуточно.
Прошу прощения за качество скриншота с экрана телевизора:
С помощью RTL-SDR или SDRPlay возможно принимать различные радиосигналы с частотой до 1ГГц (даже чуть выше). К примеру, можно слушать не только обычное FM-радио, но и переговоры пилотов или других служб. Кстати, радиолюбители с помощью Raspberry Pi вполне могут принимать, декодировать и отправлять на сервер сигналы WSPR и других цифровых режимов.
Подробное рассмотрение SDR-радио выходит за рамки этой статьи, подробнее можно почитать здесь.
4. Сервер для «умного дома»
Тем, кто хочет сделать свой дом более «умным», можно воспользоваться бесплатной программой OpenHAB.
Это даже не то, чтобы просто программа, а целый фреймворк, имеющий различные плагины, скрипты, позволяющий управлять различными устройствами (Z-Wave, Philips Hue и др). Желающие могут изучить подробнее оф.сайт https://www.openhab.org.
Кстати, раз уж зашла речь об «умном доме», на Raspberry Pi вполне может работать MQTT-сервер, который может использоваться различными локальными устройствами.
5. Клиент для FlightRadar24
Если вы любитель авиации, и живете в регионе где покрытие FlightRadar оставляет желать лучшего, можно помочь сообществу и всем путешественникам, установив приемник у себя. Для этого достаточно лишь RTL-SDR-приемника и Raspberry Pi. Как бонус, вы получите бесплатный доступ к Pro-аккаунту FlightRadar24.
Подробная инструкция уже публиковалась на Хабре.
Заключение
Разумеется, здесь перечислено далеко не все. Raspberry Pi имеет неплохую вычислительную мощность, и может использоваться в абсолютно разных задачах, от ретро-игровой консоли или видеонаблюдения, до распознавания автомобильных номеров или даже как сервис для астрономической all-sky камеры для наблюдения за метеорами.
Кстати, написанное актуально не только для Raspberry Pi, но и для различных «клонов» (Asus Tinkerboard, Nano Pi и пр), все программы скорее всего заработают и там.
Всем удачных экспериментов.