Ebyte E72-2G4M20S1E выдаёт непонятные данные по UART, как исправить?
Купил Zigbee модуль E72-2G4M20S1E (на базе CC2652P), припаялся по даташиту четырьмя проводками: VCC, GND, RX, TX. Решил базово проверить и убедиться, что при старте в UART инфу о себе выдаёт и на AT команды отвечает. Подключил к Arduino Mega по схеме:
VCC [E72-2G4M20S1E] -> 3.3V [Arduino Mega]
GND [E72-2G4M20S1E] -> GND [Arduino Mega]
RX [E72-2G4M20S1E] -> RX [Arduino Mega]
TX [E72-2G4M20S1E] -> TX [Arduino Mega]
GND [Arduino Mega] -> RESET [Arduino Mega]
В итоге модуль при старте в Serial Monitor (Arduino IDE) выдаёт ересь, при отправке команды "AT" отвечает, но тоже ересь. Скорость пробовал разную (в том числе упомянутые в мануале по модулю: 9600, 19200, 38400, 57600, 115200), ситуацию не исправляет. Так же, как и не исправляет на всех этих скоростях ситуацию переключение режима конца строки (No line ending, NL, CR, NL&CR).
Пробовал также делать логическое согласование напряжений (пин RX на модуле через 1кОм на пин Arduino и подтяжка всей этой линии через 2кОм на минус), пробовал перекрёстно соединять RX и TX модуля и Arduino и заливать на Arduino базовый скетч дублирования софтового UART (к которому перекрёстно подключен модуль) в хардовый и обратно (естественно с отключением постоянного RESET на Arduino), также с согласованием уровней и на различных скоростях - всё бесполезно, симптомы остаются те же.
Радует одно - во всех схемах модуль что-то пишет в UART и при отправке команд не молчит, а тоже что-то пишет. Но вот что - я и хочу выяснить) В чём может быть дело и как можно исправить ситуацию?
Как-то этот момент очень слабо везде освещён. Даже странно. Вот по этой ссылке есть вариант мануала, в котором чуть-чуть больше подробностей, чем в тех, что попадаются в первую очередь pdf Там в разделе 4.1 есть схема подключения - может хоть как-то поможет. Но к сожалению в пункте 4.3 только упоминается некий отдельный даташит. А вот где его найти?
Больше информации находится про прошивку этого модуля. Может как-то с этой стороны попробовать что-то и про сериал найти?
А так больше всего действительно похоже на неправильную скорость. И уровни сигнала стоит согласовать. В мануале это явно рекомендуется в п.2.2. Надеюсь, что модуль ещё не попалили.
kalapanga, спасибо за комментарий. Согласен, информации в интернете практически нет, что очень обидно. В мануале в схеме разве что обозначены дополнительные пины для ресета и чтения статуса модуля (на светодиод). Однако спасибо за файл, я находил только версию этого же мануала без какой-либо схемы подключения. Возможно дело в том, что модуль посылает слишком слабый сигнал и ардуина не может его нормально читать (пин 3.3 по факту выдаёт 3 максимум), однако с esp8266 такой проблемы при таких же конфигурациях подключения не было, вся инфа была читаемой. Заказал отдельно преобразователь логических уровней, посмотрим поможет ли он (в чём я сомневаюсь)... Не совсем понимаю мог ли привести перегрев модуля при пайке (хотя он вроде не перегревался) или подача из TX Arduino 5V при первом подключении напрямую без понижения уровней (само питание 5V не подключал) к таким последствиям. Мне кажется, если бы я вывел его из строя, он бы вообще молчал и ничего не пытался бы передать в serial, хотя может я не прав. Пока заказывать второй модуль чисто для того, чтобы опровергнуть эту теорию, не очень хочется (очень уж долго ждать их), но возможно придётся...
jcmvbkbc, спасибо за комментарий. В мануале нарисована двусторонняя связь (оба устройства могут посылать друг другу инфу и оба слышат друг друга), такую связь я тоже собирал позже, это описано в самом вопросе:
пробовал перекрёстно соединять RX и TX модуля и Arduino...
Описанная мной распиновка в начале вопроса соответствует односторонней связи, когда Arduino выступает в роли простого конвертера "UART to USB", а не самостоятельного устройства. Arduino просто в таком конфиге дублирует то, что приходит ей по UART, в USB и обратно. Именно поэтому в моей распиновке в начале вопроса пин RESET у Arduino кинут на GND (для того, чтобы Arduino не стартовала как самостоятельное устройство).