Devpew

Raspberry Pi лучшие проекты

Topics: hardware, open source, services

Intro

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

Distro

Если вы думаете, какой дистрибурив лучше всего подойдет для Raspberry Pi, то выбор совсем не большой. Raspbian работает стабильнее всего. Если он у вас будет работать как сервер, без монитора, то смело устанавливайте Lite версию. Если будете использовать монитор, то ставьте Full. Можно, кстати, использовать и ARM Manjaro XFCE, работает тоже довольно стабильно, выглядит гораздо лучше, но при этом немного сильнее греется.

Записать на флешку из винды легче всего с помощью Etcher.

А из Linux еще проще:

dd bs=4M if=2019-09-26-raspbian-buster.img of=/dev/sdX status=progress conv=fsync

Models and Frames

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

А вот несколько моих корпусов для Raspberry Pi и мое мнение о них:

1

2

Крайне не рекомендую просто пластмассовые кейсы, которые просто защелкиваются. Они обычно ужасно хлипкие и совершенно бесполезные.

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

3

4

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

6

7

5

Проверить температуру процессора в распберри, кстати, можно довольно просто, для этого не нужно ставить какой-то дополнительный софт:

cat /sys/class/thermal/thermal_zone0/temp

и видеочип:

/opt/vc/bin/vcgencmd measure_temp

Если вы планируете использовать распберри как медиасервер, то рекомендую именно этот корпус. Хотя с ним распберри становится довольно большим, у меня например не получается запихнуть с распберри в этом корпусе за телевизор, так как телевизор прикручен к стене очень близко. И кстати когда будете подключать кулер, то подключайте к питанию 3.5 а не к 5, так как если подключите к 5, то будет довольно сильно шуметь.

9

10

11

И вот еще один корпус, который мне очень нравится, он полностью пассивный, при этом он очень хорошо справляется с охлаждением. Сам этот корпус довольно массивный и тяжелый. Он очень продуманый, довольно удобно и легко сюда помещается распберри, закрутил все за пол минуты, когда как в прошлом тут пришлось повозиться, из-за не очень удобного крепления. И когда он собран тут вообще нет никак люфтов, абсолютно. С этим корпусом распберри становится будто бы бронированным.

Температура максимальная которую мне удавалось нагнать, когда распберри был в этом корпусе, и при этом игрался какой-то фулл хд ролик на ютубе была 55 градусов. Думаю, что довольно не плохо. Конечно, в предыдущем корпусе, температура в таких же условиях держится в районе 46 градусов. И, кстати, температура может быть разная в зависимости от дистрибутива. ARM Manjaro c XFCE греет распберри градусов на пять сильнее чем Raspbian. При этом 55 градусов, наверное, все-таки нормальная температура, при этом у вас ничего не шумит и не моргает. В общем могу рекомендовать этот корпус.

How to use

Dashboard

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

Сейчас я использую графану с расбери на одном из моих проеков и это очень удобно.

grafana

Для того чтобы показывать дашборд мы должны просто открывать какой-нибудь браузер в kiosk mode

Для того чтобы автоматически запускать браузер нам надо отредактировать файл

/home/pi/.config/lxsession/LXDE-pi/autostart

Мой выглядит следующим образом

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@point-rpi
@xset s off
@xset -dpms
@xset s noblank
@sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' ~/.config/chromium Default/Preferences
@/home/pi/chrome.sh
@/home/pi/chau.sh

Предпоследняя строчка открывает хром со страницей при запуске Последняя делает автообновления

Так выглядит chau.sh

#!/bin/bash
while true; #create an infinite loop
do 
sleep 600
xdotool key = "ctrl+F5" & #you need to xdotool installed
done

А так chrome.sh

#!/bin/sh  
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/chromium/'Local State'
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/; s/"exit_type":"[^"]\+"/"exit_type":"Normal"/' ~/.config/chromium/Default/Preferences 
chromium-browser --kiosk --no-default-browser-check --no-first-run --disable-infobars --disable-session-crashed-bubble "OURURL"

В последней строке замените "OURURL" на актуальный URL вашей страницы

И кстати, если вы используете Grafana, то вам не нужно запускать файл, который занимается автообновлением страницы. Графана это умеет делать сама.

Термостанция

С помощью распберри можно довольно просто мониторить температуру, влажность и уровень CO2.

Датчик температуры и влажности можно взять DHT22 или DHT11. Для начала нужно подключить три провода от датчика в Raspberry. Питание я повесил на 3.3v, а не на 5v. GND на землю. Ну а управляющий вешаем на любой из свободных GPIO. Выглядит это следующим образом:

rasp

Для начала нужно сделать апдейт системы

sudo apt-get update

После чего нужно установить необходимые библиотеки

sudo apt-get install build-essential python-dev python-openssl

Клонируем репозиторий

git clone https://github.com/adafruit/Adafruit_Python_DHT
cd Adafruit_Python_DHT

Запускаем скрипт. Выполниться все должно без ошибок.

sudo python setup.py install
cd /home/pi/Adafruit_Python_DHT/examples

Теперь запускаем программу. Первым параметром мы должны передать идентификатор устройства.

11 если используем модель DHT11 22 если используем модель DHT22

Вторым параметром передаем номер порта GPIO к которому подключено наше устройство. Я повесил на четвертый.

./AdafruitDHT.py 22 4

Вывод должен быть примерно такой

Temp=27.1* Humidity=35.4%

Ура! Все работает

Сохраняем данные

Сделаем пустой текстовый файлик в который мы будем записывать показания, нужен он, например, для того чтобы строить график.

cd /home/pi
touch temphum.txt

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

Создаем файл

touch temphum.sh

Даем ему права на запуск

chmod +x temphum.sh

Наш скрипт выглядит следующим образом

#!/bin/bash
MYTEMP=$(/home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 4) 
MYDATE=$(date +"%d-%m-%y-%T")

second=''
first=${MYTEMP//Temp=/$second}
first=${first/Humidity=/$second}

echo $MYDATE $first >> /home/pi/temphum.txt

В этом скрипте мы добавляем дату Удаляем из строки "Temp=" и "Humidity=" Конкатинируем и записываем все в новую строку

Cron

Теперь заставим крон запускать наш скрипт каждые 10 минут.

crontab -e
*/10 * * * * /home/pi/temphum.sh

Теперь мы можем любым удобным нам способом брать даныне из этого файла и показывать их. Как это сделал я описано ниже.

Отображение

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

Для этого я сделал небольшой скрипт. Скрипт просто берет у распберри тестовый файл, смотрит на последнюю строку, забирает из нее только температуру и влажность.

#!/bin/bash

DIR=$(ssh -o LogLevel=QUIET -tt pi@192.168.1.5 tail -2 /home/pi/temphum.txt | head -1 | sed 's/[^ ]* //')  

if [[ "${DIR}" ]]; then
  echo "${DIR}"
fi

У меня это выглядит следующим образом.

image

Pi-hole

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

Развернуть Pi-Hole можно за две минуты. Все что нужно, так это выполнить всего одну команду:

curl -sSL https://install.pi-hole.net | bash

С помощью Pi-hole можно не только блокировать рекламу, но и самостоятельно заблокировать некоторые домены. У меня например, мой Smart TV очень часто ходит на свой китайский сервер. Можно просто заблокировать все домены, на которые он пытается что-то отправлять.

В общем если хотите блокировать рекламу или просто внимательнее смотреть за своей локальной сетью, то рекомендую.

Media Server

Мне очень нравится то как можно использовать Raspberry Pi как медиасервер, последняя версия может проигрывать даже 4к видео, но при этом важно хорошо его охлаждать, так как он может сгореть. Но 4к это то, что заявлено, по факту, у меня не получилось нормально смотреть на нем 4к видео, но Full-HD или 2k воспроизводятся нормально.

Есть много различных специализированных штуковин для телевизора: Google Chromecast, Apple TV, есть какая-то штука и от Amazon. Но мне не нравится некоторые моменты в этих устройствах. Там я не могу посмотреть с них все, что я хочу, не всегда есть контент, который мне нужен. Во-вторых, с точки зрения интерфейса, оно все выиглядит не очень.

Мне больше нравится использовать Raspberry Pi как медиасервер в связке с сервером. Мой домашний сервер довольно простой. Обычный комп, который стоит в кладовке, к нему подключен очень большой рейд-массив. Пространство которое не нужно в этом рейд массиве я сдаю в STORJ и немного на этом зарабатываю. Я кстати делал про это ролик. Сервер подключен по Ethernet к роутеру, там 1гигабит.

На сервере кроме STORJ есть еще и Transmission, который следит за определенной папкой, и если в эту папку попадает какой-нибудь *.torrent файл, то он автоматически начинает его скачивать. То есть я могу как с ноутбука так и со смартфона довольно быстро скачать все что нужно и сервер автоматически начнет скачивать это.

На Raspberry Pi у меня установлен Raspbian и VLC. А на смартфоне установлен VLC Remote. Так же на Raspberry Pi настроен sshfs, который видит все, что есть на сервере. И через смартфон я вижу все, что у меня скачано.

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

А управлять воспроизведением, паузами, громкостью, выбрать субтитры или звуковую дорожку, а так же выбрать сам файл для проигрывания можно в программе VLC Remote Pro. Программа просто отличная, ей очень удобно пользоваться. И что самое классное, тут очень удобно реализована прокрутка, довольно легко можно найти любой момент в фильме.

Homebridge

Homebridge это легкий сервер написанный на Node.js, который эмулирует HomeKit API от эпла.

https://homebridge.io/

https://github.com/nfarina/homebridge

С помощью него вы сможете легко сделать умный дом. Он поддерживает огромное количество плагинов, которые могут работать с различными девайсами от умного дома.

Когда я был на инфраструкруте от эпла, и жил в прошлой квартире я во всей квартире заменил выключатели света на выключатели Xiaomi Auara. И так же там нужен Xiaomi Auara Hub.

После чего настроив это все в HomeBridge вы можете отдавать команды сири.

Сири, включи свет в ванной.

Сири, выключи свет в кухне.

Сири. выключи свет везде.

Так же можно писать свои собственные модули. Например, я взял модуль у какого-то человека, который писал его для открывания/закрывания дверей гаража и на его основе писал свои различные сценарии.

Можно написать модуль, который будет просто выполнять какой-нибудь sh файл. Ну и я думаю вы сами понимаете возможности.

На этом все. Если у вас Raspberry лежит без дела, то надеюсь, что теперь вы знаете куда его можно применить.

Previous PostLenovo X1 Carbon 6th + EM7455
Next PostУправление личными финансами. Часть 1. Удовольствия