Ультразвуковой датчик wirh ESP-01 Автономный
Хочу построить дешевое устройство для измерения уровня воды в резервуаре с помощью датчика 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?
@motion channel, 👍0
Обсуждение2 ответа
Здесь есть 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
Этот вопрос старый, но у меня была такая же проблема, поэтому я отвечу на него.
Похоже, проблема заключается в том, что GPIO0 и GPIO2 подключены к модулю SR04, когда он включен (именно этого и следовало ожидать), но GPIO0 и GPIO2 (также GPIO15, просто для упоминания) используется ESP8266 для изменения режима загрузки, если к этим контактам ничего не подключено, ESP загрузит программу, записанную во флэш-памяти, но если эти контакты изменят уровни во время включения ESP, он может войти в режим флэш-памяти и ваш код не будет выполняться. Если вы сначала включите ESP-01 и сразу после этого подключите провода к SR04, код сработает, я знаю, потому что у меня была такая же проблема, и прямо сейчас передо мной стоит схема. Но это только для тестирования, вам не нужно этого делать, решение для меня состояло в том, чтобы использовать GPIO3.
Вы можете использовать контакт RX как GPIO3, как вы упомянули, но вы не можете использовать его одновременно с последовательным, потому что последовательный интерфейс будет использовать контакты RX и TX. Если вы напишите веб-сервер для отображения измеренного расстояния, например, и удалите линии, использующие серийный номер, он будет работать. Я использовал GPIO3 и GPIO2 с одним и тем же кодом, просто отключив последовательный порт и изменив номера контактов, и все заработало.
- Код Arduino не работает должным образом (Пожалуйста, помогите)
- почему это неожиданное поведение проявляется, когда я использую следующий код для отправки данных с ультразвукового датчика расстояния в firebase
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
- ESP8266 не подключается к Wi-Fi
Я думаю, что логика требует 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