Камера ESP32 и код MB загружены, но в Serial Monitor ничего нет

Код работает успешно, но в последовательном мониторе ничего не происходит, что мне делать, ведь я почти все перепробовал.

, 👍1

Обсуждение

Скорость передачи данных вашего последовательного монитора не установлена на 115200, @Bra1n


3 ответа


4

Короче говоря, используйте IDE серии 1.X вместо IDE серии 2.X. На момент написания это будет версия IDE 1.8.19.


В версии 1.8.4 была добавлена поддержка свойств платы с именами .serial.disableDTR и .serial.disableRTS.

Некоторым платам, таким как ESP32-CAM в сочетании с ESP32-CAM-MB, требуется эта функция, чтобы Serial Monitor мог видеть трафик (на самом деле все еще хуже, о чем я объясню ниже). Текущая IDE серии 2.X (2.0-rc9.1 на момент написания), которая имеет совершенно другую кодовую базу, похоже, не повторно реализовала эту функцию. Предположительно, они в конечном итоге будут.

Когда вы устанавливаете IDE серии 1.X, убедитесь, что вы тестируете Serial Monitor с выбранной ESP32-CAM. Может показаться нелогичным, что тестирование Arduino UNO в качестве выбранной вами платы не будет просто работайте, учитывая, что вы только используете Serial Monitor, а не компилируете и не загружаете файлы. Но это, без шуток, не сработает, поскольку в определении этой платы не указаны эти свойства .serial.disableDTR и .serial.disableRTS, которые указаны в описании платы ESP32-CAM. .

Если вам интересно, инструмент загрузки ESP32 сам управляет DTR и RTS независимо от этих свойств определения платы, которые влияют на последовательный монитор и последовательный плоттер. Вот почему ваша загрузка работает, но ваш последовательный монитор не работает в текущей версии-кандидате IDE 2.0.

Не вдаваясь в подробности о том, что должны делать DTR и RTS, что они могут делать и т. д., типичные рабочие конфигурации для последовательного порта таковы, что когда порт открыт, эти сигналы становятся активными. . Конструкция платы ESP32-CAM-MB такова, что активные DTR и RTS эффективно нажимают как кнопки GPIO0, так и кнопки EN/RESET. Другими словами, без этой дополнительной возни, которую делают IDE серии 1.X (с выбранной правильной платой) и esptool, открытие последовательного порта приводит к удержанию ESP32-CAM в состоянии сброса (или НЕ -включение, если хотите). Таким образом, вы не только не получаете никакого последовательного трафика, но и плата вообще не выполняет никакого кода.


У вас есть и другие варианты, но каждый из них требует отдельного объяснения. Но я могу подсказать вам, что это такое:

Можно продолжать использовать IDE 2.0 для разработки и загрузки, но использовать что-то другое вместо последовательного монитора IDE 2.0. Но это внесет сложность, путаницу и раздражение в вашу настройку. Что бы это ни было, «что-то еще» Должен разрешать отключение DTR и RTS. Обратите внимание, что отключение DTR и RTS не просто отключает управление потоком; который не будет манипулировать ими и будет игнорировать соответствующие им сигналы, но также оставит их в неправильном состоянии. Одним из кандидатов является последовательный монитор IDE 1.x. Другим является RealTerm, который позволит вам очистить DTR и RTS (в указанном порядке), чтобы затем работать в качестве последовательного монитора. В любом случае вам нужно будет самостоятельно закрывать последовательное соединение перед каждой загрузкой, так как IDE версии 2.0 не сможет сделать это от вашего имени, так как обычно это делает ее собственный внутренний монитор.

Вы также можете прервать сигналы DTR и RTS аппаратно, прежде чем добраться до платы ESP32-CAM. Сделав это, больше не имеет значения, управляет ли какое-либо программное обеспечение DTR и RTS, но вам нужно вручную управлять GPIO0 и EN/RESET, чтобы войти в загрузчик. Для этого вам нужно либо использовать кучу перемычек и ESP32-CAM-MB (или любой другой последовательный трансивер 3,3 В), не подключенный к ESP32-CAM, и создать схемы кнопок для GPIO0 и EN/RESET. В качестве альтернативы вы можете физически модифицировать ESP32-CAM-MB таким образом, чтобы прерывать DTR и RTS трансивера, но сохранять рабочие кнопки. Это можно сделать, выпаяв пару диодов или перерезав дорожки на пути к кнопкам и разъемам.

Кроме того, может потребоваться всего несколько хорошо расположенных строк в одном из javascript/typescript 2.0 IDE, чтобы грубо взломать отключение DTR и RTS, если вас не волнует, что еще он ломает. Если мне станет скучно, может быть, я посмотрю на это. Однако сделать это правильно в соответствии с правильными свойствами платы — более сложный проект.

,

3

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

arduino-cli monitor -p /dev/ttyUSB0 --discovery-timeout 60s --config 'rts=off' --config 'dtr=off' --config 'baudrate=115200'

Если вы используете IDE, см. ответ timemage.

,

Мой ответ устарел, поэтому я добавил, что это не должно быть проблемой в IDE версии 2.X, не выпущенной в релиз. Что касается ardunio-cli, если вы используете версию 0.27.0-rc.1 и выше, вы должны иметь возможность указать esp32:esp32:esp32cam : _whatever_ в --fqbn, и это сделает так, что вы не Мне не нужны опции --config 'rts=off' --config 'dtr=off'. Но то, что у вас есть, в любом случае должно подойти для работы со старыми версиями arduino-cli., @timemage

Мне нужны были эти параметры для arduino-cli версии 0.33. Я еще не тестировал 0.33.1., @Alai

Странный. Я только что протестировал версию 0.27.1 из пакета IDE 2.0.0, и она ведет себя так, как я думал: arduino-cli Monitor --port /dev/ttyUSB0 снижает RTS/RST до низкого уровня. Добавление --fqbn esp32:esp32:esp32cam приводит к тому, что это не будет выполняться при отключенииRTS. Как и предложенные вами параметры --config без указания --fqbn. -cli версии 0.32.3 из последней версии IDE 2.1.1 ведет себя точно так же. У меня нет вашей точной версии. Хотя я буду иметь это в виду. Возможно, я что-то пропустил., @timemage


2

Я использую платформуIO, и у меня возникла та же проблема. Отключение RTS и DTR решило и мою проблему!

monitor_dtr = 0
monitor_rts = 0
,

Я почти не прикасался к PlatformIO. Я просто предполагаю, что это файл конфигурации проекта. Было бы лучше, если бы это поле было немного заполнено, чтобы кто-нибудь, столкнувшийся с ним, имел это руководство., @timemage