ESP8266 не подключается к Wi-Fi

Я пытаюсь передать температуру с DS18B20 на ThingSpeak, используя ESP8266. Вы можете увидеть код, который я использую для этого.

Когда я запускаю код, я не получаю никаких ошибок. В последовательном мониторе он просто показывает, что он не подключен к Wi-Fi. Если я изменю имя Wi-Fi в коде на что-то, чего даже не существует, я все равно не получу никаких ошибок. Я не думаю, что ESP даже находит Wi-Fi.

Я думаю, что единственная проблема, чтобы все заработало, - это просто правильно подключить Wi-Fi. Я также проверил ESP с помощью другого простого кода, просто чтобы убедиться, что он не сломан, и он действительно получает код с моего компьютера.

Вот код, который я использую. (Я удалил свой пароль и т. Д.... )

//nodeMCU v1.0 (black) with Arduino IDE
//stream temperature data DS18B20 with 1wire on ESP8266 ESP12-E (nodeMCU v1.0)
//shin-ajaran.blogspot.com
//nodemcu pinout https://github.com/esp8266/Arduino/issues/584
#include <ESP8266WiFi.h>
#include <DallasTemperature.h>
#include <OneWire.h>

//Def
#define myPeriodic 15 //in sec | Thingspeak pub is 15sec
#define ONE_WIRE_BUS D4  // DS18B20 on arduino pin2 corresponds to D4 on physical board
//#define mySSR 0  // Solid State Relay on pin 0

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
float prevTemp = 0;
const char* server = "api.thingspeak.com";
String apiKey ="******";
const char* MY_SSID = "******";
const char* MY_PWD = "******";
int sent = 0;

void setup() {
    Serial.begin(115200);
    connectWifi();
}


void loop() {
    float temp;
    //char buffer[10];
    //DS18B20.requestTemperatures();
    //temp = DS18B20.getTempCByIndex(0);
    temp=1111;
    //String tempC = dtostrf(temp, 4, 1, buffer);//handled in sendTemp()
    Serial.print(String(sent)+" Temperature: ");
    Serial.println(temp);

    //if (temp != prevTemp)
    //{
    //  sendTeperatureTS(temp);
    //  prevTemp = temp;
    //}

    sendTeperatureTS(temp);
    int count = myPeriodic;
    while(count--)
    delay(1000);
}

void connectWifi()
{
    Serial.print("Connecting to "+*MY_SSID);
    WiFi.begin(MY_SSID, MY_PWD);
    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.print(".");
    }

    Serial.println("");
    Serial.println("Connected");
    Serial.println("");
}//end connect

void sendTeperatureTS(float temp)
{
    WiFiClient client;

    if (client.connect(server, 80)) { // use ip 184.106.153.149 or api.thingspeak.com
        Serial.println("WiFi Client connected ");

        String postStr = apiKey;
        postStr += "&field1=";
        postStr += String(temp);
        postStr += "\r\n\r\n";

        client.print("POST /update HTTP/1.1\n");
        client.print("Host: api.thingspeak.com\n");
        client.print("Connection: close\n");
        client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
        client.print("Content-Type: application/x-www-form-urlencoded\n");
        client.print("Content-Length: ");
        client.print(postStr.length());
        client.print("\n\n");
        client.print(postStr);
        delay(1000);

    }//end if
    sent++;
    client.stop();
}//end send

, 👍4

Обсуждение

он печатает точку каждую секунду на последовательном мониторе? как работает esp8266? может ли источник питания 300 мА?, @Juraj

Вы должны загрузить скетч примера "WiFiScan.ino", чтобы проверить, какие станции Wi-Fi (и с какой силой сигнала) может видеть ваш ESP, если вы считаете, что не можете подключиться к своей сети., @Maximilian Gerhardt

да, это просто показывает точку все время. ESP прямо сейчас подключен к моему компьютеру с помощью кабеля micro USB, так что никакого внешнего источника питания, если вы это имеете в виду ? Я просто запускаю сканирование, и да, он находит ведьму Wi-Fi, к которой я пытаюсь подключиться., @user42391

Что касается меня, я только что сменил диапазон AP на 2,4 ГГц с 5,0 Ггц, и теперь он работает, @Computer Zombie

У меня та же проблема, и я боролся с ней много дней. Решение моей проблемы было связано с тем, что SSID чувствителен к регистру, и я пытался ввести все строчные буквы., @Eng.Abdulsalam


4 ответа


5

Возможно, у вас есть место в SSID WI-Fi, поэтому вам следует проверить это в своем маршрутизаторе. Также, возможно, ваш WI-Fi работает на частоте 5 ГГц, и ESP не может его видеть, потому что он работает только на частоте 2,4 ГГц. Кроме того, если ваша точка доступа WI - Fi находится на канале с 13 по 14, она также не может быть видна ESP. И чтобы проверить свой ESP, вы можете запустить пример сканирования, и если он работает, вам следует попробовать пример веб-сервера для подключения к вашей сети. Если все это будет работать нормально, то проблема в вашем коде.

,

4

У меня была та же проблема, когда я попытался подключиться к домашнему Wi-Fi, я застрял только с печатными точками и никогда не мог подключиться. Прежде всего, я подумал, что в моем ssid или пароле была опечатка, но этого не произошло. Затем я изменил nodemcu, и проблема не исчезла. Но когда я попытался подключиться к другому Wi-Fi, это сработало. Итак, проблема была в моем модеме/маршрутизаторе.Поэтому я изменил конфигурацию своего модема/маршрутизатора на: Режим работы: 802.11 g+n для автоматического Канал: от 11 до автоматического Диапазон каналов: от 20 до автоматического

затем проблема была решена.

,

Это сработало и для меня, спасибо, что поделились., @Buda Florin


0

Попробуйте добавить WiFi.имя хоста("ESP-хост"); перед WiFi.begin(ssid, пароль); - в моем случае это работает.

,

2

Для подключения к Wi-Fi с ESP32 и других плат требуется подключение Wi-Fi с частотой 2,4 ГГц, беспроводной режим должен быть устаревшим. Он не может быть установлен только на Auto или N. Перейдите на веб-страницу своего маршрутизатора и измените этот параметр в разделе Дополнительные настройки > Беспроводная связь.

Единственный код, необходимый для подключения, - это.

void setup() {
  ...
  WiFi.begin(MY_SSID, MY_PWD);
}

void loop() {
  while (WiFi.status() != WL_CONNECTED) {
     delay(1000);
     Serial.print(".");
  }
  ...
}
,

По моему опыту, NodeMCU / ESP32 отлично работает с сетями Wi-Fi “только для N"., @StarCat