Entrainement
Module
Développer des solutions IoT sécurisées pour Azure Sphere avec IoT Hub - Training
Développez des solutions IoT hautement sécurisées avec Azure Sphere, Azure RTOS et Azure IoT Hub.
Ce navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
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.
Notes
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 existe de nombreux fabricants de cartes BME280. La plupart des conceptions sont similaires, et le fabricant n’influe pas sur leur fonctionnement. Ce didacticiel tente de tenir compte des variations. Vérifiez que votre carte BME280 comprend une interface I2C (Inter-Integrated Circuit).
Les composants comme les circuits imprimés BME280 sont généralement vendus avec des têtes de broche non soudées. Si vous n’êtes pas à l’aise avec le soudage, recherchez un circuit imprimé BME280 avec une tête de broche présoudée ou un autre connecteur. Si vous le souhaitez, envisagez d’apprendre à souder ! Voici un bon guide de débutant pour le soudage.
Vérifiez que votre SBC est configuré pour prendre en charge les services suivants :
Pour de nombreux appareils, aucune configuration supplémentaire n’est requise. Pour Raspberry Pi, utilisez la commande raspi-config
. Pour plus d’informations sur raspi-config
, reportez-vous à la documentation sur Raspberry Pi.
Utilisez les composants matériels pour générer le circuit, comme illustré dans le diagramme suivant :
Voici les connexions du Raspberry Pi au circuit imprimé BME280. Notez que les étiquettes de broche diffèrent sur les différents circuits imprimés BME280.
Raspberry Pi | Circuit imprimé BME280 | Couleur |
---|---|---|
3,3V | VIN/3V3 | rouge |
Masse | GND | black |
SDA (GPIO 2) | SDI/SDA | blue |
SCL (GPIO 3) | SCK/SCL | orange |
Si nécessaire, reportez-vous au schéma de raccordement suivant :
Image avec la permission de Raspberry Pi Foundation.
Conseil
Un circuit imprimé GPIO conjointement avec un tableau de navigation est recommandé pour simplifier les connexions à la tête du GPIO.
Effectuez les étapes suivantes dans votre environnement de développement préféré :
Créez une application console .NET à l’aide de l’interface CLI .NET ou de Visual Studio. Nommez le SensorTutorial.
dotnet new console -o SensorTutorial
cd SensorTutorial
Ajoutez le package Iot.Device.Bindings au projet. Utilisez l’interface CLI .NET du répertoire du projet ou Visual Studio.
dotnet add package Iot.Device.Bindings --version 2.2.0-*
Remplacez 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 :
i2cSettings
est défini sur une nouvelle instance de I2cConnectionSettings
. Le constructeur définit le paramètre busId
sur 1 et le paramètre deviceAddress
sur Bme280.DefaultI2cAddress
.
Important
Certains fabricants de circuits imprimés BME280 utilisent la valeur d’adresse secondaire. Pour ces appareils, utilisez Bme280.SecondaryI2cAddress
.
Une déclaration using crée une instance d’appel de I2cDevice
en appelant I2cDevice.Create
et en transférant à i2cSettings
. Ce I2cDevice
représente le bus I2C. La déclaration using
garantit que l’objet est supprimé et que les ressources matérielles sont correctement libérées.
Une autre déclaration using
crée une instance de Bme280
représentant le capteur. Le I2cDevice
est transmis 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é en appelant GetMeasurementDuration
.
Une boucle while
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 à se mettre en veille.
Lit les valeurs de température, de pression, d’humidité et d’altitude.
Notes
L’altitude est calculée par la liaison de périphériques. Cette surcharge de TryReadAltitude
utilise la pression moyenne au niveau de la mer pour générer une estimation.
Écrit les conditions environnementales actuelles dans la console.
Mise en veille pendant 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+Maj+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 exécuter à l’aide de chmod +x
.
Exécutez l’application sur le Raspberry Pi en basculant vers le répertoire de déploiement et en exécutant l’exécutable.
./SensorTutorial
Observez 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/de température/d’humidité !
La source de ce tutoriel est disponible sur GitHub.
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Entrainement
Module
Développer des solutions IoT sécurisées pour Azure Sphere avec IoT Hub - Training
Développez des solutions IoT hautement sécurisées avec Azure Sphere, Azure RTOS et Azure IoT Hub.