fixed readme

master
Yorick GEOFFRE 2 years ago
parent 81fe022640
commit 37d2a69b91

@ -0,0 +1,5 @@
{
"files.associations": {
"EF_Analysis.C": "cpp"
}
}

@ -78,3 +78,42 @@ As for the SDK setup, you'll need the sailfish SDK (latest), **and this is impor
## Licensing
this app uses the standard GPL V3 licence found here:
https://www.gnu.org/licenses/gpl-3.0.en.html#license-text
### formatted readme
this part of the readme if formatted following an evalutation grid, ignore it if you just want to use the app:
### Descriptif
Thermi2c est une application qui utilise la fonctionnalité TOH du jolla 1 pour connecter, contrôler et afficher la vue d'une caméra thermique MLX90640
### Usage
Il suffit de démarrer l'application, elle s'occupe automatiquement d'activer le VDD de la TOH et de se mettre en mode démo si elle ne trouve pas la caméra thermique.
# Techniques de programmation utilisées
## Modèle
### boucles
Les boucles dans cette application n'utilisent pas de QTimer déjà faits mais utilisent un timer threadé custom. Ce timer prend une durée de timeout et une `Command` abstraite à exécuter à l'issue du timeout. Si le timeout est dépassé le timer exécute la `Command` en flux tendu (pas de délai, mais pas de sur-exécution).
### driver melexis
La caméra dispose d'un driver en C offert part melexis, ila été objectifié et retravaillé pour fonctionner avec le téléphone.
### driver I2C
Le driver I2C est largement inspiré de celui de l'outil communautaire de contrôle de la TOH `I2C toolkit`. Le code a été quasiment entièrement refait pour être plus efficace, supporter le chunking et l'écriture random dans un environnement d'adressage 16 bits (la caméra utilise des registres 16 bits). Les méthodes `Read` et `Write` d'`i2cif` ont ainsi été refaites.
## UI
### thêmes
Une liste sillica pull-down est utilisée pour changer les couleurs de la vue thermique, ces couleurs sont définies par des `ColorAttributer` dans le modèle qui contiennent plusieurs `QColor` liées à une valeur entre 0.0 et 1.0. Post-normalisation des valeurs de la caméra thermique (X-> y à 0.0 -> 1.0), ces couleurs sont interpolées pour créer la vue finale à travers le `thermalRenderer`, qui va utiliser le `colorAttributer` actif pour colorer les données.
### Capture
Il est possible de capturer la vue graphique actuelle via un bouton, elle sera alors upscale à 160x120 pixels avant d'être sauvegardée dans la gallerie (bouton appareil photo)
### paramètres
Une fenêtre de paramètres peut être ouverte en appuyant sur le bouton ⚙️. Cette fenêtre modifie les paramètres de FPS max (10 conseillé), taux "d'aplatissement" des données thermique (0->50%), et ceux de génératiuon de bruit (mode démo). On n'utilise pas les QSettings pour éviter qu'une mauvaise config rende l'application inutilisable même après un redémarrage (paramètres de fps > 20...).
### Bugs connus
pas vraiment un bug mais la performance côté UI est vraiment mauvaise, 32x24 rectangles à mettre à jour à chaque frame c'est trop, j'aurais dû créer une image de 32x24 pixels, et l'upscale à 320x240 avant de l'afficher, c'est très efficace et je sais que ça marche dans mon casque:
https://codefirst.iut.uca.fr/git/yorick.geoffre/ARHS-Thermx
Egalement l'algo de melexis pour enlever le damier crée par l'interlacing de l'image fonctionne de manière peu fiable... celui d'adafruit est mieux.
### Précisions
Le fait que la fréquence de la TOH soit bloquée à 100khz et pas 400 comme recommandé par melexis empêche d'atteindre les hauts fps dont je sais ce capteur capable. Avec les limitations actuelles si l'ui était rendue plus efficace on pourrait atteindre ~20 fps (avant d'arriver aux limites pratiques de bandwith même avec chunking).
Loading…
Cancel
Save