Прошу помощи общения ардуино мега с есп8266 по юарт
- Войдите на сайт для отправки комментариев
Чт, 09/05/2019 - 21:32
Не могу заставить есп принимать данные с ардуины по юарт, хотя наоборот, с есп на ардуину все идет. ТХ есп подключил напрямую к RX2 ардуино, а RX есп через резистивный делитель к ТХ2 ардуино.
esp8266:
int p1; void setup() { // put your setup code here, to run once: Serial.begin(115200); } void loop() { if (Serial.available() > 0) { p1 = Serial.read(); Serial.print(p1); } }
Ардуино:
int p1; void setup() { pinMode(13, OUTPUT); Serial2.begin(115200); Serial.begin(115200); } void loop() { Serial2.print(1); delay(1000); Serial2.print(0); delay(1000); }
Serial.read байт читает, почему переменная int?
Вместо print лучше write идеалогически использовать.
Поменял инт на байт, и print на write, ничего не изменилось
Сейчас попробовал поставить делитель еще и на rx-tx2, то в порту появился квадратик.
Тогда остаётся три варианта
1 скорость великовата
2 кривое подключение
3 сдох какой либо порт /пин
ЗЫ. Чудес не бывает.
Насчет первого и второго, я думаю что тогда бы и не работала передача данных с есп на ардуино. Сдох какой то порт(я так понимаю подразумевается tx и rx), тоже быть не может, т.к. тогда бы есп тупо не прошивалось и не отправляло данный в порт на пк.
Напряжения питания какие? В такой ситуации без делителей работало, через 1кОм резистор. Для защиты достаточно.
Питание 5 в и дуни и есп
Питание это питание, а процессор чем? Я слышал и дуэ и есп 3.3 вольта, делителей не надо.
Если я вас правильно понял, то проц atmega2560 16U-TW питается от 4.5 до 5.5. Согласно этому сайту
Ну tx с дуни как раз и идет без делителя на rx есп, на прямую
Это плохо надо через килоом.
Кило ом не помог(
Я не про помощь, я про правильное соединение.
Отладку я бы начал с того, что замкнул Rx Tx на каждой плате между собой и посмотрел как передает и принимает каждая плата сама. Если каждая на себя работает, то поочереди одновременно с одной платы с замкнутыми Rx Tx подавал на вторую на Rx через 1к и смотрел что обе принимают одно и тоже. Если все в порядке, то можно уже пробовать Rx1-Tx2 Rx2-Tx1.
Не могу понять, значит замкнул я tx и rx, отправляю что то в через порт, но ничего не приходит
Это стандартная проверка. Пишем скетч где оправляем в порт и сразу читаем его же. Через другой порт выводим в монитор и смотрим что получается. Если первый с замкнутыми Tx Rx принимает свои данные то он исправен и можно с ним работать. К софтсериалу эту проверку применить нельзя он себя прочитать не может.
Проверил подключенные порты на меги и есп, все рабочие.
Ну так теперь просто подключи Rx того порта где ты не мог принять символ к закороченному Rx Tx другой платы и убедись, что символ все же передаётся сам на себя, а в это момент вторая плата не может его принять. Если это так, то будем думать что делать дальше. Но может случится что после подключения второго Rx и на первом пропадает прием. Это уже другая история.
Я обычно использую USB-TTL переходник чтобы следить за сигналами на линнии передачи. На один Tx можно подключить несколько Rx параллельно и все они будут принимать одно и то же. Для проверки или снифа очень удобно.