Table des matières:

Station météo utilisant Raspberry Pi avec BME280 en Python : 6 étapes
Station météo utilisant Raspberry Pi avec BME280 en Python : 6 étapes

Vidéo: Station météo utilisant Raspberry Pi avec BME280 en Python : 6 étapes

Vidéo: Station météo utilisant Raspberry Pi avec BME280 en Python : 6 étapes
Vidéo: Station météo avec Raspberry PI 2024, Juillet
Anonim
Image
Image
Facture d'équipement impérative
Facture d'équipement impérative

est maith an scéalaí an viseir (Le temps est un bon conteur)

Avec les problèmes de réchauffement climatique et de changement climatique, les conditions météorologiques mondiales deviennent irrégulières dans notre monde, entraînant un certain nombre de catastrophes naturelles liées aux conditions météorologiques (sécheresses, températures extrêmes, inondations, tempêtes et incendies de forêt), une station météorologique semble être un mal à la maison. Vous en apprenez beaucoup sur l'électronique de base à partir d'un projet de station météo utilisant un tas de pièces et de capteurs bon marché. C'est assez facile à mettre en place et en un rien de temps vous pouvez l'avoir.

Étape 1: Facture d'équipement impérative

Facture d'équipement impérative
Facture d'équipement impérative
Facture d'équipement impérative
Facture d'équipement impérative
Facture d'équipement impérative
Facture d'équipement impérative

1. Un Raspberry Pi

Mettez la main sur une carte Raspberry Pi. Raspberry Pi est un ordinateur monocarte alimenté par Linux. Le Raspberry Pi est vraiment bon marché, petit et polyvalent, construit avec un ordinateur accessible et fonctionnel pour que les apprenants puissent exercer les bases de la programmation et du développement de logiciels.

2. Bouclier I2C pour Raspberry Pi

L'INPI2 (adaptateur I2C) fournit au Raspberry Pi 2/3 un port I²C à utiliser avec plusieurs appareils I2C. Il est disponible sur DCUBE Store.

3. Capteur numérique d'humidité, de pression et de température, BME280

Le BME280 est un capteur d'humidité, de pression et de température qui a un temps de réponse rapide et une précision globale élevée. Nous avons acheté ce capteur sur DCUBE Store.

4. Câble de connexion I2C

Nous avons utilisé le câble I²C disponible ici DCUBE Store.

5. Câble micro-USB

Le câble d'alimentation micro USB est un choix idéal pour alimenter le Raspberry Pi.

6. Interpréter l'accès Internet via EthernetCable/WiFi Adapter

L'accès à Internet peut être activé via un câble Ethernet connecté à un réseau local et à Internet. Vous pouvez également vous connecter à un réseau sans fil à l'aide d'un dongle sans fil USB, ce qui nécessitera une configuration.

7. Câble HDMI (câble d'affichage et de connectivité)

N'importe quel moniteur HDMI/DVI et n'importe quel téléviseur devrait fonctionner comme écran pour le Pi. Alternativement, vous pouvez accéder à distance au Pi via SSH, ce qui élimine le besoin d'un moniteur (utilisateurs avancés uniquement).

Étape 2: Connexions matérielles pour le circuit

Connexions matérielles pour le circuit
Connexions matérielles pour le circuit
Connexions matérielles pour le circuit
Connexions matérielles pour le circuit

Faites le circuit selon le schéma montré. En général, les connexions sont très simples. Restez calme et suivez les instructions et les images ci-dessus, et vous ne devriez avoir aucun problème. Tout en apprenant, nous avons approfondi les bases de l'électronique en ce qui concerne la connaissance du matériel et des logiciels. Nous voulions établir un schéma électronique simple pour ce projet. Les schémas électroniques sont comme des plans. Élaborez un plan et suivez attentivement la conception. Quelques notions de base de l'électronique pourraient être utiles ici !

Connexion du Raspberry Pi et du Shield I2C

Tout d'abord, prenez le Raspberry Pi et placez le bouclier I²C dessus. Appuyez doucement sur le Shield et nous en avons terminé avec cette étape aussi simple que du gâteau (voir la photo).

Connexion du capteur et du Raspberry Pi

Prenez le capteur et connectez le câble I²C avec. Assurez-vous que la sortie I²C se connecte TOUJOURS à l'entrée I²C. La même chose doit être suivie pour le Raspberry Pi avec le blindage I²C monté sur les broches GPIO.. Avec ce simple câble plug and play, vous pouvez facilement installer, échanger des cartes ou ajouter d'autres cartes à une application.

Remarque: Le fil marron doit toujours suivre la connexion de masse (GND) entre la sortie d'un appareil et l'entrée d'un autre appareil

La connectivité Internet est la clé

Vous avez ici deux choix. Soit vous pouvez connecter le Raspberry Pi au réseau à l'aide d'un câble Ethernet ou utiliser un adaptateur USB vers WiFi pour la connectivité WIFI. Dans tous les cas, tant qu'il est connecté à Internet, vous êtes couvert.

Mise sous tension du circuit

Branchez le câble Micro USB dans la prise d'alimentation du Raspberry Pi. Coup de poing et le tour est joué ! Notre escouade est information.

Connexion à l'écran

Nous pouvons soit avoir le câble HDMI connecté à un moniteur ou à un téléviseur. De plus, nous pouvons accéder à un Raspberry Pi sans le connecter à un moniteur à l'aide d'un accès à distance. SSH est un outil pratique pour un accès distant sécurisé. Vous pouvez également utiliser le logiciel PUTTY pour cela. Cette option est destinée aux utilisateurs avancés, nous ne la détaillerons donc pas ici.

C'est une méthode économique si vous ne voulez pas dépenser beaucoup

Étape 3: Programmation Raspberry Pi en Python

Programmation Raspberry Pi en Python
Programmation Raspberry Pi en Python

Le code Python pour le Raspberry Pi et le capteur BME280. Il est disponible dans notre référentiel Github.

Avant de passer au code, assurez-vous de lire les instructions données dans le fichier Lisez-moi et configurez votre Raspberry Pi en conséquence. Un peu de temps vous permettra de vous préparer à l'installation. Une station météorologique est une installation, sur terre ou en mer, dotée d'instruments et d'équipements pour mesurer les conditions atmosphériques afin de fournir des informations pour les prévisions météorologiques et d'étudier le temps et le climat.

Le code est clairement devant vous et il est dans la forme la plus simple que vous puissiez imaginer et vous ne devriez avoir aucun problème. Demandez toujours le cas échéant (Même si vous savez mille choses, demandez toujours à quelqu'un qui sait).

Vous pouvez également copier le code Python fonctionnel de ce capteur à partir d'ici.

# Distribué avec une licence de libre arbitre. # Utilisez-le comme vous le souhaitez, à profit ou gratuitement, à condition qu'il s'intègre dans les licences de ses œuvres associées. # BME280 # Ce code est conçu pour fonctionner avec le mini module BME280_I2CS I2C disponible sur ControlEverything.com. #

importer smbus

heure d'importation

# Obtenez le bus I2C

bus = smbus. SMbus(1)

# Adresse BME280, 0x76(118)

# Lire les données de 0x88(136), 24 octets b1 = bus.read_i2c_block_data(0x76, 0x88, 24)

# Convertir les données

# Coefficients de température dig_T1 = b1[1] * 256 + b1[0] dig_T2 = b1[3] * 256 + b1[2] si dig_T2 > 32767: dig_T2 -= 65536 dig_T3 = b1[5] * 256 + b1[4] si dig_T3 > 32767: dig_T3 -= 65536

# Coefficients de pression

dig_P1 = b1[7] * 256 + b1[6] dig_P2 = b1[9] * 256 + b1[8] si dig_P2 > 32767: dig_P2 -= 65536 dig_P3 = b1[11] * 256 + b1[10] si dig_P3 > 32767: dig_P3 -= 65536 dig_P4 = b1[13] * 256 + b1[12] si dig_P4 > 32767: dig_P4 -= 65536 dig_P5 = b1[15] * 256 + b1[14] si dig_P5 > 32767: dig_P5 -= 65536 dig_P6 = b1[17] * 256 + b1[16] si dig_P6 > 32767: dig_P6 -= 65536 dig_P7 = b1[19] * 256 + b1[18] si dig_P7 > 32767: dig_P7 -= 65536 dig_P8 = b1[21] * 256 + b1[20] si dig_P8 > 32767: dig_P8 -= 65536 dig_P9 = b1[23] * 256 + b1[22] si dig_P9 > 32767: dig_P9 -= 65536

# Adresse BME280, 0x76(118)

# Lire les données de 0xA1(161), 1 octet dig_H1 = bus.read_byte_data(0x76, 0xA1)

# Adresse BME280, 0x76(118)

# Lire les données de 0xE1(225), 7 octets b1 = bus.read_i2c_block_data(0x76, 0xE1, 7)

# Convertir les données

# Coefficients d'humidité dig_H2 = b1[1] * 256 + b1[0] si dig_H2 > 32767: dig_H2 -= 65536 dig_H3 = (b1[2] & 0xFF) dig_H4 = (b1[3] * 16) + (b1[4] & 0xF) si dig_H4 > 32767: dig_H4 -= 65536 dig_H5 = (b1[4] / 16) + (b1[5] * 16) si dig_H5 > 32767: dig_H5 -= 65536 dig_H6 = b1[6] si dig_H6 > 127: dig_H6 -= 256

# Adresse BME280, 0x76(118)

# Sélectionner le registre d'humidité de contrôle, 0xF2(242) # 0x01(01) Suréchantillonnage d'humidité = 1 bus.write_byte_data(0x76, 0xF2, 0x01) # Adresse BME280, 0x76(118) # Sélectionner le registre de mesure de contrôle, 0xF4(244) # 0x27(39) Taux de suréchantillonnage de pression et de température = 1 # Mode normal bus.write_byte_data (0x76, 0xF4, 0x27) # Adresse BME280, 0x76 (118) # Sélection du registre de configuration, 0xF5(245) # 0xA0(00) Temps de veille = 1000 ms bus.write_byte_data (0x76, 0xF5, 0xA0)

temps.sommeil (0,5)

# Adresse BME280, 0x76(118)

# Lecture des données de 0xF7(247), 8 octets # Pression MSB, Pression LSB, Pression xLSB, Température MSB, Température LSB # Température xLSB, Humidité MSB, Humidité LSB data = bus.read_i2c_block_data (0x76, 0xF7, 8)

# Convertir les données de pression et de température en 19 bits

adc_p = ((données[0] * 65536) + (données[1] * 256) + (données[2] & 0xF0)) / 16 adc_t = ((données[3] * 65536) + (données[4] * 256) + (données[5] & 0xF0)) / 16

# Convertir les données d'humidité

adc_h = données[6] * 256 + données[7]

# Calculs de décalage de température

var1 = ((adc_t) / 16384,0 - (dig_T1) / 1024,0) * (dig_T2) var2 = (((adc_t) / 131072.0 - (dig_T1) / 8192,0) * ((adc_t)/131072.0 - (dig_T1)/8192.0)) * (dig_T3) t_fine = (var1 + var2) cTemp = (var1 + var2) / 5120,0 fTemp = cTemp * 1,8 + 32

# Calculs de décalage de pression

var1 = (t_fin / 2.0) - 64000.0 var2 = var1 * var1 * (dig_P6) / 32768.0 var2 = var2 + var1 * (dig_P5) * 2.0 var2 = (var2 / 4.0) + ((dig_P4) * 65536.0) var1 = ((dig_P3) * var1 * var1 / 524288.0 + (dig_P2) * var1) / 524288.0 var1 = (1,0 + var1 / 32768,0) * (dig_P1) p = 1048576,0 - adc_p p = (p - (var2 / 4096.0)) * 6250.0 / var1 var1 = (dig_P9) * p * p / 2147483648,0 var2 = p * (dig_P8) / 32768.0 pression = (p + (var1 + var2 + (dig_P7)) / 16,0) / 100

# Calculs de compensation d'humidité

var_H = ((t_fin) - 76800,0) var_H = (adc_h - (dig_H4 * 64,0 + dig_H5 / 16384,0 * var_H)) * (dig_H2 / 65536,0 * (1,0 + dig_H6 / 67108864.0 * var_H * (1,0 + dig_H3 / 67108864,0 *))) humidité = var_H * (1,0 - dig_H1 * var_H / 524288,0) si humidité > 100,0: humidité = 100,0 elif humidité < 0,0: humidité = 0,0

# Données de sortie à l'écran

print "Température en Celsius: %.2f C" %cTemp print "Température en Fahrenheit: %.2f F" %fTemp print "Pressure: %.2f hPa " %pression print "Humidité relative: %.2f %%" %humidité

Étape 4: Le code de course

Le code de course
Le code de course

Maintenant, téléchargez (ou git pull) le code et ouvrez-le dans le Raspberry Pi.

Exécutez les commandes pour compiler et télécharger le code sur le terminal et voir la sortie sur l'affichage. Après quelques secondes, il affichera tous les paramètres. Après vous être assuré que tout fonctionne bien, vous pouvez en développer des plus intéressants.

Étape 5: Utilisation dans le monde pratique

Le BME280 atteint des performances élevées dans toutes les applications nécessitant des mesures d'humidité et de pression. Ces applications émergentes sont la connaissance du contexte, par ex. Détection de peau, Détection de changement de pièce, Surveillance de la condition physique / Bien-être, Avertissement concernant la sécheresse ou les températures élevées, Mesure du volume et du débit d'air, Contrôle de la domotique, Contrôle du chauffage, Ventilation, Climatisation (HVAC), Internet des objets (IoT), Amélioration du GPS (par exemple, amélioration du temps de première réparation, navigation à l'estime, détection de pente), navigation intérieure (détection de changement de sol, détection d'ascenseur), navigation extérieure, applications de loisirs et de sports, prévisions météorologiques et indication de la vitesse verticale (montée / descente La vitesse).

Étape 6: Conclusion

Espérons que ce projet inspire d'autres expérimentations. Faire une station météo plus sophistiquée peut impliquer d'autres capteurs comme le pluviomètre, le capteur de lumière, l'anémomètre (vitesse du vent), etc. Vous pouvez les ajouter et modifier le code. Nous avons un tutoriel vidéo sur YouTube présentant le fonctionnement de base du capteur I²C avec Rasp Pi. C'est vraiment incroyable de voir les résultats et le fonctionnement des communications I²C. Vérifiez-le également. Amusez-vous à construire et à apprendre ! S'il vous plaît laissez-nous savoir ce que vous pensez de cette instructable. Nous aimerions apporter quelques améliorations si nécessaire.

Conseillé: