Czujnik NTC10 10K, GUI-GENERIC vs Arduino ESP8266

emerce23
Posts: 36
Joined: Sat Dec 16, 2017 10:46 pm

Post

Witam, znalazłem w domu czujnik NTC 10K, chciałbym zapytać jak go podłączyć (tzn przez jaki rezystor), jak na razie wrzuciłem oprogramowanie przez GUI_GENERIC?

Jaka część kodu do odczytania danych z czujnika na ESP8266 (mam na myśli Arduino IDE) ?

Podstawowe wszelkie biblioteki, sketch mam, brakuje mi samej funkcji żeby to odczytać.

Jeśli mógłbym prosić o pomoc w tych dwóch tematach bardzo proszę :)
User avatar
klew
Posts: 9679
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Nie do końca rozumiem o co pytasz.

GG chyba ma wsparcie do czytania NTC10k.

Sama supla-device nie ma aktualnie obsługi NTC10k. Musiałbyś albo samemu napisać funkcję robiącą analogowy odczyt z pinu i przeliczyć pomiar zgodnie z wzorami i rodzajemu czujnika, albo możesz poszukać sobie w Arduino jakichś bibliotek do obsługi NTC10k. Tylko parametry do przeliczeń są specyficzne dla danego urządzenia. Tzn. dwa różne NTC10k mogą wymagać innych współczynników we wzorach.

Aby pomiar pojawił się w Supli, to musisz jego wartość wstawić do klasy Supla::Sensor::Thermometer, albo Supla::Sensor::VirtualThermometer.
W przypadku Thermometer musiałbyś czytanie wartości temepratury zrobić w ramach klasy dziedziczącej po Thermometer (analogicznie jak to jest robione np. w klasach do obsługi DHT22).
W przypadku VirtualThermometer, odczyt możesz robić sobie na boku w metodzie "loop" i wartość temperatury tylko ustawiać na instancji klasy VirtualThermometer.
Kiedy będzie Supla Offline Party / SOP#2025 ?
emerce23
Posts: 36
Joined: Sat Dec 16, 2017 10:46 pm

Post

O własnie na taka odpowiedź oczekiwałem, dziękuję.

A co do podłączenia termistora ntc 10, przez jakis rezystor czy przez ten dzielnik napięcia do ma wbudowany np Wemos?
User avatar
klew
Posts: 9679
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Niestety nie wiem.
Kiedy będzie Supla Offline Party / SOP#2025 ?
emerce23
Posts: 36
Joined: Sat Dec 16, 2017 10:46 pm

Post

Załóżmy ze chcę odczytać wartość która sobie już przekazałem do zmiennej float "temperatura" użyje klasy VirtualThermometer, wstępnie napisałem taki kod:

Code: Select all

class VirtualThermometer : public Supla::Sensor::Thermometer 
{
    public:
    
    double getValue() override 
    {
        return myValue;
    }
    
    void setValue(double val) 
    {
        myValue = val;
    }
    
    protected:
    
    double myValue = TEMPERATURE_NOT_AVAILABLE; 
};
oraz w setup

Code: Select all

auto t1  = new VirtualThermometer;
    t1->setValue(temperatura);
Powstaje jeden problem który niewiem jak do konca rozwiązać, pokazuje temperature lecz jej nie odświerza, chyba zapomniałem o funkcji millis() tylko niewieme jak ja zastosować w tym kodzie
User avatar
klew
Posts: 9679
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Klasa VirtualThermometer jest już dodana do biblioteki, więc nie musisz jej pisać od nowa.

Code: Select all

Supla::Sensor::VirtualThermometer *therm = nullptr;

// w setup:
therm = new Supla::Sensor::VirtualThermometer;

// w loop:
static uint64_t lastTempTimestamp = 0;
if (!lastTempTimestamp || millis() - lastTempTimestamp > 5000) { // co 5000 ms
  lastTempTimestamp = millis();
  double temp = getTemperatureFromNtc(); // lub dowolna metoda pobierająca aktualny pomiar temperatury
  therm->setValue(temp);
}
Kiedy będzie Supla Offline Party / SOP#2025 ?
emerce23
Posts: 36
Joined: Sat Dec 16, 2017 10:46 pm

Post

oooo super, a mam dodatkowe pytanie:

czy tym kodem odczytam wartość temperatury danego kanału i przekaże go do zmiennej ? Znalazłem kiedyś bodajże twój post i miedzy innymi zapisałem sobie ten urywek kodu

Code: Select all

auto element = Supla::Element::begin();
    auto channel = element->getChannel(); 
    int lastTemperature = channel->getValueDouble();
    Serial.println(lastTemperature);
Generalnie chodzi na odczyt i przekazanie go na nodemcu do wyświetlacza TFT (ale z tym sobie już poradzę)

Termoment bedzie działać na innym osobnym esp8266 wysyłajacym dane do supla cloud
User avatar
klew
Posts: 9679
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Ten fragment kodu odczyta wartość "double" przechowywaną na pierwszym (zerowym) kanale na lokalnym urządzeniu.
Jeśli tam będziesz miał termometr, to odczytasz tą wartość.

W Supli nie ma natywnie metody na odczyt wartości kanałów z innych urządzeń. Musiałbyś użyć sobie do tego linków bezpośrednich i odpytywać serwer co jakiś czas o ten pomiar. Ale to zupełnie inny temat. Na forum powinny być gdzieś przykłady.
Tylko pamiętaj, że odczyt linku bezpośredniego wymaga nawiązania połączenia po https, a więc może być kiepsko z pamięcią RAM na ESP8266.
Kiedy będzie Supla Offline Party / SOP#2025 ?
emerce23
Posts: 36
Joined: Sat Dec 16, 2017 10:46 pm

Post

ok a gdybym chciał na tym samym urządzeniu otrzymać wartość ?
User avatar
klew
Posts: 9679
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

emerce23 wrote: Tue Oct 11, 2022 2:23 pm ok a gdybym chciał na tym samym urządzeniu otrzymać wartość ?
No to możesz odczytać. Jeśli to jest ten NTC, to możesz po prostu sobie tą wartość odczytaną zapisać do jakiejś zmiennej.
Kiedy będzie Supla Offline Party / SOP#2025 ?

Return to “Pomoc”