Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Przyrządy pomiarowe, ich montaż i zastosowanie odczytów w procesach destylacji. Regulacja procesów.
Awatar użytkownika

Autor tematu
robert4you
950
Posty: 951
Rejestracja: środa, 30 mar 2016, 18:43
Podziękował: 9 razy
Otrzymał podziękowanie: 134 razy

Post autor: robert4you »

Dokładnie

Wysłane z mojego SM-G950F przy użyciu Tapatalka
************************************************************************

MastaMari
150
Posty: 168
Rejestracja: poniedziałek, 10 lut 2020, 21:47
Podziękował: 3 razy
Otrzymał podziękowanie: 15 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: MastaMari »

Gdybym wiedział to bym zamówił wszystkie z 2m przewodu a tak trzeba będzie przedłużać ;/
Awatar użytkownika

Autor tematu
robert4you
950
Posty: 951
Rejestracja: środa, 30 mar 2016, 18:43
Podziękował: 9 razy
Otrzymał podziękowanie: 134 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: robert4you »

Nie przedłużać.
Zmień kolejność w kodzie.

Wysłane z mojego SM-G950F przy użyciu Tapatalka
************************************************************************
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

Próbuję przenieść kawałek kodu na esp8266. W sumie to moje pierwsze podejście do samodzielnego pisania kodu na ESP i mam mały problem.
Chciałbym tylko ustawiać moc grzałki, więc biorę kod Task1code, jest on wywoływany przez xTaskCreatePinnedToCore, którego na esp8266 nie ma. Wrzucam go do loop'a - wywalając niepotrzebne rzeczy i co jakieś 3-4 sekundy na konsoli widzę "Soft WDT reset" - czy ten problem nie występuje na esp32? Na ten moment zrobiłem obejście i kończę pętlę for po sekundzie - ale nie wiem czy nie bedzie problemów później jak będę odczytywał temperaturę z czujników itd.

Druga sprawa to włączanie grzałki. W programie moc jest realizowana poprzez wyłączanie/włączanie w przeciągu 1 sekundy - czy to nie wpływa negatywnie na sam ssr/grzałkę? Posiadam regulator Boleckiego i widzę, że ten czas jest tam dwukrotnie większy, tj 2 sekundy na cykl.

Kod: Zaznacz cały

#define RelayPin D8
int PercentagePower = 50;
int HeaterTimeFrameInSeconds = 2;

unsigned long loopStartTime=0;
unsigned long timePassed=0;

void setup() {
}

void loop() {
  pinMode(RelayPin, OUTPUT);
  digitalWrite(RelayPin, LOW);

  loopStartTime = millis();
  
  for (;;)
  {
    timePassed = millis() - loopStartTime;
    
    if (timePassed > (HeaterTimeFrameInSeconds * 1000))
    {
      break;
    }

    if ((PercentagePower * 10 * HeaterTimeFrameInSeconds) < timePassed)
    {
      digitalWrite(RelayPin, LOW);
    }
    else
    {
      digitalWrite(RelayPin, HIGH);
    }
  }
}
Ostatnio zmieniony poniedziałek, 26 paź 2020, 15:19 przez stefunk, łącznie zmieniany 3 razy.

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

stefunk - to jest aktywne czekanie, tak się nie robi. Przecież przed wejściem do tego fora wiesz ile czasu masz być w stanie wysokim a ile w niskim. Chyba tam jest jakiś delay na tym sprzęcie? Z jaką częstotliwością chcesz sterować tym wyjściem?

Kod: Zaznacz cały

#define CYCLE_LENGTH_IN_MS 100
#define POWER_RESOLUTION 100

// UWAGA power musi być [0..POWER_RESOLUTION]

for (;;) { // jak szybko chcesz przełączać? 10Hz, czyli jeden obrót 100ms (100msx10 = 1s)
  if (power>0) { // faza wysoka
    digitalWrite(pin, HIGH);
    delay(power * CYCLE_LENGTH_IN_MS / POWER_RESOLUTION);  // najpierw mnożenie później dzielenie - zastanów się dlaczego
  }  
  if (power<100) { // faza niska
    digitalWrite(pin, LOW);
    delay((POWER_RESOLUTION - power) * CYCLE_LENGTH_IN_MS / POWER_RESOLUTION);
  }  
}
Ostatnio zmieniony poniedziałek, 26 paź 2020, 18:21 przez jacek.kokot, łącznie zmieniany 1 raz.
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

Wziąłem to z przykładu z tego tematu. Twoje podejście wygląda dużo lepiej, udało mi się złożyć wszystko w całość.

Kod: Zaznacz cały

#include <Scheduler.h>

#define RELAY_PIN D8
#define POWER_RESOLUTION 100
#define POWER_PERCENTAGE 50
#define HEATER_TIME_FRAME_IN_SECONDS 2

class HeaterTask : public Task {
public:
    HeaterTask(int relayPin, int powerResolution, int percentagePower, int heaterTimeFrameInSeconds) {
      _relayPin = relayPin;
      UpdateHeaterParameters(powerResolution, percentagePower, heaterTimeFrameInSeconds);
    }
    
    void setup() {
      pinMode(RELAY_PIN, OUTPUT);
      digitalWrite(RELAY_PIN, LOW);
    }

    void loop() {
      if (_percentagePower > 0 ) {
        turnAndWait(_highTimeInMiliseconds, HIGH);
      }
      
      if (_percentagePower < 100) {
        turnAndWait(_lowTimeInMiliseconds, LOW);
      }
    }

    void UpdateHeaterParameters(int powerResolution, int percentagePower, int heaterTimeFrameInSeconds) {
      _powerResolution = powerResolution;
      _percentagePower = percentagePower;
      _heaterTimeFrameInSeconds = heaterTimeFrameInSeconds;
      
      _highTimeInMiliseconds = _percentagePower * _heaterTimeFrameInSeconds * 1000 / _powerResolution;
      _lowTimeInMiliseconds = (_powerResolution - _percentagePower) * _heaterTimeFrameInSeconds * 1000 / _powerResolution;
    }
private:
  int _relayPin, _powerResolution, _percentagePower, _heaterTimeFrameInSeconds, _highTimeInMiliseconds, _lowTimeInMiliseconds;
  
  void turnAndWait(int timeInMiliseconds, int state) {
    digitalWrite(RELAY_PIN, state);
        delay(timeInMiliseconds);
  }
} heater_task(RELAY_PIN, POWER_RESOLUTION, POWER_PERCENTAGE, HEATER_TIME_FRAME_IN_SECONDS);

void setup() {
  //Serial.begin(115200);
  //Serial.println("Setup");

  Scheduler.start(&heater_task);
  Scheduler.begin();
}


void loop() {}
Ostatnio zmieniony poniedziałek, 26 paź 2020, 20:18 przez stefunk, łącznie zmieniany 3 razy.

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

Nie widziałem tego przykładu nie będę się wypowiadał na jego temat. To jest tak, że każdy orze jak może. Tylko niektórzy powinni poprzestać na oraniu pola ;)

Skoro już się czepiłem, to parę dodatkowych spraw.
1. Rozdziel deklaracje od definicji.
2. Zmienne PercentagePower i HeaterTimeFrameInSeconds są w tym kodzie prywatne dla klasy HeaterTask. Być może tu nie ma całości kodu i gdzieś tam coś je modyfikuje, ale w takim przypadku tak czy siak przydałaby się jakieś przypisanie ich własności do czegoś i dodanie synchronizacji.
3. RELAY_PIN jest naturalnym kandydatem na parametr konstruktora HeaterTask.
4. Inicjalizacja highTimeInMiliseconds i lowTimeInMiliseconds - tego się tak nie robi. To powinno być w konstruktorze.
5. Zamiast wyliczać na pałę highTimeInMiliseconds i lowTimeInMiliseconds lepiej w ogóle nie mieć takich zmiennych i wyliczać je na bieżąco w środku loop. Wtedy można modyfikować PercentagePower i niczym się nie martwić. Generalnie ogólna zasada jest taka, że im mniej przechowujesz stanu tym lepiej.
6. Jak być chciał być purystą, to zwróć uwagę, że highTimeInMiliseconds + lowTimeInMiliseconds wcale nie musi być 1000 * HeaterTimeFrameInSeconds. Jakbyś chciał to zapewnić trzeba by inicjalizować lowTimeInMiliseconds = 1000 * HeaterTimeFrameInSeconds - highTimeInMiliseconds.
7. Deklaracja heater_task jest bardzo błędogenna. Tego nie widać. Tak się nie robi.
Awatar użytkownika

.Gacek
2000
Posty: 2383
Rejestracja: niedziela, 18 paź 2015, 14:00
Krótko o sobie: Marzyciel
Ulubiony Alkohol: Własny.
Lokalizacja: Gorzów Wlkp.
Podziękował: 268 razy
Otrzymał podziękowanie: 338 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: .Gacek »

jacek.kokot pisze:Nie widziałem tego przykładu nie będę się wypowiadał na jego temat. To jest tak, że każdy orze jak może. Tylko niektórzy powinni poprzestać na oraniu pola ;)
Napisz o co Ci chodzi, przecież tutaj nikt w mordę nie przyłoży... Nie pykło Ci coś dzisiaj? Chooojowy dzień był? Kurde... Nie rozumiem takich ludzi i zachowania...
Pozdrawiam Gacek.
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

Gacek, po prostu pracując z zawodzie, jak się widzi totalną prowizorkę, to szkoda słów

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

.Gacek pisze:Napisz o co Ci chodzi, przecież tutaj nikt w mordę nie przyłoży... Nie pykło Ci coś dzisiaj? Chooojowy dzień był? Kurde... Nie rozumiem takich ludzi i zachowania...
Ja Cię przepraszam bardzo, ale tak jak napisałem, nie widziałem tego kodu, nie mam pojęcia jaki to jest kod, ani tym bardziej czyj. Napisałem tylko, że czasami jest lepiej jak niektórzy nie zajmują się pewnymi rzeczami, ale to była uwaga ogólna, w oderwaniu od kodu (którego niewidziałem).

Ja nie chcę tu nic sugerować, ale chyba nieco nadinterpretowałeś moją wypowiedź. Chooojowy dzień był?
Ostatnio zmieniony poniedziałek, 26 paź 2020, 21:17 przez jacek.kokot, łącznie zmieniany 1 raz.

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

stefunk pisze:Gacek, po prostu pracując z zawodzie, jak się widzi totalną prowizorkę, to szkoda słów
Panowie... Ja nie widziałem tego kodu. Nie dyskutuję tu o żadnym konkretnym kodzie. Napisałem uwagę ogólną, że czasami ktoś opublikuje G**wno i następnie niczego nieświadomi ludzie się na tym wzorują i wychodzi jeszcze większe G******wno. To jest taki truizm, który ma zastosowanie w wielu miejscach i nie jest specyficzny z kodowania. Nie nazywam na G żadnego konkretnego kodu, ponieważ go nie widziałem. Proszę nie odbierać tego ad persona.
Ostatnio zmieniony poniedziałek, 26 paź 2020, 21:21 przez jacek.kokot, łącznie zmieniany 1 raz.
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

Po co właściwie w tym wypadku rozdzielać deklaracje od definicji?

https://pastebin.com/SRzt9k1H

Kolejna porcja kodu ... nie wiem czy to wina esp'a czy coś źle zrobiłem, ale pokazuje mi złą temperature ... w okolicach 66 stopni, po ogrzaniu czujnika temperatura rośnie...

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

stefunk - dlaczego nie działa, nie ma pojęcia, ale tak właściwie Ty korzystasz tam z klasy DallasTemperature, która z tego co rozumiem, jest z zewnątrz. Widzę co najmniej trzy opcje. Klasa działa źle (jeśli to jest zaufana klasa, używana przez wielu, bardzo mało prawdopodobne), używasz tej klasy źle (obstawiałbym tą opcję, może begin trzeba wołać w loop a może pomiędzy requestTemperatures a get trzeba dać delay - nie wiem) lub masz coś źle podłączone. Nie znam tej klasy. Nie powiem Ci konkretnie.

Drobne (naprawdę pierdoły) sugestie do kodu:
0. W rozdzieleniu deklaracji od definicji chodzi o to, że w kodzie trzeba trzeba tworzyć struktury wyższego rzędu, wydzielać elementy, ukrywać szczegóły implementacyjne. Tu masz tego kodu tyle co kto napłakał, więc pewnie, póki co, to będzie przerost formy nad treścią, ale warto mieć taki paradygmat z tyłu głowy, bo wraz z rozwojem projektu podział stanie się nieunikniony.
1. Sądzę, że '_' powinieneś używać do parametrów, aby inne zmienne nie miały '_'. Np.

Kod: Zaznacz cały

HeaterTask(int _relayPin, int _powerResolution, int _percentagePower, int _heaterTimeFrameInSeconds) {
      relayPin = _relayPin;
2. Ja nie znam tej klasy, ale z tego co rozumiem sensors->getTempCByIndex(0); zwraca wynik dla pierwszego termometru z brzegu. Sądzę, że taki kod może w przyszłości ewaluować do getTempCByIndex(i); a wg mojej wiedzy magistrala 1-Wire nie daje żadnej gwarancji, że czujniki zawsze czytają się w tej samej kolejności. Reasumując uważam, że lepiej czytać DS po serialu. Jest tam taka opcja w ogóle?
3. W Twoim kodzie nie alokujesz dynamicznie żadnej klasy, a wskaźniki w C++ stają się coraz bardziej passe, więc zamiast pisać static SensorTask sensor_task(SENSOR_PIN, &sensors, &lcdService); i dalej SensorTask(int sensorPin, DallasTemperature *sensors, LcdService *lcdService) możesz napisać static SensorTask sensor_task(SENSOR_PIN, sensors, lcdService); i dalej SensorTask(int sensorPin, DallasTemperature& sensors, LcdService& lcdService).

Ale generalnie naprawdę ładny kod. Dałbym za niego studentowi 5.
Ostatnio zmieniony wtorek, 27 paź 2020, 08:40 przez jacek.kokot, łącznie zmieniany 2 razy.
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

1. Wolę jak prywatne parametry mają _ w nazwie
2. To jest dopiero nauka biblioteki, będę się starał robić tak, żeby przyporządkować automatycznie jeden termometr w to samo miejsce
3. Programuje w C# i wskaźniki widzę pierwszy raz, nie licząc okresu studiów wiele lat temu :)

Gdybym nie programował od 13 lat to bym się z tej 5 bardzo ucieszył :D

Przyznam, że trochę mnie temat wciągnął i postanowiłem zrobić bibliotekę z asnychronicznym pobieraniem danych i powiadomieniami (o ile się da) na stronie, serwowanej przez ESP'a, z możliwością ustawienia mocy grzałki i wskazaniami temperatury.

Wszystko robię na licencji MIT, więc można będzie korzystać też komercyjnie - mam nadzieję, że zachęcę też forumowych producentów do wrzucania kodu, albo przynajmniej pomocy w rozwoju.

https://github.com/stefunkk/openstill
Awatar użytkownika

george1255
350
Posty: 397
Rejestracja: wtorek, 13 lut 2018, 14:50
Krótko o sobie: Jestem fajnym człowiekiem:)
Ulubiony Alkohol: Piwo/ Cydr/ Bimberek
Status Alkoholowy: Konstruktor
Podziękował: 6 razy
Otrzymał podziękowanie: 27 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: george1255 »

stefunk pisze: 2. To jest dopiero nauka biblioteki, będę się starał robić tak, żeby przyporządkować automatycznie jeden termometr w to samo miejsce
W arduino IDE
"Tutaj możemy się posłużyć programem demo Plik → Przykłady → OneWire → DS18x20, trzeba jednak pamiętać, aby na samym początku zmienić informacje o podłączeniu czujników"
a później w kodzie umieszczasz

Kod: Zaznacz cały

DeviceAddress termometrZewnetrzny = { 0x10, 0x7A, 0x31, 0x99, 0x1, 0x8, 0x0, 0x4A };
Nie wiem, moze Ci to rozjaśni :)

Źródlo: https://forbot.pl/blog/kurs-arduino-ii- ... 20-id18414
TERMOMETRY WIFI
https://www.facebook.com/TermometryWIFI/
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

Raczej nie będę podawał ich adresów, wolałbym przy podmianie czujnika nie kompilować ponownie kodu. Może po prostu sortowanie po adresach, żeby zawsze były w tej samej kolejności

edit.

Odpaliłem przykład oneWire i niestety tam też jest zły odczyt.

ROM = 28 FF 48 9E 83 17 4 E
Chip = DS18B20
Data = 1 19 4 4B 46 7F FF C 10 1 CRC=1
Temperature = 65.56 Celsius, 150.01 Fahrenheit
No more addresses.

edit2

Downgrade biblioteki oneWire do 2.3.0 pomógł
Ostatnio zmieniony wtorek, 27 paź 2020, 12:47 przez stefunk, łącznie zmieniany 2 razy.

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

stefunk pisze:Raczej nie będę podawał ich adresów, wolałbym przy podmianie czujnika nie kompilować ponownie kodu. Może po prostu sortowanie po adresach, żeby zawsze były w tej samej kolejności
Do testowania - jakkolwiek. Natomiast jak już coś będziesz chciał uruchomić - tylko po serialu. Inaczej nigdy nie będziesz miał pewności co czytasz. Zwróć uwagę, że przy kilku czyjnikach na tej samej magistrali możesz mieć tak, że przy kolejnym odczycie np. 2 z 5 czujników się nie przeczytają (nie bo nie i tyle). Wtedy to już w ogóle będzie miał loterię.

Swoją drogą - jak testujesz czy odczyt w ogóle się udał?
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

No i utknąłem, chciałem za namową zrobić po adresach, ale chyba coś mam nie tak z wskaźnikami, bo mi adresy idą jakieś dziwne, chodzi mi o 1000552E204070 i 000000001 mimo zadeklarowania ich prawidłowo:

const std::map<const char*, const DeviceAddress&> SensorList
{
{"10Polka", { 0x28, 0xFF, 0xB4, 0xCE, 0x70, 0x17, 0x03, 0xBB }},
{"Glowica", { 0x28, 0xFF, 0x4C, 0xDE, 0x83, 0x17, 0x04, 0xF1 }},
{"Zbiornik", { 0x28, 0xFF, 0xE7, 0x7A, 0x83, 0x17, 0x04, 0x15 }},
{"Woda", { 0x28, 0xFF, 0xB7, 0x78, 0x90, 0x17, 0x05, 0x77 }}
};

żeby było jeszcze bardziej dziwnie, dwa ostatnie działają prawidłowo, kod tu: https://github.com/stefunkk/openstill

Devices count:
4
10Polka
-127.00
1000552E204070
Glowica
-127.00
000000001
Zbiornik
21.87
28FFE77A83174150
Woda
21.69
28FFB778901757728

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

DeviceAddress jest typu unit8_t[8]. Czyli teoretycznie od inicjalizacji nikt nie powinien tego modyfikować. Czy mógłbyś zrobić test polegający na wywaleniu czytania w ogóle i zostaw tylko wypisywanie w tym loop element.first i element.second. To że wyniki są z kosmosu - bywa, ale dlaczego wypisując element.second pisze śmieci - dziwne.

Ja bym zrobił zamiast map<char*, Address> => vector< pair<string, Address> >.

Zamień sobie LcdServiceClass* na LcdServiceClass& (i inne analogicznie). Wtedy nigdzie nie bedziesz miał ani * ani ->.
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

Udało mi się to zrobić, po zmianie const chara na stringa, adresy zaczeły być prawidłowe, dlaczego ... nie wiem.

Co do zmiany * na & rozumiem, że chodzi Ci o definicje w nagłówku właściwości klasy?

private:
int _sensorPin;
DallasTemperature& _sensors;
LcdServiceClass& _lcdService; ...

tylko wtedy przy konstruktorze rzuca błędem

SensorTaskClass::SensorTaskClass(int sensorPin, DallasTemperature& sensors, LcdServiceClass& lcdService)
{
_sensors = sensors;
_lcdService = lcdService;

SensorTask.cpp: In constructor SensorTaskClass::SensorTaskClass(int, DallasTemperature&, LcdServiceClass&)

SensorTask.cpp: 3:1: error: uninitialized reference member 'SensorTaskClass::_sensors' [-fpermissive]
SensorTaskClass*: SensorTaskClass(int sensorPin, DallasTemperature& sensors, LcdServiceClass& lcdService)

SensorTask.cpp: 3:1: error: uninitialized reference member 'SensorTaskClass::_lcdService' [-fpermissive]
Error compiling project sources
Debug build failed for project 'OpenStill'
Ostatnio zmieniony wtorek, 27 paź 2020, 22:47 przez stefunk, łącznie zmieniany 1 raz.

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

Chodzi o inicjalizację pola z klasy. Spróbuj tak:

SensorTaskClass::SensorTaskClass(int sensorPin, DallasTemperature& sensors, LcdServiceClass& lcdService) : _sensors(sensors), _lcdService(lcdService) { ...
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

Udało się, dzięki.

Wydaje mi się, że trochę zaśmiecam temat zupełnie innym projektem, więc tworzę nowy.
Ostatnio zmieniony czwartek, 29 paź 2020, 11:22 przez stefunk, łącznie zmieniany 6 razy.

MastaMari
150
Posty: 168
Rejestracja: poniedziałek, 10 lut 2020, 21:47
Podziękował: 3 razy
Otrzymał podziękowanie: 15 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: MastaMari »

Szybkie pytanie, Jakie maksymalne obciążenie wytrzyma SSR bez radiatora ? Czy wykorzystanie SSR jako on/off tez obciąża SSR cieplnie ?

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

MastaMari pisze:Szybkie pytanie, Jakie maksymalne obciążenie wytrzyma SSR bez radiatora ?
Są różne SSR, które są w stanie obsłużyć różne moce. Przypuszczalnie odpowiedź na to pytanie zależy od mocy, którą jest w stanie obsłużyć Twoje urządzenie. Ja mam SSR, który obsługuje (wg danych producenta) 40A. Przy obciążeniu 16A działał bez radiatora - nie spalił się, chociaż był gorący. Zwróć uwagę, że SSR mocno się grzeje tylko z jednej strony, więc to czy się spali może zależeć też od tego którą stroną i na czym leży.
MastaMari pisze:Czy wykorzystanie SSR jako on/off tez obciąża SSR cieplnie ?
Nie rozumiem pytania.

MastaMari
150
Posty: 168
Rejestracja: poniedziałek, 10 lut 2020, 21:47
Podziękował: 3 razy
Otrzymał podziękowanie: 15 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: MastaMari »

Pewnie będę posiadać SSR 40A jak jest podane w wątku cena prawie ta sama, Grzałka będzie 1,5/2/2,5 KW
jacek.kokot pisze:
MastaMari pisze:Czy wykorzystanie SSR jako on/off tez obciąża SSR cieplnie ?
Nie rozumiem pytania.
Według owego oprogramowania mamy 1 grzałkę z ustawieniem mocy i 2 grzałki tylko ON/OFF i czy wykorzystując SSR tylko do ON/OFF grzałek jest on obciążony tak samo jak przy sterowaniu mocą ?
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

Sterowanie grzałką, to tak naprawdę włączanie i wyłączanie jej w przeciągu zadanego okresu czasu.

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

Kolego MastaMari - im precyzyjniej nakreślisz problem, tym precyzyjniejszą odpowiedź możesz uzyskać.

Moim zdaniem mówimy tu o urządzeniu, które kosztuje 20-30PLN. Spali się - trudno, kupi się nowe ;)

Jakby nie patrzeć 15A stanowi 37,5% mocy z 40A, więc teoretycznie jakiś margines jest. Tak, prawda jest, że jak się ma trzy grzałki 2kW to wystarczy grupowo sterować jedną, z pozostałymi ON/OFF, aby mieć płynne sterowanie w całym zakresie. Czy takie podejście ma sens - tak, jeśli zasilamy grzałki z różnych faz. Jeśli zasilanie i tak jest z jednej fazy prościej zmostkować wszystko i sterować jednocześnie wszystkim.

Jeśli masz sterowanie ON/OFF lepiej kupić zwykły przekaźnik. Pewnie za 10PLN kupić dwukanałowy do 15A na kanał.

Niezależnie od powyższych rozważań warto zapewnić SSR jakieś lepsze chłodzenie. Przeszukaj stare pudła, może znajdziesz jakiś stary procesor z radiatorem. Jeśli nie, może masz jakieś kawałki profili aluminiowych. Teoretycznie możesz nawiercić nakrętkę od słoika. Przytwierdzić najproście trytytką.

Tylko uważaj, z prądem nie ma żartów. Wyłącz zasilanie przed takimi zabawami.

Ardusense.io
50
Posty: 66
Rejestracja: środa, 26 sie 2020, 14:22
Krótko o sobie: Jestem fajnym człowiekiem:)
Ulubiony Alkohol: Glengoyne
Lokalizacja: Scotland / Poland
Podziękował: 5 razy
Otrzymał podziękowanie: 6 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: Ardusense.io »

Co do przekaźników to znalazłem ostatnio polską firmę która takowe sprzedaje, różne modele nawet trójfazowe wraz z dedykowanym radiatorem:

https://termoregulatory.pl/pl/18-przekazniki-ssr

https://termoregulatory.pl/pl/49-akcesoria
Awatar użytkownika

Autor tematu
robert4you
950
Posty: 951
Rejestracja: środa, 30 mar 2016, 18:43
Podziękował: 9 razy
Otrzymał podziękowanie: 134 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: robert4you »

Taki 150A to normalnie piękny jest.

Wysłane z mojego SM-G950F przy użyciu Tapatalka
************************************************************************

Gawronfly101
30
Posty: 31
Rejestracja: wtorek, 18 wrz 2018, 12:19
Podziękował: 13 razy
Otrzymał podziękowanie: 1 raz
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: Gawronfly101 »

Witam jestem kompletnie zielony w temacie. Zdecydowałem się zaryzykować i stworzyć takie cudo, zależy mi głównie na termometrach.
Kupiłem płytkę zainstalowałem arduino IDE, sterowniki, biblioteki. Płytka łączy się z blynkiem ale pokazuje -127C. Po wgraniu przykładu DS18X20 i ustawieniu portu 5 pojawia się ,,no more addresses,, Sprawdzałem dwie różne ds1820 - podłączyłem pod g 3v i 5
Nie miałem rezystora czy brak rezystora, może być przyczyną? Co robię źle?
Ostatnio zmieniony środa, 4 lis 2020, 10:54 przez manowar, łącznie zmieniany 1 raz.

MastaMari
150
Posty: 168
Rejestracja: poniedziałek, 10 lut 2020, 21:47
Podziękował: 3 razy
Otrzymał podziękowanie: 15 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: MastaMari »

Dodaj rezystor i powinno być wszystko ok

Gawronfly101
30
Posty: 31
Rejestracja: wtorek, 18 wrz 2018, 12:19
Podziękował: 13 razy
Otrzymał podziękowanie: 1 raz
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: Gawronfly101 »

Dzięki za podpowiedź. Rezystor rozwiązał problem.

MastaMari
150
Posty: 168
Rejestracja: poniedziałek, 10 lut 2020, 21:47
Podziękował: 3 razy
Otrzymał podziękowanie: 15 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: MastaMari »

Szybkie pytanie czy do ESP32 Wemos Lite 4MB Flash podłącze wyświetlacz LCD 20x4 ? Płytka posiada tylko 3.3v zasilanie a większość LCD wymaga 5v jak to rozwiązać ?
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

Ja mam na esp8266 podłączone pod 3.3

rastro
2500
Posty: 2557
Rejestracja: wtorek, 15 sty 2013, 15:29
Podziękował: 83 razy
Otrzymał podziękowanie: 297 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: rastro »

Osobne zasilanie +5V dla LCD. Nie wnikam jak to jest zbudowane ale jeżeli jest tam sprzętowe I2C - to piny obsługujące powinny akceptować sygnał 5V. O ile pamiętam teraz zwykle się używa tego typu przejściówki.
″Iloraz inteligencji tłumu jest równy IQ najgłupszego jego przedstawiciela podzielonemu przez liczbę uczestników.„
- Terry Pratchett

aakk
1150
Posty: 1160
Rejestracja: poniedziałek, 7 sty 2019, 18:55
Status Alkoholowy: Konstruktor
Lokalizacja: Łódź
Podziękował: 20 razy
Otrzymał podziękowanie: 100 razy
Kontakt:
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: aakk »

Część wyświetlaczy działa pod 3.3V a część działa ale słabo wyświetla, takcjak by kontrakt był skręcony. Wtedy wymaga podłączenia pod 5V. Nie mam pojęcia od czego to zależy ale miałem już dziesiątki tych wyświetlaczy i wszystko zależy od producenta /partii(?).
Ostatnio zmieniony czwartek, 5 lis 2020, 15:12 przez aakk, łącznie zmieniany 1 raz.
Destylatory ze stali nierdzewnej.
www.ak-spaw.pl
facebook.com/akspawpl
Zapraszam

MastaMari
150
Posty: 168
Rejestracja: poniedziałek, 10 lut 2020, 21:47
Podziękował: 3 razy
Otrzymał podziękowanie: 15 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: MastaMari »

Wyświetlacz działa pod 3,3V, fakt kontrast musiałem podkręcić prawie na MAX aby pojawiły sie napisy
IMG_20201105_150322.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Gawronfly101
30
Posty: 31
Rejestracja: wtorek, 18 wrz 2018, 12:19
Podziękował: 13 razy
Otrzymał podziękowanie: 1 raz
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: Gawronfly101 »

Zdalny odczyt już mi działa.
Chciałbym dołączyć lcd 2x16 z i2C
Może ktoś ma brakujące linijki kodu? :)
Ostatnio zmieniony czwartek, 12 lis 2020, 16:07 przez manowar, łącznie zmieniany 1 raz.
Awatar użytkownika

george1255
350
Posty: 397
Rejestracja: wtorek, 13 lut 2018, 14:50
Krótko o sobie: Jestem fajnym człowiekiem:)
Ulubiony Alkohol: Piwo/ Cydr/ Bimberek
Status Alkoholowy: Konstruktor
Podziękował: 6 razy
Otrzymał podziękowanie: 27 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: george1255 »

Bierz od razu 20x4, koniecznie z przylutowanym konwenterem i2c.
Poszukaj w necie "LCD 20x4 i2c esp8266" i znajdziesz wszystko :-)

Wysłane z mojego EML-L29 przy użyciu Tapatalka
TERMOMETRY WIFI
https://www.facebook.com/TermometryWIFI/

Gawronfly101
30
Posty: 31
Rejestracja: wtorek, 18 wrz 2018, 12:19
Podziękował: 13 razy
Otrzymał podziękowanie: 1 raz
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: Gawronfly101 »

3v nie służą wyświetlaczowi pomimo regulacji kontrastu na MAX, znaki widoczne są tylko patrząc na wprost.
Da się coś z tym zrobić?
ODPOWIEDZ

Wróć do „Kontrola procesu destylacji”