nodo-domotica.nl

Dallas sensoren uitlezen

Alles over sensoren en meten met de Nodo

Dallas sensoren uitlezen

Berichtdoor rtenklooster » 03 okt 2012, 21:01

Hallo,
Ik heb een ruwe userplugin gemaakt om dallas sensoren DS1820 DS18S20 en DS18B20 uit te lezen en periodiek naar de webapp te sturen.

Het is gemaakt voor op een mini nodo met enkel een RF zender. Zo kan het dus een goedkoop zendertje worden. Ik heb zelf een printje met een atmega 328 en een cheap 1,50 euro zendertje.
Deze leest 3 onewire sensoren uit en stuurt de waarden iedere minuut naar de webapp.

Ik controleer niet of de waarden overkomen aangezien het geen kritiek systeem is.

De code is misschien niet netjes of weet ik het wat. Ik ben dan ook geen C++ kenner / ik hobby wat. Toch werkt het nu uitstekend.

Het is ook betrekkelijk klein, 2246 bytes. Er is dus nog ruimte genoeg over voor andere toepassingen.
De uitlezing heeft wel een delay van 200 miliseconden. Dit is voor mij geen probleem omdat deze mini zelf niets doet behalve iedere minuut de temperatuur verzenden.

Mocht iemand er belang bij hebben... dit is de code.

Code: Selecteer alles
#if USER_PLUGIN

 /*********************************************************************************************\
 * Auteur       :  Richard ten Klooster
 * Plugin naam  :  Dallas
 * Datum        :  03-10-2012
 * Versie       :  1
 * Nodo versie  :
 * Doel         :
 * Beschrijving :  Periodiek kan met deze plugin de temperatuur (deg C) verstuurd worden als
                   variabele naar de webapp. Hier is enkel een atmega 328 + RF zenden voor nodig.

 \*********************************************************************************************/

 /*********************************************************************************************\
 * Dit deel van de plugin wordt eenmalig aangeroepen direct na boot en tonen welkomsttekst
 \*********************************************************************************************/
// De benodigde libary.
#include <OneWire.h>
// digitale poort 7
OneWire  ow(7);

void UserPlugin_Init(void)
  {

  }

void writeTimeToScratchpad(byte* address){
  ow.reset();
  ow.select(address);
  ow.write(0x44,1);
  delay(500);
}
 
void readTimeFromScratchpad(byte* address, byte* data){
  ow.reset();
  ow.select(address);
  ow.write(0xBE);
  for (byte i=0;i<9;i++){
    data[i] = ow.read();
  }
}

float getTemperature(byte* address){
  int tr;
  byte data[12];
  writeTimeToScratchpad(address);
  readTimeFromScratchpad(address,data);
  tr = data[0];
  if (data[1] > 0x80){
    tr = !tr + 1; //two's complement adjustment
    tr = tr * -1; //flip value negative.
  }
  int cpc = data[7];
  int cr = data[6];
  tr = tr >> 1;
  return tr - (float)0.25 + (cpc - cr)/(float)cpc;
}

void UserPlugin_Command(int Par1, int Par2)
  {
 
  }



boolean UserPlugin_Receive(unsigned long Event)
  {
  return true;
  }
 
void UserPlugin_Periodically()
  {
  // Definieer hier de device addresses van de diverse dallas sensoren.
  byte sensor1[8] = { 0x10, 0x5D, 0xF8, 0x30, 0x02, 0x08, 0x00, 0x76 };
  byte sensor2[8] = { 0x28, 0x28, 0xF0, 0xC9, 0x03, 0x00, 0x00, 0xE1 };
  byte sensor3[8] = { 0x10, 0x94, 0xF9, 0x30, 0x02, 0x08, 0x00, 0xB2 };
 // byte sensor4[8] = { 0x10, 0xD9, 0xF8, 0x30, 0x02, 0x08, 0x00, 0x40 };
 // byte sensor5[8] = { 0x10, 0x09, 0xBF, 0x30, 0x02, 0x08, 0x00, 0x3C };
 // byte sensor6[8] = { 0x10, 0x7F, 0xDC, 0x30, 0x02, 0x08, 0x00, 0x49 };
 
  static int Secondenteller=0; // static, dan blijft deze bewaard na verlaten van deze routine

  Secondenteller = Secondenteller +1;
  if(Secondenteller==60)
   {
    float tmp1 = getTemperature(sensor1);
    float tmp2 = getTemperature(sensor2);
    float tmp3 = getTemperature(sensor3);
    Nodo_2_RawSignal(AnalogInt2event(tmp1 * 100 , 1, CMD_VARIABLE_EVENT));
    RawSendRF();
    delay(500);
    Nodo_2_RawSignal(AnalogInt2event(tmp2 * 100 , 2, CMD_VARIABLE_EVENT));
    RawSendRF();
    delay(500);
    Nodo_2_RawSignal(AnalogInt2event(tmp3 * 100 , 3, CMD_VARIABLE_EVENT));
    RawSendRF();
    delay(500);
    Secondenteller=0;
   }
// 
  return;
  }
#endif 
rtenklooster
 
Berichten: 377
Geregistreerd: 04 aug 2012, 12:10
Woonplaats: Aduard

Re: Dallas sensoren uitlezen

Berichtdoor mvdbro » 05 okt 2012, 16:58

Hallo Richard,

Ik heb er zelf nog geen onderzoek naar gedaan, maar het is wellicht een welkome uitbreiding van de Nodo functionaliteiten. Er zijn al enkele gebruikers van een one-wire device (DHT11) maar ik weet niet of het one-wire protocol volgens een globale standaard is doorgevoerd net zoals b.v. I2C.

Zijn die chips goed verkrijgbaar en betaalbaar (subjectief begrip natuurlijk...)

gr
Martinus
mvdbro
 
Berichten: 1092
Geregistreerd: 21 okt 2011, 12:06

Re: Dallas sensoren uitlezen

Berichtdoor rtenklooster » 05 okt 2012, 20:07

Hoi, ze zijn prima verkrijgbaar. 1,50 per stuk op eBay. Van -30 tot +150 graden doen ze volgens mij met 1 tiende precisie.
Zijn gekalibreerd en maar 1 poort nodig. Lm35 is erg afhankelijk van kabellengte. Ik heb meerdere onewire sensoren op kabel van 10 meter en langer. Werkt super.
Er is een iets uitgebreidere Dallas libary dan kun je de resolutie ook instellen maar deze neemt meer ruimte in. Past net...

Heb geen ervaring met andere onewire devices. ik heb deze sensoren nu al een jaar in gebruik. Ze zijn goed, snel en betrouwbaar.

Mijns inziens ook een mooie aanvulling op dit project.
rtenklooster
 
Berichten: 377
Geregistreerd: 04 aug 2012, 12:10
Woonplaats: Aduard

Re: Dallas sensoren uitlezen

Berichtdoor DrEnergy » 22 okt 2012, 20:10

Ah super, heb hier nog een zooitje DS18 sensoren liggen. Ik ga het weekend eens testen hoe het werkt. Ik wil 1 lange kabel maken en daar meerdere sensoren aan vast maken zodat ik meerdere ruimtes kan controleren.

btw op de website van Dallas kan je ze gratis bestellen ;), gewoon een sample aanvragen, volgens mij kan je er maximaal 4, maar als je er bij je comment bij set dat het voor een zelfbouw project is kan je er meerdere vragen. Heb ik ook gedaan en kreeg er 10 opgestuurd voor noppes ;)
DrEnergy
 
Berichten: 145
Geregistreerd: 04 jan 2012, 09:09
Woonplaats: Dordrecht

Re: Dallas sensoren uitlezen

Berichtdoor frankythys » 25 nov 2012, 20:44

Hi,


Hoe kan ik deze laten werken op de hoofd nodo mega met ethernet kan je een voorbeeld geven hoe ik dit moet instellen op de web app a.u.b. :)
frankythys
 
Berichten: 56
Geregistreerd: 16 nov 2012, 21:50

Re: Dallas sensoren uitlezen

Berichtdoor Paul » 25 nov 2012, 22:26

De definitieve release zal standaard de Dallas temperatuursensoren DS1820 en DS18B20 ondersteunen. ;)
Groeten Paul
Paul
 
Berichten: 1152
Geregistreerd: 31 aug 2011, 20:33

Re: Dallas sensoren uitlezen

Berichtdoor frankythys » 26 nov 2012, 19:55

Bedankt Paul
Ik kijk er al naar uit naar de definitieve release :P .
frankythys
 
Berichten: 56
Geregistreerd: 16 nov 2012, 21:50

Re: Dallas sensoren uitlezen

Berichtdoor manjh » 01 dec 2012, 15:47

Tip voor wie nog een waterdichte Dallas DS18B20 sensor zoekt....

2012-12-01 15.31.22.jpg
waterdichte Dallas DS18B20


Te koop bij de verzend-Chinees.
Bestelnummer is 142889, prijs $4,70, inclusief verzenden. Hou wel rekenening met een week of vier voordat hij bij jou op de mat ploft.

Edit: voor wie nog niet is ingevoerd in het jargon: de verzend-Chinees is dx.com, vroeger bekend als DealExtreme. En nee: ik heb geen enkel zakelijk belang...
Hans
manjh
 
Berichten: 1173
Geregistreerd: 29 aug 2011, 14:39

Re: Dallas sensoren uitlezen

Berichtdoor Paul » 02 dec 2012, 17:48

manjh schreef:Tip voor wie nog een waterdichte Dallas DS18B20 sensor zoekt....

2012-12-01 15.31.22.jpg


Te koop bij de verzend-Chinees.
Bestelnummer is 142889, prijs $4,70, inclusief verzenden. Hou wel rekenening met een week of vier voordat hij bij jou op de mat ploft.

Edit: voor wie nog niet is ingevoerd in het jargon: de verzend-Chinees is dx.com, vroeger bekend als DealExtreme. En nee: ik heb geen enkel zakelijk belang...

Staat bij bij zoals alles bij DX in back-order. :(
Groeten Paul
Paul
 
Berichten: 1152
Geregistreerd: 31 aug 2011, 20:33

Re: Dallas sensoren uitlezen

Berichtdoor markuser » 02 dec 2012, 19:58

Hier ook te bestellen, http://www.ebay.nl/itm/High-Quality-Wat ... 2c68df2bca

Nog geen 1,70 inc verzendkosten.


Mark
Mvg, Mark

4 Unit's met ethernet. Nodo-Mega V3.7, Product=SWACNC-MEGA-R744
Devices: Diverse Kaku's, DS18b20, DHT11, LCD, WS3500, CNY70, BPW40, LDR, Watersensor, Slimme meter kaifa MA304, RFLink, Raspberry PI, Domoticz Eigenbouw behuizing
Gebruikers-avatar
markuser
 
Berichten: 497
Geregistreerd: 29 feb 2012, 13:19

Volgende

Keer terug naar Sensoren

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers. en 1 gast

cron