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
@Ali Karim, 👍4
Обсуждение4 ответа
Возможно, у вас есть место в SSID WI-Fi, поэтому вам следует проверить это в своем маршрутизаторе. Также, возможно, ваш WI-Fi работает на частоте 5 ГГц, и ESP не может его видеть, потому что он работает только на частоте 2,4 ГГц. Кроме того, если ваша точка доступа WI - Fi находится на канале с 13 по 14, она также не может быть видна ESP. И чтобы проверить свой ESP, вы можете запустить пример сканирования, и если он работает, вам следует попробовать пример веб-сервера для подключения к вашей сети. Если все это будет работать нормально, то проблема в вашем коде.
У меня была та же проблема, когда я попытался подключиться к домашнему Wi-Fi, я застрял только с печатными точками и никогда не мог подключиться. Прежде всего, я подумал, что в моем ssid или пароле была опечатка, но этого не произошло. Затем я изменил nodemcu, и проблема не исчезла. Но когда я попытался подключиться к другому Wi-Fi, это сработало. Итак, проблема была в моем модеме/маршрутизаторе.Поэтому я изменил конфигурацию своего модема/маршрутизатора на: Режим работы: 802.11 g+n для автоматического Канал: от 11 до автоматического Диапазон каналов: от 20 до автоматического
затем проблема была решена.
Это сработало и для меня, спасибо, что поделились., @Buda Florin
Попробуйте добавить WiFi.имя хоста("ESP-хост");
перед WiFi.begin(ssid, пароль);
- в моем случае это работает.
Для подключения к 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
- Каково использование зарезервированных контактов и контактов SDD2, SDD3 NodeMCU?
- Обнаружение ESP8266 в сети
- NodeMCU продолжает отключаться
- Соединение сетей Wi-Fi на nodemcu: как настроить esp8266 в качестве расширителя Wi-Fi, простейший случай
- Ошибка запуска FirebaseDemo в NodeMCU
- Как связать MPU9250 и NodeMcu?
- Как изменить тайм-аут загрузки ArduinoOTA?
- ESP8266 Одноранговая сеть с AP и STA — кэширование клиентов AP, очистка их запросов?
он печатает точку каждую секунду на последовательном мониторе? как работает 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