From 15806e203f96fc9a1846a96a07d0ec779faebe85 Mon Sep 17 00:00:00 2001 From: Puissegur Alexis <alexis.puissegur@insa-rennes.fr> Date: Tue, 27 Nov 2018 16:04:05 +0100 Subject: [PATCH] organizing --- core/thingz.ino.txt | 126 ++++++++++++++++++++++++++++++++++++++++++++ doc/CDC.txt | 22 ++++++++ 2 files changed, 148 insertions(+) create mode 100644 core/thingz.ino.txt create mode 100644 doc/CDC.txt diff --git a/core/thingz.ino.txt b/core/thingz.ino.txt new file mode 100644 index 0000000..8331a8d --- /dev/null +++ b/core/thingz.ino.txt @@ -0,0 +1,126 @@ +#include "Bouton.h" +#include "Led.h" +#include "Meteo.h" +#include "Screen.h" +#include "Luminosite.h" +#include "Bluetooth.h" +#include "Son.h" +#define SPAN 3000 +#define HEADER_LIGHT_ON "LIGHT" +#define HEADER_SOUND_ON "SOUND" +#define REMAINING_TIME 10000 +#define FAb4 740 +#define LAb4 932 +/* +Thingz prend ses mesures et envoie les données à l'appli java (toutes les 5mins par ex) +l'appli java est une IHM configurable qui : + affiche les données en temps réel sur des graphiques + sait s'il faut arroser la plante ou non + envoie un mail au prof si besoin pour arroser + envoie via bluetooth si arrosage possible ou urgent et si en semaine ou weekend + son plus ou moins long + +Messages bluetooth : +LIGHT; +SOUND;WEEKEND +SOUND;SEMAINE +*/ + +Bouton monBouton1; +Led maLed1; +Meteo meteo; +Screen monEcran1; +Bluetooth bluetooth; +Luminosite luminosite; +Son buzzer; +int humi; +int lumi; +int temp; +unsigned long timeStamp; +boolean ledHasToBeTurnedOn; +unsigned long timePushed; +unsigned long alarmTimeStamp; + +void setup() +{ + temp = 0; + lumi = 0; + humi = 0; + timeStamp = 0; + ledHasToBeTurnedOn = false; + timePushed = 0; + alarmTimeStamp = 0; +} + +void updateSensors(){ + temp = meteo.temperature(); + lumi = luminosite.etat(); + humi = meteo.getHumidity(); +} +void display(){ + monEcran1.setContrast(70, false); + updateSensors(); + monEcran1.printMsg("CRYING PLANT !",0); + monEcran1.printMsg(((String)"TEMP : ") + temp,2); + monEcran1.printMsg(((String)"HUMI : ") + humi,3); + monEcran1.printMsg(((String)"LUMI : ") + lumi,4); +} + +void sendBluetoothDataToServer(){ + +} + +void dealWithSound(String data){ + if(0){ // on weekend then water + + } else { // on weekday then trigger the alarm for 5min + alarmTimeStamp = millis(); + } +} + +void receiveFromBluetooth() { + String buffer; + + if (bluetooth.dataAvailable()){ + buffer = bluetooth.receive(); + } + + if (buffer.startsWith(HEADER_LIGHT_ON)){ + // DO NOTHING YET + } + else if (buffer.startsWith(HEADER_SOUND_ON)){ + dealWithSound(buffer); // change + } +} + + +void fireAlarm(){ + buzzer.tone(FAb4,600); + buzzer.tone(LAb4,200); +} + +void loop() +{ + +if(millis() - timePushed < REMAINING_TIME){ + if(millis() - timeStamp > SPAN){ + timeStamp = millis(); + display(); + } +} else { + monEcran1.clear(); + monEcran1.setContrast(0, false); + } + + if (monBouton1.estTenuAppuye()) { + timePushed = millis(); + maLed1.inverse(); + } + + if(millis() - alarmTimeStamp < REMAINING_TIME && millis() > REMAINING_TIME){ + fireAlarm(); + } + +} + + diff --git a/doc/CDC.txt b/doc/CDC.txt new file mode 100644 index 0000000..0a2b557 --- /dev/null +++ b/doc/CDC.txt @@ -0,0 +1,22 @@ +La plante qui pleure (Thingz) - Cahier des charges + +FAIT : +lire l’humidité +afficher l’humidité à l’écran +lire et afficher la température à l’écran +lire et afficher l’intensité lumineuse à l’écran +n’afficher la température et l’humidité que pendant 5 minutes après qu’on ait appuyé sur le bouton + +PAS FAIT : +calculer s’il y a besoin d’arroser (peut prendre en compte aussi la température) +Si besoin d’arroser, allumer la LED bleue +allumer LED que si mouvement détecté dans la pièce dans les 15 dernières minutes +émettre un signal sonore si le besoin d‘arrosage est vraiment urgent et si mouvement détecté dans la pièce dans les 15 dernières minutes + + +Utiliser le bouton qui tourne (poteur ?) pour régler le seuil d’humidité critique (seuil à partir duquel l‘arrosage est demandé (et du coup afficher ce seuil sur l’écran) + +Bluetooth (important pour que ce soit un objet CONNECTE) : +envoyer toutes les 5 minutes à un PC les données (température, humidité, luminosité, seuil d’humidité de la plante) +c’est l’application PC qui détermine s’il y a besoin d’arroser. si on est en semaine, demander à Thingz d’allumer la LED et faire du buzz à la détection de mouvement. Si c’est le week-end : déclencher l’arrosage d’urgence +arrosage d’urgence : allumer la prise connectée, sur laquelle est branchée un ventilateur. Autour de l’axe du ventilateur est accroché une ficelle qui tient un couvercle hermétique en papier sous un verre d’eau à l’envers dans le pot de la plante. -- GitLab