Table des matières:

Lecteur de code-barres parlant Raspberry Pi : 12 étapes
Lecteur de code-barres parlant Raspberry Pi : 12 étapes

Vidéo: Lecteur de code-barres parlant Raspberry Pi : 12 étapes

Vidéo: Lecteur de code-barres parlant Raspberry Pi : 12 étapes
Vidéo: Home Assistant - первые настройки, File Editor, Maria DB, HACS - октябрь 2023 2024, Peut
Anonim
Lecteur de code-barres parlant Raspberry Pi
Lecteur de code-barres parlant Raspberry Pi

Fig.1 Scanner de codes-barres de DX.com

Aperçu

Mise à jour: Une courte démo vidéo est disponible

Ma mère ne peut plus lire les étiquettes sur les produits d'épicerie, alors je suis allé chercher des solutions. Après avoir vu que les lecteurs de codes-barres pour aveugles coûtaient plusieurs centaines de dollars, j'ai voulu voir ce qui pouvait être fait en utilisant un Raspberry Pi et un lecteur de codes-barres USB.

Une autre imitation clé était que cela devrait fonctionner SANS connexion Internet (comme dans un magasin ou chez un ami). La base de données et la synthèse vocale devaient donc être autonomes.

J'ai essayé une version basée sur une caméra de lecteur de codes à barres, mais l'éclairage et la position de la caméra ont causé des problèmes de fiabilité pour une personne incapable de voir clairement. Celles-ci nécessitaient également une vue pour configurer et utiliser l'application. Je suis donc passé à un lecteur de codes à barres USB Laser, d'autant plus qu'ils sont maintenant disponibles pour moins de 30 $ et que le Raspbian Jessie les prend en charge dès la sortie de la boîte.

J'ai également essayé le nouveau Amazon Dash Wand, mais il ne parle pas de l'élément numérisé et il nécessite une connexion Internet pour fonctionner.

L'idée était de scanner un article et de demander au Raspberry d'interroger une base de données interne de codes UPC, puis de prononcer la description du produit à l'aide de la synthèse vocale.

Afin de rendre l'unité aussi petite que possible, j'ai voulu utiliser un Raspberry Pi Zero. Je voulais aussi faire fonctionner l'appareil sur batterie.

Pour répondre à ces exigences, certains compromis ont été nécessaires. Étant donné que le Zero n'a pas de prise audio externe, j'ai réutilisé la conception audio de mon projet « Earthquake Pi » car il était peu coûteux (environ 6 $) et très petit. Alternativement, il peut être possible de remplacer "One Transistor Audio for Pi Zero".

Pour le scanner de codes à barres laser, j'en ai trouvé un sur DX.com. Il est alimenté par le Raspberry USB et coûte environ 25 $. (voir pièces ci-dessous)

Étape 1: MISE À JOUR

Avec l'arrivée du Raspberry Pi Zero W, je vais passer à celui-ci. Ici, tout est identique, sauf que vous devez configurer la connexion WiFi au Pi. Cela signifie que vous n'aurez pas besoin d'un concentrateur USB pour le Zero pour la configuration et l'utilisation.

Vous pouvez configurer le WiFi en utilisant:

thepihut.com/blogs/raspberry-pi-tutorials/…

Le saviez-vous?

Si vous installez Raspbian Jessie sur une carte SD à l'aide d'un PC Windows, vous pouvez créer deux fichiers sur la carte pour configurer l'accès WiFi et SSH avant de la démarrer sur un Raspberry ?

Pour cela, supposons que votre carte SD est actuellement montée en tant que K: sur votre PC:

1) Installez la dernière image Raspbian Jessie sur la SD. Pour ce projet, Jessie Lite devrait fonctionner.

www.raspberrypi.org/downloads/raspbian/

2) Avec le bloc-notes, créez un fichier appelé simplement "ssh" et utilisez Enregistrer sous "Tous les fichiers" dans K:\ssh

Le fichier peut contenir n'importe quoi. C'est le nom du fichier qui est important. Ne doit PAS être « ssh.txt » !!!

3) Avec le bloc-notes, créez un fichier appelé "wpa_supplicant.conf" avec ce qui suit:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1

réseau={

ssid="mySSID" psk="mypassword" key_mgmt=WPA-PSK }

Utilisez Enregistrer sous "Tous les fichiers" dans K:\wpa_supplicant.conf Encore une fois, ne laissez pas le Bloc-notes le changer en "wpa_supplicant.conf.txt" !!

Lorsque vous démarrez le Raspberry pour la première fois, Jessie les recherche et se connecte à votre Wifi. Vous devrez cependant rechercher l'adresse IP sur votre routeur, car elle est automatiquement attribuée.

Étape 2: Liste des pièces

  • Raspberry Pi Zero (ou n'importe quel Raspberry Pi, si la taille n'est pas un problème)
  • Lecteur de codes-barres laser USB

    www.dx.com/p/ls-4209-laser-bar-code-scanner…

  • Pour Raspi Zero, ajoutez l'amplificateur Adafruit I2S 3W classe Dhttps://www.adafruit.com/products/3006
  • Petit haut-parleur. (Pour Pi 2, 3, utilisez un ampli et un haut-parleur externes.)https://www.adafruit.com/product/1890
  • Adaptateur USB Micro vers USB OTGhttps://www.adafruit.com/products/2910
  • Batterie USB 5V 1Amp telle que
  • Câble USB vers micro USB pour batterie.
  • Hub USB et Ethernet (au moins pour le travail de configuration initial, pas nécessaire pour Zero W ou Raspi 2, 3)https://www.adafruit.com/products/2992
  • Logiciel de GITHUB:

Étape 3: Lecteur de codes à barres laser USB

Lecteur de codes à barres laser USB
Lecteur de codes à barres laser USB

Les lecteurs de codes-barres laser sont plus tolérants dans leur capacité à numériser une étiquette UPC que les caméras. Ils fonctionnent également bien même dans des étiquettes mal éclairées ou mal placées.

Vous aurez besoin du micro adaptateur USB vers USB pour le brancher sur le Zero.

La poignée et la gâchette du scanner le rendent facile à utiliser.

Il donne également un retour lorsqu'il numérise avec succès une étiquette.

À faire à l'avenir:

Dans la conception finale, je couperais le câble pour le raccourcir et je le souderais directement aux broches USB du Zero pour réduire la taille et la probabilité d'une défaillance du connecteur. Le Zero et la batterie seraient fixés directement au bas de la poignée du scanner dans un boîtier imprimé en 3D.

Étape 4: Base de données UPC

C'est la partie la plus mal couverte du projet, car il existe littéralement des millions de codes UPC et très peu de bases de données open source disponibles au téléchargement. Malheureusement, la plupart des bases de données UPC sont assez chères et nécessitent une connectivité Internet.

J'ai pu rassembler quelques bases de données open source (sources en annexe ci-dessous), mais même avec près de 700 000 éléments, un grand nombre en manque.

À cette fin, j'ai fait deux choses; l'une consiste à se concentrer spécifiquement sur les produits d'épicerie et l'autre consiste à ajouter un serveur Web au Raspberry pour permettre l'ajout manuel de nouveaux codes UPC, bien que cela nécessite au moins une connectivité réseau locale.

À faire à l'avenir:

Je ferais du Zero W un "hotspot" afin que vous puissiez vous y connecter n'importe où pour ajouter de nouveaux codes UPC.

Étape 5: Text-to-Speech

J'ai utilisé le programme de synthèse vocale appelé "Flite", car il offrait le meilleur compromis entre la qualité de la voix et la vitesse de conversion sur le Zero. D'autres sonnaient un peu mieux, mais étaient trop lents à se convertir.

Vous pouvez également consulter le tutoriel d'Adafruit:

Notez qu'il faudra un peu "d'entraînement de l'oreille" pour s'habituer à l'inflexion de la parole, mais ce n'est pas trop mal.

Le balayage à nouveau du même élément répétera l'audio.

Future ToDo

Peut-être ajouter une prise casque afin de permettre aux personnes âgées d'entendre plus facilement la voix dans les endroits bruyants.

Étape 6: Alimentation par batterie

Le système peut fonctionner à partir d'une batterie USB 5V, comme celle utilisée pour recharger les téléphones portables.

Le hic, c'est que lorsque vous débranchez la batterie ou que la batterie meurt, le Pi se bloque avec un risque de corrompre le lecteur SD.

Pour résoudre ce problème, un bouton qui exécute une commande d'arrêt est nécessaire. J'en utiliserai probablement un comme ceci:

www.element14.com/community/docs/DOC-78055…

(Oui… un autre "Future ToDo !")

Étape 7: Partie I - Ajout d'audio à Pi Zero

Partie I - Ajout d'audio à Pi Zero
Partie I - Ajout d'audio à Pi Zero
Partie I - Ajout d'audio à Pi Zero
Partie I - Ajout d'audio à Pi Zero
Partie I - Ajout d'audio à Pi Zero
Partie I - Ajout d'audio à Pi Zero

(Sautez cette partie si vous n'utilisez pas de zéro !)

Sur un Pi Zero, vous devrez ajouter de l'audio externe, car il n'est pas intégré. J'ai utilisé l'amplificateur à faible coût "Adafruit I2S 3W Amplifier Breakout MAX98357A"

Cela nécessite une configuration à l'aide de l'excellent didacticiel d'Adafruit à l'adresse:

Comme indiqué dans la partie câblage du tutoriel, connectez:

• Amp Vin à Raspi Zero Pi 5V• Amp GND à Raspi Zero Pi GND • Amp DIN à Raspi Zero Pi #21 • Amp BCLK à Raspi Zero Pi #18 • Amp LRCLK à Raspi Zero Pi #19

Connectez un petit haut-parleur aux fils audio de la carte.

Configuration du logiciel audio Pi Zero AdafruitÉgalement illustré dans le didacticiel de configuration du logiciel Adafruit, exécutez la commande CURL ci-dessous:

$ curl -sS https://raw.githubusercontent.com/adafruit/Raspbe…> | frapper

Après le redémarrage, testez l'audio à l'aide de speaker-test:

$ speaker-test -c2 --test=wav -w /usr/share/sounds/alsa/Front_Center.wav

Si vous rencontrez des problèmes, revenez au didacticiel Adafruit en commençant par la vue d'ensemble. Vous devrez peut-être suivre les étapes « Installation détaillée » du didacticiel pour vérifier tous les fichiers mis à jour.

Étapes importantes requises pour l'audio Zero et Max98357: par défaut, l'audio ALSA ne fonctionne qu'en stéréo tandis que la synthèse vocale Flite est mono. De plus, l'audio contient des « pops » à chaque fois qu'il commence à jouer.

(Voir:

Vous devez effectuer les opérations suivantes:

1) Ajoutez une ligne à /boot/config.txt

$ sudo nano /boot/config.txt

dtoverlay=i2s-mmap

2) Remplacez /etc/asound.conf

$ sudo nano /etc/asound.conf

pcm.hifiberry { tapez hw card 0 } pcm.!default { tapez plug slave.pcm "dmixer" } pcm.dmixer { tapez dmix ipc_key 1024 slave { pcm "hifiberry" canaux 2 } } ctl.dmixer { tapez hw card 0 }

3) Redémarrez votre Pi.

Essayez à nouveau le test du haut-parleur. Cela devrait sonner mieux maintenant. Une fois que vous avez terminé le didacticiel de configuration, y compris les tests audio, le son devrait être prêt.

Notez que vous voudrez peut-être ajouter une prise casque pour l'audio, si vous l'apportez dans une épicerie ou dans un environnement bruyant.

Étape 8: Partie II – Installation du logiciel

Cela suppose que vous avez déjà installé Raspbian Jessie et que vous pouvez accéder à la ligne de commande Linux. Vous n'avez pas besoin de la version GUI de Raspbian, mais vous pouvez l'utiliser.

Vous n'avez PAS besoin du scanner USB branché pour le moment, au cas où vous auriez besoin du port USB pour Ethernet ou clavier/souris.

Assurez-vous que votre système d'exploitation est à jour:

$ sudo apt-get update$ sudo apt-get upgrade

À partir de la ligne de commande, accédez au répertoire personnel de pi et téléchargez le référentiel GITHUB:

$ cd /home/pi$ sudo apt install git $ git clone https://github.com/rgrokett/TalkingBarcodeReader….> https://github.com/rgrokett/TalkingBarcodeReader….> $ cd TalkingBarcodeReader $./install. sh

Cela prendra un certain temps, en particulier si c'est la première fois et que le serveur Web et PHP doivent être installés ou mis à jour. Si nécessaire, vous pouvez l'exécuter plusieurs fois. Entre autres choses, cela installe les fichiers de codes-barres et la base de données UPC sur: /var/www/html/upc

Ensuite, éditez /etc/rc.local et ajoutez la ligne suivante avant le "exit 0"

$ sudo nano /etc/rc.local

fi sudo /var/www/html/upc/bin/run.sh sortie 0

Une fois l'installation terminée, éteignez votre Pi, branchez le lecteur de code-barres USB et redémarrez.

$ sudo s'arrête maintenant

Remettez-le sous tension et vous devriez entendre un court discours de démarrage.

Si c'est le cas, essayez de scanner un code à barres d'un article d'épicerie. Si tout s'est bien passé, vous devriez l'entendre prononcer l'élément (ou dire « Not Found »). Sinon, consultez ensuite le guide de dépannage.

Étape 9: Dépannage

Dépannage
Dépannage

Si vous n'entendez aucun son, vous devrez essayer les commandes suivantes:

1) Vérifiez que la synthèse vocale fonctionne:

$ sudo flite -voice awb -t "test"

Si vous obtenez une erreur, assurez-vous que flite a été installé:

$ sudo apt installer flite

Si vous obtenez l'erreur suivante, assurez-vous d'avoir mis à jour /boot/config.txt et /etc/asound.conf indiqués dans la section Configuration audio ci-dessus sur Raspi Zero: audio_open_alsa: n'a pas réussi à définir le nombre de canaux sur 1. Argument non valide.

Si vous n'obtenez aucune erreur et aucun son, assurez-vous que votre audio Raspberry fonctionne.

sudo aplay /usr/share/sounds/alsa/Front_Center.wav

1) Vous devrez peut-être forcer la sortie audio de la prise audio: (voir fig.1 ci-dessus)

$ sudo raspi-config -> 7 Options avancées -> Audio A4

2) Une fois que vous avez vérifié la qualité de l'audio et de la synthèse vocale, vérifiez le lecteur de code-barres:

cd /var/www/html/upc/binsudo python./test.py

Vous devriez voir un numéro de code-barres numérique s'afficher lorsque vous scannez un code-barres. (Le programme de test n'inclut PAS la sortie audio ou les connexions à la base de données.)

3) Si tout cela est bon, vérifiez le fichier "nohup.out" pour les messages d'erreur:

cd /var/www/html/upc/binsudo chat nohup.out

Les problèmes probables sont des packages manquants ou de mauvaises autorisations (ou des BUG dans le code !). Assurez-vous que votre système d'exploitation est à jour et réexécutez le fichier install.sh.

J'espère que vous travaillez maintenant !

Étape 10: Partie III – Serveur Web

Partie III – Serveur Web
Partie III – Serveur Web

Comme il existe des MILLIONS de codes UPC et que la plupart des bases de données accessibles au public (c'est-à-dire gratuites) ne sont qu'un petit sous-ensemble de codes, ce projet s'est concentré sur les codes UPC pour l'épicerie. Il comprend plusieurs centaines de milliers d'articles, mais beaucoup, beaucoup ne seront pas trouvés.

Si vous devez ajouter ou mettre à jour la base de données UPC, deux programmes sont disponibles; un en ligne de commande et un dans un navigateur Web. (remplacez les chiffres par votre numéro d'article UPC)

$ cd /var/www/html/upc/bin

$ sudo./addDB.sh 01234567890 "Mon nouvel élément"

Cela ajoutera un enregistrement à la base de données. Sinon, il est suggéré d'utiliser la fonction DB du navigateur Web.

Pour l'interface graphique du serveur Web, vous avez besoin de l'adresse IP de votre framboise.

Pour trouver l'adresse IP, vous pouvez utiliser:

$ nom d'hôte -I 192.168.1.108

Depuis un navigateur PC, allez sur: https://192.168.1.108/upc/Vous devriez voir un écran similaire à celui de la Fig.2 ci-dessus.

Si tel est le cas, vous pouvez ajouter/mettre à jour et supprimer des enregistrements. Accédez à la dernière page en utilisant le bouton ('>|') "dernier enregistrement" pour voir vos enregistrements les plus récents lorsqu'ils sont ajoutés à la fin de la base de données.

SÉCURITÉREMARQUE que ce service Web n'est pas sécurisé (pas d'authentification, pas de SSL), il est donc préférable de ne pas l'exposer à l'Internet public. (Mais comme il n'est pas configuré comme un point d'accès WiFi, il peut être transporté en toute sécurité jusqu'au magasin.)

Cependant, puisqu'il n'y a pas de données privées dessus, le pire qui puisse arriver est que quelqu'un manipule les données UPC.

Vous pouvez également limiter l'accès à des adresses IP spécifiques afin que personne d'autre ne puisse entrer. Remplacez simplement les adresses IP ici par celles que vous souhaitez autoriser. L'accès à tous les autres sera bloqué:

$ sudo vi /etc/lighttpd/lighttpd.conf

$HTTP["remoteip"] =~ "127.0.0.1|192.168.1.108" { url.access-deny = ("") } $ sudo /etc/init.d/lighttpd restart

Aussi, CHANGEZ le mot de passe PI par défaut ! Tout le monde sait que la valeur par défaut est pi/raspberry

$ mot de passe

Étape 11: Dépannage du serveur Web

Dépannage du serveur Web
Dépannage du serveur Web
Dépannage du serveur Web
Dépannage du serveur Web

À l'aide de votre navigateur, accédez à l'adresse IP de votre Raspberry, comme ceci:

192.168.1.108/

Vous devriez voir l'écran par défaut de /var/www/html/index.html (Fig.1 ci-dessus)

Assurez-vous également que le serveur Web est en cours d'exécution:

$ ps -ef|grep lighttpd

Pour vérifier que PHP est bon, créez un fichier de test php:

$ sudo nano /var/www/html/phpinfo.php

Allez ensuite sur

Vous devriez voir un écran comme la Fig.2 ci-dessus

Si vous obtenez des erreurs ou des écrans vides, vérifiez les erreurs dans

$ sudo cat /var/log/lighttpd/error.log

Encore une fois, la réexécution du fichier install.sh peut corriger les dépendances manquantes.

Étape 12: Annexe

Un GRAND MERCI à ce qui suit pour avoir mis à disposition une grande base de données UPC.

Ouvrir Épicerie UPC DB

www.grocery.com/open-grocery-database-proje…

BD de données ouvertes

www.grocery.com/open-grocery-database-proje…

www.upc-search.org/perl/upc-search.pl?q=84…

Merci à EasyUI pour l'interface graphique Web CRUD simple

www.jeasyui.com/index.php

Conseillé: