Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
cours:plim:projet16_17:gr17:gr17 [2017/02/17 09:48] bmessiha [Architecture logicielle de la solution :] |
cours:plim:projet16_17:gr17:gr17 [2017/02/19 23:43] (Version actuelle) bmessiha [Consommation de l’application:] |
||
---|---|---|---|
Ligne 10: | Ligne 10: | ||
==== Description et scénario d'utilisation ==== | ==== Description et scénario d'utilisation ==== | ||
- | L'idée est un détecteur du bruit qui peut calculer la puissance du son autour du portable (en dB), en tenant compte de sa géolocalisation et du temps, peut faire des statistiques pour ces valeurs et alors donne des rapports à l'utilisateur. L’intérêt est d'avertir l'utilisateur s'il y a du bruit troublant autour de lui pendant les différentes périodes de la journée. | + | L'idée est un détecteur du bruit qui peut calculer la puissance du son autour du portable (en dB), en tenant compte de sa géolocalisation et du temps, peut faire des statistiques pour ces valeurs et alors donne des rapports à l'utilisateur. L’intérêt est d'avertir l'utilisateur s'il y a du bruit troublant autour de lui pendant les différentes périodes de la journée, et aussi de lui donner un bilan simplifié du bruit auquel il est été exposé. |
**Scénario:** | **Scénario:** | ||
Ligne 19: | Ligne 19: | ||
**Cible Mobile utilisée :** | **Cible Mobile utilisée :** | ||
* Référence du SmartPhone: HTC One M8 Eye | * Référence du SmartPhone: HTC One M8 Eye | ||
- | * Caractéristiques techniques: | + | * Caractéristiques techniques: |
- | * [[http://www.gsmarena.com/htc_one_(m8_eye)-6713.php|Fiche technique du constructeur]] | + | * [[http://www.gsmarena.com/htc_one_(m8_eye)-6713.php|Fiche technique]] |
+ | * Capteurs: Acceleromètre, Gyro, Proximity, Compass | ||
+ | * Localisation: Yes, with A-GPS, GLONASS | ||
+ | * Connection: Wi-Fi 802.11 a/b/g/n, dual-band, Wi-Fi Direct, DLNA, hotspot | ||
+ | * Référence du SmartPhone: Sony Xperia Z2 | ||
+ | * Caractéristiques techniques: | ||
+ | * [[http://www.gsmarena.com/sony_xperia_z2-6144.php|Fiche technique]] | ||
* Capteurs: Acceleromètre, Gyro, Proximity, Compass | * Capteurs: Acceleromètre, Gyro, Proximity, Compass | ||
* Localisation: Yes, with A-GPS, GLONASS | * Localisation: Yes, with A-GPS, GLONASS | ||
Ligne 41: | Ligne 47: | ||
* Temps | * Temps | ||
* Liste des SDK et API pour l'accès à ces informations: | * Liste des SDK et API pour l'accès à ces informations: | ||
- | * Google Maps API | + | * Google Maps API |
+ | * Librairie d'affichage des graphs : https://github.com/PhilJay/MPAndroidChart/wiki/Getting-Started | ||
* Android SDK 6.0.1 | * Android SDK 6.0.1 | ||
- | * Environnement de logiciel : | ||
* Version OS : Android 6.0.1 | * Version OS : Android 6.0.1 | ||
+ | ==== Choix de technologies ==== | ||
+ | * Google Cloud (pour déployer le coté serveur): | ||
+ | * Pour supporter le calcul intense des d'algorithmes | ||
+ | * Pour que ça soit accessible dans n'importe location | ||
+ | * Firebase (pour déployer la base de données) | ||
+ | * Pour que ça soit accessible dans n'importe location | ||
+ | * Pour que ça soit accessible par le cloud et l'application mobile | ||
+ | * Persister les données: créer un cache local pour les données en cas de déconnexion | ||
==== Faisabilité des choix ==== | ==== Faisabilité des choix ==== | ||
* [[https://developer.android.com/reference/android/media/MediaRecorder.html|MediaRecorder]] pour capter le son | * [[https://developer.android.com/reference/android/media/MediaRecorder.html|MediaRecorder]] pour capter le son | ||
- | * Pour déterminer le seuil permis d'exposition continu {{:cours:plim:projet16_17:gr17:decibel_exposure_chart.gif?nolink&300|}} | + | * Calcul de l'intensité du son à l'aide d'une équation |
+ | * Pour déterminer le seuil permis d'exposition continu | ||
+ | *{{:cours:plim:projet16_17:gr17:decibel_exposure_chart.gif?nolink&400|}} | ||
==== Architecture logicielle de la solution :==== | ==== Architecture logicielle de la solution :==== | ||
Notre système se compose de: | Notre système se compose de: | ||
Ligne 64: | Ligne 80: | ||
* Appliquer les algorithmes d'apprentissage sur ces données | * Appliquer les algorithmes d'apprentissage sur ces données | ||
* Envoyer des réponses JSON pour l'application, contenant les résultats d'algorithme | * Envoyer des réponses JSON pour l'application, contenant les résultats d'algorithme | ||
+ | |||
+ | {{:cours:plim:projet16_17:gr17:overview-firebase-appengine-standard.png?nolink&600|}} | ||
==== Algorithmes mis en œuvre : ==== | ==== Algorithmes mis en œuvre : ==== | ||
* K-Means Clustering non-supervisé | * K-Means Clustering non-supervisé | ||
+ | * L'utilité du Clustering nous donne un rapport simplifié des données captées pendant le jour. On se base sur deux dimensions: Le temps et L'intensité du son et l’intérêt est de montrer à l'utilisateur pour quelle période de jour il était exposé pour quelle intensité. | ||
+ | | ||
+ | * Custom Clustering | ||
+ | * Pour éviter l'affichage de plusieurs marqueurs sur la carte pour la meme position, nous avons besoin de regrouper les positions qui sont proches (pour un certain rayon). Nous n'avons pas utilisé le K-means parce qu'on doit lui préciser le nombre des clusters, et dans ce cas, on ne peut pas connaitre ce type de donnée. Nous avons crée notre propre méthode pour regrouper les positions proches. | ||
+ | ===== RENDU FINAL ===== | ||
+ | |||
+ | Code Source sur github : https://github.com/eslamhossam23/ELIM/tree/Cloud | ||
+ | |||
+ | ==== Installation ==== | ||
+ | Il suffit d'installer l'application mobile sur votre smartphone Android, puisque le coté serveur et la base de données est sur cloud. | ||
+ | |||
+ | Téléchargement : télécharger l'APK suivant sur votre téléphone mobile : [[https://drive.google.com/file/d/0B-2v13jZ38fILWZTTU1Rc1pMMmc/view?usp=sharing|APK]] | ||
+ | * Choisir “Télécharger” | ||
+ | * Allez dans l'application “Téléchargement” et cliquez sur le fichier .apk | ||
+ | * Sélectionnez “Installer” | ||
+ | |||
+ | ====Fonctionnement de l’application:==== | ||
+ | |||
+ | Dès l'ouverture de l'application, le service de recording est activé. Il calcule l’intensité du son une fois chaque 30 second (le calcul d’une fois est effectivement 5 fois consécutives et on prend la moyenne afin d’éviter les anomalies). Puis le service enregistre chaque donnée au Firebase. | ||
+ | |||
+ | A l’interface principale, vous trouverez quatre boutons: Get Data, Show Map, KMeans et un bouton de capture écran. | ||
+ | |||
+ | {{:cours:plim:projet16_17:gr17:screenshot_20170219-232529.png?200|}} | ||
+ | * Le bouton Get Data demande les données directement enregistrées sous Firebase et dès qu’elles sont prêtes, on les affiche sur le graphe sans aucun calcul. | ||
+ | {{:cours:plim:projet16_17:gr17:untitled_presentation.png?200|}} | ||
+ | * Show Map permet le passage à la carte où on affichera les positions dans lesquelles le service a enregistré l’intensité du son, et aussi l’intensité moyenne dans cette position (si il y en a plusieurs). | ||
+ | {{:cours:plim:projet16_17:gr17:screenshot_20170219-232433.png?200|}} | ||
+ | * KMeans permet le passage à une autre interface qui vous donne le choix de représenter le résultat de l’algorithme sous forme d’un graphe. Plus un paragraphe dessous qui explique la résultat | ||
+ | {{:cours:plim:projet16_17:gr17:screenshot_20170219-232507.png?200|}} | ||
+ | {{:cours:plim:projet16_17:gr17:untitled_presentation1.png?200|}} | ||
+ | |||
+ | * Capture d’écran du graphe visible | ||
+ | Donnée sans calcul: | ||
+ | |||
+ | {{:cours:plim:projet16_17:gr17:img_6_17_1.jpg?200|}} | ||
+ | |||
+ | Resultat Kmeans: | ||
+ | |||
+ | {{:cours:plim:projet16_17:gr17:img_report_5_16_1.jpg?200|}} | ||
- | ===== Rendu Final ===== | + | ====Consommation de l’application:==== |
+ | Puisque l’application utilise un service activé tout le jour, il est alors indispensable d’évaluer la consommation d'énergie. Nous avons fait un petit test, nous avons laissé le service fonctionnant depuis minuit et pour 15 heures. La consommation était seulement 3%. | ||
+ | {{:cours:plim:projet16_17:gr17:screenshot_20170211-150659.png?200|}} |