DFRobot Gravity - czujnik poziomu cieczy FS-IR02
Witam,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.
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
Jakub
-
- Posty: 18
- Rejestracja: wt cze 16, 2020 8:55 pm
Dzięki, czegoś takiego w sumie szukałem.jaku2k pisze: ↑pn maja 09, 2022 8:48 pmWitam,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.
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
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ę".sliwkawsieci pisze: ↑pn maja 30, 2022 8:03 pmDzięki, czegoś takiego w sumie szukałem.jaku2k pisze: ↑pn maja 09, 2022 8:48 pmWitam,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.
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
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.
Pozdrawiam
Jakub
Jakub
-
- 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ę)
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ę)
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
Wezmę udział w Supla Offline Party 2024
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
-
- Posty: 18
- Rejestracja: wt cze 16, 2020 8:55 pm
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?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
@klew dzięki za informację. Chętnie sprawdzę nowe rozwiązanie.
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 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
Wezmę udział w Supla Offline Party 2024
-
- Posty: 18
- Rejestracja: wt cze 16, 2020 8:55 pm
zgodnie z Twoimi sugestiami dorobiłem sensor na bazie kanału czujnika wilgoci.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
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_