Ceci est une ancienne révision du document !
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
- Envoie une notification si c’est l’heure d’arroser
- Envoie une notification si l’herbe est trop haute
Données paramétrables
- Réglage de la hauteur d’herbe désirée
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
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)
- petite boîte étanche pour le capteur de luminosité (dimensions : 30x30x15) (voir croquis).
- une partie ouvrable à l'arrière permettant d'accéder à la partie ouvrable de la boîte étanche
- 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
Le Code Sources et les dll : wcomp_sources_et_dll_.zip
Serveur UPNP sur raspbian
Le Code Sources python : serveur_upnp_sur_raspbian.zip
Interface Utilisateur (Serveur RESTful)
Le Code Sources python : interface_utilisateur_serveur_restful_.zip
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)
- MessagingBean (API mail)
- Weather (API météo)
La partie 3 permet de choisir :
- URI de l'objet : l'IP et le port utilisé par l'objet avec Device Spy (le port est fixé dans le code).
- L'adresse mail de l'utilisateur : l'adresse à laquelle est envoyé les informations sur le jardin.
- URL de l'interface (à travers un service RESTful) : l'IP de la machine où s’exécute le serveur RESTful python.
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
- 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:
- Installer Grove Pi : git clone https://github.com/DexterInd/GrovePi.git
- 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