Écran d’état Pi-Hole OLED – Raspberryme

Écran d'état Pi-Hole OLED - Raspberry Pi Spy

Cet article montre comment j’ai ajouté un écran d’état OLED à mon système Pi-Hole basé sur Raspberry Pi.

Pi-Hole est un bloqueur de publicités à l’échelle du réseau que vous pouvez exécuter sur un Raspberry Pi. Il fonctionne bien sur tous les modèles Pi et est un projet idéal pour le matériel plus ancien. Vous pouvez en savoir plus sur le site officiel de Pi-Hole.

Après avoir configuré Pi-Hole sur un Raspberry Pi B+, je voulais un moyen d’ajouter un écran afin de pouvoir vérifier rapidement qu’il fonctionnait. J’ai donc ajouté un écran OLED 0.96″ bon marché et un interrupteur momentané. Le commutateur permet à l’écran d’afficher des détails supplémentaires si nécessaire. La LED est là pour ajouter une belle lueur colorée à la boîte mais bien sûr c’est facultatif.

Pi-Hole avec écran OLED

Configuration matérielle de l’écran d’état OLED

La configuration matérielle requise est assez basique.

  • Raspberry Pi (tout modèle mais idéalement vous voulez un port Ethernet)
  • Carte SD (8 Go ou plus recommandés mais 4 Go fonctionneront)
  • Source de courant
  • Connexion réseau
    • câble Ethernet
    • ou WiFi à bord
    • ou clé USB Wi-Fi
  • Moniteur (facultatif)
  • Clavier (facultatif)
  • Boîtier Pi (facultatif)

L’écran d’état et la mise à niveau du commutateur nécessitent :

  • Écran OLED avec interface I2C
  • Commutateur momentané
  • Câbles de démarrage pour connecter l’écran à l’en-tête GPIO
  • LED et résistance (en option)
  • Cadre ou support pour écran (facultatif)

Installation et configuration de Pi-Hole

L’installation de Pi-Hole est assez simple. Je ne veux pas vraiment reproduire la procédure ici. Au lieu de cela, je vais fournir un résumé de ce que j’ai fait avec des liens appropriés vers des guides supplémentaires. Selon vos préférences, vous pouvez utiliser SSH ou un clavier et un moniteur pour effectuer la configuration.

  • Créez une nouvelle carte SD Raspbian avec l’image « Raspbian Lite » et Etcher [guide]
  • Ajoutez un fichier texte vide nommé « ssh » à la partition de démarrage pour activer SSH [guide]
  • Mettre le Pi sous tension avec une nouvelle carte SD
  • Changez le mot de passe par défaut en quelque chose de sensé [guide]
  • Exécutez « sudo apt update » suivi de « sudo apt upgrade »
  • Obtenez l’adresse IP de Pi soit :
    • exécuter ifconfig sur le Pi
    • regarder dans les paramètres de votre routeur
    • à l’aide d’un scanner réseau
  • (facultatif) configurez votre routeur pour qu’il attribue toujours la même adresse IP à votre Raspberry Pi
  • Suivez l’une des procédures d’installation décrites sur la page Pi-Hole GitHub. J’ai utilisé « l’installation automatisée en une étape »

Câblage de l’écran et du commutateur

Le commutateur a été câblé directement à l’en-tête GPIO à l’aide de fils de liaison, puis collé sur le couvercle avec de la colle époxy en deux parties.

Câblage interne de l'écran d'état Pi-Hole

L’écran, l’interrupteur et la LED ont été câblés comme indiqué ci-dessous :

Ecran detat Pi Hole OLED Raspberryme

L’écran était alimenté par une broche 3.3V et la LED était alimentée par une broche GPIO.

Configuration de l’écran OLED

Les écrans OLED utilisant le protocole I2C sont assez faciles à connecter car vous pouvez utiliser des câbles de démarrage pour vous connecter directement à l’en-tête GPIO. La procédure pour en ajouter un à votre Pi et installer les bibliothèques se trouve dans mon tutoriel Comment utiliser un module d’affichage OLED.

Assurez-vous que vous pouvez exécuter les exemples de scripts Python et que votre écran fonctionne.

Matériel de commutation

Le commutateur peut être connecté directement à l’en-tête GPIO. Je l’ai connecté à GPIO21 (broche 40) et à la terre (broche 39). Le script définit GPIO21 comme « High » et il sera tiré « Low » lorsque le commutateur est enfoncé.

Installation de gpiozero

Le script Python utilisera gpiozero pour contrôler la LED et le bouton. Assurez-vous qu’il est installé en exécutant :

sudo apt install python3-gpiozero

Installation de scripts Python

Le script Python utilise l’API Pi-Hole. Cela permet au script de demander les données actuelles à Pi-Hole, puis Python peut les formater pour les afficher à l’écran.

Téléchargez le script Python en utilisant :

wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/pihole/stats.py

et obtenez le fichier de police requis :

wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/pihole/VCR_OSD_MONO_1.001.ttf

Ensuite, faites en sorte que le Pi l’exécute au démarrage en éditant cron en utilisant :

crontab -e

et en ajoutant la ligne suivante à la fin :

@reboot python3 /home/pi/stats.py &

Votre fichier cron ressemblera à ceci :

# 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 &

Enregistrer et quitter en utilisant CTRL-X, Oui ensuite ENTRER.

Redémarrez le Pi et le script devrait afficher les données Pi-Hole à l’écran après 30 secondes. Ce délai donne au Pi le temps de se connecter au réseau avant d’essayer de demander des données à Pi-Hole. Appuyez sur le bouton pour faire défiler un ensemble supplémentaire de données à l’écran.

Cadre d’écran OLED

La lunette noire de l’écran a été imprimée en 3D pour enfermer l’écran OLED et son PCB. En raison des variations du module OLED, la lunette permet un peu de réglage. L’écran devait être positionné à la main puis collé en position. La lunette a été fixée au boîtier à l’aide de ruban adhésif double face.

Le fichier STL est disponible sur ma chaîne Thingiverse.

Voici une animation de base de la lunette imprimée en 3D :

YouTube video

Écran d’état Pi-Hole en action

Les trois écrans d’état disponibles sont visibles ci-dessous :

Exemples d'écran d'état Pi-Hole

Toutes les 30 secondes, l’écran principal défile et actualise les données. Cela donne une bonne indication que le script est toujours en cours d’exécution sans avoir besoin de vérifier quoi que ce soit d’autre.

  • Écran 1 (principal)
    • Pourcentage total bloqué
    • Nombre total de blocages
  • Écran 2
    • adresse IP
    • Pourcentage bloqué
    • Nombre total de blocages
    • Nombre total de requêtes
  • Écran 3
    • adresse IP
    • Utilisation du processeur
    • Mémoire utilisée/Mémoire totale
    • Espace disque utilisé/Espace disque total

L’étui que j’utilise est un étui « DesignSpark black » de Composants RS.

Réflexions sur le blocage des publicités

J’ai décidé d’essayer Pi-Hole parce qu’en tant que parent, je devais être en mesure de démontrer que j’avais le contrôle total de mon réseau et que les règles de mon foyer Internet étaient la loi. Cela visait généralement à assurer la sécurité des enfants utilisant mon WiFi plutôt que d’espionner les adultes.

Cela était particulièrement vrai lorsque les amis de mon fils apportaient des appareils compatibles Internet dans ma maison. Je ne voulais pas leur refuser la possibilité d’utiliser ces appareils, mais je n’avais aucun contrôle sur la façon dont ils étaient configurés. Les contrôles parentaux ou les applications sophistiquées peuvent aider vos propres enfants, mais vous ne pouvez pas les imposer aux visiteurs.

Le blocage des publicités est un sujet controversé, en particulier parmi ceux qui s’appuient sur les publicités pour générer un flux de revenus. C’est vrai pour ce site où la publicité permet de compenser les frais d’hébergement. J’ai toujours été dans deux têtes quant à savoir si je devais encourager les autres à utiliser un système qui supprimerait les publicités de ce site et des sites d’autres générateurs de contenu. Je comprends pourquoi les gens veulent le faire, mais je pense aussi que sur ce site, les publicités sont un petit prix à payer pour un contenu qui est généralement utile aux gens.

Mais le choix est finalement le vôtre.