Светодиод 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


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.

,

-1

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

,