Home » Timp Liber » Cum sa iti monitorizezi temperatura si sistemul de incalzire in casa? – Smart Nation

Cum sa iti monitorizezi temperatura si sistemul de incalzire in casa? – Smart Nation

09.16.2013
Scris de Constantin Craciun & Ionut Cotoi
Sistemele de incalzire existente in apartamentele si casele noastre in prezent necesita o atentie deosebita, mai ales iarna, cand este necesara ajustarea constanta a temperaturii pentru a avea parte de confortul dorit.
 
Nu ar fi interesant daca am concepe o automatizare care sa realizeze aceasta munca pentru noi, care sa fie usor controlabila si modificata la nevoie si sa se ajusteze pe sistemele de incalzire deja existente in casa noastra?
 
Noi spunem ca da. Si nu numai ca ne-ar ajuta din perspectiva confortului, dar am putea face chiar economie oprind incalzirea atunci cand ea nu este necesara sau supraincalzirea atunci cand temperatura de afara este deja mai ridicata.
 
Acest articol isi propune sa va ghideze pasii pentru a realiza aceasta automatizare usor si cu o investitie mult redusa, fata de achizionarea unei sistem dedicat cu o instalare complicata si functionalitati predefinite nemodificabile.
 
Teorie
 
Sa analizam putin datele de intrare si iesire cu care lucram. Avem o temperatura in casa pe care o putem masura prin plasarea unor senzori in fiecare camera sau macar in una in care dorim sa functioneze sistemul. De asemenea, exista un sistem de incalzire sub forma unor calorifere, aer conditionat sau incalzire centralizata, cu care putem modifica temperatura, de obicei, manual.
 
Algoritmul pe care il propunem ne ofera posibilitatea de a stabili niste reguli de control automat al temperaturii in camere si, mai important, acces prin Internet la aceste date si controlul de la distanta.
 
Pentru partea software vom folosi platforma www.devicehub.net,  iar pentru partea de hardware o combinatie intre placa de dezvoltare Arduino, senzori, modul de conectare Ethernet si sugestii in functie de tipul de sistem de incalzire pentru controlul lor.
 
Principalele facilitati oferite de Devicehub.net sunt: serviciul online de stocare a datelor si controlul aparatelor electronice de orice fel care se pot conecta la Internet. La baza functionarii platformei sta relatia dintre senzori (entitati care culeg date din lumea reala) si actuatori (componente electronice care executa actiuni in lumea reala si pot fi, de asemenea, controlabili din platforma online). Spre deosebire de alte platforme similare, care colecteaza datele de la senzori, Devicehub.net este singura de acest gen care permite controlul si supervizarea online a actuatorilor.
 
Platforma se adreseaza atat companiilor de orice tip, cat si pasionatilor de electronica si programare datorita extensibilitatii si posibilitatii de a conecta o gama uriasa de senzori si actuatori la ea. Orice industrie sau aplicatie in domeniul tehnologic poate beneficia de controlul si supervizarea aparatelor si proceselor, prin intermediul unor componente conectate la Devicehub.net.
 
Arduino este o placa electronica de dezvoltare open source, folosita atat de incepatori cat si de electronistii profesionisti, pentru realizarea rapida a prototipurilor electronice. Ea a aparut in anul 2005, datorita unor profesori italieni care au realizat-o pentru a putea preda mai usor cursurile de microcontrolere stundetilor. Pentru ca a avut sursele libere si a fost folosita cu succes in mediul universitar in toata Italia, a evoluat vertiginos in urmatorii ani, fiind utlizata atat pentru workshopuri si cursuri cat si la scara industriala in diverse aplicatii si subansamble.
 
Arduino este in esenta o placa de dezvoltare care contine un microcontroller care primeste date le analizeaza si ia decizii pe baza carora poate trimite date in functie de cum il programam. Pe langa acest microcontroller, placa mai contine doar un numar mic de componente necesare pentru partea de programare de pe un PC si partii de alimentare a circuitului.
 
Limbajul de programare folosit este C++, iar mediul de programare este descarcabil gratuit pe website-ul www.arduino.cc, unde se gasesc de asemenea si informatii despre modelele de Arduino si specificatiile lor.
 
In functie de modelul de placa aleasa aceasta contine un numar de pini digitali si unul de pini analogici, care sunt “intrarile” si “iesirile” placii noastre. Pinii digitali sunt folositi pentru a controla sau primi date de la aparate care au doua stari – oprit sau pornit, 0 sau 1, utili in cazul nostru pentru a opri sau porni sistemul de incalzire. Pinii analogici sunt folositi pentru a citi date de la senzori care ofera date nu doar cu doua stari, ci o multitudine de pozitii intermediare intre 0 si 1, foarte utili in cazul nostru in care dorim sa citim temperatura intr-o camera.
 
Practica
 
Odata stabilite aceste detalii teoretice, sa trecem la partea practica. Pentru strangerea de date de la senzori aveti nevoie de un cont care se poate face gratuit la http://devicehub.net/accounts/register/ .
 
Dupa ce ati facut contul, creati un nou proiect si adaugati un senzor si un actuator in el. Senzorul va fi folosit pentru a masura temperatura intr-o camera, iar actuatorul este un releu care poate comuta sistemul de incalzire.
 
 
Pe partea de hardware avem nevoie de o placa de dezvoltare Arduino, un modul ethernet DHT11 care contine un senzor de temperatura si unul de umiditate, un modul cu releu si un alimentator pentru sistemul nostru. Noi am folosit Arduino Pro Mini, pe care l-am programat cu un modul FTDI (dar se poate folosi cu succes si un Arduino UNO, care nu are nevoie de acest modul de programare), un modul ethernet cu cipul enc28j60 si un modul releu la 5v special pentru Arduino (la iesirea principala poate comanda orice aparat alimentat la 220v).
 
 
 
Conexiunile intre Arduino si module se fac in felul urmator :
 
ENCJ2860 – Arduino:
 
CS – 10
 
SI – 11
 
SO – 12
 
SCK – 13
 
VCC – 5V
 
GND – GND
 
DHT11 – Arduino:
 
S – 8
 
VCC – 5V
 
GND – GND
 
Releu – Arduino:
 
S – 9
 
VCC – 5V
 
GND – GND
 
Codul folosit pe Arduino este urmatorul:
 
(au fost folosite doua librarii: una pentru senzorul de temperatura DHT11, pe care o gasiti la  adresa – http://playground.arduino.cc/main/DHT11Lib – si una pentru modulul Ethernet, pe care o gasiti la adresa – https://github.com/jcw/ethercard, iar aceste librarii se plaseaza in directorul “libraries” din workspace-ul creat de Arduino la instalare).
 
De asemenea, nu uitati sa inlocuiti in codul de mai jos datele referitoare la id-ul proiectului, numele senzorilor, precum si api-key-ul specific contului vostru de pe devicehub.net .
 
#include
 
#include
 
dht11 DHT11;
 
#define DHT11PIN 8
 
// ethernet interface mac address, trebuie sa fie unica in reteaua dvs
 
static byte mymac[] = { 0×74,0×69,0×69,0x2D,0×30,0×31 };
 
byte Ethernet::buffer[700];
 
static uint32_t timer;
 
char website[] PROGMEM = “www.devicehub.net”;
 
int state = 48;
 
boolean automode = true;
 
int temp_dorita = 24;
 
// apelata cand interogarea este completa
 
static void my_callback (byte status, word off, word len) {
 
  Serial.println(“>>>”);
 
  Ethernet::buffer[off+300] = 0;
 
  state = *(const char*)(Ethernet::buffer + off + len – 1);
 
  if(state == 49){
 
    Serial.println(“auto mode on”);
 
    automode = true;
 
  }else if(state == 48){
 
    Serial.println(“automode off”);
 
    automode = false;
 
  }
 
}
 
void setup()
 
{
 
  pinMode(9, OUTPUT);
 
  Serial.begin(57600);
 
  if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
 
    Serial.println( “Failed to access Ethernet controller”);
 
  if (!ether.dhcpSetup())
 
    Serial.println(“DHCP failed”);
 
  ether.printIp(“IP:  “, ether.myip);
 
  ether.printIp(“GW:  “, ether.gwip);
 
  ether.printIp(“DNS: “, ether.dnsip);
 
  if (!ether.dnsLookup(website))
 
    Serial.println(“DNS failed”);
 
  ether.printIp(“SRV: “, ether.hisip);
 
  digitalWrite(9, HIGH);
 
}
 
void loop()
 
{
 
  ether.packetLoop(ether.packetReceive());
 
  if (millis() > timer) {
 
    int chk = DHT11.read(DHT11PIN);
 
    char queryString[256] = {0};
 
    sprintf(queryString, “?apiKey=copiati_api_key_aici&copiati_numele_senzor1_aici=%d&copiati_numele_senzor2_aici=%d”, (int)DHT11.temperature,(int)DHT11.humidity);
 
    timer = millis() + 5000;
 
    Serial.println();
 
    Serial.print(“
 
    ether.browseUrl(PSTR(“/io/copiati_idul_proiectului_aici/”), queryString, website, my_callback);
 
  }
 
  if(automode == true){
 
    if ((int)DHT11.temperature
 
        //actuator ON
 
        Serial.println(“actuator ON”);
 
        digitalWrite(9, HIGH);
 
      }else{
 
        //actuator OFF
 
        Serial.println(“actuator OFF”);
 
        digitalWrite(9, LOW);
 
    }
 
  }
 
}
 
  //Celsius to Fahrenheit conversion
 
double Fahrenheit(double celsius)
 
{
 
  return 1.8 * celsius + 32;
 
}
 
//Celsius to Kelvin conversion
 
double Kelvin(double celsius)
 
{
 
  return celsius + 273.15;
 
}
 
// dewPoint function NOAA
 
// reference: http://wahiduddin.net/calc/density_algorithms.htm
 
double dewPoint(double celsius, double humidity)
 
{
 
  double A0= 373.15/(273.15 + celsius);
 
  double SUM = -7.90298 * (A0-1);
 
  SUM += 5.02808 * log10(A0);
 
  SUM += -1.3816e-7 * (pow(10, (11.344*(1-1/A0)))-1) ;
 
  SUM += 8.1328e-3 * (pow(10,(-3.49149*(A0-1)))-1) ;
 
  SUM += log10(1013.246);
 
  double VP = pow(10, SUM-3) * humidity;
 
  double T = log(VP/0.61078);   // temp var
 
  return (241.88 * T) / (17.558-T);
 
}
 
// delta max = 0.6544 wrt dewPoint()
 
// 5x faster than dewPoint()
 
// reference: http://en.wikipedia.org/wiki/Dew_point
 
double dewPointFast(double celsius, double humidity)
 
{
 
  double a = 17.271;
 
  double b = 237.7;
 
  double temp = (a * celsius) / (b + celsius) + log(humidity/100);
 
  double Td = (b * temp) / (a – temp);
 
  return Td;
 
}
 
Codul afisat mai sus realizeaza trimiterea datelor de la senzor in platforma online accesibila atat pe pc cat si pe smartphone sau pe tableta, precum si controlul direct al sistemului de incalzire, prin activarea modului auto din platforma online, care tinde sa mentina temperatura la cea setata de noi in variabila temp_dorita, in cazul de fata, 24 grade Celsius.
 
Asteptam cu interes sugestiile sau intrebarile voastre. Spor la lucru!
 
 
 
Smart Nation este platforma unde tehnologia va inspira pe voi toti. Sa va imaginati, sa inovati, sa creati!
 
Intra pe SmartNation.ro daca vrei sa fii informat in legatura cu noile gadget-uri, dar si pentru a putea afla cum functioneaza, ce fac si cum iti pot imbunatati viata de zi cu zi. 
 
 
Cele mai noi articole
Un studiu a descoperit variantele genetice legate de apariția schizofreniei
Un studiu a descoperit variantele genetice legate de apariția schizofreniei
Un nou studiu arată că, de fapt, canabisul este eficient în tratarea depresiei şi îmbunătăţirea sănătăţii mintale
Un nou studiu arată că, de fapt, canabisul este eficient în tratarea depresiei şi îmbunătăţirea sănătăţii mintale
Imagini spectaculoase pe litoralul românesc. Norul Shelf a acoperit cerul în staţiunea Mamaia în timpul unei furtuni
Imagini spectaculoase pe litoralul românesc. Norul Shelf a acoperit cerul în staţiunea Mamaia în timpul unei furtuni
Când se vor afişa rezultatele complete de la Evaluarea Naţională (Capacitate) 2020. Edu.ro anunţă notele pe judeţe
Când se vor afişa rezultatele complete de la Evaluarea Naţională (Capacitate) 2020. Edu.ro anunţă notele pe judeţe
Arheologii au descoperit un zid de apărare din secolul al X-lea în Polonia
Arheologii au descoperit un zid de apărare din secolul al X-lea în Polonia
Astronomii au găsit o planetă a cărei existență a fost doar teoretizată
Astronomii au găsit o planetă a cărei existență a fost doar teoretizată
Culorile insectelor vechi de milioane de ani conservate în chihlimbar 
Culorile insectelor vechi de milioane de ani conservate în chihlimbar 
Un cimitir al copiilor din secolul al XVII-lea, descoperit în Polonia
Un cimitir al copiilor din secolul al XVII-lea, descoperit în Polonia
Creierul nostru ar folosi strategii similare unui motor de căutare pentru a-și aminti cuvinte și întâmplări trecute
Creierul nostru ar folosi strategii similare unui motor de căutare pentru a-și aminti cuvinte și întâmplări trecute
Un nivel scăzut de cortizol poate declanșa un răspuns inflamator cronic
Un nivel scăzut de cortizol poate declanșa un răspuns inflamator cronic
Studiu îngrijorător al cercetătorilor din Spania. Câți dintre spanioli au dezvoltat anticorpi pentru noul coronavirus
Studiu îngrijorător al cercetătorilor din Spania. Câți dintre spanioli au dezvoltat anticorpi pentru noul coronavirus
Petele solare au redus luminozitatea stelei Betelgeuse 
Petele solare au redus luminozitatea stelei Betelgeuse 
Pui de urs slăbit și probabil abandonat de ursoaică, găsit la Băile Tușnad. Ce s-a întâmplat
Pui de urs slăbit și probabil abandonat de ursoaică, găsit la Băile Tușnad. Ce s-a întâmplat
Delfinii sunt atât de inteligenți încât învață de la prietenii lor cum să folosească unelte
Delfinii sunt atât de inteligenți încât învață de la prietenii lor cum să folosească unelte
Un virus mortal poreclit „Ebola iepurilor” se răspândește îngrijorător de repede în Statele Unite
Un virus mortal poreclit „Ebola iepurilor” se răspândește îngrijorător de repede în Statele Unite
O bună înțelegere a fizicii ar putea duce la crearea unor algoritmi mai performanți
O bună înțelegere a fizicii ar putea duce la crearea unor algoritmi mai performanți
Motivul psihologic pentru care unii oameni refuză să poarte mască de protecție pe timp de pandemie
Motivul psihologic pentru care unii oameni refuză să poarte mască de protecție pe timp de pandemie
Un caz rar de amibă tocmai a fost confirmat în SUA. Organismul poate infecta și distruge creierul uman
Un caz rar de amibă tocmai a fost confirmat în SUA. Organismul poate infecta și distruge creierul uman