Connecting 2 Grove devices to Stalker 3.0

Okay, I’m trying to solve this and have been both reading post after post and wiki entry after entry and I’m nowhere still.

Here’s the thing. The Stalker (most versions) have two Grove connectors: 1 x I2C and 1 on D7/8. This is great because it means you really shouldn’t need a Grove shield if your project only has one or two Grove devices, like mine does.

On the I2C I have a Barometer. It was plug-and-play. The data came in, everything was perfect. Until I went to attach the DHT11 on the D7/8 Grove connector… which failed, or at least returns no useful data.

It comes down to the PIN

#define DHTPIN A0     // what pin we're connected to

The DHT test and lib uses A) which is the address of the A0 connector on a Grove shield, not the analog pin A0. The DHT11 is digital, but like all Arduino bases you can access an analog pin as a digital one by using its digital pin #. For which there seems to be zero documentation and it’s down to trial and error.

So, what I’m looking for is an answer as to how one uses the two built in Grove connectors on a Stalker without issues. I’ve got one (the barometer) working and I’d like be able to get dew-point / humidity from the DHT11 at the same time, optimally with no additional shields.

Ideas? Anyone?

The code I’m using is bog standard stuff. No funny business here.

[code]// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include “DHT.h”

#define DHTPIN A0 // what pin we’re connected to

// Uncomment whatever type you’re using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);
// NOTE: For working with a faster chip, like an Arduino Due or Teensy, you
// might need to increase the threshold for cycle counts considered a 1 or 0.
// You can do this by passing a 3rd parameter for this threshold. It’s a bit
// of fiddling to find the right value, but in general the faster the CPU the
// higher the value. The default for a 16mhz AVR is a value of 6. For an
// Arduino Due that runs at 84mhz a value of 30 works.
// Example to initialize DHT sensor for Arduino Due:
//DHT dht(DHTPIN, DHTTYPE, 30);

void setup() {
Serial.begin(9600);
Serial.println(“DHTxx test!”);

dht.begin();
}

void loop() {
// Wait a few seconds between measurements.
delay(2000);

// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds ‘old’ (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius
float t = dht.readTemperature();
// Read temperature as Fahrenheit
float f = dht.readTemperature(true);

// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(h);
Serial.println(t);
Serial.println(f);
Serial.println(“Failed to read from DHT sensor!”);
return;
}

// Compute heat index
// Must send in temp in Fahrenheit!
float hi = dht.computeHeatIndex(f, h);

Serial.print(“Humidity: “);
Serial.print(h);
Serial.print(” %\t”);
Serial.print(“Temperature: “);
Serial.print(t);
Serial.print(” *C “);
Serial.print(f);
Serial.print(” *F\t”);
Serial.print(“Heat index: “);
Serial.print(hi);
Serial.println(” *F”);
}
[/code]
Screen Shot 2015-01-04 at 12.58.10 PM.png

Are you using this DHTxx breakout: seeedstudio.com/wiki/Grove-_ … ity_Sensor so you can have a look at the first photo: You can see the pin connections: The order is
GND VCC NC SIG

NC means not connected and SIG is your signal, so the last pin is the signal pin. Compare this with the Grove connector on your picture: So the last pin of Stalker’s connector is D7! Use D7 as input pin for the DHT:

#define DHTPIN 7     // what pin we're connected to

Should work!

Hi, I’d tried 7 in a previous iteration, this is the result. I’d thought perhaps that the DHT11 was a dud, so I’ve tried three different ones, all result in the same issue.


  float h = dht.readHumidity();
  // Read temperature as Celsius
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit
  float f = dht.readTemperature(true);
  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(h);
    Serial.println(t);
    Serial.println(f);
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
DHT11 test result

nan
0.00
32.00

Failed to read from DHT sensor!

Be careful the type of sensor:

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"

#define DHTPIN A0     // what pin we're connected to

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11 
#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

Try this code first, may it can solve your problem.

Bty, the pins of digital 7 and digital 8 are both pointed on the stalker v3 from ATmega328.

Jacket

Hi,

I’d like to solve this soon since I have to complete the data logging and ship it to South America to be installed on the projects we’re working on in Honduras.

The DHT11 is still not working plugged into the D7/D8 port in the base Stalker 3.0 shield.
The DHTTYPE is DHT11, the DHTPIN is 7 the result is the same:

nan
0.00
32.00
Failed to read from DHT sensor!

What about this? Does the Stalker 3.0, which runs at 8Mhz need to have the threshold adjusted? I’ve already tried the following: 0 through 30 and the results are all over the map. No humidity reading at all and wildly incorrect temperature readings.

// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);
// NOTE: For working with a faster chip, like an Arduino Due or Teensy, you
// might need to increase the threshold for cycle counts considered a 1 or 0.
// You can do this by passing a 3rd parameter for this threshold.  It's a bit
// of fiddling to find the right value, but in general the faster the CPU the
// higher the value.  The default for a 16mhz AVR is a value of 6.  For an
// Arduino Due that runs at 84mhz a value of 30 works.
// Example to initialize DHT sensor for Arduino Due:
//DHT dht(DHTPIN, DHTTYPE, 30);

This is the exact testing code I’m using. I’ve tried the PHTPIN on A0, 7 and 8. I’ve tested with the DHTTYPE set to DHT11 and DHT22 (though I am using a DHT11) and oddly, the results are the same (see above).

I thought the idea with grove was near plus and play (or close). The barometer I’m using (plugged into the 12C port) works perfectly (mind you, it’s different).

Interestingly enough I tested the DHT11 on the 12C port… it doesn’t work there either. I’ve also tested 3 different DHT11 units on the stalker 3 base shield, none work and there are still no usable results.

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"

#define DHTPIN 7    // what pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11 
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);
// NOTE: For working with a faster chip, like an Arduino Due or Teensy, you
// might need to increase the threshold for cycle counts considered a 1 or 0.
// You can do this by passing a 3rd parameter for this threshold.  It's a bit
// of fiddling to find the right value, but in general the faster the CPU the
// higher the value.  The default for a 16mhz AVR is a value of 6.  For an
// Arduino Due that runs at 84mhz a value of 30 works.
// Example to initialize DHT sensor for Arduino Due:
//DHT dht(DHTPIN, DHTTYPE, 30);

void setup() {
  Serial.begin(9600); 
  Serial.println("DHTxx test!");
 
  dht.begin();
}

void loop() {
  // Wait a few seconds between measurements.
  delay(2000);

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit
  float f = dht.readTemperature(true);
  
  // Check if any reads failed and exit early (to try again).
  //if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(h);
    Serial.println(t);
    Serial.println(f);
    Serial.println("Failed to read from DHT sensor!");
    return;
  //}

  // Compute heat index
  // Must send in temp in Fahrenheit!
  float hi = dht.computeHeatIndex(f, h);

  Serial.print("Humidity: "); 
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: "); 
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Heat index: ");
  Serial.print(hi);
  Serial.println(" *F");
}

Yes you’re right, now it can’t work with Stalker v3 due to 8Mhz crystal oscillator. But it may work if modifying the libraries. We’ll have a try.

Bty, stalker has a function of temp testing, didn’t you use it?

Jacket

Hi,

I can get temp off the stalker unit, but the temp I need is more accurate when I take it from the grove device since it’s external to the main waterproof case.

Let me know how the library modifications work out.

Byron

We found a libraries for DH11 used on the stalker, it’s useful. Have a try, good luck.

Jacket
Grove_Temperature_Humidity_sensor.rar (6.95 KB)

Perfection! This library works 100%.
Many thanks!

Might be a good idea to replace the lib. in the wiki with this one!

Byron

The temp off the stalker unit, but the temp I need is more accurate when I take it from the grove device since it’s external to the main waterproof case.

You’re right, the temp is always better from an external device since the case is waterproof. I use external DHT-11/22 sensors for that reason.

The new files (in the .rar file in Jacket’s reply) solve the issue with the DHT devices.

B

Yes, we would pay attention to the accurate and low consumption on the next version of Stalker. Thanks for your attention.

Jacket