Существует ли точная процедура подключения между esp32 и ультразвуковым датчиком(HC-SR04)?

В настоящее время я работаю над проектом, который объединяет esp32 и HC-SR04 и отправляет данные из HC-SR04 в мой собственный домен. Схема подключения выглядит следующим образом А код,который я использую, таков:

const int trigPin = 5;
const int echoPin = 18;
#define SOUND_SPEED 0.034
#define CM_TO_INCH 0.393701

long duration;
float distanceCm;
float distanceInch;

void setup() {
 Serial.begin(115200); // Starts the serial communication
 pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
 pinMode(echoPin, INPUT); // Sets the echoPin as an Input
}

void loop() {
 digitalWrite(trigPin, LOW);
 delayMicroseconds(2);
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(trigPin, LOW);

 duration = pulseIn(echoPin, HIGH);

 distanceCm = duration * SOUND_SPEED/2;

 distanceInch = distanceCm * CM_TO_INCH;

 Serial.print("Distance (cm): ");
 Serial.println(distanceCm);
 Serial.print("Distance (inch): ");
 Serial.println(distanceInch);

 delay(1000);
}

Но модуль не выдает расстояние. Может ли кто-нибудь предложить лучший способ подключения. Заранее спасибо!

, 👍0

Обсуждение

Не могли бы вы более конкретно рассказать об этой проблеме? Если он "не выдает расстояние", то что происходит вместо этого? Он разбивается? Всегда ли он возвращается на одно и то же расстояние? Является ли расстояние дико неточным? Или что-то еще? Ты знаешь, что имеешь в виду, а мы-нет., @romkey

Поэтому обычно после подключения на выходе в соответствии с кодом выходит что-то вроде расстояния(см): 0.00 Расстояние(дюйм):0.00, @Suriya Prakash J J

Но когда я подключаюсь к Arduino датчик работает отлично, @Suriya Prakash J J

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

Действительно ли ваш вариант платы ESP32 выдает 5 В на выводе VIN?, @Majenko

Я проверил его с помощью мультиметра, и он дал мне всего около 3 В. Я сделал то же самое с arduino UNO, и он дал мне около 3,3 В на выводе 5 В., @Suriya Prakash J J

Если Arduino дает вам 3,3 В на выводе 5 В, либо ваш Arduino сломан, либо вы вытягиваете из него огромные токи, либо ваш мультиметр не работает, либо вы не знаете, как правильно использовать свой мультиметр., @Majenko

Я знаю, как пользоваться мультиметром, когда вижу его @Majenko. Я использую только один ультразвуковой датчик, поэтому знаю, как датчик будет потреблять огромный ток от esp32, @Suriya Prakash J J

Тогда где-то должно быть что-то не так, если вы измеряете только 3,3 В на выводе 5 В Arduino..., @Majenko


1 ответ


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

1

Сурия,

Вы не сошли с ума - похоже, что контакты ESP32 GPIO (по крайней мере, те, которые я тестировал) не будут управлять триггерным штифтом датчика гидролокатора HC-04 достаточно высоко, чтобы вызвать импульс гидролокатора. Я протестировал пример кода NewPingExample.pde из папки "example" библиотеки NewPing как на MEGA2560, так и на ESP32_DevKitC_V4. МЕГА-реализация сработала сразу, но я так и не смог заставить модуль ESP работать. Итак, я взглянул на PIN Trigger/Echo (по умолчанию файл NewPing.h использует режим "Single Pin", поэтому вы должны убедиться, что определения TRIGGER_PIN и ECHO_PIN используют один и тот же pin). Две трассировки области видимости ниже относятся к MEGA2560 и ESP32. Как вы можете видеть, выход ESP32 достигает только 1,865 В - недостаточно высокого уровня, чтобы фактически запустить устройство. Выход МЕГА-реализации достигает более 3 В и последовательно запускает эхо (большой прямоугольник справа от узкого триггерного сигнала).

Возможно, вы захотите попробовать использовать лидарный чип STMicro VL53L0X time-of-flight - он намного меньше, потребляет меньше тока и не страдает от самоинтерференций, если вы планируете использовать более одного датчика. Некоторые идеи можно найти в этом посте на моем блоге

MEGA2560 Implementation ESP32 Implmentation

,

Спасибо за ответ @starship15. Я очень ценю ваше время за то, что вы разъяснили мне результаты!, @Suriya Prakash J J