Ошибка ESP8266 при подключении к маршрутизатору
Я пытаюсь заставить работать плату ESP8266 с контактами 2x4. Я подключаю его к Olimexino 32u4 (совместимому с Leonardo), настроенному на использование 3,3 В. Этот простой фрагмент я использую для переноса всего на ПК (CH_PD подключен к D8, /RST к D9):
void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
delay(2000);
// инициализируем оба последовательных порта:
Serial.begin(9600);
Serial1.begin(115200);
delay(10000);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
}
void loop() {
// читаем с порта 1, отправляем на порт 0:
if (Serial1.available()) {
int inByte = Serial1.read();
Serial.write(inByte);
}
// читаем с порта 0, отправляем на порт 1:
if (Serial.available()) {
int inByte = Serial.read();
Serial1.write(inByte);
}
}
При запуске я вижу следующий вывод:
<"random" bytes>
Ai-Thinker Technology Co. Ltd.
invalid
Выполнение сброса показывает больше:
AT+RST
OK
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x40100000, len 1396, room 16
tail 4
chksum 0x89
load 0x3ffe8000, len 776, room 4
tail 4
chksum 0xe8
load 0x3ffe8308, len 540, room 4
tail 8
chksum 0xc0
csum 0xc0
2nd boot version : 1.4(b1)
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000
ŒÂÕ�MEM CHECK FAIL!!!
äsl�‚rô
Ai-Thinker Technology Co. Ltd.
invalid
Режим установлен на станцию:
AT+CWMODE?
+CWMODE:1
OK
Список точек доступа работает нормально:
AT+CWLAP
+CWLAP:(3,"ap-1",-91,"01:23:45:67:89:ab",1)
+CWLAP:(3,"ap-2",-88,"cd:ef:01:23:45:67",2)
+CWLAP:(3,"ap-3",-74,"89:ab:cd:ef:01:23",11)
OK
Но войти в мой маршрутизатор Fritzbox не удается (WPA2):
AT+CWJAP="ap-2","mypassword"
WIFI CONNECTED
+CWJAP:1
FAIL
WIFI DISCONNECT
Сначала я подумал, что причина в низком уровне сигнала, но даже движение непосредственно рядом с Fritzbox показывает тот же результат (правда, с более высоким значением сигнала в AT+CWLAP
).
Я перепробовал почти все, например AT+CWMODE=3
, AT+RST
, AT+RESTORE
). Ничего не меняется. При использовании неправильного пароля я вообще не получаю сообщений "WIFI CONNECTED".
Может ли это быть проблема с питанием (что Olimexino не может обеспечить до 200 мА на линии 3,3 В?
Подключение со смартфона к ESP8266 в одном из режимов точки доступа (2 или 3) работает нормально. Если бы были проблемы с питанием, не сбивался бы и режим точки доступа?
@Thomas S., 👍2
4 ответа
Лучший ответ:
Похоже, что ESP8266 не может получить IP-адрес через DHCP (это было включено в ESP8266, но Fritzbox был настроен для ограниченного диапазона только .200 - .209). При явной настройке IP:
AT+CIPSTA="192.168.92.82","192.168.92.254","255.255.255.0"
OK
а затем попытался подключиться, это сработало:
AT+CWJAP="ap-2","mypassword"
WIFI CONNECTED
WIFI GOT IP
OK
Теперь также работает пинг: :)
AT+PING="arduino.stackexchange.com"
+39
OK
В моем случае, когда я пытаюсь подключиться к своему маршрутизатору, я получаю следующий вывод:
AT+CWJAP="myssid","mypassword"
WIFI CONNECTED
+CWJAP:1
FAIL
WIFI DISCONNECT
Причина в том, что ESP8266, который у меня есть, по умолчанию настроен с отключенным DHCP. Чтобы включить его, вы можете попробовать следующее:
AT+CWDHCP=1,1
Если это сработает, вы получите следующее сообщение:
OK
WIFI GOT IP
У меня было много головной боли, связанной с этой ошибкой CWJAP:1 и несколькими другими, такими как OK в обмен на команду изменения IP-номера, но на самом деле IP-номер все тот же, что и раньше !!! Решение: команда AT+RESTORE для возврата ESP8266 к заводским настройкам по умолчанию... Когда по неизвестной причине происходят нелогичные вещи, вероятно, это связано с тем, что какой-то внутренний регистр имеет грязные значения внутри, и только AT+RESTORE может их нормализовать. .
У меня была такая же проблема, и я потратил позорное количество часов, пытаясь решить ее, прежде чем наткнулся на этот пост.
Я сделал AT+RESTORE
, а затем AT+UART_DEF=9600,8,1,0,0
, так как, как и ожидалось, модуль ожидал связи на 115200 после восстановление.
Затем... как по волшебству, теперь все работает...
AT+CWJAP="ssis","pwd"
WIFI CONNECTED
WIFI GOT IP
!
Я действительно не знаю, что было не так, что было исправлено RESTORE
... Должно быть, я испортил модуль, экспериментируя с различными командами.
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
- ESP8266 не подключается к Wi-Fi
- AT-команда не отвечает на последовательный монитор
- Разница между этими двумя платами NodeMCU?
Старый старый старый пост, который я знаю, но почти уверен, что это (более универсальный) правильный ответ, а не принятый., @Jon