Netduino home hardware projects downloads community

Jump to content

The Netduino forums have been replaced by new forums at This site has been preserved for archival purposes only and the ability to make new accounts or posts has been turned off.


Member Since 01 Mar 2014
Offline Last Active Jun 10 2014 02:38 PM

Posts I've Made

In Topic: DHT11/22 sensor managed driver

10 June 2014 - 02:20 PM

Hi stewlf, how is it working with wendo's suggestion? Do you still get timeouts or 32F/0 humidity values? how often do you read from the sensor?


I am not going to be trying his code any time soon; my relevant Netduino project is installed and functioning adequately, and I'm not inclined to take it apart right now:




To answer your question, after startup, I read from the sensor about once every 1-2 minutes.

In Topic: How hard can I expect to lean on network activity for Netduino Plus 2? (Sampl...

01 April 2014 - 04:51 AM

Cleaning up loose ends, here's the outcome of this project:



In Topic: How hard can I expect to lean on network activity for Netduino Plus 2? (Sampl...

14 March 2014 - 10:55 PM

I have no idea about your question, but integrating a netduino into Nagios monitoring is something that never even crossed my mind, but opens up so may possibilities with environment monitoring it's awesome!



I totally agree. You need to have something of a Nagios-centric perspective already to embrace it, but I am hoping others will find it useful too. I just couldn't bear to pay hundreds of pounds/dollars for a flood monitor for Nagios:





Also, your wiring image has the wrong devices on the end of each set of wires, it's the DHT22 that needs multiple pins, not the water contact



Crumbs. I did that late at night. I will revise before "final" publication, and this time I'll use different colors for the wires.


In the meantime, I'm seeing several others suggesting that the Netduino network stack is inherently somewhat unreliable:




In Topic: DHT11/22 sensor managed driver

09 March 2014 - 12:09 AM

I was getting the
DHT sensor Read() ok, RH = 0.0%, Temp = 0.0C 32.0F
behavior with my DHT22 and a Netduino Plus 2 until I disconnected and reconnected a pin. Then I tried Fred Werneck's previous suggestion and changed DhtSensor.cs's Read() function to this:

        public bool Read()
            if (disposed)
                throw new ObjectDisposedException();
            // The 'bitMask' also serves as edge counter: data bit edges plus
            // extra ones at the beginning of the communication (presence pulse).
            bitMask = 1L << 41;

            data = 0;
            // lastTicks = 0; // This is not really needed, we measure duration
            // between edges and the first three values are ignored anyway.

            // Initiate communication
            portOut.Active = true;
            portOut.Write(false);       // Pull bus low
            portIn.EnableInterrupt();   // Turn on the receiver
            portOut.Active = false;     // Release bus

            bool dataValid = false;

            // Now the interrupt handler is getting called on each falling edge.
            // The communication takes up to 5 ms, but the interrupt handler managed
            // code takes longer to execute than is the duration of sensor pulse
            // (interrupts are queued), so we must wait for the last one to finish
            // and signal completion. 20 ms should be enough, 50 ms is safe.
            if (dataReceived.WaitOne(50, false))
                // TODO: Use two short-s ?
                bytes[0] = (byte)((data >> 32) & 0xFF);
                bytes[1] = (byte)((data >> 24) & 0xFF);
                bytes[2] = (byte)((data >> 16) & 0xFF);
                bytes[3] = (byte)((data >> 8) & 0xFF);

                byte checksum = (byte)(bytes[0] + bytes[1] + bytes[2] + bytes[3]);
                if (checksum == (byte)(data & 0xFF))
                    dataValid = true;
                    if (bytes[0] == 0)
                    Debug.Print("DHT sensor data has invalid checksum.");
                portIn.DisableInterrupt();  // Stop receiver
                Debug.Print("DHT sensor data timeout.");  // TODO: TimeoutException?
            return dataValid;

Now I get this when the demo app starts up:


DHT sensor data timeout.
DHT sensor Read() ok, RH = 0.0%, Temp = 0.0C 32.0F
DHT sensor Read() ok, RH = 53.2%, Temp = 24.2C 75.6F
DHT sensor Read() ok, RH = 53.0%, Temp = 24.2C 75.6F
DHT sensor Read() ok, RH = 52.9%, Temp = 24.2C 75.6F
DHT sensor Read() ok, RH = 52.9%, Temp = 24.2C 75.6F
DHT sensor Read() ok, RH = 52.8%, Temp = 24.2C 75.6F


A timeout, one bad read, and then good ones from that point forward. I'm sure with a bit of work we could eliminate that first bad read as well, I haven't tried yet.


To save someone else time, I'm attaching my working project. I'm targeting the 4.3 framework successfully in it.

home    hardware    projects    downloads    community    where to buy    contact Copyright © 2016 Wilderness Labs Inc.  |  Legal   |   CC BY-SA
This webpage is licensed under a Creative Commons Attribution-ShareAlike License.