lecture de plaques d’immatriculation avec un Raspberry

Cet article explique l’installation d’un contrôle d’accès (pour un portail, un garage…) avec un système de lecture de plaques d’immatriculation.

Le principe est le suivant

  • Une caméra lit la plaque d’immatriculation
  • Une vérification est faite dans une base de données si la plaque existe
  • Un relais active l’ouverture du portail

Le matériel utilisé

  • Un Raspberry Pi 4
  • Un relais (SRD-05VDC-SL-C)
  • Une caméra IP permettant de récupérer un flux web (mjpeg). Dans notre cas, il s’agit d’une caméra Foscam FI9853EP
  • Une porte de garage motorisée qui s’ouvre/ferme par contact 0 ou 1

Les logiciel utilisés

  • OpenALPR : permet la lecture des plaques
  • Motion : permet de diffuser de manière continue le flux vidéo sur un mini serveur web.
    note : ce logiciel n’est pas forcément nécessaire si OpenALPR sait lire directement la caméra IP. Ce qui n’a pas été le cas avec une caméra Foscam FI9853EP.
  • Winringpi : permet d’utiliser les GPIO via le shell
  • Apache2/php : permet d’effectuer le script pour l’activation du relais

Schéma de câblage

EN COURS D’ELABORATION

Installation d’OpenALPR

Tout d’abord on effectue les mises à jour

# apt-get update
# apt-get upgrade

Puis on installe les pré-requis

# sudo apt-get install libopencv-dev libtesseract-dev git cmake build-essential libleptonica-dev curl libcurl3-dev beanstalkd openjdk-9-jdk liblog4cplus-dev

Installation d’OpenALPR en root (su)

# cd /usr/src/
# git clone https://github.com/openalpr/openalpr.git
# cd openalpr/src/
# mkdir build
# cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_INSTALL_SYSCONFDIR:PATH=/etc ..
# make
# make install

Test d’OpenALPR

Pour tester le fonctionnement d’ALPR, il suffit de prendre une photo avec une plaque et d’excuter la commande suivante :

# alpr -c eu /CHEMIN_IMAGE/imagePlaque.jpg
plate0: 10 results
    – XXXXXXX   confidence: 94.613
    – XXXXXXX   confidence: 86.8539
    – XXXXXXX   confidence: 86.3835
    – XXXXXXX   confidence: 85.7991
    – XXXXXXX   confidence: 85.3924
    – XXXXXXX   confidence: 85.2979
    – XXXXXXX   confidence: 84.2329
    – XXXXXXX   confidence: 82.5712
    – XXXXXXX   confidence: 82.2972
    – XXXXXXX   confidence: 81.9308

Configuration d’OpenALPR

# sudo vi /etc/openalpr/openalprd.conf

[daemon]
; Spécifier ici les codes pays et région des plaques à lire.
country = eu
pattern = fr
; Spécifier le nom de l’entreprise
company_id = NOM ENTREPRISE
; Spécifier le nom du site
site_id = NOM SITE

; adresse de la caméra IP accessible par le web
; stream = http://IP_CAMERA:PORT/cgi-bin/CGIStream.cgi?cmd=GetMJStream&usr=USER&pwd=PASSWORD
; dans notre cas, nous utiliserons l’application motion sur le port 8081
stream = http://127.0.0.1:8081

; topn is the number of possible plate character variations to report ;topn = 5
; Determines whether images that contain plates should be stored to disk
; store_plates = 1
; store_plates_location = /home/pi/plateimages/

; Envoi des données (POST) vers une page http (ici le serveur localhost sur lequel nous créerons notre script php)
upload_data = 1
upload_address = http://localhost/

Installation de motion

# sudo apt-get install motion

Puis éditer le fichier de configuration en rajoutant l’URL de la caméra

# sudo vi /etc/motion/motion.conf

# Full Network Camera URL. Valid Services: http:// ftp:// mjpg:// rtsp:// mjpeg:// file:// rtmp://
netcam_url http://IP_CAMERA:PORT/cgi-bin/CCGIStream.cgi?cmd=GetMJStream&usr=USER&pwd=PASSWORD

Les caméras HD de la marque FOSCAM ne possèdent pas, par défaut, de flux MJPEG.
Néanmoins, Foscam a laissé sur certains modèles (FI9821 V2 par exemple) la possibilité de “convertir” le flux secondaire, initialement H264, en MJPEG.
Pour ce faire, il faut utiliser ces deux APIs:

Pour convertir le flux secondaire : 

http://IP_CAMERA:PORT/cgi-bin/CGIProxy.fcgi?usr=USER&pwd=PASSWORD&cmd=setSubStreamFormat&format=1

Pour visualiser le flux une fois converti : 

http://IP_CAMERA:PORT/cgi-bin/CGIStream.cgi?cmd=GetMJStream&usr=USER&pwd=PASSWORD

Ensuite, vous devez pouvoir visualiser la caméra en saisissant l’adresse du Raspberry dans un naivgateur :

http://IP_RASPBERRY:8081/

Installation de winringpi

Winringpri va permettre de contrôler les GPIO du raspberry afin d’activer le relais pour l’ouverture du portail.

# wget https://project-downloads.drogon.net/wiringpi-latest.deb
# sudo dpkg -i wiringpi-latest.de

Installation d’Apache/Php

# apt-get install apache2 php7.3

Puis on créé un fichier index.php. Dans notre exemple nous utilisons les commandes gpio mode pour inverser le sens du pin 7.

Théoriquement, il faudrait utiliser le mode out uniquement, et activer (1) et désactiver (0) le pin 7. Dans mon cas, même en désactivant le pin 7, il y a un peu de courant qui laissé actif le relais. Pour résoudre ce problème, il semblerait qu’il faut utiliser un Transistor MOSFET, que je n’ai pu tester pour l’instant.

# cd /var/www/html/
# sudo rm index.html
# sudo vi index.php

<?php
   //ON RECUPERE LE JSON ENVOYE EN POST PAR OpenALPR
   $json = file_get_contents(‘php://input’);

   $data = json_decode($json);

   $plaqueRecup = print_r($data->{‘results’}[0]->{‘plate’},true);

   $plaque = “MA_PLAQUE_AUTORISEE”;

   if ($plaqueRecup==$plaque ){
      shell_exec(‘gpio mode 7 out’);
      sleep(2);
      shell_exec(‘gpio mode 7 in’);
   }
?>

Sources :

http://tutoriels.domotique-store.fr/content/72/286/fr/utiliser-une-camera-ip-foscam-hd-avec-une-box-domotique.html#MJPEG

gbajart Written by:

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *