Обучение
Модуль
Разработка решений Интернета вещей с высоким уровнем безопасности с помощью Azure Sphere, ОСРВ Azure и Центра Интернета вещей Azure
Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Одним из наиболее распространенных сценариев использования устройств Интернета вещей является определение условий окружающей среды. Существует множество датчиков для отслеживания температуры, влажности, атмосферного давления и многих других показаний.
В этом разделе вы будете использовать .NET для считывания с датчика условий окружающей среды.
Примечание
В этом руководстве предполагается, что целевым устройством является Raspberry Pi. Однако это руководство можно использовать для любого SBC под управлением Linux, поддерживающего .NET, например Orange Pi, ODROID и т. д.
Важно!
Существует множество производителей коммутационных плат BME280. Большинство конструкций похожи, и производители не видят никакой разницы в функционале. В этом руководстве предпринимается попытка отразить отличия. Убедитесь, что коммутационная плата BME280 имеет интерфейс I2C.
Такие компоненты, как пробоя BME280, часто продаются с незапаздывными заголовками контактов. Если вы не хотите самостоятельно заниматься пайкой, ищите коммутационную панель BME280 с уже припаянным разъемом или другой разъем. Или попробуйте научиться паять самостоятельно! Вот неплохая инструкция для начинающих.
Убедитесь, что SBC настроен для поддержки следующих служб:
Для многих устройств дополнительная настройка не требуется. Для Raspberry Pi используйте raspi-config
команду . Дополнительные сведения о raspi-config
см. в документации по Raspberry Pi.
Используйте компоненты оборудования для создания цепи, как показано на следующей схеме:
Ниже приведены подключения от Raspberry Pi к пробою BME280. Обратите внимание, что метки закрепления отличаются в разных пробоях BME280.
Raspberry Pi | BME280 Breakout | Цвет |
---|---|---|
3,3 В | VIN/3V3 | красный |
Заземление | GND | black |
SDA (GPIO 2) | SDI/SDA | blue |
SCL (GPIO 3) | SCK/SCL | orange |
При необходимости смотрите следующую схему контактов:
Изображение взято с Raspberry Pi Foundation.
Совет
Для упрощения подключения к заголовку GPIO рекомендуется использовать коммутационную плату GPIO в сочетании с монтажной платой для макетирования или тестирования.
Выполните следующие действия в предпочитаемой среде разработки.
Создайте консольное приложение .NET с помощью .NET CLI или Visual Studio. Назовите его SensorTutorial.
dotnet new console -o SensorTutorial
cd SensorTutorial
Добавьте пакет Iot.Device.Bindings в проект. Используйте либо .NET CLI из каталога проекта, либо Visual Studio.
dotnet add package Iot.Device.Bindings --version 2.2.0-*
Замените содержимое Program.cs кодом из этого примера.
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);
}
В приведенном выше коде:
Для i2cSettings
задан новый экземпляр I2cConnectionSettings
. Конструктор задает параметру busId
значение 1, а параметру deviceAddress
— значение Bme280.DefaultI2cAddress
.
Важно!
Некоторые производители коммутационных плат BME280 используют значение дополнительного адреса. Для этих устройств используйте Bme280.SecondaryI2cAddress
.
Объявление using создает экземпляр I2cDevice
путем вызова I2cDevice.Create
и передачи i2cSettings
. Представляет I2cDevice
собой шину I2C. Объявление using
гарантирует, что объект удален и аппаратные ресурсы освобождены должным образом.
Другое объявление using
создает экземпляр Bme280
для представления датчика.
I2cDevice
передается конструктору.
Время, необходимое микросхеме для выполнения измерений с текущими параметрами микросхемы (заданными по умолчанию), определяется путем вызова GetMeasurementDuration
.
Цикл while
выполняется бесконечно. Каждая итерация:
Очищает окно консоли.
Задает режим питания Bmx280PowerMode.Forced
. В этом случае микросхема проводит одно измерение, сохраняет результаты, а затем переходит в спящий режим.
Считывает значения температуры, давления, влажности и высоты над уровнем моря.
Примечание
Высота над уровнем моря вычисляется привязкой устройства. Для получения оценки эта перегрузка метода TryReadAltitude
использует среднее значение давления на уровне моря.
Записывает текущие условия среды в консоль.
Переходит в спящий режим на 1000 мс.
Построение приложения. При использовании интерфейса командной строки .NET выполните команду dotnet build
. Чтобы выполнить сборку в Visual Studio, нажмите клавиши CTRL+SHIFT+B.
Разверните приложение в SBC как автономное приложение. Инструкции см. в статье Развертывание приложений .NET в Raspberry Pi. Обязательно предоставьте исполняемому файлу разрешение execute с помощью chmod +x
.
Запустите приложение на устройстве Raspberry Pi, перейдя в каталог развертывания и запустив исполняемый файл.
./SensorTutorial
Наблюдайте за выходными данными датчика в консоли.
Завершите выполнение программы, нажав сочетание клавиш CTRL+C.
Поздравляем! Вы использовали I2C для считывания значений с датчика температуры, влажности и барометрического давления!
Исходный код для этого учебника доступен на сайте GitHub.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Обучение
Модуль
Разработка решений Интернета вещей с высоким уровнем безопасности с помощью Azure Sphere, ОСРВ Azure и Центра Интернета вещей Azure