Caméra de surveillance 2MP grand angle à détection de mouvement à base d'Orange Pi Lite et Motion • Domotique et objets connectés à faire soi-même

xtiycq2htjlpi534bcaj-6734674
gyzzwue3sqqb8zvn1tjv-6629657
jnstpfdm1qwx6spwbxir-5194023

Orange Pi commercialise une petite caméra couleur 2MP avec optique grand angle qui pourra convenir pour réaliser une petite caméra de surveillance d’appoint. Dans ce tutoriel, nous allons installer les drivers gc2035 etvfe_v4l2 prenant en charge la caméra. La partie logicielle sera confiée à Motion capable de détecter des mouvements devant la caméra. A l’exception de l’Orange Pi Zero, tous les ordinateurs carte Orange Pi disposent d’un port caméra au format CSI (Camera Serial Interface) tout comme les Raspberry Pi (à partir de la seconde génération).

Configuration utilisée

Cette caméra utilise le driver gc2035. Elle est compatible avec tous les mini-PC Orange Pi. Depuis que le driver gc2035 fait partie de la distribution Debian par défaut, il est très facile de l’activer. Pour ce tutoriel,  vous aurez besoin du matériel suivant.

Coté système, j’ai opté pour Armbian (présenté dans cet article). C’est un système léger (une version sans bureau est disponible) dont on connait l’origine des sources. Il y a donc un très faible risque de transformer votre caméra de surveillance 100% DIY en botnet et vous retrouver impliqué dans une nouvelle affaire d’attaque DDoS !

Déballage de la caméra Orange Pi

La caméra d’Orange Pi est livrée dans un simple sachet en plastique transparent. Low cost oblige. Le module comprend la caméra, un adaptateur (obligatoire) ainsi qu’un ruban de 15 cm de long.

dlhj4plx9lgdhnhbn3mu-1601736

Compatibilité avec le connecteur Raspberry Pi

Le Raspberry Pi utilise un connecteur CSI-2 qui permet de supporter des caméra jusqu’à 5 MPixels. L’Orange Pi dispose bien également d’un connecteur CSI mais la similitude s’arrête là. En effet, c’est bien bien un connecteur CSI mais ce n’est pas le CSI-2 15 broches qui équipe le Raspberry Pi (2, 3 ou Zero).

C’est un connecteur 24 broches de largeur 12mm alors que celui du Raspberry Pi mesure 16mm. Difficile de savoir de quel version il s’agit car rien est clairement documenté, y compris sur les documents techniques disponibles ici.

aqx94axwz4indrvokj19-3514938

Ruban de la caméra Orange Pi à gauche (12mm, 24 pistes). Ruban d’une caméra Raspberry Pi à droite (16 mm, 15 pistes).

Si vous voulez une meilleure caméra, par exemple une caméra avec une optique réglage, sans filtre IR pour une meilleure vision de nuit, ou encore un plus grande résolution, il faudra se rabattre vers une webcam USB standard. La plus classique est la Logitech C270.

kfvbgtcojqdraqadfbas-7142396

Branchement de la caméra 2MP sur l’Orange Pi

Ouvrez le connecteur. Insérez le ruban jusqu’à sentir le fond du connecteur. Il n’y a pas d’indicateur de sens, il suffit simplement de tourner le ruban pour que les pistes soient en vis à vis avec les broches du connecteur. Refermez le connecteur.


h2so07oxvqzhsvmupqeq-1318940

Faites de même coté Orange Pi.

kqmqeejtfl3jlj2jakgy-5438456

Le résultat après assemblage

gqvcdhtewfgor1hiv4oq-4698542

Installation des drivers gc2035 et vfe_v4l2

Avant de commencer, le mieux est de mettre à jour le système

sudo apt-get update
sudo apt-get upgrade

Après l’upgrade, il faudra très certainement modifier votre configuration vidéo si l’Orange Pi est branché sur un moniteur DVI (et donc redémarrer sur un téléviseur en HDMI).

Maintenant, on ajoute les drivers pour la caméra

sudo modprobe gc2035
sudo modprobe vfe_v4l2

Pour que les drivers soient chargés au démarrage, ouvrez le fichier /etc/modules  et dé-commentez les drivers gc2035 et vfe_v4l2, ce qui donne par exemple

8189fs
#gpio_sunxi
#w1-sunxi
#w1-gpio
#w1-therm
gc2035
vfe_v4l2
sunxi-cir
g_serial

Installation Motion pour la surveillance avec détection de mouvement

Commençons par créer un répertoire de destination pour les images et on attribue toutes les permissions. Par exemple /home/pi/motion/

mkdir ~/motion
chmod 777 ~/motion

Maintenant on installe Motion

sudo apt-get install motion

L’installation terminée, ouvrez le fichier de configuration

sudo nano /etc/motion/motion.conf

Modifiez les clés suivantes :

  • target_dir : indiquez le chemin de destination des images. Par exemple /home/pi/motion  (créé précédemment)
  • stream_localhost : passez le paramètre à off pour que Motion soit accessible depuis un autre ordinateur sur le réseau local

Enregistrez avec CTRL+X puis Y

Si Motion semble ne pas fonctionner, c’est qu’il pointe vers le répertoire /etc pour charger le fichier de configuration. dans ce cas, copiez le fichier de configuration avec la commande cp par exemple.

sudo cp /etc/motion/motion.conf /etc/motion.conf

Autoriser le deamon Motion à se lancer au démarrage

Pour que Motion puisse se lancer au démarrage du système, il faut modifier un dernier fichier de configuration.

sudo nano /etc/default/motion

Modifiez le paramètre start_motion_daemon=yes puis enregistrez.

Démarrer manuellement Motion

Maintenant on peut démarrer Motion via son service

sudo /etc/init.d/motion start

Ouvrez un navigateur et saisissez l’adresse ip de votre Orange Pi sur le port 8081 (par défaut).

3urn90spyqclqkwixa7h-9335821

Après une modification du fichier de configuration, il faudra redémarrer Motion pour tenir compte des nouveaux paramètres :

sudo /etc/init.d/motion restart

Motion crash après quelques secondes

Durant la mise au point de cet article, j’ai rencontré quelques difficultés, et notamment le crash de Motion après quelques secondes de fonctionnement. Quelque soit le problème rencontré, le mieux est de commencer par activer le journal des événements de Motion. Ouvrez le fichier de configuration

sudo nano /etc/motion/motion.conf

puis cherchez la ligne qui commence par logfile et enlevé le point virgule.

# Use a file to save logs messages, if not defined stderr and syslog is used. (default: not defined)
logfile /tmp/motion.log

Redémarrez le service Motion

sudo /etc/init.d/motion restart

Maintenant, vous disposez d’un log qu’il suffit d’ouvrir pour voir ce qui fait planter Motion

nano /tmp/motion.log

Dans mon cas, c’est au moment de la détection d’un événement et plus particulièrement au moment d’enregistrer l’image dans le dossier de destination que Motion plantait.

[1] [NTC] [ALL] [Dec 01 08:39:54] motion_detected: Motion detected - starting event 1
[1] [ERR] [ALL] [Dec 01 08:39:54] myfopen: Error opening file /var/lib/motion/01-20161201083954-01.jpg $
[1] [ERR] [ALL] [Dec 01 08:39:54] put_picture: Can't write picture to file /var/lib/motion/01-201612010$
Thread is going to finish due to this fatal error:
[1] [NTC] [ALL] [Dec 01 08:39:55] motion_loop: Thread exiting
[1] [NTC] [STR] [Dec 01 08:39:55] stream_stop: Closing motion-stream listen socket & active motion-stre$
[1] [NTC] [STR] [Dec 01 08:39:55] stream_stop: Closed motion-stream listen socket & active motion-strea$
[1] [NTC] [VID] [Dec 01 08:39:55] vid_close: Closing video device /dev/video0
[0] [NTC] [ALL] [Dec 01 08:39:55] main: Threads finished
[0] [NTC] [STR] [Dec 01 08:39:55] httpd_run: motion-httpd - Finishing
[0] [NTC] [STR] [Dec 01 08:39:55] httpd_run: motion-httpd Closing
[0] [NTC] [STR] [Dec 01 08:39:55] motion_web_control: motion-httpd thread exit

Il suffit donc d’attribuer les permissions au répertoire pour permettre à Motion d’écrire dans le répertoire. Mais ce n’est pas une très bonne idée de toucher à ce répertoire.

sudo chmod 777 /var/lib/motion

En fait, j’avais tout simplement oublié de modifier le répertoire de destination des images dans le fichier de configuration.

Voilà, vous disposez maintenant d’une caméra de surveillance à détection de mouvement IP qu’il vous suffit d’inclure à votre serveur domotique.

Avez-vous aimé cet article ?