# Outil de détection de chute libre

## Auteurs

|Nom|Prénom|login|email|
|--|--|--|--|
|Kacimi|Souhail|ks194320|souhail.kacimi@etu.univ-lehavre.fr|
|Kerné|Niels|kn175318|niels.kerne@etu.univ-lehavre.fr|

## installation électronique

Notre installation comprend :
- un arduino
- un accéléromètre
- une led
- une résistance de 120 Ohms

Le schéma d’installation est comme suis :

![schéma électronique](schema_electronique.png "schéma électronique")

## La chute libre

La détection de la chute libre se fait grâce à accéléromètre. Lorsqu’un objet est en chute libre cela signifie 
que l’objet n’est plus soumise à la [gravité](https://fr.wikipedia.org/wiki/Gravitation), la gravité est une accélération. 
Elle est donc mesurable par notre accéléromètre.

[Notre accéléromètre](https://lastminuteengineers.com/adxl335-accelerometer-arduino-tutorial/) se compose de trois axes : x, y et z. Il faut donc vérifier si la valeur est égal à zéro. 
Cependant notre accéléromètre n’est pas si précis. Nous avons décidé que nous sommes en chute libre lorsque la valeur 
absolue de tous les axes est inférieur à 0,3. 

Lors de la détection de la chute libre nous utilisons le port Serial pour aficher le message "Down". Nous lançons ensuite
un délai de deux secondes pour empêcher que les rebonds soient détecté comme d'autres chutes.

## Architecture docker

Pour faciliter l'exécution de notre projet on a mis en place une architecture docker qui comporte : 
- **Un conteneur serveur** qui interagit avec l'arduino et qui permet de transmettre les données au client.
- **Un conteneur interface-web** qui permet de lancer l'enregistrement sur les chutes en affichant un graphique réalisé avec **d3js**, et qui permet de faire cela en temps réel.
- **Un conteneur mongodb** pour enregistrer les données.
- **Un conteneur mongo-express** pour la manipulation de la base de données mongo.

## Utilisation

1. Réalisation du montage.
1. Exécution du fichier [chute.ino](https://www-apps.univ-lehavre.fr/forge/ks194320/projet-finale-arduino-kacimi-niels/-/blob/master/chute/chute.ino)
1. Lancer le docker-compose avec la commande `docker-compose up -d`.
1.  Se rendre dans le navigateur à l'adresse [http://localhost:3000](http://localhost:3000)
1. Commencer l'enregistrement des chutes

