ESP8266 Ошибка при отправке данных в Firebase с Arduino Uno

Всем доброго дня! У меня есть проект, в котором данные с кнопки (количество кликов) будут отправляться в базу данных Firebase в реальном времени. Каждый раз при нажатии кнопки счетчик увеличивается и обновляется в базе данных Firebase.

Модуль Wi-Fi: Esp8266 Esp-01 + Адаптер Esp-01

Esp8266 Esp-01 + Адаптер Esp-01

Насколько я понимаю, есть 2 способа использования этого модуля Wi-Fi.

  1. Загрузите код в Arduino Uno и используйте AT-команды в модуле для отправки данных в Интернет.

  2. Загрузите код внутрь самого модуля WiFi, и после этого он может стать автономным SOC и больше не будет нуждаться в Arduino после загрузки кода.

Я попробовал второй способ, но запутался и застрял. Пока что мне удалось успешно подключить адаптер к макетной плате и протестировать некоторые AT-команды.

Поскольку я буду использовать второй способ, я не буду использовать их. Поэтому я попробовал этот код:

 #include <ESP8266WiFi.h>
 #include <FirebaseArduino.h>

 #define FIREBASE_HOST "https://duck-917ba.firebaseio.com/"
 #define FIREBASE_AUTH "r3jNQCsxN2Y2dcfawimRlzjLjdBSXLjstwGeyB0oMK"

 #define WIFI_SSID "mywifi"
 #define WIFI_PASSWORD "621533515"

const int  buttonPin = 8;    
int buttonPushCounter = 0;  
int buttonState = 0;        
int lastButtonState = 0;     

void setup() {
  pinMode(buttonPin, INPUT);
  Serial.begin(9600);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("connecting");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println();
  Serial.print("connected: ");
  Serial.println(WiFi.localIP());
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
  Firebase.setInt("clicks",0);
}

void loop() {
  buttonState = digitalRead(buttonPin);
  // сравнить buttonState с его предыдущим состоянием
  if (buttonState != lastButtonState) {
    // если состояние изменилось, увеличиваем счетчик
    if (buttonState == HIGH) {
      // если текущее состояние HIGH, то кнопка перешла из выключенного состояния во включенное:
      buttonPushCounter++;
      Serial.println("on");
      Serial.print("number of button pushes: ");
      Serial.println(buttonPushCounter);
      Firebase.setInt("clicks", buttonPushCounter);
    } else {
      // если текущее состояние — НИЗКОЕ, то кнопка перешла из состояния «включено» в состояние «выключено»:
      Serial.println("off");
    }
    // Небольшая задержка, чтобы избежать подпрыгивания
    delay(100);
  }
  // сохранить текущее состояние как последнее состояние для следующего прохода по циклу
  lastButtonState = buttonState;
}

Итак, я подключил свой 4-контактный адаптер к следующему:

  • ARD(TX)-АДАПТЕР(TX)

  • ARD(RX)-АДАПТЕР(RX)

  • ARD(5V)-АДАПТЕР(VCC)

  • ARD(GND)-АДАПТЕР(GND)

Я установил плату модуля Generic ESP8266.

Возникшие проблемы:

Я должен выбрать порт ESP8266, но в списке портов я вижу только порт Arduino UNO. Когда я компилирую код, я получаю эту ошибку:

Теперь я не понимаю, в чем заключается ошибка. Я думал, что, поскольку я использую адаптер, я могу легко использовать РЕЖИМ ПРОГРАММИРОВАНИЯ модуля. Но, похоже, мой адаптер не выполняет свою работу. Согласно некоторым моим исследованиям, мне нужно использовать TTL или FTDI USB-to-serial выделенный модуль / заземлить некоторые провода во время компиляции, что очень сбивает с толку новичка вроде меня.

Итак, вот мои последние мысли:

  1. Могу ли я ввести/прошить код в моем модуле, используя мой Arduino и адаптер?

  2. Поскольку кнопка подключена к выводу 8 Arduino, означает ли это, что код в модуле будет успешно вставлен? Мне все равно понадобится Arduino, чтобы подключить кнопки?

  3. В чем может быть причина того, что модуль не отображается в списке портов и выдает ошибки?

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

, 👍1

Обсуждение

Всю информацию вы получите по ссылке ниже. Попробуйте.. https://www.diyhobi.com/flash-program-esp-01-using-usb-serial-adapter/, @Rahul Vansh


2 ответа


1

1.) Могу ли я ввести/прошить код в моем модуле, используя мой Arduino и адаптер?

Да

2.) Поскольку кнопка подключена к контакту 8 ардуино. Означает ли это, что если код в модуле будет успешно вставлен, мне все равно понадобится ардуино, чтобы подключить кнопки?

ESP8266 не может волшебным образом узнать об Arduino, а Arduino не может волшебным образом узнать о кнопках. Если у вас есть кнопки, подключенные к Arduino, то Arduino нужно сообщить о них. Если Arduino и ESP8266 нужно работать вместе, то им обоим нужно программирование для совместной работы. Если и только если вы подключаете кнопки к ESP8266, а не к Arduino, то вам не нужен Arduino.

3.) По какой причине модуль не отображается в списке портов и выдает ошибки?

Arduino мешает. Подключите Arduino RESET к Arduino GND, чтобы отключить чип ATMega328p, который также пытается использовать TX и RX и конфликтует с ESP8266. Или, что еще лучше, купите дешевый кабель USB-UART (всего за пару долларов на eBay) и подключите адаптер напрямую к вашему ПК без Arduino.

,

Спасибо за ответ. Как вы и сказали, я попробовал подключить RESET к GND на Arduino. Я попытался настроить адаптер так, чтобы подключение было следующим, и войти в режим программирования: ARD(TXD)-TXD, ARD(RXD)-RXD, CH-PD&VCC к 3.3V, RESET&GND&GPIO0 к GND, GPIO2 отключён. Но, к сожалению, при попытке загрузки Arduino UNO/COM12 по-прежнему отображается в списке портов, и, похоже, мой модуль по какой-то причине не может быть прочитан в списке портов Arduino., @Duckbenok

Похоже, вы ожидаете, что ваш модуль будет отображаться на компьютере отдельно. Дело не в модуле, а в Arduino, которая к нему подключена. Именно Arduino вы всегда будете видеть., @Majenko

Понятно. Я заказал кабель USB-UART онлайн, он должен прибыть через пару дней. Насколько я понимаю, мне нужно подключить модуль и адаптер к UART-устройству и подключить его к компьютеру, чтобы начать программирование непосредственно внутри модуля, без использования Arduino? Если я успешно загрузил код в модуль, я смогу использовать его в режиме загрузки и с Arduino? Короче говоря, подключить UART (режим программирования), подключить Arduino (режим загрузки)? Спасибо за помощь., @Duckbenok

Конечно. При условии, что и Arduino, и ESP8266 запрограммированы таким образом, чтобы работать вместе. И это не означает, что нужно использовать AT-команды, поскольку ESP8266 их перестанет понимать., @Majenko


0

Подключите GP00 к земле. Это необходимо для прошивки ESP8266

,