Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Arduino]Station météo et exploitation des données

Enregistrement des données / Lecture sur écran / Vent Température

    3 mars 2020 à 11:10:47

    Hello,

     J’ai pour projet d’enregistrer sur plusieurs années différentes données météo dans mon jardin, notamment le vent et la température. Comme ça je pourrais montrer à mes enfants que oui, avant, en février il faisant moins de 35C° 😃

    Le produit final doit comprendre / permettre :

    • Sonde température / Sonde Humidité / Sonde vitesse vent / Sonde direction vent / Sonde pluie / Sonde qualité de l’air
    • Ecran affichant les données en direct.
    • Exploitation des données dans un tableur.

    Le point 3 exprime uniquement la finalité, je n’ai aucune idée de comment y parvenir, la seule chose que je ne veux pas c’est être dépendant d’un service web qui peut fermer du jour au lendemain. Et je trouve beaucoup d’exemple sur le net dans ce sens 

    Là j’ai besoin d’aide, de pistes.

    Je ne suis pas un pro en code et j’ai surtout oublié les bases mais j’ai déjà fait des projets Arduino et je pense que ça va revenir assez facilement. Par contre php, python : aucune notion, zéro.

    J’ai aussi besoin d’aide pour savoir comment découper mon projet. Je pense d’abord commencé uniquement avec une sonde de température et puis ensuite :

    • Projet 1 : Expérimentation pour récupérer des données sur mon pc/mac
    • Projet 2 : Récupération des données de la sonde T°
    • Projet 3 : Affichage sur écran LCD ou équivalent
    • Projet 4 : Faire fonctionner les 3 projets ensemble
    • Projet 5 : Ajouter toutes les autres sondes

    Est-ce la bonne méthode à votre avis ?

    Merci.

    • Partager sur Facebook
    • Partager sur Twitter
      3 mars 2020 à 15:43:32

      Hello,

      Je suis actuellement en train de réaliser une station météo et je me suis posé a peu près le même genre de questions.

      J'ai découpé le projet en plusieurs parties. La première avec 3 modules :
      - Le module central (ESP32 pour que la station soit connectée en wifi) avec capteur BME280 pour la pression atmosphérique.
      - Le module de température / humidité (SHT31) avec un boitier à coupelle.
      - Le module de particules fines (SDS011)

      Et à venir : pluviométrie, anémomètre, girouette.

      Et ensuite découpé la première partie en plusieurs projets :
      - Expérimentation pour afficher les valeurs des capteurs BME280, SHT31 puis SDS011 dans la console Serial.
      - La modélisation et l'impression 3D des boitiers.
      - Ajout de la connectivité wifi et d'un webservice pour afficher depuis un navigateur web les valeurs des capteurs.
      - Stocker l'historique des mesures. J'ai hésité entre enregistrer directement sur une carte SD ou bien utiliser une base de données sur un serveur tout en ayant la même exigence de ne pas être dépendant d'un service tier. J'ai pris la deuxième solution, la station météo vient pousser ses mesures toutes les 5min via un webservice hébergé en local qui stock ça dans une base de données mysql (sur un NAS par exemple).
      - Afficher l'historique : sur le NAS une page web fait les courbes avec les données enregistrées (avec la librairie HighStock).

      Ton découpage est bien, ça fait des petites taches qui donnent des objectifs à atteindre et donc ne pas se décourager. Vu que tu comptes stocker des données sur plusieurs années, tu dois également penser à des méthodes de sauvegarde des mesures.

      Après quelques mois d'utilisation il en ressort des graphes comme ça :

      • Partager sur Facebook
      • Partager sur Twitter
        3 mars 2020 à 23:53:39

        Merci. est ce que tu peux m'en dire un peu plus sur ce webservice en local ? Comment ça marche / quel connaissances / Des tutos à recommander ?
        • Partager sur Facebook
        • Partager sur Twitter
          4 mars 2020 à 9:37:01

          Le premier webservice local tournait sur un NAS synology, il était très simple et était en PHP.
          Pour le faire j'avais utilisé ce tuto https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql  (le TP poster des commentaires sur un blog c'est quasiment la même chose).
          En parallèle je m'était inspiré des programmes d'exemple fournis avec les librairies arduino.

          1- L'arduino météo se connecte en wifi
          2- A intervalle régulier il appelle la page PHP pour poster les valeurs mesurées
          3- La page PHP vérifie que les données sont valides puis les stock dans la base de données


          Depuis il s'est amélioré, n'est plus en PHP mais en Java (avec Spring Boot), et mesure la température et humidité de toutes les pièces de la maison ^^




          -
          Edité par Arkturus 4 mars 2020 à 9:45:38

          • Partager sur Facebook
          • Partager sur Twitter
            10 mars 2020 à 23:03:25

            Hello, 

            J'avance doucement : je viens de recevoir un module wifi ESP8266 et j'attends encore les resistances pour tester tout ça. 

            Je pense que je vais utiliser le protocole AT pour me connecter en wifi à mon NAS soumettre les données de mes capteurs dans une base de donnée au travers d'un code php.

            Je m'aide de ce tutoriel et j'ai quelques questions pour ce bout de code : 

            /*
            AnalogReadSerial
            Reads an analog input on pin 0, prints the result to the serial monitor.
            Graphical representation is available using serial plotter (Tools > Serial Plotter menu)
            Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.
             
            This example code is in the public domain.
            */
            #include "DHT.h"
             
            #define DHTPIN 2 // what digital pin we're connected to
             
            // Uncomment whatever type you're using!
            //#define DHTTYPE DHT11 // DHT 11
            #define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
            //#define DHTTYPE DHT21 // DHT 21 (AM2301)
            DHT dht(DHTPIN, DHTTYPE);
            // the setup routine runs once when you press reset:
            void setup() {
            pinMode(13, OUTPUT);
            delay(3000);
            dht.begin();
            // initialize serial communication at 9600 bits per second:
            Serial.begin(115200);
            Serial.println("AT+CWMODE=1");
            delay(1000);
            Serial.println("AT+CWJAP=\"RouterSSID\",\"RouterPassword\"");
            delay(1000);
             
            }
             
            // the loop routine runs over and over again forever:
            void loop() {
            digitalWrite(13, LOW);
            // Reading temperature or humidity takes about 250 milliseconds!
            // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
            float h = (dht.readHumidity()*100+10000);
            // Read temperature as Celsius (the default)
            float t = (dht.readTemperature()*100+10000);
            // Read temperature as Fahrenheit (isFahrenheit = true)
            float f = (dht.readTemperature(true)*100+10000);
            int fahrenheit=f;
            int celsius=t;
            int humidity=h;
             
            // read the input on analog pin 0:
            int sensorValue = analogRead(A0);
            int adjustedValue = sensorValue+10000;
            // print out the value you read:
            Serial.println("AT+CIPSTART=\"TCP\",\"192.168.1.10\",80");
            delay(1000);
            Serial.println("AT+CIPSEND=66");
            delay(1000);
            Serial.print("GET /basementlog.php?level=");
            Serial.print(adjustedValue);
            Serial.print("&fahrenheit=");
            Serial.print(fahrenheit);
            Serial.print("&humidity=");
            Serial.println(humidity);
            delay(1000);
            Serial.println("AT+CIPCLOSE");
            digitalWrite(13, HIGH);
            delay(100000); // delay in between reads for stability
            }
            • J'ai du mal à comprendre comment ce bout de code indique où est connecté le module wifi. Une idée ? 
            • Serial.print("GET /basementlog.php?level=");  Comment est ce que je chemin fonctionne ? Si je le stocke le fichier sur mon bureau comment l'indiqué ? Si il est sur un volume de mon NAS comment lui indiqué également (avec user & mot de passe) ?  

            Merci.  

            • Partager sur Facebook
            • Partager sur Twitter
              6 avril 2020 à 12:10:15

              Bonjour,

              Je suis en train réaliser le même projet que vous.

              Je ne connais pas la programmation en php mais je suis curieux de savoir si vous avez pu avancer sur votre projet.

              -
              Edité par g4533a4-e 6 avril 2020 à 12:11:48

              • Partager sur Facebook
              • Partager sur Twitter
                14 mai 2021 à 5:58:16

                Hello tout le monde,

                C'est un super bon projet que vous avez la, Je vais me lancer aussi dessus mais en python, 

                • Partager sur Facebook
                • Partager sur Twitter

                [Arduino]Station météo et exploitation des données

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown