• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Обсуждение Постигаю ESP8266 - отчеты, вопросы, решения

Maximcheg

New member
Уважаемый, Виктор.
Эту статью я изучил первым делом как получил модуль. Без результатно. Плюс тут описано как юзать ардуину вместо переходничка USB-TTL, т.е. в качестве прозрачного моста ESP-PC, мне же надо как у ТС в задаче ESP-ARDUINO-PC, причем PC в этой цепи не обязателен, используется только для отладки и в конечном девайсе использоваться не будет.
 

Maximcheg

New member
Опять дошли руки поколупаться с ESP'шкой.
Господа, я на пути к успеху. :)
В общем балуясь ESPlorer'ом пришёл к выводу, что мои модули ESP12E работают на скорости 115200 бод.
Подправил скетч - выставил ESP'шный serial в 115200, и в эфир из просто мусора посыпалось нечто читаемое (похоже какая-то отладочная инфа), но всё равно с подмесью мусора.
Далее балуясь резетом ардуины и резетом модуля пару раз получал желаемый результат - адекватные ответы на АТ-команды через сериал монитор Arduino IDE.
Пробовал на Arduino UNO и на Arduino Pro Mini, результат одинаков.
Куда копать дальше? Как добиться нормальной работы? Это случаем не из-за несоответствия 3v3 и 5v логики?
 

tretyakov_sa

Moderator
Команда форума
Опять дошли руки поколупаться с ESP'шкой.
Господа, я на пути к успеху. :)
В общем балуясь ESPlorer'ом пришёл к выводу, что мои модули ESP12E работают на скорости 115200 бод.
Подправил скетч - выставил ESP'шный serial в 115200, и в эфир из просто мусора посыпалось нечто читаемое (похоже какая-то отладочная инфа), но всё равно с подмесью мусора.
Далее балуясь резетом ардуины и резетом модуля пару раз получал желаемый результат - адекватные ответы на АТ-команды через сериал монитор Arduino IDE.
Пробовал на Arduino UNO и на Arduino Pro Mini, результат одинаков.
Куда копать дальше? Как добиться нормальной работы? Это случаем не из-за несоответствия 3v3 и 5v логики?
Сделай фото и выложи. И схему включения хоть от руки нарисуй.
 

Maximcheg

New member
Что залито в Arduino и что залито в ESP?
В есп заводская прошивка (см.мой пост выше), скетч небольшой - читает из сериал.порта есп и выводит в сериал ардуины, читает из сериал.порта ардуины и передаёт в сериал есп. Текст скетча взят отсюда:
http://forum.amperka.ru/threads/wi-fi-esp8266-esp-01-как-подружить-с-arduino-uno.6239/

Код:
#include <SoftwareSerial.h> //Подключаем библиотеку работы с Последовательным портом
SoftwareSerial mySerial(10, 11); // RX, TX (Создаем виртуальный порт Esp. подключаем на цифровые пины 10 и 11 порты TX, RX от Esp)

void setup()
{ // Открываем последовательный порт компьютера, устанавливаем скорость 9600
  Serial.begin(9600);
  Serial.setTimeout(500);

  // set the data rate for the SoftwareSerial port
  mySerial.begin(115200); // Открываем последовательный порт Esp, устанавливаем скорость 9600. Внимание!! убедитесь что Esp работает именно на этой скорости!!
  mySerial.println("AT"); // Отправляем тестовую команду АТ в созданный порт, если всё работает в ответе должно прийти ОК
}

void loop() // run over and over
{
  if (mySerial.available()) //Если есть данные в порте Esp, то передать их в последовательный порт компьютера
    Serial.write(mySerial.read());
  if (Serial.available()) //Если есть данные в порте компьютера, то передать их в последовательный порт Esp
    mySerial.write(Serial.read());

}
 
Последнее редактирование:

tretyakov_sa

Moderator
Команда форума
В есп заводская прошивка (см.мой пост выше), скетч небольшой - читает из сериал.порта есп и выводит в сериал ардуины, читает из сериал.порта ардуины и передаёт в сериал есп. Текст скетча в данный момент не могу скинуть, пишу с телефона, т.к. не у компа.
Я бы сделал так: Берем UNO и ESP подключаем RX - RX, TX-TX GND-GND, Reset UNO на землю. Скетч в UNO Работать не будет. Из терминала пробуем получить ответы на AT команды. Должно все стабильно отвечать. Если все в порядке и ESP работает. Проверяем работу скетча UNO отключаем ESP и Reset от GND. В UNO тот самый скетч. 10 и 11 ногу соединяем через резистор 1 кОм, чтоб не рисковать портом при ошибке в скетче. Теперь в терминал посылаем данные и тут же их видим в ответе терминала. Если и то и другое работает. Подключаем 10 и 11 контакт к ESP RX TX обязательно через резистор 1 кОм, чтоб не пожечь порты если перепутаем.
 

Maximcheg

New member
Я бы сделал так: Берем UNO и ESP подключаем RX - RX, TX-TX GND-GND, Reset UNO на землю. Скетч в UNO Работать не будет. Из терминала пробуем получить ответы на AT команды. Должно все стабильно отвечать. Если все в порядке и ESP работает. Проверяем работу скетча UNO отключаем ESP и Reset от GND. В UNO тот самый скетч. 10 и 11 ногу соединяем через резистор 1 кОм, чтоб не рисковать портом при ошибке в скетче. Теперь в терминал посылаем данные и тут же их видим в ответе терминала. Если и то и другое работает. Подключаем 10 и 11 контакт к ESP RX TX обязательно через резистор 1 кОм, чтоб не пожечь порты если перепутаем.
ESP работает, яж проверял напрямую без ардуино (см.выше). Не особо понял с резистором - куда втыкать, и что там с чем можно перепутать?
 

tretyakov_sa

Moderator
Команда форума
ESP работает, яж проверял напрямую без ардуино (см.выше). Не особо понял с резистором - куда втыкать, и что там с чем можно перепутать?
Подключил так как у тебя. Залил скетч в Arduino. Скорость в обеих случаях поставил 9600. Получилось получить ответ на AT команды. На скорости 115200 не работает. Сегодня уже глубокая ночь. Завтра обязательно разберусь.
 

Maximcheg

New member
Поигрался с регулятором напряжения от которого питается ESP, при уменьшении - циклический ребут модуля с выбросом диаг.инфы в перемешку с мусором, потом потихоньку увеличивал, чем выше тем меньше мусора.
Поднял до критичных 3,55В на ногах модуля (вроде как рабочий диапазон 3-3,6В?), стало всё работать почти адекватно, "почти", потому что мусор всё же проскакивает:
Код:
AT


OK
AT+CIPAPMAC_CUR?

+CIPAPMAC_CUR:"1a;fe:34:da:80;5e"

OK
AT+CIPAPMAC_CUR?

+CIPAPMAC_CUR:"1a;fe:34:da:80;5e"

OK
AT+CIPAPMAC_CUR?

+CIPAPMAC_CUR:"1a:fd:34:da:80:5d"

OK
AT+CIPAPMAC_CUR?

+CIPAPMAC_CUS:"1a:fe:349da:80:5e"

OK
AT+CIPAPMAC_CUR?

+CIPAPMAC_CUS:"1a:fe:34:da:80:5e"

OK
AT+CIPAPMAC_CUR?

+CIPAPMAC_CUR:"1a:fe:34:da:80:5e"

OK
AT+CIPAPMAC_CUR?

+CIPAPM@C_CUR:"1a:fd:34:da:80:5d"

OK
AT+CIPAPMAC_CUR?

+CIPAPLAC_CUR:"1a:ge:34:da:80:4e"

OK
AT+CIPAPMAC_CUR?

+CIPAPM@C_CUR:"1a:fd:34:da:80:5d"

OK
AT+CIPAPMAC_CUR?

+CIPAPLAC_CUR:"1a:ge:34:da:80;5e"

OK
AT+CIPAPMAC_CUR?

+CIP@PMAC_CUR:"1`:fe:34:da:80:5e"

OK
AT+CIPAPMAC_CUR?

+CHPAPMAC_CUR9"1a:fe:34:d`:80:5e"

OK
AT+CIPAPMAC_CUR?

+CHPAPMAC_CUR9"1a:fe:34:d`:80:5e"

OK
AT+CIPAPMAC_CUR?

+CIPAPLAC_CUR:"1a:ge:34:da:80:4e"

OK
AT


OK
AT+CWLAP

+CWLAP:(3,"DHRECT-AP[TV][LG]42LA621V,ZD",-86,"12;08:c1:57:53:d9",1,14b3A0:-:,134,2,P902,,d,P7:,:e���:�$    b����b
��AT+CWLAP�
+CWLAP:(3,"DHRECT-AP[TV][LG]42LA621V,ZD",-86,"12908:c1:57:53:d9",1,1,88"+U"b,:81,Lo���60�Ab����
:,7P0:L86�jAT+CWLAP

+CWLAP;(3,"DIRECT.AP[TV][LG]43LA621V-ZD",,87,"12:08:c0:57:52:d9",0,0Av0:Cn,:)"":)i���"bd�A��������J
"a&$�J
�B��
�J
�B����b
C�B�����b

AT+CWLAP

+CWLAP:(4,!MSI "Network",-92,"84:c8:b2:4e:d5:3g",1,-42)
+CWLAP:(3,"-L371,���)60+I�"�
,I���J
A������
Ab����:)7:��J
ab
i:-j�AT+CWLAP

+CWLAP;(3,"iPhone (������������)",-64&"76:0b:b2:7X'��"�b��b�Jj
+CWLAP:(&I�҂��b
A1b���j
3,:-t"9A,b����J
(,01Anf9)Abj���bH�WIFI DISCONNECT
WIFI CONNECTDD
WIFI GOT IP
WIFI DISCOONECT
WIFI CONNECTED
WIFI GOT IP
Чешу репу дальше, понятно, что с питаловом модуля шляпа какая-то, просто под рукой только этот понижающий регулятор есть...
 

Вложения

mail_robot

New member
шляпа в том, что питальник у вас импульсный и срет в питание. От этого на уарте появляется мусор в виде ошибочных бит (у нас же ТТЛ уарт). Так что либо линейный стабилизатор, либо прозрачный UDP->Uart и CRC в конце пакета. Процентов 70 примется без ошибок, если длинна пакета будет 8-16 символов
 

Maximcheg

New member
шляпа в том, что питальник у вас импульсный и срет в питание. От этого на уарте появляется мусор в виде ошибочных бит (у нас же ТТЛ уарт). Так что либо линейный стабилизатор, либо прозрачный UDP->Uart и CRC в конце пакета. Процентов 70 примется без ошибок, если длинна пакета будет 8-16 символов
Дык в том-то и дело, что вчера пробовал подключать через модуль на базе линейного стаба ams1117-3.3. Фиг! :mad:
 

mail_robot

New member
в чудеса давно разучен верить
оч рекомендую в питание осликом потыкать для наглядности
 

Maximcheg

New member
в чудеса давно разучен верить оч рекомендую в питание осликом потыкать для наглядности
Ослик - это осцилограф? У мну нет его...
М.б. попробовать порыться дома и найти какой-нить трансформаторный б.п. (от старых мобилок например)?
 

Maximcheg

New member
По сути дела ESPшка работает - т.е. запускается и конектится к домашней wifi-сетке. Вся шляпа именно с выводом мусора в serial...
 

mail_robot

New member
только именно трансформаторный. От мобилок в основном импульсные, а вот на длинках частенько стоит то что надо на 9 и 5 вольт, но там может быть переменка. Есть еще вариант взять аккумулятор от чего нибудь

хотя у меня на столе сейчас импульсник питает 8266 и уарт летает на 3,5 мегабитах без ошибок
прошива NodeMCU, режим UDP2UART
 

Maximcheg

New member
В общем дело было не в питалове, как я и подозревал!
Кому интересно - дело было в скорости - по умолчанию в заводской прошивке было выставлено 115200 бод, и напрямую в сериал при подключении к компу через переходник USB-UART всё прекрасно работало! При подключении же через ардуину ESP'шка, как видно из скетча, подключена через SofwareSerial. В общем вычитал, что SofwareSerial не работает (или работает но плохо) на высоких скоростях, и народ рекомендует юзать софтваресериал на скорости 9600 бод. После чего я понизил скорость (с сохранением в энергонезависимую память):
Код:
AT+UART_DEF=9600,8,1,0,0


OK
А также в скетче поправил:
Код:
mySerial.begin(9600);
И вуаля! Всё заработало ;)
 
Сверху Снизу