Systèmes Numériques de l'esc@rgot Contrôle d’accès par lecture de plaques d’imm

Systèmes Numériques de l'esc@rgot Contrôle d’accès par lecture de plaques d’immatriculation (ALPR) Ce système permet d’autoriser l’accès à un parking par lecture des plaques d’immatriculation. Il s’appuie sur une caméra IP associée à une carte Raspberry Pi et le logiciel de reconnaissance de plaques openALPR. Une base de donnée mongoDB contient la liste des plaques autorisées. Le middleware est assuré par un “€ow” node- red. (liaison openALPR / mongoDB, déclenchement de l’ordre d’ouverture et IHM pour la gestion de la base) Diagramme de cas d’utilisation Véhicule Technicien Mise à jour base de données Entrée Sortie Contrôle d'accès places disponibles <<inclure>> <<inclure>> Afficheur affichage places disponibles Configuration système Génération de rapports <<étendre>> La lecture des plaques d’immatriculation va s’intégrer dans le cas d’utilisation « Contrôle d’accès ». L’ajout et la mise à jour de nouveaux véhicules sera lié au cas d’utilisation « Mise à jour de la base données ». Le système autorise l’accès au parking aux véhicules dont le numéro de plaque d’immatriculation est inscrit dans la base de données. Constitution du système Une caméra IP, elle sera positionnée an de capter la plaque d’immatriculation du véhicule lorsque ce dernier de présentera à l’entrée du parking. Une barrière automatisée. Elle est fermée par défaut et s’ouvre si la plaque du véhicule est reconnue. Un ordinateur qui contient la base de données des plaques autorisées, l’IHM web permettant la maintenance de la BDD, un logiciel de reconnaissance de plaques en relation avec la caméra IP et un interlogiciel (middleware) permettant de faire communiquer les di|érentes applications. Bdd Contrôle d’accès parking Accès Parking «block» Serveur Web «block» BDD «block» Ordinateur «block» Barrière «block» Caméra «block» Interface réseau «block» Logiciel Reconnaissance de plaques «block» Middleware Topologie du système Extension E/S TOR RESET ~10 ~11 12 GND 13 AREF 8 ~9 2 ~3 4 ~6 ~5 7 TX→1 RX←0 DIGITAL(PWM~) RESET-EN ON RX TX L MADE IN ITALY RESET 3.3V 5V GND GND Vin A0 A1 A2 A3 A4 A5 POWER ANALOG IN WWW.ARDUINO.CC ARDUINO TM UNO ICSP 16.000MHz 500J MEGA1 602 ATMEGA328P-PU USB Cablâge Filaire Barrière Automatique Caméra IP · Reconnaissance de plaques · Automate · Serveur BDD · Serveur WEB (IHM) Client Web Monitoring et maintenance base plaques Réseau Ethernet Solution retenue Matériels Une carte Raspberry (2 ou 3) / 16GB raspbian JESSIE (nov 2016) -> serveur Une carte Arduino avec le rmware Firmata Standard -> extension E/S Une caméra IP. On doit pouvoir accéder à l’image via le web. Pour l’exemple nous utiliserons une petite caméra motorisée db power clone d’une caméra FOSCAM FI8908W . Sur cette caméra, d’après la documentation , l’accès au €ux s’e|ectue à [1] [2] l’URL : Une barrière automatique pilotée par un signal logique (« 1 » ouverture, « 0 » fermeture). La barrière gère elle-même la sécurité de passage. Logiciels openALPR pour Raspberry : logiciel open source de reconnaissance de plaques d’immatriculation. MongoDB et mongoExpress : serveur de base de données et client web. NODE-RED avec node-red-contrib-gpio, node-red-dashboard, node-red-contrib- mongoDB2, ObjectID et mongoDB2 : logiciel de programmation orienté €ux, permettant l’interconnexion d’applications hétérogènes devant échanger des données. Installation Logicielle. Node-red dans une console lancer node-red : puis à l’aide d’un navigateur accéder à http://<ip raspberry>:1880 . Si le noeud Johnny5 est visible, il n’y a rien à faire sinon voir Réinstallation de node-red avec Johnny5 OpenAlpr voir openAlpr sur Raspberry Pi Base de données mongoDB voir installation de mongoDB et mongo-express Mise en oeuvre. é http://<IP_CAMERA>:<PORT_CAMERA>//videostream.cgi? user=admin&pwd=&resolution=32&rate=0 node-red-start Test de openALPR avec la caméra Compléter le chier et indiquer le chemin d’accès au €ux vidéo de la caméra IP Lancer la commande et placer une image comportant une plaque d’immatriculation devant la caméra Observer la console : /etc/openalpr/alprd.conf ; This configuration file overrides the default values specified ; in /usr/local/share/openalpr/config/alprd.defaults.conf [daemon] ; country determines the training dataset used for recognizing plates. Valid values are us, eu country = eu pattern = fr ; text name identifier for this location site_id = rpi01 ; Declare each stream on a separate line ; each unique stream should be defined as stream = [url] ; adresse de la camera IP accessible par le web stream = http://192.168.5.23:8080/videostream.cgi?user=admin&pwd=&resolution=32&rate=0 ; 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 = 0 store_plates_location = /home/pi/plateimages/ ; upload address is the destination to POST to upload_data = 1 upload_address = http://localhost:1880/plate/ alprd -f pi@Raspberry Pipi:~ $ alprd -f INFO - Running OpenALPR daemon in the foreground. INFO - Using: /etc/openalpr/alprd.conf for daemon configuration Missing config value for company_id Missing config value for pattern INFO - Using: /home/pi/plateimages/ for storing valid plate images INFO - country: fr -- config file: /etc/openalpr/openalpr.conf INFO - pattern: INFO - Stream 1: http://192.168.5.23:8080/videostream.cgi? user=admin&pwd=&resolution=32&rate=0 INFO - Starting camera 1 INFO - Video stream connecting... INFO - Video stream connected DEBUG - Writing plate AV865XG (rpi01-cam1- 1483036354101) to queue. Flux node-red Flux composé d’un node « http in », « http response » et « debug » Lors de la reconnaissance d’une plaque on obtient un objet msg.payload en sortie du node « http in » qui une fois remis en forme ressemble à ceci : On peut observer qu’il s’agit d’un objet JSON dont la propriété « results » est un tableau contenant les plaques reconnues avec leur score « condence ». On peut donc interroger l’objet msg.payload an d’en extraire le numéro de plaque. Pour cela on introduit un script { "version": 2, "data_type": "alpr_results", "epoch_time": 1483090959429, "img_width": 640, "img_height": 480, "processing_time_ms": 395.173157, "regions_of_interest": [], "results": [ { "plate": "AV865XG", "confidence": 90.980667, "matches_template": 0, "plate_index": 0, "region": "", "region_confidence": 0, "processing_time_ms": 171.828781, "requested_topn": 5, "coordinates": [ {… On peut alors voir le numéro de la plaque apparaitre dans la fenêtre de débogage Utilisation de mongoDB et ALPR dans node-red L’objectif est de comparer la plaque lue par alprd avec une plaque contenue dans la base de données. Ajout du node mongoDB2 à la palette de nodes : Sélectionner le Menu de Node-red -> Manage palette Sélectionner l’onglet « Install » Dans l’espace de recherche taper « mongo » On voit alors apparaitre les nodes disponibles. Cliquer sur le bouton « install » du node « node-red-contrib-mongoDB2 » Le nœud s’installe est devient alors disponible dans la palette des nodes. Installer aussi le node « node-red-contrib-objectid », il permet de gérer les propriétés « _id » des documents. Paramétrage du nœud mongoDB2 et test de connexion Faire glisser un node mongoDB2 dans l’espace de travail et l’éditer. Sélectionner « External service » puis cliquer sur le petit crayon an d’ajouter Ajouter un serveur, l’URI est normalement : une connexion au serveur mongoDB mongodb://localhost:27017/db Une fois le serveur paramétré, sélectionner « db » dans l’option « Server », compléter l’option « Collection » avec le nom de la collection « LicencePlate » enn dans « Operation » sélectionner « ndOne » et cliquer sur « Done » Ajouter un nœud « Inject » dans l’espace de travail et le paramétrer de la manière suivante : Compléter le €ow de la manière suivante : ajouter un node « json » et un node « debug ». Lier l’ensemble. Quand on clique sur le bouton du nœud inject, on voit apparaitre le document au format JSON dans la fenêtre de debug code du Flow (à importer via le clipboard) [{"id":"fcc8de73.b9a8e","type":"mongodb2 in","z":"de8a40ec.19323","service":"_ext_","con {"id":"fea87bf7.46af38","type":"inject","z":"de8a40ec.19323","name":"","topic":"","payloa Nous venons d’e|ectuer une requête dans la base mongoDB Reconnaissance d’une plaque d’immatriculation. En associant la gestion de la requête POST fournit par le logiciel alprd et une requête dans la base de données, on peut déterminer si l’accès est autorisé. code du Flow (à importer via le clipboard) Le script dans le node function (extraction num plaque) est le suivant : Le message de sortie sera donc de la forme : . Ce message sert d’argument d’entrée à la requête « count » du node mongoDB2. Autrement dit le node mongoDB2 va compter les documents qui contiennent un champ « immatriculation » ayant pour valeur « AV865XG ». Le message de sortie du node mongoDB sera un nombre. Si ce dernier vaut 0, c’est que le numéro de plaque n’est pas enregistré dans la base. Reste à commander l’ouverture de la barrière en fonction de cette information. Pour cela nous allons utiliser une carte Arduino qui sera pilotée par la carte Raspberry. [{"id":"cd7d103b.308a78","type":"mongoDB2 in","z":"1ee78c77.4f0c84","service":"_ext_","c {"id":"ae24a545.fb9ea","type":"debug","z":"1ee78c77.4f0c84","name":"","active":true,"cons {"id":"e36dbbe7.4063c8","type":"function","z":"1ee78c77.4f0c84","name":"extraction num p {"id":"b918e1ce.d2721","type":"debug","z":"1ee78c77.4f0c84","name":"","active":true,"cons {"id":"d3816939.e303e8","type":"mongoDB2","z":"","uri":"mongoDB://localhost:27017/db","na var plaque={}; plaque.immatriculation=msg.payload.results[0].plate; msg.payload=plaque; return msg; { "immatriculation": "AV865XG" } Compléter le €ow de la manière suivante en ajoutant les nœuds « switch », « trigger » et « gpio ». code du Flow (à importer via le clipboard) Le switch sera paramétré de la manière suivante : Le trigger : Le nœud gpio quant à lui sera paramétré pour piloter une broche digital d’une carte Arduino. La carte Arduino sera programmée avec le programme Firmata : (Menu chier > Exemples > Firmata > StandardFirmata ) puis connectée à la carte Raspberry Pi par un câble USB. Editer le uploads/Geographie/ controle-d-x27-acces-par-lecture-de-plaques-d-x27-immatriculation-alpr.pdf

  • 26
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager