Différences entre versions de « Projets:Read For Me V3 »
Ligne 223 : | Ligne 223 : | ||
===Cablâge=== | ===Cablâge=== | ||
+ | |||
+ | '''Schémas de cablage''' | ||
+ | |||
+ | |||
+ | [[File:RFM3_circuit_principe.png|700px|Schéma de principe du circuit électronique]] | ||
+ | |||
+ | [[File:RFM3_gpio.png|700px|Schéma de connection des broches GPIO]] | ||
+ | |||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | !scope="col"| Broche | ||
+ | !scope="col"| Bouton/fonction | ||
+ | |- | ||
+ | | 3 | ||
+ | | On/Off | ||
+ | |- | ||
+ | | 5 | ||
+ | | Annuler | ||
+ | |- | ||
+ | | 6 | ||
+ | | Capture | ||
+ | |- | ||
+ | | 13 | ||
+ | | Volume + | ||
+ | |- | ||
+ | | 19 | ||
+ | | Volume - | ||
+ | |- | ||
+ | | 26 | ||
+ | | Vitesse de lecture + | ||
+ | |- | ||
+ | | 23 | ||
+ | | Vitesse de lecture - | ||
+ | |- | ||
+ | | 20 | ||
+ | | Play/pause | ||
+ | |- | ||
+ | | 16 | ||
+ | | Avancer | ||
+ | |- | ||
+ | | 12 | ||
+ | | Reculer | ||
+ | |- | ||
+ | | 7 | ||
+ | | Niveau batterie (non implémenté) | ||
+ | } | ||
+ | |||
+ | |||
+ | '''Circuit audio''' | ||
+ | |||
+ | [[File:RFM3_cablage_audio.jpg|700px|]] | ||
+ | |||
+ | [[File:RFM3_cablage_boutons.jpg|700px|]] | ||
+ | |||
==Durée de fabrication du prototype final== | ==Durée de fabrication du prototype final== | ||
Ligne 256 : | Ligne 311 : | ||
Il y a des problème de qualité optique avec le capteur actuel pour laquelle une partie de la page est floue. | Il y a des problème de qualité optique avec le capteur actuel pour laquelle une partie de la page est floue. | ||
On essaie donc une nouvelle raspicam version 2.1 avec 8 megapixels au lieu de 5, et les résultats semblent effectivement bien meilleurs. | On essaie donc une nouvelle raspicam version 2.1 avec 8 megapixels au lieu de 5, et les résultats semblent effectivement bien meilleurs. | ||
+ | |||
+ | **Calcul théorique de la distance de prise de vue** | ||
+ | |||
+ | [[File:RFM_focale.jpg| 700px| Schéma : Calcul théorique de la focale]] | ||
+ | |||
+ | D'après [https://blog.i2s.fr/calculer-la-focale-de-lobjectif-de-votre-camera-0/ ce tutoriel], on peut calculer la distance de la caméra à la page (D) en fonction de la taille du capteur (y), de la distance focale (f) et de la taille de la page (Y) : | ||
+ | |||
+ | D = (f * Y) / y | ||
+ | |||
+ | Le capteur fait 1/4" soit **3,6 x 2,7 mm**, avec une focale de **3,04 mm** | ||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | !scope="col"| direction | ||
+ | !scope="col"| distance focale | ||
+ | !scope="col"| taille du capteur | ||
+ | !scope="col"| taille de la page | ||
+ | !scope="col"| distance obtenue | ||
+ | |- | ||
+ | | Largeur | ||
+ | | 3,04 | ||
+ | | 2,7 | ||
+ | | 240 | ||
+ | | 236 | ||
+ | |- | ||
+ | | Hauteur | ||
+ | | 3,04 | ||
+ | | 3,6 | ||
+ | | 297 | ||
+ | | 253 | ||
+ | |- | ||
+ | | Hauteur + marge (15mm) | ||
+ | | 3,04 | ||
+ | | 3,6 | ||
+ | | 330 | ||
+ | | 280.5 | ||
+ | |} | ||
+ | |||
+ | On obtient une hauteur théorique du capteur de 28cm. | ||
+ | |||
====Éclairage leds==== | ====Éclairage leds==== | ||
Ligne 287 : | Ligne 382 : | ||
===Software=== | ===Software=== | ||
− | ==== Bouton On/Off ==== | + | ====Contrôle de la lecture avec mplayer==== |
+ | |||
+ | |||
+ | |||
+ | ====Bouton On/Off==== | ||
<span style="color:#FFFFFF; background:#00C000; padding:5px"> Testé et fonctionnel</span> | <span style="color:#FFFFFF; background:#00C000; padding:5px"> Testé et fonctionnel</span> | ||
Ligne 294 : | Ligne 393 : | ||
L'astuce est donc de conserver la même broche que celle qui permet d'allumer le Raspi (<code>GPIO3</code>) pour appeler une fonction dans <code>PiTextReader</code>. Au premier appui, on peut donc demander à l'utilisateur d'appuyer une seconde fois pour confirmer l'extinction. | L'astuce est donc de conserver la même broche que celle qui permet d'allumer le Raspi (<code>GPIO3</code>) pour appeler une fonction dans <code>PiTextReader</code>. Au premier appui, on peut donc demander à l'utilisateur d'appuyer une seconde fois pour confirmer l'extinction. | ||
− | ==== Pico TTs ==== | + | ====Pico TTs==== |
<span style="color:#FFFFFF; background:#00C000; padding:5px"> Testé et fonctionnel</span> | <span style="color:#FFFFFF; background:#00C000; padding:5px"> Testé et fonctionnel</span> | ||
Ligne 318 : | Ligne 417 : | ||
* <code>reader.py</code> contient les fonctions de prise de vue et de traitement des données jusqu'à l'obtention d'un fichier audio. | * <code>reader.py</code> contient les fonctions de prise de vue et de traitement des données jusqu'à l'obtention d'un fichier audio. | ||
* <code>player.py</code> contient un objet permettant le lire les fichiers audio et de modifier les paramètres de lecture en direct via <code>mplayer</code> | * <code>player.py</code> contient un objet permettant le lire les fichiers audio et de modifier les paramètres de lecture en direct via <code>mplayer</code> | ||
+ | |||
+ | ====Comparaison des performances entre les Raspberry Pi 3 et 4==== | ||
+ | |||
==Conclusion du Fabrikarium== | ==Conclusion du Fabrikarium== | ||
+ | |||
+ | ===Pistes d'amélioration=== | ||
+ | |||
+ | * | ||
+ | |||
+ | ==Ressources== | ||
+ | |||
+ | - [https://circuitdigest.com/microcontroller-projects/best-text-to-speech-tts-converter-for-raspberry-pi-espeak-festival-google-tts-pico-and-pyttsx3 Comparaison de logiciels Text-to-Speech] | ||
==Journal de bord== | ==Journal de bord== |
Version du 8 novembre 2021 à 18:40
Description du projet
Le but est de créer une machine à lire capable d’acquérir le texte à partir d'une capture d'image et de le lire au moyen d’une synthèse vocale.
Historique du projet
- Le projet est basé sur PiTextReader
- Il a été initié lors du Fabrikarium 2020 : Read_For_Me (V1)
- Puis développé lors de l'événement "Focus Vision" : Read_For_Me_V2
Version actuelle
Le code est disponible sur github.
Objectif du Fabrikarium
1. Design
- Revoir le design pour augmenter la stabilité
2. Fonctionnalités
- Améliorer le séquencement
- Améliorer l'OCR (multicolomne)
- Rendre fonctionnel le bouton On/Off
- Ajouter un haut parleur
3. Performance
- Améliorer les performances
Autres pistes et questions :
- Détection automatique de l'orientation du texte (portrait/paysage)
Cahier des charges
Voir le cahier des charges de la V1
Analyse de l'existant
Voir l'analyse de l'existant de la V1
Equipe (Porteur de projet et contributeurs)
- Porteurs du projet : François, Laurence
- Concepteurs/contributeurs : Jean-Jacques, Audrey, Roger, Marie, Déborah, Quentin, Florian, Rémi
- Fabmanager référent :
- Responsable de documentation : Laurent
Matériel nécessaire et coût
- 1 Raspberry pi 4 ou 3 modèle B
- 1 caméra pour Raspberry Pi
- 1 batterie 5V USB avec deux sorties USB
- du ruban LED RVB addressable
- 1 enceinte
- 1 circuit d'amplification
- CP peuplier
- filament PLA pour impression 3d
Référence | coût unitaire | nombre | coût | liens |
---|---|---|---|---|
Raspberry pi 4 | 60€ | 1 | 60€ | kubii.fr |
Carte microSD 16Go | 10€ | 1 | 10€ | |
Module caméra Raspberry pi | 27,90€ | 1 | 27,90€ | kubii.fr |
Nappe Cable pour module caméra | 1€ | 1 | 1€ | kubii.fr |
Ampli audio mono | 14,90€ | 1 | 14,90€ | gotronic doc |
Haut parleur 80mm 5W 4ohms | 10,00€ | 1 | 10,00€ | |
Batterie portable USB 2 ports | 20€ | 1 | 20€ | |
Boutons poussoirs | 0.5€ | 11 | 5.5€ | |
Ruban led 2 x 8cm | 5€ | 1 | 5€ | |
Prise jack 3.5mm stéréo | 1€ | 1 | 1€ | |
Mini câble USB-A/USB-C | 2€ | 1 | 2€ |
- Stripboard pour fixer les boutons poussoir au boitier.
- Quelques petites vis pour fixer le Raspi au boitier
Outils nécessaires
- Imprimante 3d
- Découpeuse laser
- Fer à souder
Coût
Délai estimé
Fichiers source
Sources + fichiers machine
Remarque
Trois logiciels propriétaires ont été utilisés pour les deux prototypes.
Catia
pour le prototype 1Sketchup
pour le prototype 2Solidworks
pour les boutons
Les fichiers de sortie sont exploitables sans accès à ces logiciels (dxf pour les découpes et stl pour les impressions) mais c'est plus compliqué avec les fichier sources natifs de chaque logiciel.
Catia et solidworks peuvent produire des step, qui ne sont pas maillés contrairement au stl, mais qui ne permettent pas d'accéder aux "primitives" de modélisation.
Prototype 1
- Découpe CP 3mm pour le boitier (fichier
RFM_proto1_decoupe_boitier.dxf|svg
)
- Impression bras support de caméra en deux parties
Prototype 2
- Découpe CP 3mm pour le boitier (fichier
RFM_proto2_decoupe_CP_3mm.svg
)
- Impression entretoises et support de caméra
Etapes de fabrication pas à pas
Installation et configuration du Raspberry Pi
Fabrication Prototype 1
1. Découpe et impression des pièces
Voir les fichiers source plus haut.
2. Assemblage du boîtier
Pour ce prototype, les différents éléments sont fixés au pistolet à colle.
Fabrication Prototype 2
1. Découpe et impression des pièces
Voir les fichiers sources plus haut.
2. Assemblage du boîtier
Pour ce prototype, les différents éléments sont fixés à la superglue, et maintenus en place avec du ruban adhésif de peinture pendant la prise de la colle.
Cablâge
Schémas de cablage
Broche | Bouton/fonction | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3 | On/Off | ||||||||||||||||||||
5 | Annuler | ||||||||||||||||||||
6 | Capture | ||||||||||||||||||||
13 | Volume + | ||||||||||||||||||||
19 | Volume - | ||||||||||||||||||||
26 | Vitesse de lecture + | ||||||||||||||||||||
23 | Vitesse de lecture - | ||||||||||||||||||||
20 | Play/pause | ||||||||||||||||||||
16 | Avancer | ||||||||||||||||||||
12 | Reculer | ||||||||||||||||||||
7 | Niveau batterie (non implémenté)
}
Durée de fabrication du prototype finalDéveloppement du Fabrikarium 2021DesignAu regard du retour d'expérience sur les deux prototypes précédent au format "table", on décide d'abandonner l'idée et de revenir sur un boitier directement posé sur la table. Problème : nous ne disposons pas d'une nappe suffisament longue pour la déporter par dessus la feuille. Il est donc décidé de partir sur deux prototype :
Prototype 1Prototype 2HardwareChangement de capteurTesté et fonctionnel Il y a des problème de qualité optique avec le capteur actuel pour laquelle une partie de la page est floue. On essaie donc une nouvelle raspicam version 2.1 avec 8 megapixels au lieu de 5, et les résultats semblent effectivement bien meilleurs.
Schéma : Calcul théorique de la focale D'après ce tutoriel, on peut calculer la distance de la caméra à la page (D) en fonction de la taille du capteur (y), de la distance focale (f) et de la taille de la page (Y) : D = (f * Y) / y Le capteur fait 1/4" soit **3,6 x 2,7 mm**, avec une focale de **3,04 mm**
On obtient une hauteur théorique du capteur de 28cm.
Éclairage ledsTesté et fonctionnel Des leds avaient été ajoutée à la V1 puis retirées pour la V2. Elles semblent néanmoins indispensable si la lumière ambiante est insuffisante ou pour éviter les ombres projetées si elle est trop importante. Pour le Fabrikarium, nous disposons de ruban de leds RVB addressables. L'utilisation de leds addressables complexifie un peu la partie logicielle mais simplifie le circuit puisqu'elle ne necessite pas de circuit supplémentaire pour gérer la luminosité. Nous nous appuyons sur la documentation de NeoPixels sur Raspberry Pi par Adafruit. Après une série d'essais, il semble que seul la broche Haut parleur et prise jack 3.5mmpartiellement fonctionnel La version 1 avait un haut parleur intégré. La version 2 un haut parleur amplifié externe relié directement au Raspi par un jack stéréo 3,5mm ce qui rends la conception électronique beaucoup plus simple. Pour cette version 3 nous souhaitons donner le choix à l'utilisateur. Il y a donc un haut parleur interne, qui est désactivé lorsqu'un cable est connecté sur la prise jack du boitier. Documentation pour faire un by pass avec un jack Fabrication d'une rallong pour la nappe/câble du capteurNon fonctionnel Malgré un courage, une abnégation et une dextérité hors norme, Jean-Jacques n'est pas parvenu à réaliser une rallonge fonctionnelle pour la nappe du capteur. SoftwareContrôle de la lecture avec mplayerBouton On/OffTesté et fonctionnel En ajoutant une ligne dans le fichier de configuration du Raspi, il est possible de configurer la broche GPIO3 comme bouton On/Off d'un ordinateur. Cela pose cependant un pblème : si l'extinction est gérée directement par le Raspi, on ne peut pas prévenir les fausses manipulations, ni même prévenir l'utilisateur que le Raspi est effectivement éteint. L'astuce est donc de conserver la même broche que celle qui permet d'allumer le Raspi ( Pico TTsTesté et fonctionnel Transformer un fichier texte /usr/bin/pico2wave -l fr-FR -w /tmp/text.wav < /tmp/text.txt Nettoyage du scriptTesté et fonctionnel Le script python principale est Séparation en plusieurs fichiers
Comparaison des performances entre les Raspberry Pi 3 et 4Conclusion du FabrikariumPistes d'améliorationRessources- Comparaison de logiciels Text-to-Speech Journal de bordMardi matinPrésentation du projet et tour de tableDéfinition des enjeux
Répartition en 2 équipes et demi
- test de différentes optique et mise au point
- Remise en route du prototype V2 Mardi après-midiDesign : développement de deux versions
OCR
LedsAjout et contrôle de ruban led rgb Bouton on/offAllumer / éteindre le raspberry à partir du GPIO MercrediDesign
Code
Électronique
Documentation
|