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

Mini station météo utilisant Arduino Nano

Composants et fournitures

Arduino Nano R3
× 1
Module DHT 11
× 1
CAPTEUR DE PRESSION BMP-280
× 1
Écran LCD ST7735 1,44 pouces
× 1
BOÎTIER IMPRIMÉ 3D
× 1
Câble USB A vers mini USB B
× 1

Outils et machines nécessaires

Fer à souder (générique)
Imprimante 3D (générique)
Fil à souder
Ruban double face

Applications et services en ligne

Arduino IDE
Autodesk Fusion 360

À propos de ce projet

Présentation

La capture de données physiques en temps réel est toujours fascinante. Dans ce projet, vous ne serez pas seulement en mesure de capturer trois paramètres physiques fondamentaux pour la prévision météorologique, à savoir. température, humidité et pression atmosphérique, mais pourra également afficher les données en temps réel sur un écran LCD.

Description et principe de fonctionnement

Les deux capteurs utilisés dans ce projet sont le BMP-280 et le DHT-11. Le premier capte la température et la pression atmosphérique tandis que le second capte l'humidité relative. Le DHT-11 aurait pu être fait en utilisant le BME-280 (il peut également mesurer l'humidité) au lieu du BMP-280, mais si le coût est pris en compte, l'utilisation de la combinaison de capteurs utilisée ici est beaucoup plus économique pour le bricolage projets. Il convient également de noter que bien que le DHT-11 soit capable de détecter à la fois la température et l'humidité, il n'est utilisé pour la détection de l'humidité que parce que sa résolution de détection de la température est de +/-2° par rapport à +/-.5° pour le BMP-280. Le cœur de ce projet est la carte de développement Arduino NANO. Ici aussi, la carte NANO a été choisie par rapport à la UNO préférée de masse en raison de son prix abordable. Un écran LCD TFT de 1,44" de la série ST7735 est utilisé comme écran pour notre projet. Un écran plus grand a été évité ici afin que l'Arduino NANO ne soit pas surchargé.

Circuit et programmation

Une combinaison de schéma de circuit et de schéma fonctionnel a été fournie aussi commodément que possible pour aider les fabricants à comprendre la configuration physique et la connexion des composants. Des tableaux de brochage des composants sont également fournis pour faciliter les choses. En parcourant le schéma et les tableaux, on remarquera que les broches 5V et GND de l'en-tête ICSP sur Arduino NANO ont été utilisées pour alimenter les composants ainsi que les broches d'alimentation et de masse intégrées. Cela a été fait pour supprimer toute source d'alimentation supplémentaire qui rendrait le système encombrant.

En ce qui concerne la programmation, dans la première partie, un ensemble de bibliothèques a été inclus pour garder la programmation courte et simple. Outre les plus évidentes, les bibliothèques Wire.h et SPI.h méritent d'être mentionnées car Wire.h est celle qui permet à l'Arduino de communiquer avec les périphériques I2C/TWI tels que le BMP-280 et le ST7735 LCD et SPI.h fournit l'interface périphérique série avec l'écran LCD ST7735. Dans la deuxième partie, les capteurs sont initialisés et la disposition, la couleur de police, etc. de l'écran LCD sont configurées pour afficher les données selon nos préférences. Dans la dernière partie de notre programmation, la sortie des capteurs est obtenue et affichée avec un délai pratique entre chaque lecture pour garder les choses stables.

Construction et essais

Dans le prototype, les composants sont restés modulaires et connectés à l'aide de fils de liaison au lieu de soudure. Cela permet non seulement un dépannage et une réparation faciles, mais rend également le processus d'assemblage sans tracas. Le boîtier de l'appareil a été imprimé en 3D sur mesure pour un ajustement parfait pour les composants. Le boîtier est pourvu d'une ventilation appropriée afin d'exposer les capteurs aux mesurandes et de dissiper la chaleur générée par le système qui interférerait autrement avec les éléments de détection. L'appareil est alimenté via le même type AUSB à type B mini USB utilisé pour programmer l'Arduino. Le prototype a été testé à l'intérieur pendant quelques heures en utilisant à la fois le port USB du PC et le chargeur de smartphone 5V comme alimentation. Les résultats sont assez précis par rapport aux données météorologiques en ligne, compte tenu du coût de production et du temps de développement.

Conclusion

En conclusion, on peut dire que ce projet est assez économique, utile pour le moins, et surtout, c'est amusant d'avoir une petite station météo pratique qui tient dans votre poche.

Pour acheter des pièces électroniques, commandez-les sur UTSOURCE

Bibliographie

· Google.fr

· Arduino.cc

· Mytectutor.com


Code

  • LE CODE
LE CODEC/C++
C'EST LE CROQUIS PERTINENT POUR LE PROJET, LES COMMENTAIRES EXPLIQUERONT LE FONCTIONNEMENT
#include  //include Serial Peripheral Interface library#include  //include Two Wire Interface library#include  // comprend la bibliothèque graphique Adafruit#include  // comprend la bibliothèque TFT Adafruit ST7735#include  // comprend la bibliothèque de capteurs Adafruit BMP280#include "DHT.h" // comprend le capteur DHTXX library#define DHTPIN 2 //Broche de données DHT11 connectée à la broche arduino D2#define DHTTYPE DHT11 //spécifier le type de capteur DHT utilisé#define TFT_RST 8 // La broche TFT RST est connectée à la broche arduino D8#define TFT_CS 10 // TFT La broche CS est connectée à la broche arduino D9 #define TFT_DC 9 // La broche TFT DC est connectée à la broche arduino D10 // initialise la bibliothèque TFT ST7735 SERIESAdafruit_ST7735 tft =Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_RST); // définir l'adresse I2C de l'appareil :0x76 ou 0x77 (0x77 est l'adresse par défaut de la bibliothèque)#define BMP280_I2C_ADDRESS 0x76 Adafruit_BMP280 bmp280 ; // initialise la bibliothèque Adafruit BMP280DHT dht(DHTPIN, DHTTYPE); // initialise la configuration du void du capteur DHT (void){ dht.begin(); // synchronisation du capteur DHT tft.initR(INITR_144GREENTAB); // initialise une puce ST7735S, onglet noir tft.fillScreen(ST77XX_BLACK); // réglage du fond noir tft.drawFastHLine(0, 15 , tft.width(), ST77XX_CYAN); // dessine une ligne de séparation horizontale à la position (0, 15) tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK); // définit la couleur du texte sur fond blanc et noir tft.setTextSize(1); // définition de la taille du texte sur 1 //tft.setCursor(4, 0); // déplace le curseur à la position (4, 0) pixel //tft.print("ARDUINO + ST7735 TFT"); tft.setCursor (25, 5); // déplace le curseur à la position (25, 5) pixel tft.print("WEATHER BUDDY"); // initialise le capteur BMP280 if( bmp280.begin(BMP280_I2C_ADDRESS) ==0 ) { // erreur de connexion ou adresse de périphérique incorrecte ! tft.setTextColor(ST77XX_RED, ST77XX_CYAN); // définit la couleur du texte sur fond rouge et noir tft.setTextSize(2); // définition de la taille du texte sur 2 tft.setCursor(5, 76); // déplace le curseur à la position (5, 76) pixel tft.print("Connexion"); tft.setCursor(35, 100); // déplace le curseur à la position (35, 100) pixel tft.print("Error"); tandis que (1); // reste ici } tft.drawFastHLine(0, 55, tft.width(), ST77XX_CYAN); // dessine une ligne de séparation horizontale à la position (0, 55) pixel tft.drawFastHLine (0, 95, tft.width(), ST77XX_CYAN); // dessine une ligne de séparation horizontale à la position (0, 195) pixel tft.setTextColor(ST77XX_RED, ST77XX_BLACK); // définit la couleur du texte sur fond rouge et noir tft.setCursor(30, 20); // déplace le curseur à la position (30, 20) pixel tft.print("TEMPERATURE "); // définition de l'en-tête de la première section tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK); // définit la couleur du texte sur le fond cyan et noir tft.setCursor (40, 60); // déplace le curseur à la position (40, 60) pixel tft.print("HUMIDITÉ "); // définition de l'en-tête de la deuxième section tft.setTextColor(ST77XX_GREEN, ST7735_BLACK); // définit la couleur du texte sur fond vert et noir tft.setCursor (40, 100); // déplace le curseur à la position (40, 100) pixel tft.print("PRESSURE "); // définition de l'en-tête de la troisième section tft.setTextSize(2) ; // définition de la taille du texte sur 2 } // boucle principale loopvoid() { char _buffer[8]; // lecture de la température, de l'humidité et de la pression du capteur BMP280 float temp =bmp280.readTemperature(); // obtenir la température en °C float hum =dht.readHumidity(); // obtenir l'humidité en rH% float pres =bmp280.readPressure(); // obtenir la pression en hPa // imprimer la température (en °C) if(temp <0) // si la température <0 sprintf( _buffer, "-%02u.%02u", (int)abs(temp), (int )(abs(temp) * 100) % 100 ); else // if temperature>=0 sprintf( _buffer, " %02u.%02u", (int)temp, (int)(temp * 100) % 100 ); // réglage de la valeur approximative tft.setTextColor(ST77XX_YELLOW, ST77XX_BLACK ); // définit la couleur du texte sur fond jaune et noir tft.setCursor(11, 34); // déplace le curseur à la position (11,34) pixel tft.print(_buffer); // impression de la température du capteur BMP-280 tft.drawCircle(89, 34, 2, ST77XX_YELLOW); // affiche le symbole du degré ( ° ) (peut être omis si * est utilisé à la place) tft.setCursor(95, 34); // déplace le curseur à la position (95,34) pixel tft.print("C"); // affiche le symbole Celcius // 2:affiche l'humidité (en %) sprintf( _buffer, "%02u ", (int)(hum)); // définition de l'approximation de la valeur tft.setTextColor(ST77XX_MAGENTA, ST77XX_BLACK); // définit la couleur du texte sur magenta et fond noir tft.setCursor(45, 74); // déplace le curseur à la position (45,74) pixel tft.print(_buffer); // imprimer l'humidité du capteur DHT-11 tft.setCursor(75, 74); // déplace le curseur à la position (75,74) pixel tft.print("%"); // imprime le symbole de pourcentage // 3:imprime la pression (en hPa) sprintf( _buffer, "%04u.%02u", (int)(pres/100), (int)((uint32_t)pres % 100) ); // définition de l'approximation de la valeur tft.setTextColor(ST77XX_ORANGE, ST77XX_BLACK); // définit la couleur du texte sur fond orange et noir tft.setCursor(3, 112); // déplace le curseur à la position (3 112) pixel tft.print(_buffer); // imprimer la pression atmosphérique à partir du BMP-280 tft.setCursor(91, 112); // déplace le curseur à la position (91 112) pixel tft.print("hPa"); // imprime l'unité de pression atmosphérique en hectopascal delay(1000); // attendre 1 seconde avant de prendre la prochaine lecture du capteur }

Pièces et boîtiers personnalisés

CECI EST LE FICHIER STL POUR LES PIÈCES IMPRIMÉES EN 3D QUE J'AI UTILISÉ

Schémas

VOUS DEVEZ JUSTE SUIVRE LE CABLAGE INDIQUE.

Processus de fabrication

  1. Station météo Raspberry Pi 2
  2. Station météo Raspberry Pi
  3. Surveillance à distance de la météo à l'aide de Raspberry Pi
  4. Weather Station V 2.0
  5. Console d'édition Photoshop DIY utilisant Arduino Nano RP 2040
  6. Horloge matricielle à 7 segments
  7. Station météo portable Arduino (AWS) à 10 $
  8. eDOT - Horloge de précision et station météo basée sur Arduino
  9. Radio FM utilisant Arduino et RDA8057M