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

быстрый прием и обработка данных

Emmys

New member
прошил еще раз. появились АТ команды. ура товарищи..
только не понятно. я эту микруху уже раза 2 прошивал..)

какую скорость поставить для софтверного порта..!?
 

Victor

Administrator
Команда форума
Еще есть возможность, что проблема в согласовании уровней TTL 3.3v (ESP) и USB-TTL. Обычно это не проблема, но может быть у вас как раз проблема в этом (USB-TTL с 5 выводами это что-то!) Даже на самых дешевых еще DTR выведен. Возможно, что логическая "1" не всегда воспринимается корректно, т.к. напряжение 3,3, а ожидается 5.
Если бы вы не написали, что соединили GND, то я бы подумал, что проблема в отсутствии общей земли (это очень важно для TTL)
Может стоит вернуться к подключению через Arduino?
 

Emmys

New member
хочу . я хотел спросить вас об этом.
вы буквально пару фраз сказали об этом.
все будет поступать в кучу и события из ком и данные допустим пришедшие по вай фай в ESP8266?
 

Victor

Administrator
Команда форума
хочу . я хотел спросить вас об этом.
вы буквально пару фраз сказали об этом.
все будет поступать в кучу и события из ком и данные допустим пришедшие по вай фай в ESP8266?
Я так думаю, что в скетче у вас 2 UART используются, раз SoftSerial есть.
Нужно аппаратный UART использовать там, где нужна бОльшая скорость.
Согласно этому и местами поменять объявления переменных Serial и SoftSerial и схему переключить. Вроде и все. 2 строчки только и изменить
 

Emmys

New member
смысл я понял. надо как то поменять реальный ком который сидит на 0 и 1 ноге на 6и 7 допустим. а 6 и 7 наоборот посадить на 0 и 1
 

Victor

Administrator
Команда форума
смысл я понял. надо как то поменять реальный ком который сидит на 0 и 1 ноге на 6и 7 допустим. а 6 и 7 наоборот посадить на 0 и 1
верно, но тогда вам понадобится USB-TTL чтобы подключить его к 6и7 и подключится терминалом туда, т.к. USB Arduino уже нельзя будет использовать, т.к. RX TX (аппаратный UART) уже будет занят ESP. С Arduino Mega таких проблем нет - у нее два аппаратных UART.
 

Emmys

New member
На самом деле пока все таки не очень понятно. написал простой скетч как показано ниже. подключил вай фай к ноге 0 и 1. на время прошивки отключаю вай фай т.к. я уже занял получается ногу и прошить не удается с подключением. без подключения все ок.

теперь думаю так:
1. что бы законфигурировать вай фай мне нужно просто одна команда. могу я её отправить благодаря драйверу и USB шнурку. которая получается пошлет на нужной скорости прямо в wifi
2. для дебага я могу подключить LSD дисплей, могу просто отправлять себе UDP пакет с нужной информацей - т.е. в дальнейшем мне сом не нужен и думаю особого смысла пытаться его оставить - нет.
3. после настройки вай фая пользователь будет получатьвсю информацию от устройства уже по вай фай

и так я прошил и судя по скетчу все что я шлю в него принимается и должно идти на вай фай, а команда Serial.print(command); - должна передать команду в вай фай.. но что то не так идет. просто получаю ответ в COM
еще есть мысли по поводу read wrrite через Serial - возможно как то через них нужно... пока не ясно как сдделать элементарный обмен. диод синий не мограет

Код:
[/B]
[B]void setup()
{
  Serial.begin(115200);
}
void loop()
{


  if(Serial.available())
  {

  String command="";
  
  while(Serial.available()) // read the command character by character
  {
  // read one character
  command+=(char)Serial.read();
  delay(1);
  }
  Serial.print(command);
  
  }
}
 
Последнее редактирование:

Emmys

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

Victor

Administrator
Команда форума
как я понял по скетчу у вас компьютер подключен к ардуино через arduino USB, а ESP подключен на 01?
Это неправильное подключение. Ничего хорошего из этого не выйдет. Нельзя вот так три устройства подключать в кучу к одному UART
 

Emmys

New member
вот я пока не понимаю этот момент. как я отключу USB COM
и оставлю только ESP8266
и еще прошивку надо заливать
 

Victor

Administrator
Команда форума
вот я пока не понимаю этот момент. как я отключу USB COM
и оставлю только ESP8266
Вы хотите задействовать три устройства
1. Arduino (будет крутить скетч)
2. Компьютер (терминал)
3. ESP

В схеме, когда мы подключали и комп к USB и ESP к 0,1 для прошивки - мы блокировали чип ардуины RESET-GND и у нас было только устройства соединенных между собой.
Если убираем перемычку RESET-GND, то активируется чип, и получается что на ногах его аппаратного UART приходят одновременно сигналы от двух устройств - компа и ESP - поэтому так нельзя.

Возможно сделать так:
ESP к 0,1 Arduino на ее аппаратный UART
А компьютер, через USB-TTL подключаем на 6,7 arduino
Пишем скетч, принимаем данные через SoftSerial с компьютера, отправляем в Serial на ESP.
 

Emmys

New member
я хорошо подумал и хотел бы обойтись без UART и лишних заморочек с софтверным 6,7 комом
если учесть во внимание следующий момент, что устройство в рабочем стостоянии будет без подключения к компьютеру - наверное не нужеен мне этот самый ком?
я же могу отключить на время прошивки одну ногу с RX или TX и в таком случае у меня все прошивается. мне только один раз залить работающий скетч и все.
или как вариант поставить переключатель на корпусе- отключающий ноги RX и TX если мне нужно по COM законфигурировать в первый раз имя роутера и пароль с использованием которых ESP8266 должен подключиться к моей сети. - отключил RX TX - получил команду по USB, записал в EPPOEM , И при старте оттуда каждый раз выполнять оттуда эту самую команду (команды) на конфигурацию wifi когда микруху будет подключена с ногами
 
Последнее редактирование:

Emmys

New member
я видоизменил тестовый скетч.. но пока ничего не выходит. питание подаю отдельно на USB 5 вольт НЕ ОТ ПК, от зарядника телефона.
по идее после подачи питания должен подняться север.
я хотел на порт 51234 послать любой мусор и получить зависание тут while (true) { Serial.println("AT"); }
наблюдая постоянное свечение синего диода ...
я хочу убедиться что написав Serial.println("AT") например я посылаю команду именно ESP8266
но пока не вышло. буду думать.

Код:
[/B]
[B]void setup()
{


  Serial.begin(115200);



sendData("AT+RST\r\n",2000);
sendData("AT+CWMODE=1\r\n",1000);
sendData("AT+CIPMUX=1\r\n",1000);
sendData("AT+CIPSERVER=1,51234\r\n",1000);
sendData("AT+CWJAP=\"router\",\"777877787778\"\r\n",1000);


}
void loop()
{


  if(Serial.available())
  {

  // the following delay is required because otherwise the arduino will read the first letter of the command but not the rest
  // In other words without the delay if you use AT+RST, for example, the Arduino will read the letter A send it, then read the rest and send it
  // but we want to send everything at the same time.
  
  
  String command="";
  

  while(Serial.available()) // read the command character by character
  {
  // read one character
  char c=Serial.read();
  command+=c;
  //  Serial.write(c);
  
  delay(1);
  
  while (true) {
  Serial.println("AT");
  }
  
  }
  

  
  }
}











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


return response;
}
 

Victor

Administrator
Команда форума
наверное не нужеен мне этот самый ком
конечно, именно поэтому я и упоминал debug terminal - компьютер вам нужен только для отладки.
если вы его потом отключите - скетч переписывать не надо, оставляете как есть
а комп для отладки очень пригодится - можно в скетче в любом месте делать вывод значений переменных, например
 
Сверху Снизу