NodeMcu esp 8266 зависает при подключении


#include <ESP8266WiFi.h>
#include "ThingSpeak.h"
#include <Adafruit_BME280.h>
#include <Adafruit_Sensor.h>

const char* ssid = "REPLACE_WITH_YOUR_SSID";   // SSID вашей сети (имя)
const char* password = "REPLACE_WITH_YOUR_PASSWORD";   // ваш сетевой пароль

WiFiClient  client;

unsigned long myChannelNumber = X;
const char * myWriteAPIKey = "XXXXXXXXXXXXXXXX";

// Переменные таймера
unsigned long lastTime = 0;
unsigned long timerDelay = 30000;

// Переменная для хранения показаний температуры
float temperatureC;
// раскомментируйте, если хотите получить температуру в градусах Фаренгейта
//плавающая температураF;

// Создаем объект датчика
Adafruit_BME280 bme; // BME280 подключается к ESP8266 I2C (GPIO 4 = SDA, GPIO 5 = SCL)

void initBME(){
  if (!bme.begin(0x76)) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }
}

void setup() {
  Serial.begin(115200);  //Инициализировать серийный номер
  initBME();
  
  WiFi.mode(WIFI_STA);   
  
  ThingSpeak.begin(client);  // Инициализировать ThingSpeak
}

void loop() {
  if ((millis() - lastTime) > timerDelay) {
    
    // Подключаемся или переподключаемся к WiFi
    if(WiFi.status() != WL_CONNECTED){
      Serial.print("Attempting to connect");
      while(WiFi.status() != WL_CONNECTED){
        WiFi.begin(ssid, password); 
        delay(5000);     
      } 
      Serial.println("\nConnected.");
    }

    // Получить новое значение температуры
    temperatureC = bme.readTemperature();
    Serial.print("Temperature (ºC): ");
    Serial.println(temperatureC);
    
    // раскомментируйте, если хотите получить температуру в градусах Фаренгейта
    /*temperatureF = 1.8 * bme.readTemperature() + 32;
    Serial.print("Temperature (ºC): ");
    Serial.println(temperatureF);*/
    
    
    // Запись на ThingSpeak. В канале может быть до 8 полей, что позволяет хранить до 8 различных
    // фрагменты информации в канале. Здесь мы пишем в поле 1.
    int x = ThingSpeak.writeField(myChannelNumber, 1, temperatureC, myWriteAPIKey);
    // раскомментируйте, если хотите получить температуру в градусах Фаренгейта
    //int x = ThingSpeak.writeField(myChannelNumber, 1, TemperatureF, myWriteAPIKey);

    if(x == 200){
      Serial.println("Channel update successful.");
    }
    else{
      Serial.println("Problem updating channel. HTTP error code " + String(x));
    }
    lastTime = millis();
  }
}

, 👍-2

Обсуждение

какой у вас конкретный вопрос? ... где вы видите слово "подключение"?, @jsotola

Без WiFi.begin(ssid, password) вы не пытаетесь подключиться к WiFi., @hcheung

@hcheung esp8266 может автоматически присоединяться к точке доступа с сохраненными учетными данными. но OP должен дождаться завершения этого соединения, @Juraj