• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Arduino и ESP8266 на 0 и 1 ноге

Emmy

Member
Добрый день.
Ранее я обращался на Ваш форум и Вы мне помогли разобраться с прошивкой и АТ командами для ESP8266
Для удобства даже собрал в корпусе программатора из ардуинки по вашей статье. Все работает на UNO (изначально я пытался подключить к ардине НАНО, но из за явно несогласованных каналов у меня WIFI прошивать не удавалось)
все эти этапы пройдены. прошивку обновлять научился. ответы получаю на скорости 115200 в UART COM режиме

Пришло время подключать к ардуине. Мне принципиально важно подключить ESP8266 на скорости 115200 к арудине.

Я оставил скорость 115200 и подключил к 0 и 1 ноге ардуины UNO
RX к TX, TX к RX

Добавил кнопку отключения и включения 3.3 на вай фае что бы переключаться между режимами wifi и режимом прошивки (что бы не было шума в момент загрузки прошивки и все загрузилось успешно)

Имеются следующие вопросы:
1. Питание. USB использует 0 и 1 нога,, ESP8266 использует 0 и 1 ногу. при подключение к ПК посредством USB кабеля - не мешает ли он работе ESP8266 ?
2. есть ли у вас статья по подключению ESP8266 к 0 и 1 ноге ардуине с примером скетча.
3. я взял программатор UART COM , взял оттуда RX и TX. подключил к 6 и 7 ноге , в скетче объявил его как ком. пишу Serial.println("AT"); и пытаюсь слушать нет ли прихода с Serial Ответа и отдать это в софтверный COM . но вместо ответа OK - я получаю АТ. иногда каким то чудом получаю ready среди мусора. но чаще всего просто получаю все то что передал в Serial . иногда в ответ мусор. на свои команды. синий диод моргает когда пишу Serial.println("AT");
есть конечно мысли что это все из за несогласованности каналов, к плате подключенно еще сд карта, ик диод, тразистор, ик приемник.
 

Emmy

Member
да, GND подключил (который рядом с TXом на ESP8266,)
получается я подключил всего 5 ног: 1 земля, RX,TX, и 2 питание на 3.3вольта
 

JustACat

Moderator
Команда форума
есть ли у вас статья по подключению ESP8266 к 0 и 1 ноге ардуине с примером скетча.
Есть целая куча примеров: http://esp8266.ru/forum/threads/sta...hivka-start-sdk-at-arduino-lua.157/#post-2834 в частности вот тут есть с картинками и ардуиной: http://digitrode.ru/computing-devic...a-osnove-arduino-i-wi-fi-modulya-esp8266.html
 

Emmy

Member
кое что подчерпнул, спасибо. попробую проверить . в частности использования Serial.find для отладки. if (Serial.find("ready")) { dbgSerial.println("WiFi - Module is ready"); }
я же пытался Serial.Println("AT"); while(Serial.available()) { считываю в переменную Serial.read(); } ответ отдаю так bgSerial.println(ВСЕ ЧТО СЧИТАЛ В ПЕРЕМЕННУЮ);
 

Emmy

Member
Victror да, подключил GND к ардине. питание от ардуины. внешне работает. диод мограет синий когда я посылаю АТ. через Serial.Println("AT"); с паузой.
 

JustACat

Moderator
Команда форума
Emmy, на самом деле кроме как для теста Serial.find применять не советую... Ваш путь в этом смысле более правильный.
Но вам с ним нужно разобраться...
Например, для отладки нужно написать в общий цикл (в loop) что-то вроде:
Код:
if(Serial.available()){
  bgSerial.write(Serial.read());
}
Ну или если вам нужно еще как-то обрабатывать то, что вы получаете, тогда так:
Код:
if(Serial.available()){
  byte b = Serial.read();
  bgSerial.write(b);
  // тут делаем что-то с символом/байтом в b, например, кладем его в некий буфер, либо сразу проверяем как-то
}
 

Emmy

Member
понял. спасибо.
а про питание. само подключение к USB не влияет на RX и TX если я ничего не делаю с комом?
 

JustACat

Moderator
Команда форума
Emmy, со слов, простите, сложно говорить... Честно, у меня уже голова пухнет от попыток въехать в разные описания разных людей :)
Вы либо схемку нарисуйте какую-нибудь, либо как-то еще покажите...
Схемку можно накидать в чем угодно. Например, в каком-нить http://fritzing.org/ или еще чем-то простеньком...
Вот как на этой схемке сразу более или менее понятно, что и куда подключено...
 

Emmy

Member
хорошо. пришлю такую схему через час как доберусь до дома
 

Emmy

Member
я извиняюсь - попробовал заново все и получилось.а вчера до ночи сидел и не мог сдеать.
TCP пакеты принимает и я вижу все что хочу.
у мменя вопрос. я ранее точно помню делал на UDP пакетах но сейчас не принимает их ни вкакую. была другая прошивка. не самая последняя. и роутер к сожалению я тоже обновлял прошивку. теперь не знаю где копать и как. UDP пакет я точно правильно отправляю. уверен

какие то нововведения были по UDP? есть ли разница сейчас что принимать на открытый порт
 

Emmy

Member
ранее я стартовал так
sendData("AT+RST\r\n",2000,true); // reset module
sendData("AT+CWMODE=1\r\n",1000,true); // configure as access point
sendData("AT+CIPMUX=1\r\n",1000,true); // configure for multiple connections 1
sendData("AT+CIPSERVER=1,51234\r\n",1000,true); // turn on server on port 80
sendData(команда на имя роутера и пароль)


и уже был готов приинмать пакеты UDP на порт 51234
 

JustACat

Moderator
Команда форума
Простите, а что такое sendData? Вы какую-то библиотеку используете для ардуино? Если да - то какую? И какая у вас сейчас прошивка на модуле ESP?
А так да, на последней прошивке 0.22 много нового было, что-то вполне могли изменить, и система команд некоторых поменялась, и имена команд.
 

Emmy

Member
sendData это Serial.print
ничего особенного

Код:
String sendData(String command, const int timeout, boolean debug)
{
String response = "";
esp8266.print(command); // send the read character to the esp8266
long int time = millis();
while( (time+timeout) > millis())
{
while(esp8266.available())
{
// The esp has data so display its output to the serial window
char c = esp8266.read(); // read the next character.
response+=c;
}
}




if(debug)
{
Serial.print(response);
return response;
}
return response;
}
 

Emmy

Member
вот посмотрите пожалуйста скриншот моими глазами
http://joxi.ru/V2VeZYphKXzVmv

ранее на старой прошивке я именно так же и отправлял ардуинке команду по UDP
в роутере - встроенными средствами я вижу что пакеты до роутера отправляемые через компьютер - доходят. что делает дальше с этими пакетами я не могу знать. надеюсь пересылает...
 

JustACat

Moderator
Команда форума
Emmy, вы не ответили, какая у вас сейчас прошивка ESP?

Update: если у вас 0.22 то судя по описанию AT команд 0.22 (найти последние доки можете тут), изменения действительно есть и AT+CIPSERVER – Configure as TCP server - то есть работает теперь только как TCP сервер...
А если нужно UDP, то нужно вроде как использовать AT+CIPSTART – Establish TCP connection or register UDP port, start connection - как раз оно...
 
Последнее редактирование:

Emmy

Member
честно сказать уже пробывал . искал в интернете и на одном сайте нашел подобное использование но пока не очень понятно
Serial.println("AT+CIPSTART=0,\"UDP\",\"192.168.255.255\",51234");
пробывал так же подсеть 255.255.255.255 указывать. все равно UPD не принимает. еще я не доконца уверен что я верно указал ковычки. он мне пишет что все норм а на самом деле может быть и не норм. ведь соединение то не устанавливается фактически. UDP без подключения как бы работает. а то что пишет что норм - мол просто сьел команду и возможно с ошибкой
 

Emmy

Member
2)Multiple connection
(+CIPMUX=1)
AT+CIPSTART=
<id><type>,<addr>,<port>
[,(<local port>),(<mode>)]

41 страница инструкции. и не разберешь есть ли ковычки где а где нет
 
Сверху Снизу