Прошивка ESP32 Cam на основе ESP-HomeKit

21 января 2020, 17:01

Всем привет!) Продолжаю разбираться с непосредственной разработкой и прошивкой модулей ESP8266 и ESP32, и сегодня речь пойдет о прошивке ESP32 Cam. Ранее уже была статья (крайне рекомендую с ней ознакомиться, во избежании вопросов), которая описывала процесс прошивки и интеграции камеры в приложение Home, но этот процесс оказался не самым простым. Но @bj_tracer скинул варианты, где, при установленном esp-idf, прошивку можно собрать и залить за пару минут.

Настройка будет выполняться на macos Catalina. Windows и Linux - сорян, но думаю, что процесс аналогичен.

Также рекомендую посмотреть эту и эту статью, в них рассказаны некоторые основы, с которыми также желательно ознакомиться.

Начнем. Для начала выкачиваем репозиторий с исходным кодом прошивкиПрошивку можно сохранить в любое удобное место.

Далее нам необходимо установить ESP-IDF. Оригинальная статья.
Первый шаг – установка тулчейна, я разберу процесс установки для Mac. В статье выше есть примеры для Win/Linux.
1. Установка pip

sudo easy_install pip

Далее скачиваем архив с тулчейном.

Открываем терминал, создаем новую директорию esp32 в $HOME. Далее мы переходим и выполняем процесс распаковки архива. Обратите внимание, что эти команды нужно выполнить от имени админа с помощью sudo. В результате, тулчейн будет распакован в директорию ~/esp32/xtensa-esp32-elf/.

mkdir -p ~/esp32
cd ~/esp32
tar -xzf ~/Downloads/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz

Далее нам нужно прописать путь к тулчейну в $PATH. Это нужно для того, чтобы те прошивки, которые мы будем скачивать, в момент сборки "видели", где находится тулчейн и его исходники. Для этого открываем ~/.bash_profile и в конце дописываем экспорт путей. Последний экспорт нам понадобится чуть позже, просто пропишем его сейчас, чтобы позже не возвращаться.

...
export PATH=$PATH:$HOME/esp32/xtensa-esp32-elf/bin
export IDF_PATH=$HOME/esp32/esp-idf

На следующем этапе нам нужно скачать сам esp-idf (Espressif IoT Development Framework). Для этого возвращаемся в папку ~/esp32 и выкачиваем с гита фреймворк:

cd ~/esp32
git clone -b v3.3.1 --recursive https://github.com/espressif/esp-idf.git

Далее нам нужно установить необходимые инструменты для заливки прошивки. Они описаны в файле requirements.txt.

Если у вас возникнут какие-либо проблемы, в место $IDF_PATH вы можете указать путь самостоятельно, например, он будет ~/esp32/esp-idf/requirements.txt

На этом процесс подготовки закончен.

python -m pip install --user -r $IDF_PATH/requirements.txt

Подготовка к сборке

Переходим в каталог со скаченным esp32-homekit-camera и заходим в окно конфигурации (команда ниже). Если до этого все было сделано правильно, то вы увидите следующее окно:

cd /Documents/Home/esp32-homekit-camera
make menuconfig

Нам необходимо указать Serial-порт. Для этого переходим в Serial flasher config -> Default serial port. Здесь указываем порт, по которому подключена камера к Mac. У меня это /dev/tty.usbserial-1460. Устанавливаем Bound rate на 115200. Flash SPI Mode -> DIO. Flash SPI speed -> 40 MHz. Ставим галку напротив Detect flash size when flashing bootloader.

Возвращаемся в корневое меню и переходим в раздел ESP32 HomeKit Camera. Здесь вы должны указать параметры WiFi сети: SSID и пароль. После переходим в Camera Pins –> Select camera pinout. В меню выбираем тип вашей камеры. У меня это ESP32-CAM by AI-Thinker. Если в результате прошивки и добавления девайса в Home, стрим не заведется, тогда перепроверьте этот параметр и поменяйте на другой.

Возвращаемся в корневое меню, переходим в Partition table –> Partition table и выбираем Custom partition table CSV. Файл с разметкой памяти находится в ранее скаченной прошивке ESP32-Cam, так что по поводу, где взять файлик, не переживаем. Если этого не сделать, то прошивка не будет работать как следует, в логах будет соответствующая информация. 

На этом конфигурация окончена, нажимаем "Save", после сохранения CTRL C для выхода из меню.

Сборка прошивки

После выхода из меню конфигурации, вы должны остаться в той же папке, где были изначально, если нет - возвращаемся в папку с esp32-homekit-camera, в моем случае - это /Documents/Home/esp32-homekit-camera. Подключаем девайс в режиме Flash к Mac.

# Выполняем очистку модуля
make erase_flash

# После выполнения очитики нажимаем на RST на плате, выполняем сборку и заливку прошивки
make flash

# Убираем перемычку, еще раз прожимаем RST, и по необходимости, открываем serial-монитор
make monitor

После анонса mDNS, камера будет доступна для обнаружения. Открываем Home –> Добавить новый аксессуар. Вводим код и видим нашу камеру. По умолчанию в прошивке установлен код 111-11-111. Если вам необходимо изменить этот код, открываем папку с прошивкой –> main –> app_main.c. В самом низу исходника вы сможете найти этот код, либо воспользоваться поиском по файлу. После изменения, нужно выполнить перекомпиляцию и заливку с помощью make flash.

В результате, мы добавили камеру в Home. Для чего ее использовать - решать только вам. Надеюсь, статья оказалась полезной для вас.

Рекомендации

Если вы хотите заново добавить устройство, то сначала удалите его из Home, после чего можно выполнить очистку памяти и выполнить процесс заливки.

Не стесняйтесь оставлять свои вопросы и пожелания разработчику фреймворка: https://github.com/maximkulkin/esp-homekitНа этой страничке также вы сможете найти необходимую информацию по mDNS анонсу, если вдруг Home не обнаруживает ваш девайс.

Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @Soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Vladislav Volchkov (vladislav_volchkov)
    Vladislav Volchkov (vladislav_volchkov) 6 месяцев назад

    Спасибо за статью, неплохо было бы увидеть качество картинки и задержку 

  2. Антон Самсонов (samsonovs)
    Антон Самсонов (samsonovs) 6 месяцев назад

    Если можно добавьте скрины с камеры, качество хочется увидеть, говорят что не очень, но есть надежда на лучшее :)

    • Павел Ник (bj_tracer)
      Павел Ник (bj_tracer) 6 месяцев назад

      так качество от самой камеры зависит.
      там модуль 2МП с матрицей  OV2640 (опционально можно  OV7670 заказать).

      думаю, что полюбому надо ИК-подсветку прикручивать ибо внутри квартиры или на лестничной клетке у большинства недостаточная освещенность для камер ;)))
      могу судить по имеющимся у меня р2р-камерам - одна так вообще круглосуточно в режиме ночной съемки живет (у них автопереключение фильтра и подсветки).

  3. Павел Ник (bj_tracer)
    Павел Ник (bj_tracer) отредактировано 6 месяцев назад

    вопрос тут возник - камера просто rtsp поток в сеть может отдавать?

    просто ни у кого про это не написано, все сосредоточены исключительно на подключении ее к ХК.

    • Андрей Медведев (rjayone)
      Андрей Медведев (rjayone) 6 месяцев назад
      Не готов ответить на этот счет. Беглый поиск в исходниках прошивки нашел пару мест, где фигурирует название этого протокола. Так что нужно садиться и изучать это. Либо задать этот вопрос разработчику прошивки в issues на гитхабе)

      • Павел Ник (bj_tracer)
        Павел Ник (bj_tracer) 6 месяцев назад

        сканером портов посмотри, что открыто.

        554 должен быть для ртсп

        Хк вроде бы этот протокол использует

    • Vladislav Volchkov (vladislav_volchkov)
      Vladislav Volchkov (vladislav_volchkov) 6 месяцев назад

      У меня есть статья про это 

  4. (meta11ist87)
    (meta11ist87) 6 месяцев назад

    Вопрос, если такую камеру в хк прокинуть, хк будет хранить с неё данные в облаке? Я прост помню что на презе эпл что-то такое говорила, но у меня камер нет.

    • Андрей Медведев (rjayone)
      Андрей Медведев (rjayone) 6 месяцев назад

      Скорее всего это также зависит от прошивки, нужно изучать исходники. Скорее всего, в данной реализации нет такой поддержки. В самом Home новых опций настройки не появилось при добавлении этой камеры с этой прошивкой

    • Арсений Шестаков (ptath)
      Арсений Шестаков (ptath) 6 месяцев назад

      Разумеется нет, это лишь для сертифицированных камер

    • Vladislav Volchkov (vladislav_volchkov)
      Vladislav Volchkov (vladislav_volchkov) 6 месяцев назад

      Нет, в облаке будут храниться данные только с официально сертефицированных камер

  5. Арсений Шестаков (ptath)
    Арсений Шестаков (ptath) отредактировано 6 месяцев назад

    Пытаюсь собрать по статье. У автора уже весьма заряженная макось и так просто не получится )

    В инструкцию следует добавить:

    — Недостаточно скопировать код через git clone. Потом обязательно надо 

    git submodule update --init --recursive

    — PATH для zsh (которая шелл по умолчанию в каталине) прописывается в ~/.zshenv

    — До установки тулчейна:

    pip install nose --user
    pip install tornado --user

    — До make menuconfig надо установить консольные утилиты Xcode:

    xcode-select --install

    В итоге у меня все собралось, запустилось и добавилось, но камера показывает лишь картинку (фоточку), которая обновляется раз в секунд 20. При попытке "зайти" в камеру и посмотреть видео ничего не происходит, "камера не отвечает".


    В логах ничего подозрительного кроме того что камера ребутится при попытке просмотра видео =) Ну и красненьким только это:

    E (2499) gpio: gpio_install_isr_service(410): GPIO isr service already installed

    Ошибка не гуглится, что делать хз, видать не судьба )

  6. Артур Минасян (aptyp222)
    Артур Минасян (aptyp222) 6 месяцев назад

    тема интересная , а как прошить esp8622 ?можно поподробней,,,,

  7. (Igor2091)
    (Igor2091) 5 месяцев назад

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

    Также рекомендую посмотреть эту и эту статью, в них рассказаны некоторые основы, с которыми также желательно ознакомиться.

  8. (Larry)
    (Larry) отредактировано 4 месяца назад

    文章非常棒,帮助我解决了问题,感谢!

  9. (lefturgen)
    (lefturgen) 3 месяца назад
    Вы очень много упустили в настройках esp32-homekit-camera, как минимум:

    • Partition Table
      • Partition Table = Custom partition table CSV
      • Custom partition CSV file = partitions.csv
    • Component config
      • ESP32-specific
        • Support for external, SPI-connected RAM = check
        • SPI RAM config
          • Initialize SPI RAM when booting the ESP32 = check
          • SPI RAM access method = Make RAM allocatable using malloc() as well
      • Camera configuration
        • OV2640 Support = check
      • HomeKit
        • SPI flash address for storing HomeKit data = 0x3A0000
    • ESP32 HomeKit Camera
      • WiFi SSID and WiFi Password
      • Camera Pins
        • Select Camera Pinout = your variant of module
  10. (POWER)
    (POWER) отредактировано 12 дней назад
    Комментарий удален
К списку статей

Устройства в материале

ESP-32S Wi-Fi Беспроводной Bluetooth

Производитель: Espressif Systems
Заказать на:

ESP8266

Производитель: Espressif Systems
Заказать на:

ESP32 Cam

Производитель: Espressif Systems
Заказать на:
JD

Скидки для сообщества

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

Тематические чаты

DIY

Похожие статьи

09 ноября 2018, 20:54
Кейс создания умного дома без каких либо прокладок в виде Raspberry pi
04 сентября 2018, 12:14
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
17 декабря 2019, 17:49
Универсальный привод для автоматического удаленного открытия окон с простой интеграцией в умные дома.
15 октября 2018, 09:05
Прошивка для Sonoff c нативным HomeKit
02 ноября 2018, 12:14
Кнопка звонка с уведомлениями в HomeKit
15 ноября 2018, 09:42
Способы автоматизации механических ворот
27 октября 2018, 12:20
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
01 октября 2018, 07:43
Нативный HomeKit на ESP8266
30 августа 2019, 07:28
Несколько нетривиальных способов использования датчика открытия окон/дверей от Xiaomi/Aqara.