Светодиод ESP8266 не работает

Мой светодиод не мигает, я понятия не имею, почему он не работает. Я запускаю его на плате «generic esp8266 module».

  /*Мигание

Включает светодиод на одну секунду, затем выключает на одну секунду, повторяя процедуру.

Большинство Arduino имеют встроенный светодиод, которым вы можете управлять. На UNO, MEGA и ZERO
он подключен к цифровому выводу 13, на MKR1000 на выводе 6. LED_BUILTIN установлен на
правильный вывод светодиода независимо от того, какая плата используется.
Если вы хотите узнать, к какому контакту на плате Arduino подключен встроенный светодиод
модель, проверьте технические характеристики вашей платы по адресу:
https://www.arduino.cc/en/Main/Продукты

изменено 8 мая 2014 г.
Скотт Фицджеральд
изменено 2 сентября 2016 г.
Артуро Гваделупи
изменено 8 сентября 2016 г.
Колби Ньюман

Этот пример кода находится в открытом доступе.

http://www.arduino.cc/en/Tutorial/Мигание
*/

// функция настройки запускается один раз при нажатии кнопки сброса или включении питания платы
void setup() {
  // инициализируем цифровой вывод LED_BUILTIN как выход.
  pinMode(13, OUTPUT);
}

// функция цикла выполняется снова и снова вечно
void loop() {
  digitalWrite(13, HIGH);   // включаем светодиод (HIGH — уровень напряжения)
  delay(1000);                       // ждем секунду
  digitalWrite(13, LOW);    // выключаем светодиод, понизив напряжение
  delay(1000);                       // ждем секунду
}

Моя схема Схема

Модуль Wi-Fi работает нормально, но светодиод не работает вообще.

Еще один набросок

#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <Servo.h>
// Инициализируем подключение Wi-Fi к маршрутизатору
char ssid[] = "---";     // SSID вашей сети (имя)
char password[] = "---"; // ваш сетевой ключ
int tempsensorPin = 0;
int lightsensorPin = 1;
bool searchState = false;
bool starting = false;
bool lightState = false;
Servo servo_test;  
// Инициализация Telegram BOT
#define BOTtoken "----"  // ваш токен бота (получить от Botfather)

WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);

int Bot_mtbs = 1000; //среднее время между сообщениями сканирования
long Bot_lasttime;   //время последнего сканирования сообщений

void setup() {
  //servo_test.attach(8);
  Serial.begin(115200);

  // Установите WiFi в режим станции и отключитесь от точки доступа, если это было ранее
  // подключен
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);

  // Попытка подключиться к сети Wi-Fi:
  Serial.print("Connecting Wifi: ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  pinMode(13, OUTPUT);
}

void loop() {
 digitalWrite(13,lightState);
  if (millis() > Bot_lasttime + Bot_mtbs)  {
    int numNewMessages = bot.getUpdates(bot.last_message_received + 1);

    while(numNewMessages) {
      Serial.println("got response");
      for (int i=0; i<numNewMessages; i++) {
        String id = bot.messages[i].chat_id;
        String text = bot.messages[i].text;

       //bot.sendMessage(bot.messages[i].chat_id, bot.messages[i].text, "");
        if(searchState){
          searchState=false;
          bot.sendMessage(bot.messages[i].chat_id, "http://lmgtfy.com/?q="+text, "");
        }else{
          bot.sendMessage(bot.messages[i].chat_id, answerMe(text), "");  
        }
      }
      numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    }

    Bot_lasttime = millis();
  }
}
String answerMe(String request){
 int tempSensor = analogRead(tempsensorPin);
 int lightSensor = analogRead(lightsensorPin);
 float voltage = tempSensor * 5.0;
 voltage /= 1024.0; 
 Serial.print(voltage); Serial.println(" volts");
   float temperatureC = (voltage - 0.5) * 20 ;  
 Serial.print(temperatureC); Serial.println(" degrees C");
 float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
 Serial.print(temperatureF); Serial.println(" degrees F");
 if(starting){
  if (request=="/temperatureF"){
    return "Current temperature is " + String(temperatureF) + " F";
  }
  if (request=="/temperatureC"){
    return "Current temperature is " + String(temperatureC) +" C";  
  }
  if(request=="/lightIntensity"){
    return "Current light intensity is " + String(lightSensor);
  }
  if(request=="/lightON"){
    lightState=true;
    return "Current light state is true!";  
  }
  if(request=="/lightOFF"){
    lightState=false;
    return "Current light state is false!";
  }
  if(request=="/lightDepend"){
    analogWrite(13,lightSensor);
    return "Here we go!"; 
  }
  if(request=="/google"){
    searchState=true;
    return "What you want to google?"; 
  }
  if(request=="close"){
    starting=false;            
    servo_test.write(0);
    return "Bye bye!";
  }
}else if(request=="/open"){
    starting=true;
    servo_test.write(90);
    return "What's next?"; 
}else
    return "Open the box first!";



}

, 👍0

Обсуждение

Вы загружаете код ESP8266 в Arduino???, @Majenko

или он загружает Blink с выводом 13 в esp8266 и ожидает, что светодиод на Arduino будет мигать, @Juraj

Думаю, он компилирует для ESP8266 («Я запускаю его на плате «generic esp8266 module»»), но загружает его в Arduino. Возможно. Это распространённая ошибка: вы выбираете ESP8266 в качестве целевого устройства, хотя на самом деле это всего лишь периферийное устройство к Arduino, которое вы программируете., @Majenko

Загрузка не получится, или нет? 250+ кб? Если я правильно вижу, RX — это RX, а TX — TX., @Juraj

Да, это rx к rx и tx к tx, и это работает., @Aksultan

Итак, вы запускаете код на ESP8266 и ожидаете, что он волшебным образом замигает светодиодом на Arduino?, @Majenko

@Juraj обновлено, я изменил tx на rx и tx на rx, теперь светодиод мигает во время компиляции кода, но загрузка не удалась, предупреждение: espcomm_sync не удалось ошибка: espcomm_open не удалось ошибка: espcomm_upload_mem не удалось ошибка: espcomm_upload_mem не удалось, @Aksultan


2 ответа


1

ESP8266 не будет мигать светодиодом на выводе 13 или любом другом выводе Uno. У него нет доступа к выводам Uno. И ваши вызовы analogRead возвращают какие-то случайные значения.

Соединение RX к RX, TX к TX превращает Uno в адаптер «USB к последовательному порту» для esp8266. Вы загружаете Blink в esp8266. Если бы скетч Blink имел оригинальный номер пина LED_BUILTIN, то светодиод на модуле esp8266, возможно, мигал бы.

После того, как вы изменили подключение RX на TX и TX на RX, вы не сможете загрузить данные на esp8266, поскольку esp8266 больше не подключен к ПК через USB.

Если вы хотите считывать и записывать пины Uno из esp8266, используйте скетч ConfigurableFirmata в Uno и библиотеку FirmataMaster в esp8266.

Другой вариант — написать собственный скетч для Uno и организовать связь между esp8266 и Uno через последовательный порт.

Или вы можете использовать esp8266 в качестве сетевого адаптера с какой-нибудь прошивкой (прошивкой AT или WiFi Link) и перенести свой скетч на Uno.

,

То есть, невозможно заставить этот индикатор мигать, даже если я изменю пин на 11? Извините за тупость., @Aksultan

вы можете мигать любым пином на Uno с помощью скетча в Uno. но для чего вы хотите использовать модуль esp8266?, @Juraj

Я использую его для подключения к Telegram-боту и с помощью его команд получаю выходные данные различных датчиков, таких как датчик освещенности и датчик температуры. Я также хочу, чтобы мигал свет, но он не работает. Я потратил около 2 дней, чтобы решить эту проблему, но он вообще не работает., @Aksultan

вы планируете отправлять команды или у вас есть рабочий набросок?, @Juraj

У меня есть рабочий эскиз, но я не могу заставить работать светодиод, остальные модули работают нормально., @Aksultan

обновлено, пожалуйста, проверьте, @Aksultan

Ваши вызовы analogRead возвращают случайные значения с выводов ESP8266. Если вы хотите читать и записывать данные с выводов Uno через ESP8266, используйте скетч ConfigurableFirmata в Uno и библиотеку FirmataMaster в ESP8266. Ответ обновлён., @Juraj


-1

Вероятно, вы не загружаете код в ESP8266. Вместо этого код загружается в Arduino. Вам следует заземлить GPIO1 и подключить ESP8266 Reset к Arduino Reset. Затем перейдите в Sketch и посмотрите, изменили ли вы плату с ARduino на ESP8266.

,

как можно успешно загрузить на Uno esp-скетч размером 250 КБ?, @Juraj