Caméra de sécurité Night Vision DIY à base de Raspberry Pi Zero W, Kerberos.io et boitier imprimé 3D • Domotique et objets connectés à faire soi-même

Dans le tutoriel précédent, nous avons découvert comment mettre en service la caméra officielle (v2.1) pour le Raspberry Pi Zero W et envoyer des images au serveur Home Assistant via des messages MQTT. Aujourd’hui, je vous propose d’aller plus loin et de finaliser ce projet. Tout le monde n’a pas forcément envie de développer la partie logicielle de sa caméra. Il existe de très bons projets pour le Raspberry Pi. Tout d’abord MotionPi et MotionEye qui sont deux interfaces Web pour le projet le Motion. Nous en avons déjà parlé dans plusieurs tutoriels. ZoneMinder qui date un peu. Pour ce projet, je vous propose de tester le projet Kereros.io développé en Belgique par Cedric Verstraeten.io (le site internet de Cédric est ici). Kerberos.io est un projet Open Source totalement libre et gratuit. Cedric a ajouté un service de stockage en ligne des images et vidéos qui lui permet de financer les évolutions futures et d’autres projets. L’activation de cette fonctionnalité n’est absolument pas obligatoire. Elle permet simplement de consulter les images enregistrées par le Raspberry Pi à distance depuis un navigateur Web (et de faire vivre le projet). Kerberos.io est un projet très abouti qui prend en charge tous les modèles de Raspberry Pi (du modèle 1 au PiZero W), la distribution Armbian (que l’on testera bientôt), les caméras CSI, les caméras USB et les caméras IP.

Les avantages de Kerberos.io pour un projet de caméra de sécurité DIY

Tout d’abord, Kerkeros.io est un peu plus accessible pour les débutants. Si vous débutez dans l’univers du Raspberry Pi et par conséquent sur Linux, il y a déjà bien assez à apprendre sans avoir à résoudre des problèmes d’installations de librairies. Ensuite, Kerkeros.io s’installe et se configure en quelques minutes. Cedric a adapté le code source du projet Etcher, ce logiciel édité par Resin.io qui est devenu est quelques mois la référence pour installer les distributions Linux de nos Mini PC sur une carte SD. L’interface Web est moderne, claire et quasiment entièrement en français. Les sorties sont nombreuses (en plus du service de stockage dans le cloud payant) :

  • Stockage sur la carte SD dans le dossier /etc/opt/kerberosio/capture/ . Il est possible d’ajouter un tampon avec la date et l’heure de la prise de vue
  • Vidéo : un flux vidéo au format mp4 (codec h264) est disponible. Les fichiers vidéos sont stockés dans le dossier /etc/opt/kerberosio/capture/  par défaut. Idem, on peut ajouter un tampon dateur sur chaque images de la vidéo. On pourra récupérer le flux vidéo très facilement depuis Jeedom ou Domoticz par exemple sur le port 8889
  • GPIO : on pourra déclencher la mise à l’état haut d’une broche durant une certaine durée. On pourra par exemple déclencher l’allumage d’un projecteur, allumer une LED rouge pour indiquer que le système vidéo a détecté un mouvement…
  • TCPocket, pour envoyer un message sur un socket TCP/IP. Idéal pour déclencher l’exécution d’un script depuis un programme Python ou Nodejs hébergé sur un serveur domotique. Lancer un traitement sur un ESP8266…
  • Webhock, permet de déclencher un traitement via une URL. Kerberos.io envoi un document JSON contenant plusieurs informations (région, nombre d’images enregistrées, chemin vers l’image clef, date/heure). Attention, aucune image n’est envoyée
  • Enfin, on peut déclencher l’exécution d’un script local si les sorties précédentes ne sont pas suffisantes !

Voilà, en plus de prendre en charge tous les modèles de Raspberry Pi (du modèle 1 au PiZero W), la distribution Armbian (que l’on testera bientôt), les caméras CSI, les caméras USB et les caméras IP, Kerberos.io fonctionne également sur Docker et pourra être installé sur un PC Linux en compilant les sources.

Les limitations actuelles de Kerberos.io

Comme rien n’est jamais parfait, Kerberos.io a encore quelques lacunes. En voici quelques unes

  • Il n’y a pas d’affichage multi-caméra sur le Dashboard
  • L’affichage du dashboard demande quelques secondes (RPI Zero W oblige !)
  • Une seule zone de détection disponible
  • Pas d’enregistrement audio
  • La timeline verticale est un peu déroutante. Elle se charge en descendant sur la page ce qui demande un peu de temps. On a une pré-visualisation des deux derniers clips. On gagnerait en visibilité et rapidité avec un affichage sous la forme de vignettes

Si vous aimez le codage, vous pouvez rejoindre l’équipe de développement sur GitHub. La page d’accueil se trouve ici.

Installation de Kerberos.io à l’aide de KiOS

Il existe plusieurs méthodes pour installer Kerberos.io

La première méthode consiste à partir d’une installation de Raspbian Stretch (comment faire sans clavier ni écran) puis installer la machinerie et le serveur Nginx/PHP. C’est faisable, il suffit de suivre le tutoriel pas à pas ici. J’ai rencontré toutefois deux erreurs. La librairie libpng12.so.0 ne semble pas installée sur Raspbian Strech. Il faut l’installer manuellement à l’aide de la commande sudo apt-get install libpng12-0 . Ensuite, je suis tombé sur un message Illegal instruction qui empêche le démarrage de la machinerie. Une issue a été ouverte récemment sur GitHub. L’erreur était causée par la librairie SSL 1.0.0 qui n’est plus accessible sous Raspbian. La version  2.5.0 de Kerberos corrige le problème mais le correctif est arrivé trop tard pour être intégré à ce tutoriel. Cette méthode fera l’objet d’un prochain tutoriel.

En attendant, je vous propose d’installer Kerberos à l’aide de KiOS. C’est une version prête à l’emploi (Out-of-the-box) basée sur une adaptation d’Etcher. Il suffit de se laisser guider et le système est prêt en 5 minutes (enfin tout dépend de votre connexion internet :)). 

Allez sur cette page pour télécharger la version qui correspondant à votre environnement (macOS, PC Windows x86 ou 64-bits, PC Linux x86 ou 64-bits)

Ensuite, suivez les étapes de gravure de la carte SD à l’aide des images ci-dessous. Il est préférable d’attribuer une adresse IP fixe au RPIZero. C’est beaucoup plus pratique pour se connecter à l’interface d’administration, récupérer le flux vidéo sur un serveur domotique tel que Domoticz, Jeedom, Home Assistant.

KiOS récupère tout d’abord un image très simplifiée de Rapbian et lance le flashage de la carte SD. Elle est automatiquement éjectée à la fin de la gravure.

Premier démarrage de KiOS sur le Raspberry Pi Zero W

Connectez la caméra au Raspberry Pi puis insérez la carte SD dans le lecteur du RPIZero W. Mettez le sous tension. Attendez que la LED ne clignote plus (si vous n’avez pas d’écran connecté ou que vous ne disposez pas d’adaptateur mini-HDMI vers HDMI). Ouvrez un navigateur internet et connectez vous à l’adresse IP que vous avez attribué au RPIZero tout simplement. Kerberos.io embarque un serveur WEB Nginx/PHP. Au premier démarrage, choisissez votre langue

Puis choisissez un nom d’utilisateur et un mot de passe

Et voilà, c’est prêt !

Par défaut, la caméra du Raspberry Pi (RaspiCamera dans les réglages) est sélectionnée. La caméra de surveillance est directement exploitable. Nous verrons plus en détail dans un prochain tutoriel tous les réglages à notre disposition. Il est temps de passer au boitier et à l’assemblage !

Matériel nécessaire

Pour réaliser ce projet de caméra de surveillance, j’ai préféré utiliser un clone asiatique équipé de deux LED ce qui va nous permettre d’avoir un système de vision nocturne sur une dizaine de mètres. Pour en savoir plus sur la caméra 5MP NoIR compatible, vous pouvez lire ce test comparatif avec le module officiel Night Vision v2.1.

Quelques prix d’une sélection d’offres intéressantes sur internet

N’ayant pas trouvé de boitier adapté aux caméras NoIR avec LED, j’ai ouvert Autodesk Fusion 360 et pris ma souris par la main ! Le boitier est assez basique. L’idée est de partir d’un boitier qui reçoit le module caméra. La face avant du boitier laisse dépasser l’optique et les deux LEDs infra-rouge pour la vision de nuit. Le module caméra repose sur 4 pieds dans le fond du boitier. Le Raspberry Pi Zero W est placé au dessus du module caméra NoIR. On pourra le fixer à l’aide de 4 vis M3. Le capot est fermé à l’aide de 4 vis M3 (à chaque angle). Une équerre de fixation permettra de fixer le boitier au mur à l’aide de 2 vis ou d’un scotch double face. Un système d’articulation constitué d’un axe vertical et d’un bras permet d’orienter la caméra vers la zone à surveiller. L’éclairage de nuit est automatique. Chaque l’aide étant allumée à l’aide d’une photo-résistance. Voici quelques images en 3D dans différentes directions.

Rendu 3D

Voici comment assembler la caméra :

  • Commencez par pré-percer avec un foret de diamètre 2mm les trous de fixation du Raspberry Pi et la fixation du capot. Le PLA reste un matériau dur. Même avec des vis auto-taraudeuse, c’est assez difficile à visser.
  • La caméra prend place dans le fond du boitier. Elle vient en appui sur les 4 pattes inférieures. La face avant est percée de plusieurs trous (optique, 2x LEDs, 2x photo-résistances, 2x LEDs pour un usage ultérieur par exemple connecté au WiFi, LED clignotante rouge pour indiquer que la caméra fonctionne).
  • Le RPI ZeroW vient se placer au dessus la caméra. Il vient en appui sur les 4 pattes plus longues. Il pourra être fixé par 4x vis M2x5. Chaque patte est pré-percée en tenant compte des entre-axes aux quatre coins du Pi0. Il faudra faire attention à ne pas plier le ruban sous peine de la casser (désolé, je suis radin avec le PLA).
  • Un perçage latéral en vis à vis du connecteur micro-USB OTG permettra d’alimenter le RPiZero en 5V/3A.
  • Le boitier est fermé à l’aide capot vissé par 4x vis M3 aux angles
  • Venez ensuite fixer le bras orientable sur l’embase du capot à l’aide d’une vis M6x25 et d’un écrou papillon
  • Insérez la vis M3x20 dans le logement de l’axe de rotation. Insérez l’axe de rotation sur le pied de fixation. Vous pourrez utiliser un écrou ou un écrou papillon pour verrouiller la position de l’axe de rotation.
  • Venez enfin fixer l’autre coté du bras orientable sur l’axe de rotation vertical à l’aide d’une vis M6x25 et d’un écrou papillon.

Ce boitier permet de fixer la caméra au mur. La caméra peut ensuite être orientée sur son axe vertical et inclinée à l’aide du bras articulé.

Tous les fichiers sont à votre disposition pour que vous puissiez modifier et améliorer le boitier à vos besoins. Pour le moment les fichiers sont hébergés sur le blog ainsi que sur Thingiverse

Voilà, j’espère que ce projet vous aura donné envie de vous plonger dans l’univers passionnant du Raspberry Pi et de l’impression 3D ! La prochaine fois, nous ferrons la même chose avec un Orange Pi Lite (ou OPI Zero s’il arrive assez vite). J’ai profité des soldes du 11 novembre pour commander cette caméra USB avec éclairage nocturne. Plus qu’à attendre qu’elle arrive. En attendant, je vais continuer à jouer avec Kerberos.io pour aller un peu plus loins dans les fonctionnalités.

Comme c’est la période du Black Friday et de Noël, on trouve pas mal de soldes sur les imprimantes 3D, c’est une bonne idée de cadeau pour débuter dans le DIY !

Avez-vous aimé cet article ?

[Total: 0 Moyenne: 0]