HC-SR04
-
Juszczaczek1
- Posts: 389
- Joined: Sun Nov 08, 2020 3:41 pm
- Been thanked: 2 times
Witam wszystkich, przychodzę z pytaniem gdzie szukać problemu z zawieszającym się pomiarem z hcsr-04? Mam wgrany soft GG wybrane przekaźniki (2), ds18b20 (4) i hcsr-04. W GG ustawiona wysokość np 50cm. Soft działa do momentu aż czujnik nie zejdzie do ustawionej wartości wtedy już pokazuje ta wartość i nie reaguje na zmianę. Gdzie może leżeć problem? Czujnik do wymiany czy może to wina softu lub ESP? Dodam że mam esp32u z zewnątrzna anteną , sygnał w okolicach 85% .
W GG jest stara wersja biblioteki NewPing i może być właśnie taki objaw, jak u Ciebie. Rozwiązanie? Najprościej skorzystać z rozwiązania kolegi @vajera i zrobić pomiar odległości przez SR-04 na kanale ogólnym pomiarowym. Na Forum są źródła i gotowy soft pod esp32c3. Poszukaj, bo z telefonu ciężko mi teraz znaleźć.Juszczaczek1 wrote: Mon Jan 12, 2026 5:14 am Witam wszystkich, przychodzę z pytaniem gdzie szukać problemu z zawieszającym się pomiarem z hcsr-04? Mam wgrany soft GG wybrane przekaźniki (2), ds18b20 (4) i hcsr-04. W GG ustawiona wysokość np 50cm. Soft działa do momentu aż czujnik nie zejdzie do ustawionej wartości wtedy już pokazuje ta wartość i nie reaguje na zmianę. Gdzie może leżeć problem? Czujnik do wymiany czy może to wina softu lub ESP? Dodam że mam esp32u z zewnątrzna anteną , sygnał w okolicach 85% .
Wiesz, że Supla obsługuje Zigbee? Wstąp do Klubu Promila: https://forum.supla.org/viewtopic.php?t=18018
Szukasz nowego GG? Jest tutaj: https://forum.supla.org/viewtopic.php?t=18036-
vajera
- Posts: 7290
- Joined: Wed Oct 31, 2018 7:58 am
- Location: Biedrusko
- Has thanked: 289 times
- Been thanked: 161 times
viewtopic.php?t=17651Zibi_007 wrote: Mon Jan 12, 2026 9:05 amW GG jest stara wersja biblioteki NewPing i może być właśnie taki objaw, jak u Ciebie. Rozwiązanie? Najprościej skorzystać z rozwiązania kolegi @vajera i zrobić pomiar odległości przez SR-04 na kanale ogólnym pomiarowym. Na Forum są źródła i gotowy soft pod esp32c3. Poszukaj, bo z telefonu ciężko mi teraz znaleźć.Juszczaczek1 wrote: Mon Jan 12, 2026 5:14 am Witam wszystkich, przychodzę z pytaniem gdzie szukać problemu z zawieszającym się pomiarem z hcsr-04? Mam wgrany soft GG wybrane przekaźniki (2), ds18b20 (4) i hcsr-04. W GG ustawiona wysokość np 50cm. Soft działa do momentu aż czujnik nie zejdzie do ustawionej wartości wtedy już pokazuje ta wartość i nie reaguje na zmianę. Gdzie może leżeć problem? Czujnik do wymiany czy może to wina softu lub ESP? Dodam że mam esp32u z zewnątrzna anteną , sygnał w okolicach 85% .
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
-
klew
- Posts: 13908
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Jeśli dobrze pamiętam (to było z 6 lat temu), to część HC sr04 miała jakąś wadę konstrukcyjną przez którą się zawieszała - szczególnie gdy czujnik nie miał obiektu od którego dźwięk się odbija i mierzył poza swój zakres.
Kojarzę że były w sieci jakieś poradniki co z tym zrobić.
Poszukaj w google po angielsku tego typu problemów
Kojarzę że były w sieci jakieś poradniki co z tym zrobić.
Poszukaj w google po angielsku tego typu problemów
Najlepsze suple dla Twojego domu 
-
Juszczaczek1
- Posts: 389
- Joined: Sun Nov 08, 2020 3:41 pm
- Been thanked: 2 times
za pomocą GPT próbuje napisać kod pod ten hcsro4 ale jednego problemu nie umie rozwiązać. Jak zrobić, żeby podczas uruchamiania przekaźniki nie uruchamiały się na moment (około 2s) Kod wygląda tak:
Code: Select all
// Poprawka: wywołujemy bazowe turnOn/turnOff aby Supla zaktualizowała stan (ikonę)
// oraz pozostawiamy możliwość odwrócenia logiki przez RELAY_INVERTED.
#include <SuplaDevice.h>
#include <supla/device/status_led.h>
#include <supla/network/esp_web_server.h>
#include <supla/network/esp_wifi.h>
#include <supla/network/html/device_info.h>
#include <supla/network/html/protocol_parameters.h>
#include <supla/network/html/status_led_parameters.h>
#include <supla/network/html/wifi_parameters.h>
#include <supla/sensor/DS18B20.h>
#include <supla/sensor/HC_SR04.h>
#include <supla/sensor/general_purpose_measurement.h>
#include <supla/control/virtual_relay.h>
#include <supla/storage/littlefs_config.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include "driver/gpio.h"
#include "esp_err.h"
#define STATUS_LED_GPIO 2
#define RELAY1_GPIO 26
#define RELAY2_GPIO 27
#define DS18B20_GPIO 4
#define HC_TRIG_GPIO 18
#define HC_ECHO_GPIO 19
// Jeśli przekaźniki są active-high (HIGH = ON) -> false
// Jeśli active-low (LOW = ON) -> true
const bool RELAY_INVERTED = true;
Supla::ESPWifi wifi;
Supla::LittleFsConfig configSupla;
Supla::Device::StatusLed statusLed(STATUS_LED_GPIO, true);
Supla::EspWebServer suplaServer;
OneWire oneWire(DS18B20_GPIO);
DallasTemperature sensors(&oneWire);
Supla::Sensor::GeneralPurposeMeasurement *hcChannel = nullptr;
// ---- Bezpieczna klasa sterująca GPIO na żądanie Supla ----
class HWVirtualRelay : public Supla::Control::VirtualRelay {
public:
HWVirtualRelay(int gpioPin, bool inverted) : gpioPin(gpioPin), inverted(inverted) {}
// Ustaw fizyczny stan zgodny z aktualnym stanem w Supla
void onInit() override {
bool on = isOn(); // pobiera aktualny stan kanału (jeśli Supla ma jakiś zapis)
int level = (on ? (inverted ? LOW : HIGH) : (inverted ? HIGH : LOW));
digitalWrite(gpioPin, level);
}
// Supla wywoła gdy użytkownik przełączy kanał -> najpierw powiadamiamy Suplę, potem GPIO
void turnOn(_supla_int_t duration = 0) override {
// najpierw zaktualizuj stan w Supla (zaktualizuje ikonę i wewnętrzny stan)
Supla::Control::VirtualRelay::turnOn(duration);
// potem wykonaj fizyczne przełączenie pinu
digitalWrite(gpioPin, inverted ? LOW : HIGH);
}
void turnOff(_supla_int_t duration = 0) override {
Supla::Control::VirtualRelay::turnOff(duration);
digitalWrite(gpioPin, inverted ? HIGH : LOW);
}
protected:
int gpioPin;
bool inverted;
};
// instancje
HWVirtualRelay *vrelay1 = nullptr;
HWVirtualRelay *vrelay2 = nullptr;
// GLOBALNY KONSTRUKTOR: zabezpieczenie pinów przed mruganiem
class _PreInit {
public:
_PreInit() {
int inactive = (RELAY_INVERTED ? HIGH : LOW);
gpio_hold_dis((gpio_num_t)RELAY1_GPIO);
gpio_hold_dis((gpio_num_t)RELAY2_GPIO);
digitalWrite(RELAY1_GPIO, inactive);
digitalWrite(RELAY2_GPIO, inactive);
pinMode(RELAY1_GPIO, OUTPUT);
pinMode(RELAY2_GPIO, OUTPUT);
}
} _preinit_instance;
// --------------------------------------------------------------------
void setup() {
Serial.begin(115200);
new Supla::Html::DeviceInfo(&SuplaDevice);
new Supla::Html::WifiParameters;
new Supla::Html::ProtocolParameters;
new Supla::Html::StatusLedParameters;
// tworzymy virtual relaye (zarejestrują się w Supla)
vrelay1 = new HWVirtualRelay(RELAY1_GPIO, RELAY_INVERTED);
vrelay2 = new HWVirtualRelay(RELAY2_GPIO, RELAY_INVERTED);
// HC-SR04
hcChannel = new Supla::Sensor::GeneralPurposeMeasurement();
hcChannel->setInitialCaption("Odległość");
hcChannel->setDefaultUnitAfterValue("cm");
pinMode(HC_TRIG_GPIO, OUTPUT);
pinMode(HC_ECHO_GPIO, INPUT);
// DS18B20
sensors.begin();
DeviceAddress tempAddr;
int detected = 0;
for (int i = 0; i < sensors.getDeviceCount(); i++) {
if (sensors.getAddress(tempAddr, i)) {
new Supla::Sensor::DS18B20(DS18B20_GPIO, tempAddr);
detected++;
}
}
Serial.printf("Wykryto %d czujniki DS18B20\n", detected);
SuplaDevice.setInitialMode(Supla::InitialMode::StartInCfgMode);
SuplaDevice.begin();
}
void loop() {
SuplaDevice.iterate();
digitalWrite(HC_TRIG_GPIO, LOW);
delayMicroseconds(2);
digitalWrite(HC_TRIG_GPIO, HIGH);
delayMicroseconds(10);
digitalWrite(HC_TRIG_GPIO, LOW);
long duration = pulseIn(HC_ECHO_GPIO, HIGH, 30000);
float distanceCm = 0;
if (duration > 0) distanceCm = duration * 0.034 / 2.0;
if (hcChannel && distanceCm > 0.0) {
hcChannel->setValue(distanceCm);
}
delay(200);
}
-
klew
- Posts: 13908
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Nie wiem co
Sam Relay I jego użycie jest w kilku przykładach, w tym w Web interface.
Przy okazji dziś w repo pojawił się plik z instrukcjami dla AI.
Wrzuć mu link do pliku LLM.md i zobacz czy będzie sobie lepiej radził.
Najlepsze suple dla Twojego domu 
Zajrzyj tutaj https://github.com/SUPLA/supla-device/b ... lRelay.ino
Wiesz, że Supla obsługuje Zigbee? Wstąp do Klubu Promila: https://forum.supla.org/viewtopic.php?t=18018
Szukasz nowego GG? Jest tutaj: https://forum.supla.org/viewtopic.php?t=18036