ESP8266 Primary GUI - Termostat

wrobel111
Posty: 62
Rejestracja: wt cze 05, 2018 6:13 pm

czw mar 05, 2020 6:03 pm

Schematu jako takiego nie mam, musiałbym narysować. Aktualny pinout:
D0 - przycisk config
D1 - przekaźnik
D2 - dodatkowy ds18b20
D3 - SDA
D4 - SCL
D5 - SCK
D6 - MISO
D7 - MOSI
D8 - CSN
Rx - CE

Kod zamieszczam w załączniku, nie wysyłam bin-a z racji tego, że wszystkie modyfikacje włącza się po przez #define w odpowiednich plikach. Starałem się to pisać w miarę czytelnie, mam nadzieję ,że sobie to ogarniesz. Dodatkowo potrzeba bibliotekę do oled-a z dodatkowymi czcionkami, również dodałem do archiwum.

Mam mały problem z NRF-em. Otóż po około dniu pracy przestaje wysyłać temperaturę, pomaga reset nadajnika. Może ma ktoś pomysł dlaczego?
Kod nadajnika:

Kod: Zaznacz cały

/*
 * Konfiguracja linii dołączonych do modułu nRF24L01:
 * 
 * MISO: 12
 * MOSI: 11
 * SCK: 13
 * CE: 8
 * CSN: 7
 *
 * Konfiguracja linii LED:
 * Katoda: GND
 * Anoda: 10 przez R = 1kOhm
 *
 *Linia czujnika DS18B20: 2 UWAGA - linia 1-Wire musi być podciągnięta do zasilania rezystorem o wartości 4,7k

 */
 
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float tempr = 0;                      // Zmienna typu float
int counter = 0;

void setup()
{ 
  Serial.begin(9600);
  pinMode(10, OUTPUT);                // linia 10 jako wyjście dla LED
  digitalWrite(10, LOW);              // dioda nie świeci
   
  sensors.begin();                    // Inicjalizacja czujnika
  
  Mirf.spi = &MirfHardwareSpi;        // konfiguracja SPI do użycia z biblioteką MIRF
  Mirf.init();                        // Inicjalizacja MIRF
  Mirf.setRADDR((byte *)"67890");     // Ustawienie adresu do odbioru
  Mirf.setTADDR((byte *)"12345");     // ustawienie adresu do nadawania
  Mirf.payload = sizeof(float);       // Maksymalny przesył przez moduły radiowe ustawiony na wielkośc zmiennej FLOAT (4 bajty)
  Mirf.config();                      // Konfiguracja biblioteki MIRF
  Serial.println("Setup");
 }

void loop()
{
  if (counter == 50) {
    digitalWrite(10, HIGH);
    sensors.requestTemperatures();        // Żądanie pomiaru temperatury za pomocą czujnika DS18B20 (czas wykonania < 1s)
    tempr = sensors.getTempCByIndex(0);   // Przypisanie wyniku pomiaru do zmiennej FLOAT 
    Mirf.send((byte *)&tempr);            // Nadanie zmiennej przez moduł nRF24L01
    while(Mirf.isSending()){              // Zapętlenie programu do czasu zakończenia wysyłania danych
    }
    digitalWrite(10, LOW);
    counter = 0;                          // Wyzerowanie licznika
    Serial.println(tempr);
  }
  delay(100);                             // Opóźnienie powtórnego wykonania pętli
  counter++;  
} 
  
Załączniki
Primary_GUI_thermostat_nrf_oled.rar
(367.4 KiB) Pobrany 46 razy
wrobel111
Posty: 62
Rejestracja: wt cze 05, 2018 6:13 pm

sob mar 07, 2020 10:02 pm

Pracuję nad dalszym kolejną wersją mojej przeróbki, tym razem chciałbym do komunikacji wykorzystać moduły radiowe RFM69CW. Zainspirował mnie do tego temat o bezprzewodowych czujnikach: viewtopic.php?f=24&t=5047&start=30
W załączniku zdjęcia projektowanej płytki oraz schemat. W tej wersji jest możliwość podpięcia wyświetlacza oled 0,96" lub LCD 12864B. Przyciski można zrealizować po przez podłączenie do ekspandera I/O
termostat pcb bottom.png
termostat pcb bottom.png (233.06 KiB) Przejrzano 963 razy
termostat pcb top.png
termostat pcb top.png (256.23 KiB) Przejrzano 963 razy
Załączniki
schemat.pdf
(53.83 KiB) Pobrany 38 razy
andrzej.cwiklinski
Posty: 2
Rejestracja: pn mar 16, 2020 10:34 am

śr mar 18, 2020 4:39 pm

Serdeczne dzięki !
Niestety nie potrafię (jak zaznaczyłem jestem w tej materii zielony ) dostać się na tę niebieską tablicę !
Proszę o wyrozumiałość i pomoc.
Andrzej
Awatar użytkownika
Robert Błaszczak
Posty: 1241
Rejestracja: sob gru 22, 2018 8:55 pm
Lokalizacja: Zielona Góra
Kontaktowanie:

śr mar 18, 2020 5:26 pm

wrobel111 pisze:
sob mar 07, 2020 10:02 pm
Pracuję nad dalszym kolejną wersją mojej przeróbki, tym razem chciałbym do komunikacji wykorzystać moduły radiowe RFM69CW. Zainspirował mnie do tego temat o bezprzewodowych czujnikach: viewtopic.php?f=24&t=5047&start=30
W załączniku zdjęcia projektowanej płytki oraz schemat. W tej wersji jest możliwość podpięcia wyświetlacza oled 0,96" lub LCD 12864B. Przyciski można zrealizować po przez podłączenie do ekspandera I/O

termostat pcb bottom.png
termostat pcb top.png
Jeśli termometry DS18B20 są na jednym GPIO, to R5 - R7 nie mają racji bytu. Przy takim połączeniu będzie to działało, jakbyś podłączył jeden rezystor ~1.2 kOhm.
Pozdrawiam
Robert Błaszczak

Strona prywatna: https://www.blaszczak.pl
Jakość powietrza: https://robert.aqi.eco
tijo
Posty: 168
Rejestracja: pt gru 01, 2017 12:44 pm

czw mar 19, 2020 2:19 pm

a można gdzieś kupić gotowe płytki??

PS. Widzę że koronawirus panuje i wszyscy pouciekali bo odpowiedzi zero...
Awatar użytkownika
dzikusk
Posty: 58
Rejestracja: wt maja 01, 2018 7:24 pm
Lokalizacja: Bolesławiec

sob mar 21, 2020 2:13 pm

Proszę o podpowiedź. Piec węglowy bez podajnika. Chce sterować pompę podłogówki tak aby: załączała się od 45 stopni w piecu i grzała do osiągnięcia 23 stopni w salonie. Następnie wyłączyłem. Histereza 2 stopnie. No i żeby płynnie tym sterować. Mam czujniki w salonie, na piecu. Praktycznie w każdym pomieszczeniu. Słyszałem że można na skryptach fracz i najlepiej w tryb chłodzenia. Proszę w wskazówki jak to dobrze ustawić.
tijo
Posty: 168
Rejestracja: pt gru 01, 2017 12:44 pm

ndz mar 22, 2020 7:08 am

dzikusk pisze:
sob mar 21, 2020 2:13 pm
Proszę o podpowiedź. Piec węglowy bez podajnika. Chce sterować pompę podłogówki tak aby: załączała się od 45 stopni w piecu i grzała do osiągnięcia 23 stopni w salonie. Następnie wyłączyłem. Histereza 2 stopnie. No i żeby płynnie tym sterować. Mam czujniki w salonie, na piecu. Praktycznie w każdym pomieszczeniu. Słyszałem że można na skryptach fracz i najlepiej w tryb chłodzenia. Proszę w wskazówki jak to dobrze ustawić.
termostat a( z odczytem w salonie) ma załączać termostat b(z odczytem na piecu). gdy temperatura spadnie poniżej 23 stC termostat a załączy zasilanie na termostat b na którym ustawione jest 45stC po osiągnięciu których załączy pompę. Osobiście nie używałbym termostatu b w wersji supla tylko jakiś oryginalny od sterownika od pieca. Wtedy wszystko bezproblemowo ogarniasz jednym termostatem zasuplowanym
mirizag
Posty: 104
Rejestracja: pn sty 02, 2017 6:36 pm

śr kwie 15, 2020 5:59 pm

Witam. Do Wemosa mam podpięte 4 czujniki DS i co pewien czas temperatura skacze o 0,2 stopnia. Na jednym Wemosie jest jeden czujnik w salonie, a na drugim Wemosie są 4 czujniki DS. I jest tak, że nie raz temp. skacze ta tym czujniku co jest w salonie, a nie raz na czujnikach z drugiego Wemosa tylko po kolei. I też jest tak temperatura jest stabilna.
Wemosy ma zasilane przez ładowarkę USB od komórki.
Czy mogę prosić o pomoc. Co może być powodem.
Awatar użytkownika
klew
Posty: 993
Rejestracja: czw cze 27, 2019 12:16 pm

czw kwie 16, 2020 8:50 am

mirizag pisze:
śr kwie 15, 2020 5:59 pm
Witam. Do Wemosa mam podpięte 4 czujniki DS i co pewien czas temperatura skacze o 0,2 stopnia. Na jednym Wemosie jest jeden czujnik w salonie, a na drugim Wemosie są 4 czujniki DS. I jest tak, że nie raz temp. skacze ta tym czujniku co jest w salonie, a nie raz na czujnikach z drugiego Wemosa tylko po kolei. I też jest tak temperatura jest stabilna.
Wemosy ma zasilane przez ładowarkę USB od komórki.
Czy mogę prosić o pomoc. Co może być powodem.
0,2 stopnia to nie jest skok temperatury ;)

A tak na serio: problemem może być ustawiona precyzja przy odczycie temperatury. Jeśli aktualna rozdzielczość jest na poziomie 0,2 stopnia, to skoki o taką wartość będą widoczne. Np. gdy realnie jest 23,1 +- 0,005, to raz odczyt może pokazać 23,2 a raz 23,0
krycha88
Posty: 767
Rejestracja: pt lis 16, 2018 7:25 am

czw kwie 16, 2020 8:59 am

klew pisze:
czw kwie 16, 2020 8:50 am
mirizag pisze:
śr kwie 15, 2020 5:59 pm
Witam. Do Wemosa mam podpięte 4 czujniki DS i co pewien czas temperatura skacze o 0,2 stopnia. Na jednym Wemosie jest jeden czujnik w salonie, a na drugim Wemosie są 4 czujniki DS. I jest tak, że nie raz temp. skacze ta tym czujniku co jest w salonie, a nie raz na czujnikach z drugiego Wemosa tylko po kolei. I też jest tak temperatura jest stabilna.
Wemosy ma zasilane przez ładowarkę USB od komórki.
Czy mogę prosić o pomoc. Co może być powodem.
0,2 stopnia to nie jest skok temperatury ;)

A tak na serio: problemem może być ustawiona precyzja przy odczycie temperatury. Jeśli aktualna rozdzielczość jest na poziomie 0,2 stopnia, to skoki o taką wartość będą widoczne. Np. gdy realnie jest 23,1 +- 0,005, to raz odczyt może pokazać 23,2 a raz 23,0
z tego co pamiętam to precyzja była ustawiona na 10 bitów.
ODPOWIEDZ

Wróć do „Projekty użytkowników”