Перейти к Часть II

Как только вы перестали пускать слюни на обширный список функций ESP32, самое время приступить к подключению вашего ESP32-DevKitC к чему-то, способному выполнять более тяжелую работу, чем сам чип - облачное предложение, такое как AWS IoT, является отправной точкой для облачное решение для связи и анализа данных от вашего ESP.

Наши цели

  • Настройте среду разработки для работы с ESP32 Development Board.
  • Настройте ESP32 как объект AWS IoT и подготовьте его к обмену данными

Концепции

Что такое ESP32?

Низкое энергопотребление и недорогой микроконтроллер (MCU) с Wi-Fi 2,4 ГГц и встроенным Bluetooth BLE. В настоящее время один модуль ESP32 (без пробоя) стоит около 6,50 долларов США.

ESP32-DevKitC (Amazon, 14,99 долл. США) - это новая плата, предлагаемая Espressif для облегчения разработки и создания прототипов устройств IoT от дизайна до рынка. Они берут ядро ​​SoM (система на модуле), которое можно использовать в коммерческом приложении, и обертывают его микросхемой последовательной связи, разъемом USB, кнопками, подключенными для управления состоянием программирования, светодиодом питания и совместимыми с макетной платой разъемами контактов. Хотите копать дальше? Ознакомьтесь с массивным даташитом.

Одним из важных отличий ESP32 от его предшественников Espressif и конкурентов MCU с поддержкой Wi-Fi является множество функций безопасности:

ПРИМЕЧАНИЕ. В ESP32-DevKitC, который я приобрел, похоже, не было встроенного светодиода для SoM (или светодиод питания на коммутационной плате должен был быть светодиодом с адресацией GPIO и не работал).

Что такое AWS IoT?

Платформа для обеспечения двунаправленной связи между устройствами, подключенными к Интернету, и облаком. Это обеспечивает:

  • Шлюз устройств: позволяет другим устройствам и приложениям связываться с устройством.
  • Посредничество сообщений: механизм публикации / подписки для устройств для связи
  • Интеграция с AWS: обеспечивает (почти) бесшовную интеграцию с другими предложениями AWS, такими как DynamoDB или S3.
  • Тени: постоянные объектные представления состояния устройства и управляемых данных. ИМХО, напоминает идею виртуального DOM, представляющего единое устройство.

Что такое Mongoose OS?

«Операционная система с открытым исходным кодом для Интернета вещей». Хотя это звучит круто, на самом деле это можно разделить на:

  • Консолидированный набор инструментов для чтения и записи на ESP32 (или другие поддерживаемые устройства)
  • Библиотеки и инструменты для работы с облачными интеграциями, такими как AWS IoT и Google Cloud IoT.
  • Простая IDE веб-клиента для взаимодействия с вашим устройством.
  • Поддержка Javascript для вашего устройства, включая библиотеки для выполнения общих задач и утилиты для переноса кода C (например, библиотеки arduino или вспомогательные методы только для C) в ваш Javascript!
  • Готово к прошивке кастомной прошивки для ESP32 и поддерживаемых устройств.

Требования

Настраивать

1. Настройте свой ноутбук

Посмотрите на серийный чип на вашем ESP32-DevKitC (если вы такой же старый человек, как я, вам может потребоваться выломать увеличительную линзу) и найдите вторую строку текста на чипе - если у вас есть CP2102 , то вам следует загрузить драйверы Silicon Labs, в противном случае, если вы увидите CH34x, вам следует загрузить соответствующие драйверы CH34x.

macOS:

  • Драйверы Silicon Labs (CP2102 на последовательном чипе): Скачать
  • Драйверы CH34x (CH340 или CH341 на последовательном чипе): Скачать

Windows:

  • Драйверы Silicon Labs (CP2102 на последовательном чипе): Скачать
  • Драйверы для ПК CH34x (CH340 или CH341 на последовательном чипе): Скачать

Установка драйвера macOS Silicon Labs:

Проверка установки драйвера:

Убедитесь, что разъем кабеля Micro USB вставлен в соответствующий разъем на ESP32-DevKitC, а разъем USB A отключен от вашего ноутбука. Подключите разъем USB A обратно к ноутбуку и откройте новый терминал:

$ ls /dev | grep tty.SLAB
tty.SLAB_USBtoUART

Обратите внимание на вывод этой команды - это имя последовательного устройства, к которому мы попытаемся подключиться через Mongoose OS. В этом случае вывод был tty.SLAB_USBtoUART - ›это переводится как полный путь к устройству:

 /dev/tty.SLAB_USBtoUART

Если вы не видите никаких выходных данных, подобных приведенному выше, отключите и снова подключите USB-кабель к ноутбуку и попробуйте более общую команду, например $ ls / dev | grep tty. На этот раз вы увидите множество устройств; ищите имя устройства с USB или UART в нем. Если вы ЕЩЕ не видите свое устройство, значит, еще что-то не так.

2. Установите Mongoose OS.

Предполагается, что вы уже установили драйверы последовательного порта с предыдущего шага. Mongoose OS - это комбинация цепочки инструментов командной строки и веб-IDE для взаимодействия с устройством, подключенным через последовательный порт USB (например, ESP32).

macOS

$ curl -fsSL https://mongoose-os.com/downloads/mos/install.sh | /bin/bash

Окна

Исполняемый файл установщика: Скачать

$ mos console

3. Прошить прошивку ESP32.

ПРИМЕЧАНИЕ. Прошивка через интерфейс командной строки была единственным способом заставить работать флэш-память (macOS Sierra, Chrome 59).

macOS

$ ~/.mos/bin/mos flash esp32 --port /dev/cu.SLAB_USBtoUART

ПРИМЕЧАНИЕ. cu.DEVICENAME - это устройство вызова, которое представляет способ подключения к внешнему устройству.

Окна

$ mos flash mos-esp32

Пример вывода:

4. Настройте Wi-Fi.

ПРИМЕЧАНИЕ. Радиомодуль ESP32 WiFi поддерживает только 2,4 ГГц. Сети Wi-Fi 5 ГГц работать не будут.

macOS

$ ~/.mos/bin/mos wifi YOUR_WIFI_SSID YOUR_WIFI_PASSWORD

Окна

$ mos wifi YOUR_WIFI_SSID YOUR_WIFI_PASSWORD

5. Настройте AWS IoT.

Инструмент командной строки Mongoose OS предоставляет удобную команду настройки, которая выполняет следующие действия:

  • Проверяет сохраненные вами учетные данные AWS, чтобы определить, какую учетную запись использовать
  • Создает политику по умолчанию (Политики AWS IoT) для ОС Mongoose и ESP32 для использования при взаимодействии с AWS IoT.
  • Предоставляет сертификат, открытый и закрытый ключи, необходимые для связи, и записывает их в ESP32.
  • Создает «вещь» в AWS IoT для вашего устройства

На этом этапе убедитесь, что ваши учетные данные AWS хранятся локально, которые вы хотите использовать, и что ваш ESP32 подключен к вашему ноутбуку. Замените REGION в приведенных ниже командах на us-east-1 или соответствующий регион AWS. В вашем терминале запустите:

macOS

$ ~/.mos/bin/mos aws-iot-setup --aws-region REGION --aws-iot-policy mos-default

Окна

$ mos aws-iot-setup --aws-region REGION --aws-iot-policy mos-default

ПРИМЕЧАНИЕ. Если вы переименовали mos-default в другое имя политики, вы можете столкнуться с ошибками. Попробуйте создать политику на консоли AWS IAM с желаемым именем, прежде чем запускать ее с другим именем.

Пример вывода:

Если вы войдете в консоль AWS - ›AWS IoT -› Реестр, вы должны увидеть зарегистрированное устройство следующим образом:

6. Запускаем IDE.

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

macOS

$ ~/.mos/bin/mos ui

Окна

$ mos ui

В вашем браузере по умолчанию должна открываться вкладка с примерно таким:

ПРИМЕЧАНИЯ:

  • Состояние устройства сообщает, подключено ли подключенное устройство, выбранное на шаге 1, к Интернету. Это не означает наличие связи между устройством и компьютером.
  • Кнопка выбора на шаге 1 не сработала так, как я предполагал. Он подтверждает устройство, которое вы вводите в раскрывающееся / текстовое поле на шаге 1.
  • Журналы устройства (в затененном нижнем левом углу экрана) - это выходные данные монитора последовательного порта. Следите за сообщениями с вашего устройства.
  • Журналы инструментов MOS (нижний правый угол экрана) - это область для сообщений из цепочки инструментов (IDE, компилятора, флешера и т. д.)

7. Настройте IDE для ESP32.

В разделе «Шаг 1» используйте устройство, которое мы записали в разделе «Проверка установки драйвера» (помните, что мы использовали команду: ls / dev | grep tty.SLAB). Мы вводим его полный путь в раскрывающийся список / текстовое поле так:

/dev/cu.SLAB_USBtoUART

Нажмите кнопку Выбрать. Вы должны увидеть, что статус устройства показывает состояние подключения (имеет зеленую или желтую точку). Вы также должны увидеть некоторую информацию об устройстве в разделе Шаг 2.

В разделе «Шаг 2» выберите esp32. НЕ НАЖИМАЙТЕ КНОПКУ ВСПЫШКИ. Мы уже прошили наше устройство на предыдущем шаге.

Если ваш WiFi на шаге 1 оставил вам желтую точку и «Нет IP» в статусе устройства, вам может потребоваться изменить информацию о WiFi в разделе шага 3 и нажать кнопку «Сохранить».

Успешно!

Продолжение в Части II

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

  • Изменение теневого состояния объекта
  • Передача теневого состояния обратно в ESP32
  • Подписка на события MQTT в AWS IoT

Перейти к Часть II Теперь…

Об авторе

Джонатан Бартон (@jellyfishtree) - разработчик программного обеспечения, аппаратный хакер и соучредитель GoMake. LinkedIn