Pagina 1 van 3

Arduino + DHT11 = thermostaat en logger?

BerichtGeplaatst: ma feb 22, 2016 4:09 pm
door barrymossel
Zojuist twee DHT11 sensoren besteld (en een Arduino relais) om als leuk Arduino projectje de temperatuur en luchtvochtigheid te loggen. Daarnaast wil ik kijken of het nut heeft de bestelde warmtematten te schakelen bij een bepaalde temperatuur.
Ik lees her en der dat er hier wel wat mensen met ervaring op dat vlak zijn, maar ik kan niet zo gauw vinden hoe mensen bijvoorbeeld een grafiekje plotten (ik zag net plot.ly, echter is dat betaald bij meer dan zoveel API calls).

Iemand die me de goede richting op kan sturen?

Re: Arduino + DHT11 = thermostaat en logger?

BerichtGeplaatst: di feb 23, 2016 12:23 am
door snx
Ik kan je hier niet me helpen, maar zal het zeker volgens als je je progressie hier post. Grappig dat mijn kinderen nu al op de middelbare school met Arduinos aan de gang mogen.. Ik mocht pas op de HTS iets met PLC's doen. :)

Maar, is er een reden dat de Arduino het grafische werk moet doen? Is dat niet meer een taak voor een pc die iets doet met gelogde data? Of is dat vloeken in de kerk voor Arduino developers? ;)

Re: Arduino + DHT11 = thermostaat en logger?

BerichtGeplaatst: di feb 23, 2016 7:59 am
door Greeninside
Wil je de arduino een grafiek laten plotten en dit weergeven op een lcd schermpje of wil je de data importeren in bijvoorbeeld Excell en die de grafiek laten creëren? Dat 2de lijkt me iets eenvoudiger. Ook kan je prima met behulp van de sensoren een programmaatje schrijven om de warmtematten te schakelen.

Re: Arduino + DHT11 = thermostaat en logger?

BerichtGeplaatst: di feb 23, 2016 8:24 am
door barrymossel
Ik ben zeer blij dat kinderen daar nu al vroeg mee aan de slag gaan (wist ik niet eens - hulde!). Mijn vrouw vond/vindt het onzin dat ze op de basisschool "al" met iPad bezig gaan. Zelf juich ik het volledig toe. Vooruitgang heet dat!

Gisteren heb ik e.e.a. uitgezocht en in principe gaat de Arduino niks grafisch doen. Het enige dat de Arduino mag doen is de metingen via de DHT11 (of DHT22 - duurder, maar accurater) en deze doorsturen via ethernet of wifi naar een database. Een app, website/dashboard mag dit dan visualiseren. Het eerste deel is niet zo moeilijk (de metingen):
DHT11 aansluiten op een digitale pin van de Arduino (ook een pull-up weerstand gebruiken). Dan kun je via de Adafruit DHT library zeer eenvoudig de metingen van luchtvochtigheid en temperatuur uitlezen. Naar wens kun je ook een licht sensor aansluiten op een analoge pin (had ik nog liggen).

Maar dan... De data moet dus opgeslagen worden in een database (tenminste als je ook historische data wilt tonen van de afgelopen dag(en) - en dat wil ik). En dan ook nog op een makkelijke én mooie manier getoond kunnen worden. Ik heb nu enkele mogelijke oplossingen, maar het is passen en meten.

  • Data opslaan in een MySQL database op eigen server. Voordeel is dat je de data op een eigen server hebt en er in principe alles mee kan doen wat je maar wilt. Echter een kant-en-klaar dashboard om e.e.a. te tonen is niet gratis beschikbaar, of niet echt mooi om te zien. Dus daar kan ik nog even wat naar zoeken. Heb weinig zin om nu het zelf te gaan programmeren.
  • Freeboard.io in combinatie met dweet.io. Real-time data is makkelijk te tonen en er is ook een dweet.io library beschikbaar, waardoor het Arduino programmeerwerk appeltje-eitje is. Ziet er op zich prima uit, alleen is er geen mooie optie om historische data te tonen zover ik zie. Graag zou ik namelijk voor laatste 24 uur, laatste week, laatste maand (o.i.d.) kunnen kiezen.
  • Adafruit.io ziet er wel interessant uit. Je stuurt via een library je data naar de servers van Adafruit en kunt die naar wens tonen in een dashboard. Wel nog erg beta, maar wel historische data (waar je vooraf moet opgeven over welke tijd de data getoond moet worden - bijv. laatste 24 uur).
  • Thinger.io, welke ook in beta is. Je koppelt via een API je Arduino aan Thinger en kunt via een dashboard je data tonen. Historische data gaat op basis van een X-aantal datapunten. Dus ook niet precies wat ik, maar in principe voldoende voor de toepassing.

Bij voorkeur zou ik dus een mooi en eenvoudig dashboard vinden dat gratis MySQL data toont: real-time en historisch waarbij gekozen kan worden voor een tijdsrange.

Greeninside schreef:Wil je de arduino een grafiek laten plotten en dit weergeven op een lcd schermpje of wil je de data importeren in bijvoorbeeld Excell en die de grafiek laten creëren? Dat 2de lijkt me iets eenvoudiger. Ook kan je prima met behulp van de sensoren een programmaatje schrijven om de warmtematten te schakelen.

Dat wat ik hierboven tikte dus ;)
Het schakelen kan ook inderdaad niet moeilijk zijn. Wanneer de temperatuur boven x-graden is, dan via een relais de warmtemat(ten) schakelen. Dus dat gaat wel lukken.

Re: Arduino + DHT11 = thermostaat en logger?

BerichtGeplaatst: di feb 23, 2016 9:29 am
door Victorus
Je moet in elk geval een warmtemat gebruiken die ongeschakeld een te hoge temperatuur bereikt. Ik gebruik zelf een niet-geschakelde warmtemat die binnenshuis de propagator op 26 graden verwarmt. Zelfs als die een graadje naar boven of beneden zou variëren dan is het nog niet de moeite om hem te schakelen. Maar goed, als je een thermostaat wilt programmeren dan heb je extra een transistor, een relais, een diode en een weerstand nodig en ook een temperatuur sensor. De sensor kan een goedkope NTC met serieweerstand zijn.

De NTC's varieren weliswaar niet lineair met de temperatuur maar je gebruikt maar een heel klein temperatuurbereik, dus varieert daar de weerstand redelijk lineair met de temperatuur. Gewoon de weerstand meten bij bijv. 25 en 30 graden en daar tussen de weerstand lineair veranderend veronderstellen. De meetfout is dan denk ik nog geen 1 %. De warmtemat moet wel een temperatuur van boven 30 graden bereiken anders valt er niets te schakelen. Je kan het beste laten kiemen bij omstreeks 27 graden.

Het loggen is eenvoudig. Je stuurt bijv. elk kwartier de temperatuur en de vochtigheid naar het geheugen en leest dat om de zoveel tijd uit. Als je bijhoudt hoe laat je begonnen bent met de meting dan kan je zelf te tijd van elke meting berekenen.

Re: Arduino + DHT11 = thermostaat en logger?

BerichtGeplaatst: di feb 23, 2016 10:46 am
door bartgrefte
barrymossel schreef:Bij voorkeur zou ik dus een mooi en eenvoudig dashboard vinden dat gratis MySQL data toont: real-time en historisch waarbij gekozen kan worden voor een tijdsrange.

Je zou iets met Highcharts kunnen proberen. Zie deze (enigszins gedateerde) howto: http://blueflame-software.com/using-hig ... and-mysql/ Je kan de howto wel volgen, maar hou er rekening mee dat Highcharts en MySQL sindsdien de nodige veranderingen hebben ondergaan en mogelijk niet alles exact zo moet als toen. Sommige commando's zijn mogelijk verandert/vervangen.

Highcharts kan grafieken zoals deze produceren op basis van een MySQL database:
Afbeelding
Tijd op de X-as, gemeten waarden op de Y-as.

Ik heb een webserver met MySQL en Highcharts op een Raspberry Pi draaien dat het stroomverbruik na elke ronde van de draaischijf in de kWh meter vastlegt en dan in grafiekjes zoals bovenstaande weergeeft.

Het is niet de meest makkelijke oplossing, maar als het eenmaal werkt, werkt het prima :)

Re: Arduino + DHT11 = thermostaat en logger?

BerichtGeplaatst: di feb 23, 2016 7:00 pm
door pieterbl
Xively is een van de meest simpele online oplossing voor jouw uitdaging (freeware). http://www.instructables.com/id/Arduino ... e-from-DS/

Verbind je Arduino met internet (ethernet shield of wifi shield) en zorg ervoor dat de data online wordt gestreamd naar Xively. De website zelf (je kan deze beveiligen zodat alleen jij deze kan bekijken) kun je gebruiken voor je real-time en historische data (ik geloof tot 3 maanden terug). Je hoeft je dan ieder geval niet druk te maken over plotten etc, Xively doet dat voor jou.

Tip: voeg een softwarematige "Hysteresis" toe om het overmatig aan-en-uitschakelen van het relais rond je setpoint te voorkomen:

    // warmen
    if (!warm_on && bodemtemp <= (tempSetpoint - 1))
     {
       digitalWrite(Relay_2, RELAY_ON);
       warm_on = true;
     }
     else if (warm_on && bodemtemp >= tempSetpoint)
     {
       digitalWrite(Relay_2, RELAY_OFF);
       warm_on = false;
    }

   }


Re: Arduino + DHT11 = thermostaat en logger?

BerichtGeplaatst: do feb 25, 2016 6:42 am
door Victorus
Een hysteresis programmeren heeft alleen maar zin als je cyclustijd klein is. Temperatuur en vochtigheid veranderen maar langzaam, dus als je een cyclustijd van zeg 10 minuten aanhoudt dan heeft hysteresis programmeren geen zin.

Arduino + DHT11 = thermostaat en logger?

BerichtGeplaatst: do feb 25, 2016 6:26 pm
door pieterbl
Victorus schreef:Een hysteresis programmeren heeft alleen maar zin als je cyclustijd klein is. Temperatuur en vochtigheid veranderen maar langzaam, dus als je een cyclustijd van zeg 10 minuten aanhoudt dan heeft hysteresis programmeren geen zin.


Je hebt op zich gelijk, toch is het ook afhankelijk van je sensorgevoeligheid en het verwarmingselement.

DHT-11 kan wanneer het rond een halve graad zit toch snel omflippen. Als je een zwaar verwarmingselement hebt is een cyclustijd van 10 min ook niet ideaal.

Kortom ik geef de voorkeur aan software intelligentie ;-)

Re: Arduino + DHT11 = thermostaat en logger?

BerichtGeplaatst: do feb 25, 2016 8:36 pm
door snx
Beter nu vijf minuten extra programmeren dan over 4 maand uren debuggen waarom hij niet doet wat je verwacht, omdat een sensor een beetje neiging tot "klapperen" krijgt. Als ik alle tijd terug krijg die ik ben verloren door programmeurs die denken "dat komt toch nooit voor" kan ik lekker lang op vakantie.