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

Publicat: 16.09.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. 
 
 
Urmărește DESCOPERĂ.ro pe
Google News și Google Showcase
Cele mai noi articole
Un parazit care nu mai fusese văzut la oameni provoacă o serie de simptome diverse și ciudate
Un parazit care nu mai fusese văzut la oameni provoacă o serie de simptome diverse și ciudate
Copilul tău este pretențios la mâncare? Iată ce trebuie să faci!
Copilul tău este pretențios la mâncare? Iată ce trebuie să faci!
Test de cultură generală. Care a fost prima democrație din istorie?
Test de cultură generală. Care a fost prima democrație din istorie?
Cea mai mare fotografie făcută vreodată cu rețeaua de telescoape ALMA dezvăluie ce se ascunde în „inima” Căii Lactee
Cea mai mare fotografie făcută vreodată cu rețeaua de telescoape ALMA dezvăluie ce se ascunde în „inima” Căii Lactee
FBI concediază agenți care lucrau la anchete ce-l vizau pe Donald Trump
FBI concediază agenți care lucrau la anchete ce-l vizau pe Donald Trump
Giganții americani de Inteligență Artificială acuză China de furt
Giganții americani de Inteligență Artificială acuză China de furt
Cel mai toxic oraș de pe Pământ: cum a decăzut de la 10.000 de locuitori și a rămas un oraș-fantomă?
Cel mai toxic oraș de pe Pământ: cum a decăzut de la 10.000 de locuitori și a rămas un oraș-fantomă?
Au trecut 90 de ani de la moartea unui mare fiziolog rus. Învăţăm şi astăzi despre experimentele lui
Au trecut 90 de ani de la moartea unui mare fiziolog rus. Învăţăm şi astăzi despre experimentele lui
Cât de posibil este ca Inteligența Artificială să declanșeze o criză majoră în societate?
Cât de posibil este ca Inteligența Artificială să declanșeze o criză majoră în societate?
Tocmai frica de îmbătrânire ne face să îmbătrânim mai repede, dezvăluie un studiu
Tocmai frica de îmbătrânire ne face să îmbătrânim mai repede, dezvăluie un studiu
Care este cel mai însorit loc de pe Pământ?
Care este cel mai însorit loc de pe Pământ?
Schimbările climatice „influențează cine se naște și cine nu se naște”, arată un studiu de la Oxford
Schimbările climatice „influențează cine se naște și cine nu se naște”, arată un studiu de la Oxford
A fost descoperită o legătură surprinzătoare între furtunile solare și cutremure
A fost descoperită o legătură surprinzătoare între furtunile solare și cutremure
O fosilă unică, veche de 190 de milioane de ani, rescrie istoria unei specii de dinozaur
O fosilă unică, veche de 190 de milioane de ani, rescrie istoria unei specii de dinozaur
Oamenii de știință programează bacterii pentru a devora tumorile canceroase
Oamenii de știință programează bacterii pentru a devora tumorile canceroase
Miopia este în creștere, iar un obicei comun ar putea fi de vină
Miopia este în creștere, iar un obicei comun ar putea fi de vină
De ce mirosurile declanșează amintiri mai bine decât imaginile (P)
De ce mirosurile declanșează amintiri mai bine decât imaginile (P)
Un nou studiu arată că peștii sanitari sunt mai inteligenți decât au crezut cercetătorii
Un nou studiu arată că peștii sanitari sunt mai inteligenți decât au crezut cercetătorii