DFRobot Gravity - czujnik poziomu cieczy FS-IR02

elmaya
Posty: 1482
Rejestracja: śr cze 27, 2018 5:48 pm
Lokalizacja: El Saucejo - Sevilla

The easiest solution would be to connect the sensors to the analog input through a resistive divider.
jaku2k
Posty: 830
Rejestracja: ndz maja 24, 2020 8:40 pm
Kontakt:

sliwkawsieci pisze: pn maja 09, 2022 4:57 pm raczej programuje w wysoko poziomowych językach, ale kiedyś się bawiłem w programowanie STM więc może się podejmę, zawsze to coś nowego. Zobaczę może zrobię jakiś autorski program pomiędzy gui a krańcówkami i tam będę wyliczał procenty na podstawie czujników a potem przekazywał je do gui.
Witam,
nie prościej będzie zastosować gotowe rozwiązanie w postaci odczytu analogowego za pomocą GUI Generica z wykorzystaniem czujnika z serii MPX5XXX?

@elmaya zrobił nawet projekt płytki dla "gołego" ESP takiego jak ESP12, tutaj zdjęcia: viewtopic.php?p=95213#p95213
Pozdrawiam
Jakub

PS. Czekam na Supla Offline Party 2024
sliwkawsieci
Posty: 18
Rejestracja: wt cze 16, 2020 8:55 pm

jaku2k pisze: pn maja 09, 2022 8:48 pm
sliwkawsieci pisze: pn maja 09, 2022 4:57 pm raczej programuje w wysoko poziomowych językach, ale kiedyś się bawiłem w programowanie STM więc może się podejmę, zawsze to coś nowego. Zobaczę może zrobię jakiś autorski program pomiędzy gui a krańcówkami i tam będę wyliczał procenty na podstawie czujników a potem przekazywał je do gui.
Witam,
nie prościej będzie zastosować gotowe rozwiązanie w postaci odczytu analogowego za pomocą GUI Generica z wykorzystaniem czujnika z serii MPX5XXX?

@elmaya zrobił nawet projekt płytki dla "gołego" ESP takiego jak ESP12, tutaj zdjęcia: viewtopic.php?p=95213#p95213
Dzięki, czegoś takiego w sumie szukałem.

A co myślicie o rozwiązaniu, które by wykorzystywało ultradźwiękowy czujnik na przykład HC-SR04 ? Prosty do zaprogramowania i ponoć działa do 4 m. Podejrzewam, że taka odległość jest mocno przesadzona, ale mnie wystarczyłyby 2m i dokładność jakaś wielka też nie jest potrzebna by sprawdzić poziom wody w zbiorniku.
jaku2k
Posty: 830
Rejestracja: ndz maja 24, 2020 8:40 pm
Kontakt:

sliwkawsieci pisze: pn maja 30, 2022 8:03 pm
jaku2k pisze: pn maja 09, 2022 8:48 pm
sliwkawsieci pisze: pn maja 09, 2022 4:57 pm raczej programuje w wysoko poziomowych językach, ale kiedyś się bawiłem w programowanie STM więc może się podejmę, zawsze to coś nowego. Zobaczę może zrobię jakiś autorski program pomiędzy gui a krańcówkami i tam będę wyliczał procenty na podstawie czujników a potem przekazywał je do gui.
Witam,
nie prościej będzie zastosować gotowe rozwiązanie w postaci odczytu analogowego za pomocą GUI Generica z wykorzystaniem czujnika z serii MPX5XXX?

@elmaya zrobił nawet projekt płytki dla "gołego" ESP takiego jak ESP12, tutaj zdjęcia: viewtopic.php?p=95213#p95213
Dzięki, czegoś takiego w sumie szukałem.

A co myślicie o rozwiązaniu, które by wykorzystywało ultradźwiękowy czujnik na przykład HC-SR04 ? Prosty do zaprogramowania i ponoć działa do 4 m. Podejrzewam, że taka odległość jest mocno przesadzona, ale mnie wystarczyłyby 2m i dokładność jakaś wielka też nie jest potrzebna by sprawdzić poziom wody w zbiorniku.
Pomysł był już poruszany wiele razy na Forum. Zdaje się, że @dobo zaprojektował nawet obudowę ze skraplaczem dla tego czujnika. Instalacja czujnika ultradźwiękowego jest prostsza. Decydując się na taki sposób pomiaru, należy pamiętać, że urządzenie jest bardziej awaryjne (w porównaniu do wariantu z czujnikiem różnicy ciśnień) ze względu na "otwartą konstrukcję".
Pozdrawiam
Jakub

PS. Czekam na Supla Offline Party 2024
sliwkawsieci
Posty: 18
Rejestracja: wt cze 16, 2020 8:55 pm

Przemyślałem sprawę i do deszczówki nie potrzebuje mega dokładnych pomiarów i chciałbym z wykorzystaniem wemosa D1mini i 4 czujników pływakowych(lub innych) określić procenty napełnienia (0.25,50,100) .
Czy ktoś mógłby mi poradzić jak zacząć prace nad takim firmware? Tych różnych rozwiązań jest od groma, ale chciałbym by moje było dosyć proste i wygodne do użycia.
Próbowałem za pomocą paczki SuplaDevice, ale niestety nie wiem jak ruszyć.
Idealnie by było gdybym mógł sobie skonfigurować płytkę w GG i zmodyfikować kod, ale niestety wygenerowany kod jest w bin więc nic nie zrobię.
Pytanie moje, czy macie jakiś projekt, na którym mógłbym sobie oprzeć moje rozwiązanie, czy lepiej będzie jak poczytam i zrobie wszystko w oparciu o SuplaDevice ( minus taki, że wszystko tam trzeba zahardkodować, czyli wifi, klucze itd a nie jak w GG że można potem połączyć się online i zmienić konfigurację)
Awatar użytkownika
shimano73
Posty: 1968
Rejestracja: ndz lut 28, 2016 12:27 pm
Lokalizacja: Orzesze
Kontakt:

Większość moich projektów jest oparta o GUI Generic , kolega Krycha88 tworzy to dzieło w Platformiio mi wystarczy Arduino IDE trochę trzeba po kombinować aby to zagrało ale daje radę 😁. Używam go jako podstawę aby mieć interface webowy i OTA. Aby zrealizować twój pomysł należało by stworzyć kanał do wyświetlenia takich wartości ,np na podstawie kanału temperatury - będziesz mieć historie pomiarów , lub wilgotności - w aplikacji będziesz miał procenty bez historii .Trochę trzeba poklikac ale da się to zrobić , wartałoby by również zrobić zabezpieczenie na wypadek zablokowania się pływaka Mój sposób na softy to taki , biorę podstawowy przykład z biblioteki supladevice i tworze , jak zadziała przerzucam do GUI generic , to tak w skrócie 😁
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

Po weekendzie będzie wydana nowa wersja SuplaDevice, gdzie będzie gotowe wsparcie dla interfejsu webowego i trybu konfiguracyjnego. Takie rzeczy jak wifi itp bez problemu sam ustawisz.
Widzimy się na Supla Offline Party vol. 2 :!:
sliwkawsieci
Posty: 18
Rejestracja: wt cze 16, 2020 8:55 pm

shimano73 pisze: sob cze 18, 2022 6:24 am Większość moich projektów jest oparta o GUI Generic , kolega Krycha88 tworzy to dzieło w Platformiio mi wystarczy Arduino IDE trochę trzeba po kombinować aby to zagrało ale daje radę 😁. Używam go jako podstawę aby mieć interface webowy i OTA. Aby zrealizować twój pomysł należało by stworzyć kanał do wyświetlenia takich wartości ,np na podstawie kanału temperatury - będziesz mieć historie pomiarów , lub wilgotności - w aplikacji będziesz miał procenty bez historii .Trochę trzeba poklikac ale da się to zrobić , wartałoby by również zrobić zabezpieczenie na wypadek zablokowania się pływaka Mój sposób na softy to taki , biorę podstawowy przykład z biblioteki supladevice i tworze , jak zadziała przerzucam do GUI generic , to tak w skrócie 😁
Dzięki za konkretną odpowiedź. A zdradzisz jak przerzucasz to do gui generic ? przykładowo gdybyś zmodyfikował kod do DHT to co podmieniasz w GG ? Bo rozumiem, że w moim przypadku albo byś modyfikował jakąś istniejącą bibliotekę do sensora, albo robiłbyś kopie takiej i dodawał nowy sensor?

@klew dzięki za informację. Chętnie sprawdzę nowe rozwiązanie.
Awatar użytkownika
shimano73
Posty: 1968
Rejestracja: ndz lut 28, 2016 12:27 pm
Lokalizacja: Orzesze
Kontakt:

W twoim przypadku na podstawie kanału wilgotności (aby wyświetlali się %) , stworzyłbym nową bibliotekę, której parametrami były by 4 gpio.
W tej bibliotece zmodyfikowałbym metodę getValue w której umieściłbym cała logikę wykrywania stanów i przypisałbym jej wartości liczbowe
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
sliwkawsieci
Posty: 18
Rejestracja: wt cze 16, 2020 8:55 pm

shimano73 pisze: ndz cze 19, 2022 9:15 am W twoim przypadku na podstawie kanału wilgotności (aby wyświetlali się %) , stworzyłbym nową bibliotekę, której parametrami były by 4 gpio.
W tej bibliotece zmodyfikowałbym metodę getValue w której umieściłbym cała logikę wykrywania stanów i przypisałbym jej wartości liczbowe
zgodnie z Twoimi sugestiami dorobiłem sensor na bazie kanału czujnika wilgoci.
Mógłbyś zerknąć czy miałbyś jakieś uwagi? myślałem jeszcze o przyjmowaniu jakiejś tablicy jako parametr konstruktora ale z drugiej strony czy rzeczywiście ktoś by chciał montować więcej niż 4 czujki? chyba nie, więc uznałem, że to będzie przerost formy nad treścią.

tutaj kod do mojej klasy z nowym sensorem

Kod: Zaznacz cały

/*
 Copyright (C) AC SOFTWARE SP. Z O.O.

 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License
 as published by the Free Software Foundation; either version 2
 of the License, or (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/

#ifndef SRC_SUPLA_SENSOR_DHT_H_
#define SRC_SUPLA_SENSOR_DHT_H_
#include "hygro_meter.h"
#include <supla/time.h>
#include "../io.h"

namespace Supla {
namespace Sensor {
class Poziom_wody : HygroMeter {

 public:
 Poziom_wody(int czujka100, int czujka75, int czujka50, int czujka25) {
    _czujka100 = czujka100;
    _czujka75 = czujka75;
    _czujka50 = czujka50;
    _czujka25 = czujka25;
    channel.setType(SUPLA_CHANNELTYPE_HUMIDITYSENSOR);
 }
  double getVal() {
    double value = HUMIDITY_NOT_AVAILABLE;
    int stanOK = 1;
    setPinResetStatus();
    
    int pinValue100 = Supla::Io::digitalRead(_czujka100) ;
    
    value = 0,00;
    
    if (Supla::Io::digitalRead(_czujka25) == stanOK){
        value = 25,00;
    }
    if (Supla::Io::digitalRead(_czujka50) == stanOK){
        value = 50,00;
    }
    if (Supla::Io::digitalRead(_czujka75) == stanOK){
        value = 75,00;
    }    
    if (pinValue100 == 1){
        value = 100,00;
    }

    poprzedniaWartosc = value;

    return value;
  }

  void iterateAlways() {
    if (lastReadTime + 1000 < millis()) {
      lastReadTime = millis();
      channel.setNewValue(HUMIDITY_NOT_AVAILABLE, getVal());
    }
  }

 protected:
  double poprzedniaWartosc;
  int _czujka100;
  int _czujka75;
  int _czujka50;
  int _czujka25;
  int stanReset = 1 ;
  private:

  void setPinResetStatus() {
     Supla::Io::analogWrite(_czujka100,stanReset);
     Supla::Io::analogWrite(_czujka75,stanReset);
     Supla::Io::analogWrite(_czujka50,stanReset);
     Supla::Io::analogWrite(_czujka25,stanReset);
    
  }
};

};  // namespace Sensor
};  // namespace Supla

#endif  // SRC_SUPLA_SENSOR_DHT_H_

Nie rozumiem tylko, dlaczego jak w metodzie setPinResetStatus ustawiałem stan wysoki za pomocą Supla::Io::digitalWrite to stan ten sie nie zmieniał tylko zapamiętywał stary. Dopiero po podłączeniu równolegle diody działało poprawnie, a dla analogWrite działa poprawnie.
ODPOWIEDZ

Wróć do „GUI Generic”