Epine
Nom : Epine - Le Hérisson de Jardin Connecté
Groupe:
Stackler, Mathieu, mathieu.stackler@etu.unice.fr, IAM
Laborde, Quentin, qlaborde@polytech.unice.fr, IAM
Bin Sabari, Shafiq Daniel, bs200009@etu.unice.fr, IAM
Design
Scénario
Bob est un commercial de 45 ans. Il travaille énormément et n’a pas toujours le temps de s’occuper de son jardin. Un jour, son fils lui a acheté Epine, un hérisson connecté permettant d’obtenir des informations pratiques pour son jardin. En effet, une fois Epine planté dans le sol, il peut récolter des informations sur la luminosité, l’humidité de la terre, la hauteur de l’herbe. Ainsi ce dernier peut envoyer une notification à Bob lui disant que c’est le meilleur moment pour arroser si l’humidité de la terre est faible, que de la pluie n’est pas annoncée (API Météo) et baromètre ainsi que la luminosité. Il envoie également une notification si l’herbe est trop haute.
Équipements TIC
Services TIC & API
Récoltes de données
Hauteur de l'herbe
Pression atmosphérique
Humidité de la terre
Température
Humidité ambiante
Utilisation des données
Données paramétrables
Schéma de connexion
Description des différents éléments :
Orchestrateur : c'est le cœur de notre système, c'est lui qui récupère les informations de chaque serveur et qui les envoie aux serveurs qui en ont besoin.
Serveur hérisson : notre objet contenant les capteurs, utilisation de REST pour l'envoie des données avec l'orchestrateur car besoin d'envoyer les données une fois toutes les heures seulement.
Serveur météo : utilisation de l'
API OpenWeatherMap permettant d'avoir des données météorologiques à un endroit donné (ici avec longitude/latitude).
Serveur algorithme : c'est lui qui récupère les données du serveur hérisson et du serveur météo et qui fait les calculs pour répondre à nos services : “quand faut-il arroser ?” et “faut-il couper l'herbe ?”.
Serveur IHM : permet de créer une web app utilisable par l'utilisateur.
Serveur communication : dialogue avec l'utilisateur, via SMS.
Enveloppe de l'Objet 3D
Croquis
Emplacement Matériel et Connectique
La Raspberry Pi, la Grove Pi, la clef Wi-Fi et la batterie sont situés dans le corps du hérisson dans une boite étanche avec une ouverture étanche sur l’un des côté pour pouvoir rechercher la batterie (ouverture assez large pour débrancher la batterie de la Raspberry et la brancher sur une source externe).
Pour les capteurs :
Capteur d’humidité de la terre situé sous le hérisson (présence d’une partie conique sous le hérisson permettant de le planter dans le sol et de mettre ce capteur).
Capteur de luminosité situé sur son dos (extrusion d'un côté de l'hérisson) + vitre pour protéger
Capteur de distance situé sur le côté (extrusion d’un côté de l’hérisson)
Capteur de température situé dans la queue du hérisson
Prototype
/!\ N'ayant pas eu notre modèle 3D à temps, nous avons utilisé une Coccinelle comme coque /!\
Modèle 3D
Pour ce projet, nous voulons créer un modèle de la forme d'un hérisson.
Pour cela, nous allons créer deux coques:
-une boîte étanche (dimensions : 130x80x60)
4 trous pour les capteurs (dimensions : 15×10) (voir croquis)
une partie ouvrable à l'arrière (rechargement de la batterie, changement de matériel défectueux) qui reste étanche.
-une coque en forme de hérisson en ABS (dimensions : environ 200x100x80) (voir croquis)
- une partie conique creuse (voir croquis)
- une partie correspondant à la queue du Hérisson (dimensions : 40x20x20). Cette pièce doit être percée avant de laisser passer l'air (capteur de pression/température à l'intérieur).
Lien Google Drive pour la modèle 3D: Coque 3D
Pour toutes questions, n'hésitez pas à nous envoyer un mail.
Rendu Final
Code du projet (Sources et Binaires)
WComp
Serveur UPNP sur raspbian
Interface Utilisateur (Serveur RESTful)
Environnement Hard/Soft
WComp : SharpDevelop avec l'extentions WComp (sur Windows)
Interface Utilisateur : Interpréteur Python (sur Ubuntu ou mac)
Serveur UPNP sur raspbian (sur l'objet) : Connexion SSH avec la Raspberry + interpréteur Python
How To
WComp (sur windows)
Installation et lancement
Pour utiliser notre composition wcomp sur sharkDevelop :
→ Inclure tout les beans disponible ci-dessus :
Newtonsoft.Json.dll dans le dossier SharpDevelop/3.0/Beans (dans l'installation de SharpDevelop)
Le reste des beans dans Documents/WComp.NET/Beans (le dossier WComp.NET créer à l'installation de SharpDevelop)
→ Ouvrir un nouveau container dans l'IDE, importer le fichier testBean23.wcc (dernière version stable).
(Si des dépendances ne marchent pas, vérifier bien que vous avez tous les beans aux bons endroits)
La composition :
Utilisation et paramétrage
La composition à 6 parties interconnectées :
Le bean Epine qui interagie avec le service UPNP de notre objet (A gauche au centre)
The_smart_epine.UPnP2Bean
L'affichage des events de l'objet (A gauche en haut)
Les textboxs pour modifier certains paramètres (A gauche en bas)
Une partie Orchestrateur (Au centre)
UpDateValeurBoolCapteur
UpDateValeurDoubleCapteur
VerificationStatusJardin
Une partie serveur de calcul (A droite en haut)
serveurAlgo
Les interfaces avec les
API autre que l'objet (A droite en bas)
ClientInterface (connection avec le serveur RESTful)
-
-
La partie 3 permet de choisir :
Problèmes courants
- Si l'objet se déconnecte du réseau, il faut réimporter la composition pour de nouveau se connecté avec l'objet.
Serveur UPNP sur raspbian (sur l'objet)
1a. Démarrage depuis la carte SD fournie:
Être sur le réseau de l'Ubiquarium ou se connecter par Ethernet
Connexion avec nom utilisateur: pi et le mot de passe : epine
Par exemple avec ssh:
ssh pi@epine.local
Aller dans le dossier upnp : cd upnp
Brancher les capteurs (voir partie 2)
Lancer le fichier “epine.py” :
sudo python epine.py
1b. Démarrage sans la carte SD:
-
Copier le dossier upnp sur la raspberry : scp -rp chemin_vers_upnp/upnp pi@nom.local:~
Aller dans upnp : cd upnp
Brancher les capteurs (voir partie 2)
Lancer le service :
sudo python grovepi.py
2. Branchement des capteurs:
Capteur tempétature et humidité: branché sur le port D4
Capteur de distance: branché sur le port D3
Capteur luminosité: branché sur le port A0
Capteur humidité de la terre: branché sur le port A1
Capteur de pression: branché sur un des ports I2C
Interface Utilisateur (Serveur RESTful)
Afin d'avoir l'accès au interface web de l'Epine, il faut démarrer le serveur REST de l'interface en suivant la consigne de README dans le dossier EpineRest, puis en allant sur <adresse IP serveur>:5000 dans un navigateur web.