Différences entre versions de « Projets:Application multimètre parlant »
Ligne 76 : | Ligne 76 : | ||
<br clear=all> | <br clear=all> | ||
+ | {| class="wikitable" | ||
+ | |+ Texte de la légende | ||
+ | |- | ||
+ | ! pos. !!début !! longueur!!Contenu | ||
+ | |- | ||
+ | | Octet 0 : || 0 || 5 || Pos.sélecteur / type de mesure partie 2 | ||
+ | |- | ||
+ | | Octet 0 : ||5 || 1 || Dépassement de capacité | ||
+ | |- | ||
+ | | Octet 0 : || 6 || 2 || Nombre de décimales | ||
+ | |- | ||
+ | | Octet 1 : || 0 || 8 || Pos.sélecteur / type de mesure partie 1 | ||
+ | |- | ||
+ | | Octet 2 :|| 0 || 4 || inusité | ||
+ | |- | ||
+ | | Octet 2 || 4 || 1 || Batterie faible | ||
+ | |- | ||
+ | | Octet 2 || 5 || 1 || Range auto | ||
+ | |- | ||
+ | | Octet 2 || 6 || 1 || Mode relatif | ||
+ | |- | ||
+ | | Octet 2 || 7 || 1 || Mode "hold" | ||
+ | |- | ||
+ | | Octet 3 || 0 || 8 || inusité | ||
+ | |- | ||
+ | | Octet 4 || 0 || 8|| Valeur mesurée partie 2 | ||
+ | |- | ||
+ | | Octet 5 || 0 || 1 || Signe | ||
+ | |- | ||
+ | | Octet 5 || 1 || 7 || Valeur mesurée partie 1 | ||
+ | |} | ||
− | + | ||
− | + | Pour accéder au type de mesure, il faut donc intervertir les octet 0 et 1 afin d’obtenir un mot de 16 bits en appliquant le calcul suivant : (octet1 * (2^8)) OR octet0 | |
− | + | ||
− | + | Cela nous donnera un mot de 16 bits en Big endian (bit de poids le plus faible à droite) ainsi formé : | |
− | + | ||
− | + | ||
− | + | [[File:Screenshot from 2024-10-04 10-15-59.png|700px]] | |
− | + | ||
− | + | ||
− | + | {| class="wikitable" | |
− | + | |+ Texte de la légende | |
− | + | |- | |
− | + | ! Pos. début !! Longueur !! Contenu | |
− | + | |- | |
+ | | 0 || 13 || Pos.sélecteur / type de mesure | ||
+ | |- | ||
+ | | 13 || 1 || Dépassement de capacité | ||
+ | |- | ||
+ | | 14|| 2|| Nbre de décimales | ||
+ | |} | ||
+ | |||
+ | |||
+ | On applique la même transformation aux octets 4 et 5 pour accéder à la valeur de la mesure. | ||
+ | |||
+ | |||
+ | (octet5 * (2^8)) OR octet4 | ||
+ | |||
+ | |||
+ | Ce qui nous donne le mot de 16 bits suivant : | ||
+ | |||
+ | [[File:Screenshot from 2024-10-04 10-16-05.png|700px]] | ||
+ | |||
+ | |||
+ | {| class="wikitable" | ||
+ | |+ Texte de la légende | ||
+ | |- | ||
+ | ! 0 !! 1 !! Signe | ||
+ | |- | ||
+ | | 1 || 15 || Valeur mesurée | ||
+ | |} | ||
+ | |||
+ | |||
+ | NB : Pour obtenir le signe, il faut tester la valeur de l’octet 5 avant transformation. | ||
+ | |||
+ | |||
+ | Si celui-ci est inférieur à 128, c’est une mesure positive. Sinon il faut multiplier par -1 le résultat. | ||
+ | |||
+ | |||
+ | Exemple : | ||
+ | |||
+ | Si octet 5 < 128 valeur = ((octet5 * 2^8) OR octet4) / 10^NbDecimales | ||
+ | Sinon valeur = ((((octet5 - 2^7) * 2^8) OR octet4) / 10^NbDecimales) * -1 | ||
== Cahier des charges == | == Cahier des charges == |
Version du 4 octobre 2024 à 09:41
Application multimètre parlant
400pxLa propriété « A image principale » (comme le type de page) avec la valeur d’entrée « File: » contient des caractères non valides ou est incomplète, et donc peut provoquer des résultats inattendus lors d’une requête ou d’un processus d’annotation. | |
---|---|
Informations | |
Description | Application pour PC en Python 3 qui permet d'accéder aux mesures d'un Multimètre OWON16 via liaison BLE. Compatible avec NVDA |
Catégorie | Malvoyance |
Etat d'avancement | En cours |
Techniques | BLE, Python"Python" n’est pas dans la liste (android, appinventor, arduino, BLE, bluetooth, bricolage, couture, découpe laser, esp, fixation, ...) de valeurs autorisées pour la propriété "A techniques". |
Durée de fabrication | |
Coût matériel | De 10 à 50 euros |
Niveau | |
Licence | by-sa |
Date de création | 2023-01-10 |
Équipe | |
Porteur de projet | Francois LB |
Contributeurs | Elektron, Francois LB, Sébastien (Atelier partagé fablab Betton), Ylc |
Fabmanager | Delphine |
Référent documentation | Delphine, Francois LB |
Partenaires: | L'atelier partagé (Betton) |
Nom humanlab | Humanlab_MHK |
Documentation | |
Statut de la documentation | Partielle |
Relecture de la documentation | Non vérifiée |
Description du projet
Brève description des fonctionnalité du programme sur smartphone énonçant vocalement les mesure faites par un multimètre OWON 16B ou 18B
Les multimètres OWON 16B ou 18b ont la capacité d’émettre en Bluetooth les données affichées.
L’application OWON_v2 développée sous App Inventor se connecte donc automatiquement au multimètre lorsque celui-ci est allumé et que sa fonction Bluetooth est activée. Elle est destinée aux personnes mal-voyantes pour lesquelles la lecture de l’écran du multimètre est impossible.
Elle affiche les informations qui permettent cette connexion automatique. Il s’agit de l’adresse mac du multimètre ainsi que les UUID du service et de sa caractéristique effectuant la notification des données en BLE.
L’écran affiche le détail des données transmises dans le flot de données BLE. Ce sont :
- Le nombre de décimales de la valeur mesurée,
- Si cette mesure est en dépassement de capacité ou non
- La position du sélecteur ou le type de mesure effectué
- Si le mode « Hold » est activé ou non
- Si le mode relatif est activé ou non
- Si le mode « range auto » est activé ou non
- Si la batterie est faible ou non
- Le résultat signé de la mesure
La moitié inférieure de l’écran constitue un énorme bouton (accessible de ce fait facilement par une personne mal voyante).
Si on presse brièvement sur ce bouton on entend l’énoncé de la mesure en cours.
Si cette mesure est en dépassement de capacité, un message vocal le signalant se substitue à la valeur.
Si on presse plus longuement ce même bouton, la liste des champs listés ci-dessus sont énumérés avec la valeur de leur état actuel.
Tout changement de position du sélecteur sur le multimètre déclenche automatiquement l’énoncé du type de mesure. (millivolts, volts, ohms, hertz, ...etc).
Tout appui sur un bouton du multimètre modifiant le type de mesure ou son état provoque automatiquement l’annonce vocale de ce changement avec son nouvel état.
Si la batterie et faible un message d’alerte vocale se fait entendre automatiquement toutes les 5 minutes.
Nb : si par erreur on tourne le sélecteur dans le mauvais sens et qu’on éteint le multimètre, il suffit de le rallumer et de réactiver la fonction BLE pour que le smartphone s’y reconnecte automatiquement.
Annexe 1 : Transmission BLE
Le multimètre est identifié par son adresse MAC. (Par exemple : A6:C0:80:90:2D:DB) Il suffit de donc changer celle-ci pour utiliser un autre multimètre. Par contre les identifiants de service et de notification sont toujours les mêmes. C’est cet ensemble MAC / UUID service / UUID caractéristique qui permet la connexion automatique du smartphone au multimètre.
UUID du service : 0000fff0-0000-1000-8000-00805f9b34fb
UUID de la caractéristique de notification : 0000fff4-0000-1000-8000-00805f9b34fb
Les données émises par le multimètre sont constituées d’un ensemble de 6 octets au format Little endian par groupes de 2 octets avec dans chaque octet le bit de poids le plus faible à droite.
En voici la description :
pos. | début | longueur | Contenu |
---|---|---|---|
Octet 0 : | 0 | 5 | Pos.sélecteur / type de mesure partie 2 |
Octet 0 : | 5 | 1 | Dépassement de capacité |
Octet 0 : | 6 | 2 | Nombre de décimales |
Octet 1 : | 0 | 8 | Pos.sélecteur / type de mesure partie 1 |
Octet 2 : | 0 | 4 | inusité |
Octet 2 | 4 | 1 | Batterie faible |
Octet 2 | 5 | 1 | Range auto |
Octet 2 | 6 | 1 | Mode relatif |
Octet 2 | 7 | 1 | Mode "hold" |
Octet 3 | 0 | 8 | inusité |
Octet 4 | 0 | 8 | Valeur mesurée partie 2 |
Octet 5 | 0 | 1 | Signe |
Octet 5 | 1 | 7 | Valeur mesurée partie 1 |
Pour accéder au type de mesure, il faut donc intervertir les octet 0 et 1 afin d’obtenir un mot de 16 bits en appliquant le calcul suivant : (octet1 * (2^8)) OR octet0
Cela nous donnera un mot de 16 bits en Big endian (bit de poids le plus faible à droite) ainsi formé :
Pos. début | Longueur | Contenu |
---|---|---|
0 | 13 | Pos.sélecteur / type de mesure |
13 | 1 | Dépassement de capacité |
14 | 2 | Nbre de décimales |
On applique la même transformation aux octets 4 et 5 pour accéder à la valeur de la mesure.
(octet5 * (2^8)) OR octet4
Ce qui nous donne le mot de 16 bits suivant :
0 | 1 | Signe |
---|---|---|
1 | 15 | Valeur mesurée |
NB : Pour obtenir le signe, il faut tester la valeur de l’octet 5 avant transformation.
Si celui-ci est inférieur à 128, c’est une mesure positive. Sinon il faut multiplier par -1 le résultat.
Exemple :
Si octet 5 < 128 valeur = ((octet5 * 2^8) OR octet4) / 10^NbDecimales
Sinon valeur = ((((octet5 - 2^7) * 2^8) OR octet4) / 10^NbDecimales) * -1