BARS__
New member
Всем привет.
Работаю с ESP8266. Написал простенькую программу в Arduino IDE. Смысл программы - общаться с МК по UART и служить сетевой картой между ним и сетью (а именно пробрасывать MODBUS пакеты). Настройки модуля задаются через html страничку. И с этой частью программы все хорошо. Сложности возникли именно при работе с сетью. Скорее даже, не так. Сложности возникли у роутера при работе с ESP8266. Т.е. я задаю название сети, пароль, IP и порт. Модуль сообщает, что подключение установлено, но вот роутер его в таблице DHCP не отображает. Соответственно, пинг идет очень нестабильно, как будто роутер не может правильно составить маршрут. Такое ощущение, что ESP не выдает свой MAC, в результате чего, роутер не может корректно построить маршруты (по опыту работы с чипами Ethernet, такое поведение маршрутизаторов наблюдается именно в случае отсутствия MAC, но могу ошибаться). Подключаюсь к сети я вот так:
В чем может быть проблема? Может еще какие-то настройки надо задать?
Работаю с ESP8266. Написал простенькую программу в Arduino IDE. Смысл программы - общаться с МК по UART и служить сетевой картой между ним и сетью (а именно пробрасывать MODBUS пакеты). Настройки модуля задаются через html страничку. И с этой частью программы все хорошо. Сложности возникли именно при работе с сетью. Скорее даже, не так. Сложности возникли у роутера при работе с ESP8266. Т.е. я задаю название сети, пароль, IP и порт. Модуль сообщает, что подключение установлено, но вот роутер его в таблице DHCP не отображает. Соответственно, пинг идет очень нестабильно, как будто роутер не может правильно составить маршрут. Такое ощущение, что ESP не выдает свой MAC, в результате чего, роутер не может корректно построить маршруты (по опыту работы с чипами Ethernet, такое поведение маршрутизаторов наблюдается именно в случае отсутствия MAC, но могу ошибаться). Подключаюсь к сети я вот так:
Код:
/**
* Соединение с WiFi
*/
bool ConnectWiFi(const char *ssid, const char *pass, String IP) {
// Три попытки соединения по WiFi
uint8_t i = 0, j = 0, ip[4];
i = IP.indexOf('.');
ip[0] = IP.substring(0, i).toInt();
j = IP.indexOf('.', i+1);
ip[1] = IP.substring(i+1, j).toInt();
i = IP.indexOf('.', j+1);
ip[2] = IP.substring(j+1, i).toInt();
j = IP.length();
ip[3] = IP.substring(i+1, j).toInt();
IPAddress ip_addr(ip[0], ip[1], ip[2], ip[3]);
IPAddress ip_gate(ip[0], ip[1], ip[2], 1);
IPAddress ip_subnet(255, 255, 255, 0);
WiFi.mode(WIFI_AP_STA);
WiFi.config(ip_addr, ip_gate, ip_subnet);
for(int i = 0; i < 3; i++) {
WiFi.begin(ssid, pass);
for(int j = 0; j < 10; j++){
if(WiFi.status() == WL_CONNECTED){
wifi_set_sleep_type(NONE_SLEEP_T);
return true;
}
UART_Buffer_Tx[0] = 0x2A;
UART_Buffer_Tx[1] = 0x01;
UART_Buffer_Tx[2] = WIFI_CONNECTING;
Serial.write(UART_Buffer_Tx, 3);
delay(1000);
}
}
return false;
}