ESP8266 Primary GUI - Termostat

wrobel111
Posty: 59
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 17 razy
wrobel111
Posty: 59
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 414 razy
termostat pcb top.png
termostat pcb top.png (256.23 KiB) Przejrzano 414 razy
Załączniki
schemat.pdf
(53.83 KiB) Pobrany 16 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: 911
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: 165
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: 54
Rejestracja: wt maja 01, 2018 7:24 pm

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: 165
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
ODPOWIEDZ