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

Station météo portable Arduino (AWS) à 10 $

Composants et fournitures

Arduino Nano R3
× 1
Capteur de température DHT22
× 1
bmp180
× 1
Adafruit Standard LCD - 16x2 Blanc sur Bleu
× 1

Outils et machines nécessaires

Fer à souder (générique)

Applications et services en ligne

Arduino IDE

À propos de ce projet

Récemment, mon collège a organisé une petite exposition scientifique. Mon professeur m'a donc demandé de présenter un projet au collège pour enseigner l'électronique aux jeunes étudiants. En gros, j'ai eu deux jours pour faire quelque chose.

Comme les conditions climatiques ici varient beaucoup et récemment, la température avoisine les 34-40 degrés Celsius. J'ai donc décidé de faire une station météo.

Alors que fait une station météo ?

Une station météo est un appareil qui collecte des données relatives à la météo et à l'environnement à l'aide de nombreux capteurs différents

Des capteurs comme

  • Vent
  • Humidité
  • Pluie
  • Température
  • Pression
  • Altitude

Le but est de faire une station météo portable

Caractéristiques qu'il devrait avoir

  • Température
  • Humidité
  • Pression
  • Altitude

Étape 1 :Ingrédients :il est temps d'acheter des trucs

Voici donc la chose dont nous aurons besoin pour le projet

En fait, j'ai commencé le projet sur My UNO mais j'ai ensuite décidé de passer à une solution compacte.

J'avais le nano avec moi à ce moment-là, donc je devais l'utiliser, j'adorerais utiliser le micro, car c'est le plus petit.

Quoi qu'il en soit, en laissant ces choses-là, en parlant de budget et de pièces, voici la liste.

  • Capteur de température et d'humidité DHT22 -> 3,00 $
  • Capteur de pression BMP180 (le BMP280 est moins cher mais cher dans ma localité) > 2,00 $
  • Arduino Nano > 1,89 $
  • Soudure
  • Écran LCD avec pilote I2C > 3,0 $
  • Véroboard
  • En-tête féminin

Pour l'extrémité de l'outil, vous aurez besoin

  • Fer à souder
  • Pince à nez
  • Fils

Et aussi un certain temps

Étape 2 : Température et humidité - DHT22

La mesure de la température peut être effectuée à l'aide de différents capteurs.

Les plus populaires sont DHT22, DHT11, SHT1x

Donc, fondamentalement, permet de comprendre en quoi ces capteurs sont différents les uns des autres et pourquoi j'ai utilisé DHT22 en premier lieu.

AM2302 sortie signal numérique calibré. Il applique une technique exclusive de collecte de signaux numériques et une technologie de détection d'humidité, garantissant sa fiabilité et sa stabilité. Ses éléments de détection sont connectés à un ordinateur à puce unique 8 bits.

Chaque capteur de ce modèle est compensé en température et calibré dans une chambre d'étalonnage précise et le coefficient d'étalonnage est enregistré dans le type de programme dans la mémoire OTP, lorsque le capteur détecte, il citera le coefficient de la mémoire. La petite taille, la faible consommation et la longue distance de transmission (100 m) permettent à l'AM2302 d'être adapté à toutes sortes d'applications difficiles. Une seule rangée avec quatre broches, ce qui rend la connexion très pratique.

Voyons quelques avantages et inconvénients des trois.

DHT11

Avantages :aucune soudure nécessaire. Le moins cher des trois. Obtenez une sortie stable rapidement. Transmission sur 20m. Forte interférence.

Contre:Bibliothèque ! Aucune option de résolution. Erreurs :Temp+/-2°C; Humide +/-5%HR. Plage de mesure inadéquate (0-50°C). Applications:Jardinage, Agriculture.

DHT22

Avantages :aucune soudure nécessaire. Ajoutez quelques dollars à DHT11 et obtenez une mise à niveau. Courbe lisse. La plus petite erreur. Large gamme. Transmission sur 20m. Forte interférence.

Inconvénients:Peut être plus sensible. Suivi lent de la température. Bibliothèque nécessaire. Applications:Surveillance de l'environnement. SHT1x

Avantages :pas de soudure. Courbe lisse. Petite erreur. Réponse rapide. Faible consommation d'énergie. Veille automatique. Stabilité et cohérence extraordinaires à long terme.

Inconvénients:Deux interfaces numériques. Erreur d'humidité. Même plage de mesure avec DHT11. Bibliothèque nécessaire. Applications :travaux lourds et installations de longue durée. Voici trois choix relativement bon marché.

Connexion

Vcc à 5V ou 3.3V

Gnd à Gnd

Données vers la broche 2 de l'arduino

Étape 3 :Baromètre et capteur de pression - BMP180

Le bmp180 un capteur de pression barométrique avec une interface I2C (« Wire »).

Les capteurs de pression barométrique mesurent la pression absolue de l'air qui les entoure. Cette pression varie en fonction de la météo et de l'altitude.

ce module bmp180 est venu avec un régulateur 3,3 v 662k que j'ai fait exploser jusqu'à une certaine stupidité alors j'ai attaché un fil pour contourner l'ensemble du vcc directement sur la puce.

Remarque :En faisant cela, je m'interdis d'utiliser uniquement 3,3 v, car l'utilisation de tensions supérieures à celle-ci endommagerait l'appareil.

Les autres modèles peuvent ne pas avoir le régulateur de tension 662k. alors vérifiez bien.

Ok, en revenant, connectons le capteur à l'arduino.

Le capteur se connecte au bus i2c de l'arduino qui de nano et Uno sont

SDA==>A4

SCL==>A5

VCC==>3,3V

GND ==> GND

Parlons un peu de la pression et de la façon dont la pression mesure l'altitude et la température.

La pression atmosphérique à n'importe quelle position n'est pas constante. L'interaction complexe entre la rotation de la terre, l'inclinaison de l'axe et de nombreux autres facteurs entraîne le déplacement de zones de pression plus élevée et plus basse, ce qui à son tour provoque les variations météorologiques que nous voyons chaque jour. En surveillant les changements de pression, vous pouvez prévoir les changements météorologiques à court terme.

Par exemple, une chute de pression signifie généralement que le temps est humide ou qu'une tempête approche (un système dépressionnaire s'installe). L'augmentation de la pression signifie généralement que le temps clair approche (un système anticyclonique se déplace).

La pression atmosphérique varie également avec l'altitude. La pression absolue dans le camp de base du mont Everest (5 400) est inférieure à celle de Delhi (216)

Comme la pression Absolute est difficile à comparer directement les mesures de pression d'un endroit à un autre, nous utilisons la pression relative, c'est-à-dire la pression au niveau de la mer.

Mesure de l'altitude

La pression moyenne de l'atmosphère au niveau de la mer est de 1013,25 hPa (ou mbar). Cela tombe à zéro à mesure que vous montez vers le vide de l'espace. Parce que la courbe de ce tombant est bien comprise, vous pouvez calculer la différence d'altitude entre deux mesures de pression (p et p0) en utilisant cette équation :

alti=44330*[1-(p/p0)^(1/5.255)]

Si vous utilisez la pression au niveau de la mer (1013,25 hPa) comme pression de base (p0), la sortie de l'équation sera votre altitude actuelle au-dessus du niveau de la mer.

Précautions

Donnez de l'air : N'oubliez pas que le BMP180 a besoin d'accéder à l'air ambiant pour mesurer sa pression, alors ne le mettez pas dans un boîtier scellé. Prévoir un petit trou d'aération devrait suffire.Mais pas trop d'air :D'autre part, l'exposition à l'air ou au vent en mouvement rapide peut provoquer des variations de pression momentanées qui affecteront vos lectures. Protégez l'appareil des courants d'air puissants.

Reste cool : Étant donné qu'une lecture précise de la température est nécessaire pour mesurer la pression, essayez de ne pas exposer l'appareil à des changements de température rapides et éloignez-le des pièces chaudes à proximité et d'autres sources de chaleur.

Gardez-le au sec :Le BMP180 est sensible à l'humidité. Ne l'immergez pas et ne le laissez pas entrer en contact avec de l'eau liquide.

Ne l'aveugle pas : Étonnamment, le silicium dans le BMP180 est sensible à la lumière, qui peut pénétrer dans l'appareil par le trou sur le dessus de la puce. Pour une précision maximale, protégez la puce de la lumière ambiante.

Étape 4 :faire le circuit

Nous commençons donc par faire l'en-tête pour le nano. nous coupons en fait les en-têtes femelles, puis les classons pour qu'ils aient l'air d'avoir à l'origine cette taille. Nous les soudons ensuite. puis nous avons fait les en-têtes pour le capteur DHT22

. il fallait une résistance de 10k pour être connecté des données à la terre. nous avons ensuite tout soudé. Ensuite, il était temps pour le bmp180, nous avons ajouté l'en-tête de la même manière. Nous avons utilisé 3,3 V comme alimentation. Nous avons connecté tous les bus i2c.

Nous avons enfin ajouté l'écran que nous utilisons i2c lcd, nous avons donc utilisé le même bus que nous avons utilisé pour le module bmp180.

(Il y a un quatrième emplacement dans lequel je voulais ajouter un module rtc plus tard pour également incopérer l'horloge de la machine)

Étape 5 :Temps pour le code

Attendez ....................

Télécharger les bibliothèques

bmp180

https://github.com/sparkfun/BMP180_Breakout_Arduin...

BMP180_Breakout_Arduino_Library-master.zip

Bibliothèque Dht22

https://github.com/adafruit/DHT-sensor-library

Pour installer une bibliothèque dans arduino, consultez ce lien

https://www.arduino.cc/en/Guide/Bibliothèques

J'ai utilisé arduino 1.6.5 donc le code fonctionnera pour cette version à coup sûr, peut également être pour une version supérieure si de toute façon cela ne fonctionne pas, utilisez 1.6.5 comme version de base.

#include #include #include #include "DHT.h"#include

Pression SFE_BMP180 ;

#define ALTITUDE 20.56 #define I2C_ADDR 0x27 // <<- Ajoutez votre adresse ici.#define Rs_pin 0#define Rw_pin 1#define En_pin 2#define BACKLIGHT_PIN 3#define D4_pin 4#define D5_pin 5#define D6_pin 6#define D7_pin 7

#define DHTPIN 2 // quel numérique broche à laquelle nous sommes connectés

// Décommentez le type que vous utilisez !//#define DHTTYPE DHT11 // DHT 11#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321DHT dht(DHTPIN, DHTTYPE);LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);float t1,t2;

void setup(){ Serial.begin(9600); lcd.begin (16,2); // <<-- notre LCD est un 20x4, changez pour votre LCD si nécessaire// LCD Backlight ONlcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);lcd.setBacklight(HIGH); lcd.home (); // rentre à la maison sur LCDlcd.print("Weather Station");delay(5000);dht.begin(); pression.begin(); } void loop(){ char status; double T,P,p0,a; status =pressure.startTemperature(); if (status !=0) { delay(status);

status =pressure.getTemperature(T); if (statut !=0) { Serial.print("1"); lcd.clear(); lcd.setCursor(0,0); lcd.print("Baro Température :"); lcd.setCursor(0,1) ; lcd.print(T,2) ; lcd.print(" deg C "); t1=T; delay(3000);

status =pressure.startPressure(3); if (status !=0) { // Attendre la fin de la mesure :delay(status);

status =pressure.getPressure(P,T); if (statut !=0) {lcd.clear(); lcd.setCursor(0,0); lcd.print("pression absolue:"); lcd.setCursor(0,1) ; lcd.print(P,2) ; lcd.print(" mb "); delay(3000);

p0 =pressure.sealevel(P,ALTITUDE); // nous sommes à 1655 mètres (Boulder, CO)

a =pressure.altitude(P,p0); lcd.clear(); lcd.setCursor(0,0); lcd.print("Altitude :"); lcd.setCursor(0,1) ; lcd.print(a,0) ; lcd.print(" mètres"); retard (3000); } } } } float h =dht.readHumidity(); // Lecture de la température en Celsius (valeur par défaut) float t =dht.readTemperature(); t2=t; lcd.clear(); lcd.setCursor (0,0); // aller au début de la 2ème ligne lcd.print("Humidity:"); lcd.setCursor(0,1);lcd.print(h); lcd.print(" %"); retard (3000); lcd.clear(); lcd.setCursor (0,0); // aller au début de la 2ème ligne lcd.print("DHT Tempurature:"); lcd.setCursor(0,1) ; lcd.print(t); lcd.print(" deg C "); retard (3000); lcd.clear(); lcd.setCursor (0,0); // aller au début de la 2ème ligne lcd.print("Mean Tempurature:"); lcd.setCursor(0,1) ; lcd.print((t1+t2)/2); lcd.print(" deg C "); retard(3000);}

FSIULGKING9D7SD.ino


Code

  • Extrait de code n° 1
Extrait de code n°1Texte brut

#include #include #include #include "DHT.h"#include

Pression SFE_BMP180 ;

#define ALTITUDE 20.56 #define I2C_ADDR 0x27 // <<- Ajoutez votre adresse ici. #define Rs_pin 0#define Rw_pin 1#define En_pin 2#define BACKLIGHT_PIN 3#define D4_pin 4#define D5_pin 5#define D6_pin 6#define D7_pin 7

#define DHTPIN 2 // quelle broche numérique nous' reconnecté à

// Décommentez le type que vous utilisez !//#define DHTTYPE DHT11 // DHT 11#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);float t1,t2;

void setup(){ Serial.begin(9600); lcd.begin (16,2); // <<-- notre LCD est un 20x4, changez pour votre LCD si nécessaire// LCD Backlight ONlcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);lcd.setBacklight(HIGH); lcd.home (); // rentre à la maison sur LCDlcd.print("Weather Station");delay(5000);dht.begin(); pression.begin(); } void loop(){ char status; double T,P,p0,a; status =pressure.startTemperature(); if (status !=0) { delay(status);

status =pressure.getTemperature(T); if (statut !=0) { Serial.print("1"); lcd.clear(); lcd.setCursor(0,0); lcd.print("Baro Température :"); lcd.setCursor(0,1) ; lcd.print(T,2) ; lcd.print(" deg C "); t1=T; delay(3000);

status =pressure.startPressure(3); if (status !=0) { // Attendre la fin de la mesure :delay(status);

status =pressure.getPressure(P,T); if (statut !=0) {lcd.clear(); lcd.setCursor(0,0); lcd.print("pression absolue:"); lcd.setCursor(0,1) ; lcd.print(P,2) ; lcd.print(" mb "); delay(3000);

p0 =pressure.sealevel(P,ALTITUDE); // nous sommes à 1655 mètres (Boulder, CO)

a =pressure.altitude(P,p0); lcd.clear(); lcd.setCursor(0,0); lcd.print("Altitude :"); lcd.setCursor(0,1) ; lcd.print(a,0) ; lcd.print(" mètres"); retard (3000); } } } } float h =dht.readHumidity(); // Lecture de la température en Celsius (valeur par défaut) float t =dht.readTemperature(); t2=t; lcd.clear(); lcd.setCursor (0,0); // aller au début de la 2ème ligne lcd.print("Humidity:"); lcd.setCursor(0,1);lcd.print(h); lcd.print(" %"); retard (3000); lcd.clear(); lcd.setCursor (0,0); // aller au début de la 2ème ligne lcd.print("DHT Tempurature:"); lcd.setCursor(0,1) ; lcd.print(t); lcd.print(" deg C "); retard (3000); lcd.clear(); lcd.setCursor (0,0); // aller au début de la 2ème ligne lcd.print("Mean Tempurature:"); lcd.setCursor(0,1) ; lcd.print((t1+t2)/2); lcd.print(" deg C "); retard(3000);}

Github
https://github.com/sparkfun/BMP180_Breakout_Arduino_Library/archive/master.ziphttps://github.com/sparkfun/BMP180_Breakout_Arduino_Library/archive/master.zip
Github
https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/DHT-sensor-library

Schémas


Processus de fabrication

  1. Station météo Raspberry Pi 2
  2. Station météo Raspberry Pi
  3. Weather Station V 2.0
  4. Station de commande numérique DCC de modélisme ferroviaire Arduino et application gratuite
  5. 6-Shooter :Station de mélange de boissons Arduino
  6. Dés numériques Arduino
  7. Piano tactile capacitif portable
  8. Contrôleur de jeu Arduino
  9. Détecteur de portée portable