Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’un des scénarios les plus courants pour les appareils IoT est la détection des conditions environnementales. Plusieurs capteurs sont disponibles pour surveiller la température, l’humidité, la pression barométrique, etc.
Dans cette rubrique, vous allez utiliser .NET pour lire les conditions environnementales d’un capteur.
Prerequisites
- Ordinateur monocarte basé sur ARM (ARMv7 ou supérieur) (SBC)
- Module de capteur d'humidité/pression barométrique/température BME280
- Fils de jumper
- Plaque d'essai (facultatif)
- Plaque d'extension GPIO Raspberry Pi (facultatif)
- .NET SDK 10 ou version ultérieure
Note
Ce tutoriel est écrit en supposant que l’appareil cible est Raspberry Pi. Toutefois, ce tutoriel peut être utilisé pour n’importe quel SBC linux qui prend en charge .NET, comme Orange Pi, ODROID, etc.
Important
Il y a de nombreux fabricants de cartes BME280. La plupart des conceptions sont similaires, et le fabricant ne doit pas faire de différence avec les fonctionnalités. Ce didacticiel tente de tenir compte des variations. Vérifiez que votre breakout BME280 inclut une interface Inter-Integrated Circuit (I2C).
Les composants tels que les breakouts BME280 sont souvent vendus avec des broches non soudées. Si vous n’êtes pas à l’aise avec la soudure, recherchez une carte de dérivation BME280 avec un en-tête pré-soudé ou un autre connecteur. Si vous le souhaitez, envisagez d’apprendre à souder ! Voici un bon guide de débutant pour souder.
Préparer le SBC
Vérifiez que votre SBC est configuré pour prendre en charge les services suivants :
- SSH
- I2C
Pour de nombreux appareils, aucune configuration supplémentaire n’est requise. Pour Raspberry Pi, utilisez la raspi-config commande. Pour plus d’informations sur raspi-config, reportez-vous à la documentation Raspberry Pi.
Préparer le matériel
Utilisez les composants matériels pour générer le circuit comme illustré dans le diagramme suivant :
Voici les connexions du Raspberry Pi au breakout BME280. Notez que les étiquettes d’épingle diffèrent sur les différents breakouts BME280.
| Raspberry Pi | BME280 Breakout | Couleur |
|---|---|---|
| 3.3V | VIN/3V3 | rouge |
| Terre | GND | black |
| SDA (GPIO 2) | SDI/SDA | bleu |
| SCL (GPIO 3) | SCK/SCL | orange |
Reportez-vous au schéma de brochage suivant si nécessaire.
Image courtesy Raspberry Pi Foundation.
Conseil / Astuce
Une carte de dérivation GPIO en conjonction avec une plaque de prototypage est recommandée pour simplifier les connexions à l'en-tête GPIO.
Créer l’application
Effectuez les étapes suivantes dans votre environnement de développement préféré :
Créez une nouvelle application console .NET à l’aide de la CLI .NET ou de Visual Studio. Nommez-le SensorTutorial.
dotnet new console -o SensorTutorial cd SensorTutorialAjoutez le package Iot.Device.Bindings au projet. Utilisez .NET CLI à partir du répertoire du projet ou Visual Studio.
dotnet package add Iot.Device.Bindings --version 4.1.0Remplacez le contenu du fichier Program.cs par le code suivant :
using System; using System.Device.I2c; using System.Threading; using Iot.Device.Bmxx80; using Iot.Device.Bmxx80.PowerMode; var i2cSettings = new I2cConnectionSettings(1, Bme280.DefaultI2cAddress); using I2cDevice i2cDevice = I2cDevice.Create(i2cSettings); using var bme280 = new Bme280(i2cDevice); int measurementTime = bme280.GetMeasurementDuration(); while (true) { Console.Clear(); bme280.SetPowerMode(Bmx280PowerMode.Forced); Thread.Sleep(measurementTime); bme280.TryReadTemperature(out var tempValue); bme280.TryReadPressure(out var preValue); bme280.TryReadHumidity(out var humValue); bme280.TryReadAltitude(out var altValue); Console.WriteLine($"Temperature: {tempValue.DegreesCelsius:0.#}\u00B0C"); Console.WriteLine($"Pressure: {preValue.Hectopascals:#.##} hPa"); Console.WriteLine($"Relative humidity: {humValue.Percent:#.##}%"); Console.WriteLine($"Estimated altitude: {altValue.Meters:#} m"); Thread.Sleep(1000); }Dans le code précédent :
i2cSettingsest défini sur une nouvelle instance deI2cConnectionSettings. Le constructeur définit lebusIdparamètre sur 1 et ledeviceAddressparamètre surBme280.DefaultI2cAddress.Important
Certains fabricants de modules BME280 utilisent la valeur d’adresse secondaire. Pour ces appareils, utilisez
Bme280.SecondaryI2cAddress.Une déclaration using crée une instance de
I2cDeviceen appelantI2cDevice.Createet en passanti2cSettings. CelaI2cDevicereprésente le bus I2C. Lausingdéclaration garantit que l’objet est supprimé et que les ressources matérielles sont correctement libérées.Une autre
usingdéclaration crée une instance deBme280représentant le capteur. LeI2cDeviceest passé au constructeur.Le temps nécessaire pour que la puce prenne des mesures avec les paramètres actuels (par défaut) de la puce est récupérée en appelant
GetMeasurementDuration.Une
whileboucle s’exécute indéfiniment. Chaque itération :Efface la console.
Définit le mode d’alimentation sur
Bmx280PowerMode.Forced. Cela force la puce à effectuer une mesure, stocker les résultats, puis dormir.Lit les valeurs de température, de pression, d’humidité et d’altitude.
Note
L’altitude est calculée par la liaison de l'appareil. Cette surcharge de
TryReadAltitudeutilise la pression au niveau de la mer moyenne pour générer une estimation.Écrit les conditions environnementales actuelles dans la console.
Veille à 1 000 ms.
Générez l'application. Si vous utilisez l’interface CLI .NET, exécutez
dotnet build. Pour générer dans Visual Studio, appuyez sur Ctrl+Shift+B.Déployez l’application sur le SBC en tant qu’application autonome. Pour obtenir des instructions, consultez Déployer des applications .NET sur Raspberry Pi. Veillez à accorder à l’exécutable l’autorisation d’exécution à l’aide de
chmod +x.Exécutez l’application sur Raspberry Pi en basculant vers le répertoire de déploiement et en exécutant l’exécutable.
./SensorTutorialObservez la sortie du capteur dans la console.
Terminez le programme en appuyant sur Ctrl+C.
Félicitations ! Vous avez utilisé I2C pour lire les valeurs d’un capteur de pression barométrique/température/humidité !
Obtenir le code source
La source de ce didacticiel est available sur GitHub.