Подключение устройства Raspberry Pi 3 к решению для удаленного мониторинга и отправка данных телеметрии с датчика с помощью C

В этом руководстве показано, как использовать начальный набор Microsoft Azure IoT для Raspberry Pi 3 при разработке средства для считывания температуры и влажности, которое может обмениваться данными с облаком. В этом учебнике используется:

  • ОС Raspbian, язык программирования C и пакет SDK для Microsoft Azure IoT для C для реализации примера устройства.
  • Предварительно настроенное решение для удаленного мониторинга IoT Suite в качестве облачного сервера.

Общие сведения

В этом руководстве выполняются следующие шаги:

  • Развертывание экземпляра предварительно настроенного решения удаленного мониторинга в подписке Azure. На этом шаге автоматически разворачивается и настраивается несколько служб Azure.
  • Настройка устройства и датчиков для взаимодействия с компьютером и решением для удаленного мониторинга.
  • Обновление кода примера устройства для подключения к решению для удаленного мониторинга и отправка данных телеметрии, которые можно просмотреть на панели мониторинга решения.

Предварительные требования

Для работы с этим руководством требуется активная подписка Azure.

Примечание

Если ее нет, можно создать бесплатную пробную учетную запись всего за несколько минут. Дополнительные сведения см. в разделе Бесплатная пробная версия Azure.

Необходимое программное обеспечение

На настольном компьютере необходимо установить клиент SSH, чтобы иметь удаленный доступ к командной строке Raspberry Pi.

  • Windows не предоставляет клиент SSH. Мы советуем использовать PuTTY.
  • Большинство дистрибутивов Linux и Mac OS содержат служебную программу командной строки SSH. Дополнительные сведения см. в статье SSH Using Linux or Mac OS (Подключение по протоколу SSH с помощью Linux или Mac OS).

Необходимое оборудование

Настольный компьютер, чтобы иметь удаленный доступ к командной строке Raspberry Pi.

Начальный набор Microsoft IoT для Raspberry Pi 3 или эквивалентные компоненты. В этом руководстве используются следующие компоненты из набора:

  • Raspberry Pi 3;
  • карта MicroSD (с NOOBS);
  • кабель MiniUSB;
  • кабель Ethernet;
  • датчик BME280;
  • монтажная плата;
  • оптоволоконные кабеля с разъемами на обоих концах;
  • резисторы;
  • светодиодные индикаторы.

Подготовка решения

Если вы еще не подготовили предварительно настроенное решение для удаленного мониторинга в своей учетной записи, то выполните следующие действия:

  1. Войдите на сайт azureiotsuite.com с помощью учетных данных Azure и щелкните +, чтобы создать решение.
  2. На плитке Удаленный мониторинг щелкните Выбрать.
  3. Укажите имя для предварительно настроенного решения удаленного мониторинга.
  4. Выберите область и подписку, которые вы хотите использовать для подготовки решения.
  5. Щелкните Создать решение , чтобы начать процесс подготовки. Этот процесс обычно занимает несколько минут.

Дождитесь завершения процесса подготовки.

  1. Щелкните плитку решения с состоянием Подготовка.
  2. Следите за состояниями подготовки по мере развертывания служб Azure в рамках подписки Azure.
  3. Когда подготовка будет завершена, состояние изменится на Готово.
  4. Щелкните плитку, чтобы просмотреть подробные сведения о решении на правой панели.

Примечание

Если при развертывании предварительно настроенного решения возникают проблемы, см. статьи Разрешения на сайте azureiotsuite.com и Часто задаваемые вопросы об IoT Suite. Если проблемы не удается устранить, отправьте запрос в службу поддержки на портале.

Есть ли сведения, которые вы ожидали увидеть и которые не указаны для вашего решения? Сообщите нам о своих предложениях на сайте User Voice.

Предупреждение

Решение для удаленного мониторинга подготавливает набор служб Azure в подписке Azure. Развертывание отражает реальную корпоративную архитектуру. Чтобы избежать ненужных расходов на использование ресурсов Azure, удалите экземпляр предварительно настроенного решения на сайте azureiotsuite.com после завершения работы с ним. Если предварительно настроенное решение понадобится снова, его можно легко восстановить. Дополнительные сведения о сокращении затрат во время выполнения решения для удаленного мониторинга см. в статье Configuring Azure IoT Suite preconfigured solutions for demo purposes (Настройка предварительно настроенных решений Azure IoT Suite для демонстрационных целей).

Просмотр панели мониторинга решения

Панель мониторинга решения позволяет управлять развернутым решением. Например, можно просматривать данные телеметрии, добавлять устройства и вызывать методы.

  1. Когда подготовка завершится и на плитке предварительно настроенного решения появится надпись Готово, нажмите кнопку Запустить. Панель мониторинга решения для мониторинга откроется в новой вкладке.

    Запуск предварительно настроенного решения

  2. По умолчанию на портале решения отображается панель мониторинга. Вы можете перейти к другим областям портала решения с помощью меню в левой части страницы.

    Панель мониторинга предварительно настроенного решения для удаленного мониторинга

Добавление устройства

Чтобы устройство смогло подключиться к предварительно настроенному решению, оно должно пройти идентификацию в Центре Интернета вещей с использованием допустимых учетных данных. Учетные данные устройства можно получить на панели мониторинга решения. Вы добавите их в клиентское приложение далее в этом учебнике.

Если вы еще этого не сделали, добавьте пользовательское устройство в решение для удаленного мониторинга. Выполните следующие действия на панели мониторинга решения:

  1. В левом нижнем углу панели мониторинга щелкните Добавить устройство.

    Добавление устройства

  2. На панели Пользовательское устройство нажмите кнопку Добавить.

    Добавление пользовательского устройства

  3. Установите переключатель Позвольте мне определить собственный идентификатор устройства. Введите идентификатор устройства, например rasppi, и нажмите кнопку Проверить идентификатор, чтобы убедиться, что такое имя не используется в решении. Затем щелкните Создать, чтобы подготовить устройство.

    Добавление идентификатора устройства

  4. Запишите учетные данные устройства (идентификатор устройства, Центр Интернета вещей имя узла и ключ устройства). Эти значения потребуются клиентскому приложению на устройстве Raspberry Pi при подключении к решению для удаленного мониторинга. Затем нажмите кнопку Done(Готово).

    Просмотр учетных данных устройства

  5. Выберите устройство в списке устройств на панели мониторинга решения. Затем на панели Сведения об устройстве щелкните Включить устройство. Теперь текущее состояние устройства — Работает. Решение для удаленного мониторинга теперь может получать данные телеметрии с устройства и вызывать методы на устройстве.

Подготовка устройства Raspberry Pi

Установка Raspbian

Если вы впервые используете устройство Raspberry Pi, необходимо установить операционную систему Raspbian с помощью NOOBS на карте SD, входящей в состав набора. В руководстве по программному обеспечению Raspberry Pi содержатся сведения об установке операционной системы на устройстве Raspberry Pi. В этом руководстве предполагается, что операционная система Raspbian уже установлена на Raspberry Pi.

Примечание

На картах SD, входящих в начальный набор Microsoft Azure IoT для Raspberry Pi 3, уже установлены NOOBS. Вы можете установить Raspberry Pi из этой карты, а также другую операционную систему Raspbian.

Настройка оборудования

Для создания данных телеметрии в этом руководстве используется датчик BME280, который входит в начальный набор Microsoft Azure IoT для Raspberry Pi 3. Для извещения о том, что Raspberry Pi обрабатывает вызов метода из панели мониторинга решений, используется светодиодный индикатор.

Компоненты монтажной платы:

  • красный светодиодный индикатор;
  • резистор 220 Ом (красный, красный, коричневый);
  • датчик BME280;

На следующей схеме показано, как подключить оборудование.

Подключение оборудования для Raspberry Pi

В следующей таблице перечислены подключения от Raspberry Pi к компонентам монтажной платы.

Raspberry Pi монтажная плата; Цвет
GND (вывод 14) Индикатор, -ve (18A) Сиреневый
GPCLK0 (вывод 7) Резистор (25A) Оранжевый
SPI_CE0 (вывод 24) CS (39A) Синий
SPI_SCLK (вывод 23) SCK (36A) Желтый
SPI_MISO (вывод 21) SDO (37A) White
SPI MOSI (вывод 19) SDI (38A) Зеленый
GND (вывод 6) GND (35A) Черный
3,3 В (вывод 1) 3 В (34A) Красный

Чтобы завершить настройку оборудования, сделайте следующее:

  • Подключите Raspberry Pi к источнику питания, входящему в состав набора.
  • Подключите Raspberry Pi к сети с помощью кабеля Ethernet, входящего в состав набора. Кроме того, для Raspberry Pi можно настроить беспроводное подключение.

Установка оборудования для Raspberry Pi завершена.

Вход и доступ к терминалу

Существует два варианта получения доступа к среде терминала на Raspberry Pi.

  • Если клавиатура и монитор подключены к Raspberry Pi, вы можете использовать графический пользовательский интерфейс Raspbian, чтобы получить доступ к окну терминала.

  • Получите доступ к командной строке на устройстве Raspberry Pi с настольного компьютера, используя SSH.

Использование окна терминала в графическом пользовательском интерфейсе

По умолчанию в качестве учетных данных для Raspbian используется имя пользователя pi и пароль raspberry. На панели задач в графическом пользовательском интерфейсе можно запустить служебную программу Terminal с помощью значка в виде монитора.

Вход с помощью SSH

Используйте SSH, чтобы получить доступ к Raspberry Pi с помощью командной строки. Сведения о настройке SSH на устройстве Raspberry Pi и о подключении из Windows, Linux и Mac OS см. в руководстве по SSH (SECURE SHELL).

Войдите, используя имя пользователя pi и пароль raspberry.

Совместный доступ к папке на устройстве Raspberry Pi (необязательно)

При необходимости вы можете предоставить общий доступ к папке на устройстве Raspberry Pi для среды рабочего стола. Предоставив общий доступ к папке, вы сможете использовать предпочитаемый классический текстовый редактор (например, Visual Studio Code или Sublime Text), чтобы редактировать файлы на устройстве Raspberry Pi вместо использования nano или vi.

Чтобы предоставить общий доступ к папке в Windows, необходимо настроить сервер Samba на устройстве Raspberry Pi. Вы также можете использовать встроенный сервер SFTP с клиентом SFTP на настольном компьютере.

Включение SPI

Прежде чем запустить пример приложения, необходимо включить шину последовательного периферийного интерфейса (SPI) на Raspberry Pi. Raspberry Pi взаимодействует с датчиком BME280 через шину SPI. Выполните следующую команду, чтобы изменить файл конфигурации:

sudo nano /boot/config.txt

Найдите следующую строку:

#dtparam=spi=on

  • Чтобы раскомментировать строку, удалите # в начале.

  • Сохраните изменения (клавиши CTRL+O, ВВОД) и закройте редактор (клавиши CTRL+X).

  • Чтобы включить SPI, перезагрузите Raspberry Pi. При перезагрузке будет отключен терминал, поэтому после перезапуска Raspberry Pi необходимо будет выполнить повторный вход:

    sudo reboot
    

Скачивание и настройка примера

Теперь можно скачать и настроить клиентское приложение для удаленного мониторинга на устройстве Raspberry Pi.

Клонирование репозиториев

Клонируйте необходимые репозитории (если вы еще не сделали это), выполнив следующие команды в терминале на устройстве Pi:

cd ~
git clone --recursive https://github.com/Azure-Samples/iot-remote-monitoring-c-raspberrypi-getstartedkit.git
git clone --recursive https://github.com/WiringPi/WiringPi.git

Обновление строки подключения устройства

Откройте исходный файл примера в редакторе nano, используя следующую команду:

nano ~/iot-remote-monitoring-c-raspberrypi-getstartedkit/basic/remote_monitoring/remote_monitoring.c

Найдите следующие строки:

static const char* deviceId = "[Device Id]";
static const char* connectionString = "HostName=[IoTHub Name].azure-devices.net;DeviceId=[Device Id];SharedAccessKey=[Device Key]";

Замените значения заполнителей сведениями об устройстве и Центре Интернета вещей, созданными и сохраненными в начале этого руководства. Сохраните изменения (клавиши CTRL+O, ВВОД) и закройте редактор (клавиши CTRL+X).

Сборка примера

Установите пакеты необходимых компонентов пакет SDK для устройств Microsoft Azure IoT для C, выполнив следующие команды в окне терминала на устройстве Raspberry Pi:

sudo apt-get update
sudo apt-get install g++ make cmake git libcurl4-openssl-dev libssl-dev uuid-dev

Теперь вы можете выполнить сборку обновленного примера решения на устройстве Raspberry Pi:

chmod +x ~/iot-remote-monitoring-c-raspberrypi-getstartedkit/basic/build.sh
~/iot-remote-monitoring-c-raspberrypi-getstartedkit/basic/build.sh

Теперь вы можете запустить пример программы на устройстве Raspberry Pi. Введите команду:

sudo ~/cmake/remote_monitoring/remote_monitoring

Следующий пример с выходными данными отобразится в командной строке на устройстве Raspberry Pi:

Выходные данные приложения Raspberry Pi

Вы можете в любое время нажать комбинацию клавиш CTRL+C, чтобы выйти из программы.

Просмотр телеметрии

Теперь устройство Raspberry Pi может отправлять данные телеметрии в решение для удаленного мониторинга. Эти данные можно просмотреть на панели мониторинга решения. Вы также можете использовать эту панель, чтобы отправлять сообщения в Raspberry Pi.

  • Перейдите к панели мониторинга решения.
  • Выберите устройство в раскрывающемся списке Устройство для просмотра.
  • Данные телеметрии из Raspberry Pi отобразятся на панели мониторинга.

Отображение данных телеметрии из Raspberry Pi

Выполнение действий на устройстве

Используйте панель мониторинга решения для вызова методов на устройстве Raspberry Pi. Когда устройство Raspberry Pi подключается к решению для удаленного мониторинга, оно отправляет сведения о поддерживаемых методах.

  • На панели мониторинга решения щелкните Устройства, чтобы перейти на страницу устройств. Выберите Raspberry Pi в списке устройств. Затем выберите Методы:

    Список устройств на панели мониторинга

  • На странице Вызвать метод в раскрывающемся списке Метод выберите LightBlink.

  • Выберите InvokeMethod. Индикатор, подключенный к устройству Raspberry Pi, мигает несколько раз. Приложение на устройстве Raspberry Pi отправляет подтверждение обратно на панель мониторинга решения.

    Просмотр журнала методов

  • Вы можете включить и отключить индикатор, используя метод ChangeLightStatus с параметром LightStatusValue со значением 1 (для включения) или 0 (для выключения).

Предупреждение

Если не завершить выполнение решения для удаленного мониторинга в учетной записи Azure, вам будет выставлен счет. Дополнительные сведения о сокращении затрат во время выполнения решения для удаленного мониторинга см. в статье Configuring Azure IoT Suite preconfigured solutions for demo purposes (Настройка предварительно настроенных решений Azure IoT Suite для демонстрационных целей). Прекратив использовать предварительно настроенное решение, удалите его из учетной записи Azure.

Дальнейшие действия

Дополнительные примеры и документацию по Azure IoT можно найти в Центре разработчиков Azure IoT.