Прошу помощи общения ардуино мега с есп8266 по юарт

qwerty13rus
Offline
Зарегистрирован: 05.12.2018

Не могу заставить есп принимать данные с ардуины по юарт, хотя наоборот, с есп на ардуину все идет. ТХ есп подключил напрямую к 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);
}

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Serial.read байт читает, почему переменная int?
Вместо print лучше write идеалогически использовать.

qwerty13rus
Offline
Зарегистрирован: 05.12.2018

andycat пишет:
Serial.read байт читает, почему переменная int? Вместо print лучше write идеалогически использовать.

Поменял инт на байт, и print на write, ничего не изменилось

qwerty13rus
Offline
Зарегистрирован: 05.12.2018

Сейчас попробовал поставить делитель еще и на rx-tx2, то в порту появился квадратик.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Тогда остаётся три варианта
1 скорость великовата
2 кривое подключение
3 сдох какой либо порт /пин
ЗЫ. Чудес не бывает.

qwerty13rus
Offline
Зарегистрирован: 05.12.2018

andycat пишет:
Тогда остаётся три варианта 1 скорость великовата 2 кривое подключение 3 сдох какой либо порт /пин ЗЫ. Чудес не бывает.

Насчет первого и второго, я думаю что тогда бы и не работала передача данных с есп на ардуино. Сдох какой то порт(я так понимаю подразумевается  tx и rx), тоже быть не может, т.к. тогда бы есп тупо не прошивалось и не отправляло данный в порт на пк.

nik182
Offline
Зарегистрирован: 04.05.2015

Напряжения питания какие? В такой ситуации без делителей работало, через 1кОм резистор. Для защиты достаточно. 

qwerty13rus
Offline
Зарегистрирован: 05.12.2018

Питание 5 в и дуни и есп

nik182
Offline
Зарегистрирован: 04.05.2015

Питание это питание, а процессор чем? Я слышал и дуэ и есп 3.3 вольта, делителей не надо. 

qwerty13rus
Offline
Зарегистрирован: 05.12.2018

Если я вас правильно понял, то проц atmega2560 16U-TW питается от 4.5 до 5.5. Согласно этому сайту

nik182
Offline
Зарегистрирован: 04.05.2015
Operating Voltage Range (V)
1.8 to 5.5
Вот и интересно сколько на Вашей плате на процессор подают. Но с 1к и без делителей пробовали? 
qwerty13rus
Offline
Зарегистрирован: 05.12.2018

Ну tx с дуни как раз и идет без делителя на rx есп, на прямую

nik182
Offline
Зарегистрирован: 04.05.2015

Это плохо надо через килоом. 

qwerty13rus
Offline
Зарегистрирован: 05.12.2018

Кило ом не помог(

nik182
Offline
Зарегистрирован: 04.05.2015

Я не про помощь, я про правильное соединение. 

Отладку я бы начал с того, что замкнул Rx Tx на каждой плате между собой и посмотрел как передает и принимает каждая плата сама. Если каждая на себя работает, то поочереди одновременно с одной платы с замкнутыми Rx Tx подавал на вторую на Rx через 1к и смотрел что обе принимают одно и тоже. Если все в порядке, то можно уже пробовать Rx1-Tx2 Rx2-Tx1. 

qwerty13rus
Offline
Зарегистрирован: 05.12.2018

Не могу понять, значит замкнул я tx и rx, отправляю что то в через порт, но ничего не приходит

nik182
Offline
Зарегистрирован: 04.05.2015

Это стандартная проверка. Пишем скетч где оправляем в порт и сразу читаем его же. Через другой порт выводим в монитор и смотрим что получается. Если первый с замкнутыми Tx Rx принимает свои данные то он исправен и можно с ним работать. К софтсериалу эту проверку применить нельзя он себя прочитать не может. 

qwerty13rus
Offline
Зарегистрирован: 05.12.2018

Проверил подключенные порты на меги и есп, все рабочие.

nik182
Offline
Зарегистрирован: 04.05.2015

Ну так теперь просто подключи Rx того порта где ты не мог принять символ к закороченному Rx Tx другой платы и убедись, что символ все же передаётся сам на себя, а в это момент вторая плата не может его принять. Если это так, то будем думать что делать дальше. Но может случится что после подключения второго Rx и на первом пропадает прием. Это уже другая история.

Я обычно использую USB-TTL переходник чтобы следить за сигналами на линнии передачи. На один Tx можно подключить несколько Rx параллельно и все они будут принимать одно и то же. Для проверки или снифа очень удобно.