ESP8266 Ошибка при отправке данных в Firebase с Arduino Uno
Всем доброго дня! У меня есть проект, в котором данные с кнопки (количество кликов) будут отправляться в базу данных Firebase в реальном времени. Каждый раз при нажатии кнопки счетчик увеличивается и обновляется в базе данных Firebase.
Модуль Wi-Fi: Esp8266 Esp-01 + Адаптер Esp-01

Насколько я понимаю, есть 2 способа использования этого модуля Wi-Fi.
Загрузите код в Arduino Uno и используйте AT-команды в модуле для отправки данных в Интернет.
Загрузите код внутрь самого модуля 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 выделенный модуль / заземлить некоторые провода во время компиляции, что очень сбивает с толку новичка вроде меня.
Итак, вот мои последние мысли:
Могу ли я ввести/прошить код в моем модуле, используя мой Arduino и адаптер?
Поскольку кнопка подключена к выводу 8 Arduino, означает ли это, что код в модуле будет успешно вставлен? Мне все равно понадобится Arduino, чтобы подключить кнопки?
В чем может быть причина того, что модуль не отображается в списке портов и выдает ошибки?
Я знаю, что это довольно длинная и скучная тема, но я знаю, что у многих начинающих разработчиков IoT есть те же проблемы с этим модулем Wi-Fi. Надеюсь, мы сможем решить их вместе. Спасибо!
@Duckbenok, 👍1
Обсуждение2 ответа
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
- AT-команда не отвечает на последовательный монитор
- Arduino выводит значения мусора на serial monitor с ESP8266
- Отправка данных Arduino в MySQL с помощью phpMyAdmin и XAMPP на Windows10
- ошибка: espcomm_upload_mem failed при загрузке скетча
- фатальная ошибка ESP8266WiFi.h: Такого файла или каталога нет
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Получить данные с сайта с помощью ESP8266 с помощью AT-команд
- Как узнать IP-адрес, назначенный ESP8266?
Всю информацию вы получите по ссылке ниже. Попробуйте.. https://www.diyhobi.com/flash-program-esp-01-using-usb-serial-adapter/, @Rahul Vansh