Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Prévision de Pluie Précise : Construire un Système Alimenté par Arduino avec Python et Keras

Composants et fournitures

Composant Quantité
Petite boîte plastique avec couvercles amovibles (la mienne a des vis) 1
Support 3 piles AAA 1
3 piles AAA rechargeables NiMH 1
Panneau solaire 6V petit format 1
Arduino Pro Mini 328 - 5V/16MHz 1
Diode 1N4004 1
Transistor NPN usage général + résistance 1kΩ 1
Capteur de pluie 1
Module communication série HC-12 1
Module HC-12 USB série (pour station de base) 1
Capteur atmosphérique BME280 (SparkFun Breakout) 1
Capteur de lumière BH1750 1
PCB, fils, soudure, connecteurs KF301-2P, connecteurs PCB mâle/femelle, colle 1
Régulateur 3.3V 1

Outils nécessaires

À propos de ce projet

Le but est de prédire la pluie dans les 6 prochaines heures (oui/non). Ce tutoriel couvre tous les aspects : construction d'une station météo autonome (solaire, consommation ultra-faible ~ quelques dizaines de µA/h), programmation pour collecte et transmission de données toutes les 10 minutes, collecte des données sur une station de base (base de données), traitement avec réseaux de neurones (Keras) et Python (pandas), et prédiction avec notification par email.

Avec environ 600 jours de données, le système atteint ~80% de précision selon les paramètres.

Étape 1 : Pièces et outils pour construire la station

Voir la liste complète ci-dessus. La boîte doit faire environ 11 x 7 x 5 cm. Compétences requises : soudure, programmation Arduino basique, configuration services Linux, installation de paquets, bases de programmation.

Étape 2 : Construction de la station météo

La station comprend : la boîte avec panneau solaire collé, le PCB avec l'électronique à l'intérieur, le support de piles, et les capteurs (BME280, lumière, pluie) à l'extérieur.

  1. Boîte : Percez 4 trous (fils panneau solaire + 3 capteurs). Collez le panneau solaire sur un côté et passez les fils à l'intérieur.
  2. PCB : Soudez les connecteurs femelles pour l'Arduino, l'Arduino sur connecteurs mâles, retirez ou désactivez la LED de l'Arduino (très important pour la consommation), soudez transistor, résistance, régulateur 3.3V, deux connecteurs KF301-2P (panneau solaire et piles), trois connecteurs femelles pour capteurs, et câblez selon le schéma Fritzing.
  3. Piles : Placez 3 piles AAA NiMH chargées dans le support, connectez au connecteur KF301-2P.
  4. Capteurs : Connectez BME280 et capteur lumière de l'extérieur vers leurs connecteurs mâles. Pour le capteur pluie, soudez 3 fils (GND, VCC, signal) et connectez à l'intérieur.

Placez la station à l'abri de la pluie/neige. J'ai utilisé un ruban adhésif spécial pour fixer la boîte.

Étape 3 : Code Arduino

La station transmet les données des capteurs toutes les 10 minutes : humidité, température, pression, pluie, lumière, tension. Format encodé : H1:78|T1:12|PS1:1022|L1:500|R1:0|V1:4010|

Le programme : lit les capteurs → transmet via SoftwareSerial → coupe l'alimentation des composants auxiliaires → met l'Arduino en sommeil profond 10 min (≈50 µA) → répète. Si tension > 4.2V, utilise un sleep normal pour éviter la surcharge.

Bibliothèques requises : BH1750, LowPower, Adafruit_Sensor, Adafruit_BME280.

Le code complet est disponible sur GitHub : github.com/danionescu0/home-automation

Étape 4 : Préparation de la station de base

Ordinateur Linux (PC, portable ou carte de développement) toujours allumé avec module HC-12 USB. J'ai utilisé Ubuntu 18.

  1. Installer Anaconda (gestionnaire de paquets Python).
  2. Installer MongoDB (base de données schemaless pour séries temporelles). Optionnel : index sur champ date.
  3. Cloner le projet : git clone https://github.com/danionescu0/home-automation.git
  4. Créer environnement conda : conda create --name weather python=3.6.2 && conda activate weather && pip install -r requirements.txt (Keras, pandas, pymongo, sklearn...)

Étape 5 : Configuration du projet

Fichier config.py : ajustez host/port MongoDB si nécessaire, port série HC-12 (ex: /dev/ttyUSB0, 9600 bauds).

Étape 6 : Utilisation pratique

Étape 7 : Comment ça marche (Architecture & ML)

Séparation station/base : faible consommation, portabilité, scalabilité (plusieurs stations), faible coût.

Base de données : MongoDB (schemaless, gratuit, API simple). Données stockées par minute.

Traitement données (le plus important) : nettoyage (valeurs manquantes), regroupement par intervalles de 6h (min, max, moyenne, percentiles, nombre de hausses/baisses/stable par capteur), ajout colonne cible has_rain (1 si pluie moy > 0.1), enrichissement avec 8 points de données passés (48h), suppression lignes incomplètes, split train/test (sklearn), normalisation (StandardScaler).

Réseau de neurones (Keras) : Modèle séquentiel : Entrée → Dense(16, relu) → Dropout(0.05) → Dense(16, relu) → Dropout(0.05) → Dense(1, sigmoid). Optimiseur rmsprop, loss mean_absolute_error, 50 epochs. Paramètres à optimiser : couches, neurones, dropout, fonctions activation/loss/optimizer, batch_size, epochs.

Améliorations futures : ajouter capteur vent, UV, gaz ; multiplier stations ; plus années de données ; intégrer données externes (wunderground) ; optimiser hyperparamètres (option --grid-search) ; tester LSTM.

Bonus : Utiliser dataset Dark Sky API (données officielles + plus de paramètres) → précision passe de ~80% à ~90%.

Code

Le projet inclut de nombreux extraits de code : sketch Arduino (weatherStation), scripts Python (train.py, predict.py, serial_listener.py, graphs.py), configuration, et requêtes MongoDB. Consultez le dépôt GitHub pour l'ensemble complet.

Schéma

Schéma Fritzing disponible : sketch_KAtDa2VReF.fzz et image PNG. Code Arduino sur GitHub : weatherStation

Processus de fabrication

  1. Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
  2. Construire une console de contrôle Photoshop DIY avec Arduino Nano RP2040
  3. Comment renommer fichiers et répertoires en Python avec os.rename() – Guide étape par étape
  4. Système de pointage RFID fiable avec Arduino et Python (base de données phpMyAdmin)
  5. Construire une télécommande Android universelle avec Arduino, 1Sheeld et contrôle IR
  6. Construire un Voltmètre Intelligent avec Arduino et Smartphone – Projet DIY Facile
  7. Construire un Capteur de Rythme Cardiaque Infrarouge Fiable avec Arduino : Guide Étape par Étape
  8. Mesure Précise de Fréquence et Rapport Cyclique avec Arduino UNO
  9. Construire un voltmètre DIY avec Arduino et écran Nokia 5110