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

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

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

В этом учебнике используется:

  • ОС 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

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

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

nano ~/iot-remote-monitoring-c-raspberrypi-getstartedkit/advanced/config/deviceinfo

Замените значения заполнителей идентификатором устройства и сведениями о Центре Интернета вещей, созданном и сохраненном в начале этого руководства.

По завершении содержимое файла deviceinfo должно выглядеть следующим образом:

yourdeviceid
HostName=youriothubname.azure-devices.net;DeviceId=yourdeviceid;SharedAccessKey=yourdevicekey

Сохраните изменения (клавиши 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/advanced/1.0/build.sh
~/iot-remote-monitoring-c-raspberrypi-getstartedkit/advanced/1.0/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 отправляет сведения о поддерживаемых методах.

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

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

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

  3. В поле FWPackageURI введите https://github.com/Azure-Samples/iot-remote-monitoring-c-raspberrypi-getstartedkit/raw/master/advanced/2.0/package/remote_monitoring.zip. Этот файл архива содержит реализацию встроенного ПО версии 2.0.

  4. Выберите InvokeMethod. Приложение на устройстве Raspberry Pi отправляет подтверждение обратно на панель мониторинга решения. Затем запускается процесс обновления встроенного ПО путем скачивания новой версии встроенного ПО:

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

Просмотр процесса обновления встроенного ПО

Вы можете наблюдать за выполнением процесса обновления встроенного ПО на устройстве и просматривая сообщенные свойства на панели мониторинга решения:

  1. Ход выполнения процесса обновления можно просмотреть на устройстве Raspberry Pi:

    Отображение хода выполнения обновления

    Примечание

    После обновления приложение для удаленного мониторинга автоматически перезапускается. Используйте команду ps -ef, чтобы проверить, выполняется ли процесс. Если вы хотите завершить процесс, используйте команду kill с идентификатором процесса.

  2. Данные о состоянии обновления встроенного ПО, сообщаемые устройством, можно просмотреть на портале решения. На следующем снимке экрана показаны сведения о состоянии и продолжительности каждого этапа процесса обновления, а также сведения о новой версии встроенного ПО:

    Отображение состояния задания

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

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

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

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

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