Перейти к Часть 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 является множество функций безопасности:
- SPI Flash Encryption: Учебное пособие
- Безопасная загрузка: Документация
- Аппаратное ускорение шифрования для SHA, AES, RSA и т. д.
- Беспроводные обновления кода безопасности: Учебное пособие
- Поддержка интеграции ATECC508A: Учебное пособие
ПРИМЕЧАНИЕ. В 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 и поддерживаемых устройств.
Требования
- ESP32-DevKitC (Плата для разработки / демонстрации ESP32 от Espressif)
- Разъем USB A - Micro USB B
- AWS CLI
- Учетная запись AWS с учетными данными, хранящимися в вашей локальной среде
Настраивать
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