не могу понять, что не так с моим кодом nodemcu

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

//Настройки Firebase
#define FIREBASE_HOST "..........firebaseio.com/"     // не могу поделиться
#define FIREBASE_AUTH "..............."               // не могу поделиться

//настройки Wi-Fi
#define WIFI_SSID "kello"
#define WIFI_PASSWORD "8888"

//Определяем триггерные и эхо-цифровые выводы
const int trigPin = 4;
const int echoPin = 3;

// количество времени, в течение которого ультразвуковая волна будет распространяться
long duration = 0;
// Определяем переменную расстояния
double distance = 0;

void setup()
{
     Serial.begin(9600);
    // Подключиться к Wi-Fi
    Serial.print("Wi-Fi...");
    WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
    Serial.print("Connecting...");
    while (WiFi.status() != WL_CONNECTED)
    {
        Serial.print(".");
        delay(500);
    }
    Serial.println();
    Serial.print("Connected to: ");
    Serial.println(WiFi.localIP());

    Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);

    // Ультразвуковой датчик, установите эхо в качестве входа и триггер в качестве выхода
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);


}

void loop()
{

    getDistance();
    // Печатает значение расстояния до последовательного монитора
    Serial.print("Distance: ");
    Serial.println(distance);

    delay(500);
}

void getDistance()
{
    // Очистить триггер
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);

    // тригПин ВЫСОКИЙ пор 10 мс
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);

    //Читает echoPin, возвращает время прохождения звуковой волны в мс
    duration = pulseIn(echoPin, HIGH);

    // Расчет расстояния в сантиметрах по формуле, описанной в первом разделе.
    distance = duration * 0.034 / 2;

    // Отправляет значение расстояния в Firebase
    Firebase.setFloat("distance", distance);

}

Я выпускник компьютерного факультета, поэтому у меня мало знаний о nodemcu. Я видел некоторые документы о nodemcu. Я хочу показать данные, полученные ультразвуковым датчиком расстояния, в базе данных Firebase в реальном времени. Но я не могу понять, почему я не могу получить вывод serial.println(distance) в окне com5, хотя код успешно компилируется. Вот что я получаю при запуске программы

Executable segment sizes:


IROM   : 330560          - code in flash         (default or ICACHE_FLASH_ATTR) 


IRAM   : 27760   / 32768 - code in IRAM          (ICACHE_RAM_ATTR, ISRs...) 


DATA   : 1408  )         - initialized variables (global, static) in RAM/HEAP 


RODATA : 2044  ) / 81920 - constants             (global, static) in RAM/HEAP 


BSS    : 25160 )         - zeroed variables      (global, static) in RAM/HEAP 


Sketch uses 361772 bytes (34%) of program storage space. Maximum is 1044464 bytes.
Global variables use 28612 bytes (34%) of dynamic memory, leaving 53308 bytes for local variables. Maximum is 81920 bytes.
esptool.py v2.8
Serial port COM5
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: ec:fa:bc:c1:44:d2
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 365920 bytes to 264395...

Writing at 0x00000000... (5 %)
Writing at 0x00004000... (11 %)
Writing at 0x00008000... (17 %)
Writing at 0x0000c000... (23 %)
Writing at 0x00010000... (29 %)
Writing at 0x00014000... (35 %)
Writing at 0x00018000... (41 %)
Writing at 0x0001c000... (47 %)
Writing at 0x00020000... (52 %)
Writing at 0x00024000... (58 %)
Writing at 0x00028000... (64 %)
Writing at 0x0002c000... (70 %)
Writing at 0x00030000... (76 %)
Writing at 0x00034000... (82 %)
Writing at 0x00038000... (88 %)
Writing at 0x0003c000... (94 %)
Writing at 0x00040000... (100 %)
Wrote 365920 bytes (264395 compressed) at 0x00000000 in 23.4 seconds (effective 125.3 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Вот серийное окно после выполнения

Не получает ли ультразвуковой датчик достаточного питания, так как nodemcu подключен к моему ноутбуку? Пожалуйста, помогите мне и дайте мне знать, если потребуется дополнительная информация.

, 👍0

Обсуждение

https://electronics.stackexchange.com/questions/402066/esp8266-free-gpios-for-relay-switching/404845#404845, @Juraj


1 ответ


Лучший ответ:

1

Ваш echoPin определяется как 3. GPIO3 NodeMCU также является выводом «RX», необходимым для последовательной связи с хостом. Это может объяснить, почему вы не видите никакого вывода. Вы должны изменить его на другой контакт (например, контакт 5 / D1 является безопасным выбором).

Каждый контакт на NodeMCU имеет номер «GPIO» (это всего лишь номер контакта, определенный архитектурой ESP8266) и соответствующее обозначение «Dx» (которое обычно отмечается на плате NodeMCU).

Какой контакт GPIO соответствует какому контакту D, показан на схемах выводов, например здесь. Прокрутите до распиновки NodeMCU 12-E.

Самые безопасные контакты:

  • Контакт 5 (D1)
  • Контакт 4 (D2)
  • Контакт 12 (D6)
  • Контакт 13 (D7)
  • Контакт 14 (D5)

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

Обратите внимание, что контакты 12–14 используются для SPI, а контакты 4 и 5 (обычно) используются для (программного) I2C. Если вы хотите управлять оборудованием, использующим эти протоколы, используйте эти контакты по умолчанию.

,