Август 2019.
Вы также хотите создать инновационные проекты IoT, которые используют чип ESP32 или модули на основе ESP32 популярной компании Espressif? Ну, я сделал и до сих пор. И я надеюсь, что ты тоже сделаешь.
Цель этого хорошо задокументированного стартового комплекта состоит в том, чтобы ускорить разработку ваших проектов IoT для оборудования ESP32, используя структуру ESP-IDF от ESPRESSIF и вдохновляйте, какие приложения вы можете создать для ESP32 с использованием различных аппаратных модулей.
Готовы ли вы узнать, как вы можете быстро начать?
mkdir ~/esp
cd ~/esp
git clone -b v3.2.2 --recursive https://github.com/espressif/esp-idf.git esp-idf
Эта часть содержит основную информацию о некоторых платах по разработке ESP32, которые я использовал изначально:
Совет по разработке ESP32 может быть запрограммирован (легко) только таким адаптером.
Эта часть документирует несколько продуктов и как их настроить.
Перезаряжаемые батареи часто используются в проектах IoT.
Эта часть популярного зарядного устройства, самодельного разгрузки аккумулятора и подробностей о популярных батареях, таких как батареи Lion и батареи LifePo4. Он также содержит некоторые характеристики о профессиональных нерезарных батареях литий-тетионилхлорида LISOCI2 для использования в суровых условиях.
Некоторая документация о в основном N -каналах мощных межфутов, которые часто используются в сочетании с доской разработки ESP32.
Документация о модуле TP4056.
Некоторая документация о регуляторах напряжения LDO, которые являются частью Совета по развитию ESP32.
Стартовый комплект включает в себя различные рабочие проекты, которые вы можете запустить мгновенно - в отличие от фрагментов, которые вы должны сплотить сами, что нелегко для новичка.
Эти проекты:
Дайте представление о том, как на самом деле эффективно использовать официальную структуру ESP-IDF.
Включите тонну лучших методов кодирования и практики конфигурации.
Продемонстрируйте, как использовать новые компоненты ESP-IDF этого стартового комплекта, такие как светодиодные полоски RGB и датчики Meteo.
Специальный проект esp32_mjd_components :
Давайте выделим несколько проектов, которые демонстрируют, как использовать основную структуру ESP-IDF.
esp32_button_basics Как взаимодействовать с кнопками (переключатели).esp32_deep_sleep_wakeup_basics демонстрирует, как использовать переключатель или магнитный датчик двери/окна, чтобы разбудить ESP32 от глубокого сна.esp32_http_client демонстрирует основы использования стандартного компонента ESP-IDF "ESP32_HTTP_CLIENT".esp32_gpio_basics Как взаимодействовать с булавками GPIO Правления разработки.esp32_gpio_scanner , как сканировать все булавки GPIO и обнаружить их функцию ввода -вывода.esp32_i2c_scanner Как сканировать все рабовладельческие устройства на булавках I2C и определить их подчиненный адрес I2C. Это удобно при работе с новыми подчиненными устройствами I2C.esp32_ledc_pwm_basics Как использовать стандартный драйвер LEDC ESP-IDF (драйвер контроллера светодиода с использованием PWM).esp32_nvs_basics Как использовать стандартный драйвер ESP-IDF NVS (нелетучих хранилищ) с пользовательским разделом NVS.esp32_rmt_basics Как использовать стандартный драйвер ESP-IDF RMT.esp32_spiffs_basics Как использовать стандартный драйвер файловой системы ESP-IDF Spiffs.esp32_sw180_tilt_sensor Как взаимодействовать с этим датчиком наклона (не требуется дополнительных компонентов).esp32_timer_basics Как использовать стандартный драйвер таймера ESP-IDF.esp32_uart_basics Как использовать стандартный драйвер ESP-IDF UART.esp32_uart_do_output Как использовать стандартный драйвер UART ESP-IDF.esp32_udp_client демонстрирует основы реализации клиента UDP с использованием структуры ESP-IDF.Давайте выделим несколько проектов, которые демонстрируют, как использовать дополнительные компоненты стартового комплекта ESP32 MJD.
esp32_ads1115_adc_using_lib Demonstrates the basics of using the MJD ESP-IDF component "mjd_ads1115" for the ESP32 and the popular breakout boards of the TI ADS1115 Ultra-Small, Low-Power, I2C-Compatible, 860-SPS, 16-Bit ADCs With Internal Reference, Oscillator, and Programmable Comparator using the I2C Автобусesp32_am2320_temperature_sensor_using_lib Как читать данные из метео -датчика Aosong AM2320.esp32_bh1750fvi_lightsensor_using_lib Как читать данные с датчика интенсивности света BH1750.esp32_bme280_sensor_using_lib Как читать данные из метео -датчика BOSCH BME280.esp32_bmp280_sensor_using_lib Как читать данные из метео -датчика BOSCH BMP280.esp32_dht11_temperature_sensor_using_lib Как читать данные из датчика температуры AOSONG DHT11.esp32_dht22_temperature_sensor_using_lib Как читать данные из датчика температуры AOSONG DHT22/AM2302.esp32_door_sensor_reed_switch демонстрирует, как использовать магнитный датчик двери/окна, который основан на переключателе тростника.esp32_ds3231_clock_using_lib Как получить/установить данные из DS3231 ZS042 RTC REALTION POALCH.esp32_hcsr501_pir_sensor_using_lib Как читать данные из HC-SR501 PIR Human Infrared Sensor.esp32_huzzah32_battery_voltage_using_lib Как использовать конкретные функции Адафрута Huzzah32. Пример: прочитать уровень напряжения батареи.esp32_jsnsr04t_using_lib Этот проект демонстрирует все функции водонепроницаемого модуля ультразвукового датчика JSN-SR04T-2.0 в сочетании с платой разработки ESP32. Он сбрасывает измерения в журнале отладки.esp32_jsnsr04t_oled_mosfet_using_lib Этот проект демонстрирует все особенности водонепроницаемого модуля ультразвукового датчика JSN-SR04T-2.0, в сочетании с платой развития ESP32, модулем OLED-дисплея, силовым эфиром для включения датчика и выхода (чтобы сохранить потребление мощности во время глубокого сна) и глубокий цикл сна.esp32_ky032_obstacle_sensor_using_lib Как читать данные из датчика предотвращения препятствий KY-032.esp32_ledrgb_using_lib Как управлять светодиодными полосками RGB (например, Neopixels Adafruit и продукты BTF-света).esp32_linked_list_basics Как использовать компонент связанного списка.esp32_lorabee_using_lib Как взаимодействовать с платой прорыва SODAQ LORABEE (Microchip RN2843 LORA Transceiver). Этот проект демонстрирует основные команды для настройки устройства и чтения/записи NVM.esp32_lorabee_rx_using_lib Как взаимодействовать с платой прорыва Sodaq Lorabee (Microchip RN2843 LORA Transceiver). Этот проект демонстрирует функциональность получения Lora RX. Примечание: он использует Lora P2P, а не Lorawan.esp32_lorabee_tx_using_lib Как взаимодействовать с платой прорыва Sodaq Lorabee (Microchip RN2843 LORA Transceiver). Этот проект демонстрирует функциональность передачи LORA TX. Примечание: он использует Lora P2P, а не Lorawan.esp32_lorabee_using_pc_usbuart Этот проект демонстрирует, как выпустить основные команды в модуль Lorabee с использованием ПК с Windows и доску USB-UART (например, FTDI). Это простой способ познакомиться с особенностями доски Lorabee / Microchip RN2843A.esp32_mlx90393_using_lib Как получить данные магнитного поля с помощью датчика MELEXIS MLX90393 Магнитного поля.esp32_neom8n_gps_using_lib Как получить данные GPS из модуля GPS UBLOX NEO-M8N.esp32_scd30_sensor_settings_using_lib Этот проект для сенсора Sensirion SCD30 CO2 и RH/T используется для проверки того, что датчик работает должным образом, чтобы показать все настройки ** датчика и для запуска различных мод калибровки.esp32_scd30_sensor_readings_using_lib Этот проект для Sensirion SCD30 CO2 и модуля RH/T непрерывно считывает измерение CO2, связанные и полученные измерения и индекс качества воздуха.esp32_sht3x_sensor_using_lib Этот проект демонстрирует компоненты MJD_SHT3X. Компонент MJD_SHT3X для цифровой влажности Sensirion Sht3x используется датчик влажности и температуры Настройте устройство и собирайте его выходные метрики (температура CF, относительная влажность % и Alos точка росы C F.esp32_ssd1306_oled_using_lib Этот проект для популярных OLED -дисплеев 128X32 и 128x64 на основе IC SSD1306 Driver Dire демонстрирует компонент MJD_SSD1306, чтобы показать текст на OLED -дисплее.esp32_tmp36_sensor_ads1115_adc_using_lib Этот проект демонстрирует компоненты MJD_ADS1115 и MJD_TMP36. Компонент MJD_ADS1115 для аналогового к цифровому конвертору Ti ADS1115 используется для считывания выходного выходного сигнала датчика аналоговой температуры. Компонент MJD_TMP36 для датчика TMP36 используется для преобразования необработанного показания напряжения АЦП в температуру окружающей среды в градусах Цельсии.esp32_wifi_device_scanner Как сканировать все каналы Wi -Fi и открыть для себя устройства.esp32_wifi_ssid_cloner Как клонировать существующие точки доступа.esp32_wifi_ssid_scanner Как сканировать все каналы Wi -Fi и обнаружить точки доступа.esp32_wifi_ssid_spammer Как создать дополнительные точки доступа в области.esp32_wifi_stress_test Это приложение запустит стресс -тест для платы ESP32 DEV в роли Wi -Fi. Цель состоит в том, чтобы проверить стабильность драйвера программного обеспечения ESP32 WiFi конкретной версии Framework ESP-IDF; Чтобы проверить его правильную работу с помощью продуктов точки доступа Wi -Fi различных поставщиков.Я заметил, что многие паттерны кодирования вернулись снова и снова в первых проектах, которые я разработал для ESP32.
Поэтому через некоторое время я начал размещать эти шаблоны кодирования в отдельные библиотеки. ESP-IDF является расширяемой структурой, поэтому эти библиотеки реализованы как новые компоненты ESP-IDF, которые могут легко вводить в любом проекте на основе ESP-IDF.
Все компоненты ESP-IDF MJD централизованы в проекте esp32_mjd_components .
Компоненты могут быть примерно разделены на 3 группы:
Связано с программированием на языке C (который имеет свои собственные причуды как все другие языки программирования). Пример: связанные списки.
Связано с средой ESP32 и спецификой встроенных систем. Примеры: простой компонент Wi -Fi. Они делают эти функции ESP-IDF проще в использовании.
Связано с сетью. Некоторые примеры: взаимодействие с сервером MQTT и некоторыми функциями DNS. Компонент абстрагирует сложность и облегчает использование.
Связано с периферийными устройствами, которые вы подключаете к чипу ESP32 или модулю ESP32. Некоторые примеры: плата Lora, светодиоды RGB, датчики температуры, GPS -платы, часы RTC, датчики PIR и датчики препятствий. Компонент абстрагирует сложность периферийной.
Это список новых компонентов:
mjd Базовый компонент, который содержит функции общего назначения.mjd_ads1115 для TI ADS1115 Аналого-цифровой конвертор 16-бит.mjd_am2320 для метео -датчика Aosong AM2320.mjd_bh1750fvi для датчика интенсивности света BH1750.mjd_bme280 для метео -датчика BOSCH BME280.mjd_bmp280 для метео -датчика BOSCH BMP280.mjd_dht11 для датчика температуры Aosong DHT11.mjd_dht22 для датчика температуры Aosong DHT11/AM2302.mjd_ds3231 для DS3231 ZS042 RTC-платы в реальном времени.mjd_hcsr501 для инфракрасного датчика HC-SR501 PIR.mjd_huzzah32 для платы разработки Adafruit Huzzah32 (прочитайте уровень напряжения батареи).mjd_jsnsr04t для водонепроницаемого модуля ультразвукового датчика JSN-SR04T-2.0.mjd_ky032 для инфракрасного датчика предотвращения препятствий KY-032.mjd_ledrgb для управления различными светодиодными полосками RGB (чипы WorldSemi WS28XX, такие как линейка продуктов Adafruit Neopixels).mjd_list , который реализует связанные списки, используемые в ядре Linux.mjd_log для облегчения ведения ведения ведения в приложении.mjd_lorabee для взаимодействия с платой Microchip RN2483A Sodaq RN2483A (содержит микрочип RN2843 868 МГц чип Lora).mjd_mlx90393 для MELESIS MLX90393 Датчик магнитного поля (ось XYZ и показатели температуры).mjd_mqtt для взаимодействия с сервером MQTT (как клиент MQTT).mjd_nanopb для работы с буферами протокола Google. Он включает в себя общие файлы C в библиотеке NanoPB v0.3.9.2. Он также объявляет директивы по компиляции по всему проекту, специфичные для NanoPB (-d) в makefile.projbuildmjd_net для облегчения различных сетевых функций (получение IP -адреса, DNS разрешает имена хост и т. Д.).mjd_neom8n для модуля GPS U-Blox NEO-M8N.mjd_scd30 для сенсорного модуля Sensirion SCD30 и RH/T.mjd_sht3x для цифровой влажности Sensirion Sht3x.mjd_ssd1306 для популярных OLED -дисплеев 128x32 и 128x64, которые основаны на IC OLED -драйвере SSD1306.mjd_tmp36 для аналогового датчика температуры TMP36 из аналоговых устройств. Использоваться вместе с АЦП.mjd_wifi для облегчения, как станции Wi -Fi, подключение к точке доступа Wi -Fi.Давайте более подробно рассмотрим эти компоненты:
Этот компонент поддерживает несколько светодиодных пакетов RGB. Это связано с важной документацией, такой как листы данных, схемы и инструкции о том, как подключить их к вашей доске разработки и в конечном итоге дополнительного источника питания.
Эти компоненты поставляются с важной документацией, такой как листы данных, схемы и инструкции о том, как подключить их к вашей совету по разработке.
Процедура:
git clone https://github.com/pantaluna/esp32-mjd-starter-kit.gitcd в каталог проекта, который вы хотите изучить под ./projects .make menuconfig для изменения настройки проекта, который вы хотите запустить (например, PIN#GPIO, учетные данные WiFi, ...).make flash monitor для создания и загрузите пример на свою плату DEV и контролируйте выполнение через серийный терминал. Структура ESP-IDF (и ее документация) очень мощная и обширная.
Мне было трудно начать быстро. Я просто опытный разработчик полного стека (Backend/Frontend) без особого опыта разработки решений IoT с использованием встроенных систем.
Более конкретно, я мог понять все особенности рамки ESP-IDF, но мне было трудно сплотить все вместе, и быстро разработать реальные проекты для реальных решений, используя определенные периферийные устройства, такие как датчики, платы LORA, GPS-платы и светодиодные полосы. Например, я хотел начать с проектов, контролирующих различные датчики в сети и анализировать данные на центральном сервере, а затем перейти к более сложным проектам.
Во-вторых, было трудно найти хорошую документацию (листы данных, диаграммы, фотографии проводки) различных периферийных устройств, таких как метео-датчики, GPS-платы, светодиоды RGB и т. Д., И как использовать эти устройства в сочетании с платой разработки на основе ESP32.
Поэтому я разработал со временем эти дополнительные компоненты, хорошую документацию и многие рабочие проекты, нацеленные на целый набор периферийных устройств, которые обычно используются в проектах IoT.
Сейчас хорошее время, чтобы вернуть что -то сообществу ESP32 и выпустить все, что я узнал, в отношении открытого исходного кода, чтобы каждый мог извлечь выгоду из этой работы.
У вас есть 2 варианта, чтобы начать разработку для чипа ESP32:
Важно знать, что оба рамки являются стабильными и пригодными для использования, но Espressif по -прежнему находятся в значительной степени, а основные новые выпуски выпускаются на регулярной основе; Я ожидаю, что это будет продолжаться как минимум до 2018Q4.
После экспериментов с обеими рамками я решил пойти с рамками ESP-IDF, более конкретно v3.1 и выше. Я всегда стараюсь выпустить библиотеки, которые совместимы с последним стабильным выпуском.
Стартовый комплект ESP32 заводит вас быстро. Если вам нужны дополнительные функции существующего компонента, или вы хотите предложить новый компонент, пожалуйста, отправьте проблему.
Все компоненты MJD централизованы в проекте mjd_components .
Комплект не предназначен для реализации всех возможных функций любого проекта ESP32. Если новая функция очень специфична для вашего проекта, то лучший подход-сделать ваш собственный пакет компонентов ESP-IDF с желаемой функциональностью. Вы можете использовать эти компоненты в качестве фундамента; Пожалуйста, не забудьте упомянуть, что вы получили компоненты из этого стартового комплекта.
Что означает "MJD"? Это бессмысленное кодовое правило, и он используется на языке C, чтобы сделать идентификаторы уникальными. Этот подход гарантирует, что вы можете использовать эти новые компоненты ESP-IDF в любом другом проекте C.
Почему все проекты и компоненты хранятся в одном репозитории GitHub (в отличие от того, чтобы иметь репозиторие GitHub для каждого проекта и каждого компонента)? Я думаю, что это делает стартовый комплект проще в использовании для начинающих. В будущем комплект может быть настроен с использованием подмодулей GIT.
Проверьте GitHub.
Выпустите дополнительные компоненты для газовых датчиков, датчиков частиц пыли, компонента петли тока 4-20 мА, TFT-дисплей и светодиодных матриц RGB.
Выпустите дополнительные проекты, чтобы продемонстрировать обновления OTA (обновить прошивку удаленно).
Чтобы выпустить платформу IoT для общественности, вы могли управлять устройствами в этой области и проанализировать входящие данные.
Чтобы сделать новый веб -сайт для технической документации этого комплекта.