Ультразвуковой датчик wirh ESP-01 Автономный

esp8266 ultrasonics

Хочу построить дешевое устройство для измерения уровня воды в резервуаре с помощью датчика HC-SR04 и ESP-01, которые отправляют данные в тему MQTT. Я использовал тот же код с ESP-E12, который работает просто отлично. Когда я пытаюсь снизить стоимость с помощью ESP-01, я столкнулся с проблемой с выводами ввода-вывода. Я поискал в Интернете и нашел противоречивую информацию о том, какие контакты можно использовать в этом случае.

Итак, вот схема моей установки:

Подойдя к ESP-01, я использовал USB-адаптер для его программирования, и код был успешно загружен. Здесь я просто показываю часть ультразвукового датчика, с которой, как мне кажется, у меня есть проблемы.

#define echoPin 2 // Echo Pin
#define trigPin 0 // Триггерный вывод
 
long duration, distance; // Длительность, используемая для расчета расстояния
 
void setup(){
  Serial.begin (115200);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);   
}
 
void loop(){
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = duration/58.2;
  Serial.println(distance);
  delay(200);
}

Я где-то читал в Интернете, что GPIO2 не может быть использован и должен быть заменен на Rx = GPIO3. Однако я попробовал это сделать, и это тоже не сработало.

Итак, вопрос здесь в том, действительно ли я использую правильные контакты или это действительно возможно сделать с помощью esp-01?

, 👍0

Обсуждение

Я думаю, что логика требует 5 В, но есть хак, чтобы заставить ее работать с 3,3 В : https://www.instructables.com/Modify-Ultrasonic-Sensors-for-3-Volts-Logic-prepar/, @I Like

вы используете правильные контакты. но эти контакты должны быть вытащены при загрузке. если датчик посылает им LOW, то esp8266 не загрузится. то же самое для ESP-12, @Juraj

Вам нужен модуль преобразователя логических уровней Потому что esp8266 01 поддерживает 3 В, а ультразвуковой датчик поддерживает 5 В., @Mohhammad yusuf Khan

И контакт ввода-вывода ESP8266 устойчив к напряжению 5 В! https://www.facebook.com/groups/1499045113679103/permalink/1731855033731442, @MatsK


2 ответа


-1

Здесь есть 2 вещи. Ультразвуковой датчик работает на 5В, а ESP - на 3,3В. Таким образом, ваш датчик посылает сигнал 5 В на ESP. Он может испортить вашу плату, но я считаю, что у него есть предохранитель от всего, что выше 3,3 В, и именно по этой причине ваше приложение не работает. Дешевым решением было бы добавить делитель напряжения к вашему эхо-контакту: https://randomnerdtutorials.com/how-to-level-shift-5v-to-3-3v но тогда вы столкнетесь с проблемой, упомянутой Юраем выше. Затем вы можете обойти эту проблему вручную или поискать более сложное (дорогое) решение.

,

ESP устойчив к 5В. https://www.facebook.com/groups/1499045113679103/permalink/1731855033731442, @MatsK

полноразмерный ESP есть, а ESP-01 нет, @smoczyna

Какая? ЧИП устойчив к напряжению 5В!, @MatsK


1

Этот вопрос старый, но у меня была такая же проблема, поэтому я отвечу на него.

Похоже, проблема заключается в том, что GPIO0 и GPIO2 подключены к модулю SR04, когда он включен (именно этого и следовало ожидать), но GPIO0 и GPIO2 (также GPIO15, просто для упоминания) используется ESP8266 для изменения режима загрузки, если к этим контактам ничего не подключено, ESP загрузит программу, записанную во флэш-памяти, но если эти контакты изменят уровни во время включения ESP, он может войти в режим флэш-памяти и ваш код не будет выполняться. Если вы сначала включите ESP-01 и сразу после этого подключите провода к SR04, код сработает, я знаю, потому что у меня была такая же проблема, и прямо сейчас передо мной стоит схема. Но это только для тестирования, вам не нужно этого делать, решение для меня состояло в том, чтобы использовать GPIO3.

Вы можете использовать контакт RX как GPIO3, как вы упомянули, но вы не можете использовать его одновременно с последовательным, потому что последовательный интерфейс будет использовать контакты RX и TX. Если вы напишите веб-сервер для отображения измеренного расстояния, например, и удалите линии, использующие серийный номер, он будет работать. Я использовал GPIO3 и GPIO2 с одним и тем же кодом, просто отключив последовательный порт и изменив номера контактов, и все заработало.

,