Содержание:
В этой статье мы расскажем вам о том, как добавить информационный OLED-дисплей к системе Pi-Hole на базе Raspberry Pi.
Pi-Hole – это сетевой блокиратор рекламы, который можно запустить на Raspberry Pi. Он хорошо работает на всех моделях Pi и является идеальным решением для устаревшего оборудования. Узнать больше об этом блокираторе можно на официальном сайте Pi-Hole.
Установив Pi-Hole на Raspberry Pi B+, мы решили добавить к этой системе дисплей, который позволял бы видеть, как работает сетевой блокиратор. Поэтому мы подключили к ней дешевый 0.96-дюймовый OLED-дисплей, а также переключатель без фиксации положения. Последний позволяет при необходимости выводить на дисплей дополнительную информацию. Можно еще подключить светодиод для индикации, но это опционально.
Информационный OLED-дисплей: установка оборудования
Список необходимого оборудования самый базовый:
- Raspberry Pi (любая модель, идеально с портом Ethernet)
- SD-карта (8Гб или больше; с 4Гб тоже будет работать)
- Блок питания
- Сетевое подключение:
- кабель Ethernet
- или встроенный WiFi
- или USB WiFi адаптер
- Монитор (опционально)
- Клавиатура (опционально)
- Корпус для Pi (опционально)
Для установки информационного дисплея понадобится:
- OLED-дисплей с интерфейсом I2C [eBay] [AliExpress]
- Переключатель без фиксации положения [eBay] [AliExpress]
- Соединительные кабеля для подключения дисплея к ножке GPIO
- LED и резистор (опционально)
- Рамка или крепление для дисплея (опционально)
Установка и настройка Pi-Hole
Установка Pi-Hole – достаточно простой процесс. Мы даже не будем описывать здесь всю процедуру. Вместо этого мы коротко изложим то, что мы сделали. В зависимости от ваших предпочтений для установки можно использовать SSH или клавиатуру с монитором.
- Создайте новую карту Raspbian SD с образом Raspbian Lite и Etcher
- Чтобы включить SSH, добавьте в загрузочный раздел пустой текстовый файл под названием «ssh»
- Включите Pi с новой SD-картой
- Измените пароль по умолчанию на свой
- Запустите «sudo update», затем «sudo upgrade»
- Получите IP-адрес Pi любым из следующих способов:
- запустите ifconfig на Pi
- найдите его в настройках роутера
- воспользуйтесь сканером сети
- (опционально) настройте ваш роутер таким образом, чтобы он всегда присваивал вашему Raspberry Pi один и тот же IP-адрес
- Следуйте одной из инструкций по установке, описанной на Pi-Hole GitHub. Мы воспользовались методом автоматической установки (One-Step Automated Install)
Подсоединение экрана и переключателя
Переключатель мы подключили напрямую к ножке GPIO с помощью соединительных проводов, затем приклеили их к крышке с помощью двухкомпонентного эпоксидного клея.
Дисплей, переключатель и светодиод подключались по такой схеме:
Экран подпитали от контакта 3.3V, светодиод — от ножки GPIO.
Настройка информационного OLED-дисплея
OLED-экраны, которые используют протокол I2C, очень просты в установке, так как их можно подключить напрямую к ножке GPIO с помощью соединительных кабелей.
Убедитесь, что дисплей рабочий, и что вы можете запустить нужные скрипты в Python.
Подключение переключателя
Переключатель можно подключить напрямую к ножке GPIO. Мы подключали его к GPIO21 (пин 40) и земле (пин 39). Скрипт определяет GPIO21 как «High», при нажатии на переключатель показатель будет меняться на «Low».
Установка скрипта Python
Скрипт Python использует Pi-Hole API. Это позволяет скрипту запрашивать текущие данные из Pi-Hole, а затем форматировать их для отображения на экране.
Скачайте скрипт Python с помощью:
1 wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/pihole/stats.py
и необходимый файл шрифта с помощью:
1 wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/pihole/VCR_OSD_MONO_1.001.ttf
Затем сделайте так, чтобы Pi запускал его при запуске системы. Для этого нужно отредактировать cron с помощью:
crontab -e
и добавить в конце строчку:
@reboot python3 /home/pi/stats.py &
Ваш cron-файл будет выглядеть так:
# For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command @reboot python3 /home/pi/stats.py &
Сохраните изменения и выйдите, нажав CTRL-X, Y и ENTER.
Перезагрузите Pi и через 30 секунд скрипт будет отображать информацию Pi-Hole. Эта задержка дает Pi время для подключения к сети, прежде чем он попытается запросить данные Pi- Hole. При нажатии на переключатель на экран будет выводиться дополнительная информация.
Рамка для OLED-дисплея
Черную рамку для дисплея мы напечатали на 3D-принтере, она будет обрамлять OLED-дисплей и его печатную плату. Экран нужно вручную разместить в правильное положение, а затем вклеить его в рамку. Сама рамка прикреплена к корпусу с помощью двухстороннего скотча.
STL-файл можно взять здесь.
Вот базовая анимация 3D-рамки:
Информационный дисплей Pi-Hole в действии
На дисплее будет циклично отображаться три окна:
Каждое из окон отображается по 30 секунд, информация обновляется также каждые 30 секунд. Это – хороший признак того, что скрипт работает.
Дисплей 1 (главный)
- Общий процент заблокированной рекламы
- Общее количество заблокированной рекламы
Дисплей 2
- IP-адрес
- Процент заблокированной рекламы
- Общее количество заблокированной рекламы
- Общее количество запросов
Дисплей 3
- IP-адрес
- Загрузка процессора
- Объем использованной памяти /Общий объем памяти
- Объем использованного дискового пространства/Общий объем дискового пространства
Pi находится в корпусе «DesignSpark Вlack» от RS Components.
Мысли о блокировке рекламы
Мы решили попробовать Pi-Hole, так как у нас есть дети и нам нужно было средство для контроля домашней сети. Все действия были направлены на обеспечение безопасности детей, которые используют домашний Wi-Fi, а не для шпионажа за взрослыми.
Блокировка рекламы – это спорная тема, особенно среди тех, кто использует рекламу для получения дохода. Таким подходом пользуются сайты, где реклама помогает компенсировать расходы на хостинг. Мы понимаем, что в данном случае реклама на этом сайте – это крошечная цена за контент, который обычно полезен людям, поэтому мы не можем поощрять кого-либо запускать системы или приложения для блокировки рекламы.
Но выбор в конечном счете остается за вами.