Go Down

Topic: [resolu] sht1x - humidité & temperature - nb de sonde possible sur mega (Read 2 times) previous topic - next topic

Artouste


merci du coup de main!
Si j' utilisait des sonde sht20 http://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/Humidity/Sensirion_Humidity_SHT20_Datasheet.pdf

celle ci me semble t'il on un adressage unique sur 7 bit . ( si j'ai tout compris...)


bonjour
ça ne change pas fondamentalement le probleme, les sht2x ayant une adresse I2C unique, par contre ça peu simplifier le coding pour faire du multiplex, puisque ce sont des vrais compo I2C , ça eviterait de jongler avec des protocoles differents en utilisant un MUX i2c.
Il y a un kit d'evaluation sur le site de sensirion le Evaluation Kit EK-H4 qui multiplex 4 compos.

attention aussi à une chose : le type de boitier : ce n'est evident à souder en DIY
sensirion produit une gamme avec un connecteur plus facile à interfacervoir par ex
http://www.sensirion.com/en/products/humidity-temperature/humidity-sensor-sht71/

ppzikos

#16
Jan 24, 2013, 07:11 am Last Edit: Jan 24, 2013, 06:58 pm by ppzikos Reason: 1
Merci
les sht 7x sont trop cher.

j'ai cru comprendre que l'on pouvait peut être faire en sorte de recréer des ic2 supplémentairement.
avec une librairie "soft i2c".
http://arduino.cc/forum/index.php?topic=99832.0
http://alxhou.wordpress.com/2012/07/01/multiple-sht21-softi2c/#more-4

Sinon , Je ne suis pas contre le mux mais je suis complétement larguer sur le type a utiliser et son utilisation .

Merci.
softi2c :http://rweather.github.com/arduinolibs/classSoftI2C.html

Mascime

Bonjours, j'ai un petit projet en vue, dans un premier temps, capter le poucentage d'humidité dans un pot de fleur. J'ai donc un arduino uno et j'ai acheté un capteur d'humidité GHI-00727. Je n'ai jamais programée ce genre de capteur, si quelqu'un s'y connais mieux que moi, je ne refuserais aucune aide ^^ (désolé si je ne suis pas trop "dans" le thème mais je suis nouveau sur ce forum et m'interresse a l'electronique)
PS: Pour plus d'info me demander, merci beaucoup.

hazerty565


Mascime


ppzikos

hazerty565 merci beaucoup , sur le site que tu donne http://bildr.org/2012/11/sht15-arduino/ il précise que le sht15 n'utilise pas le protocole i2c est qu'il est possible d'utiliser n'importe quel pin ( digital ) de l'arduino pour la communication. de plus le code fourni sur le site permet de rajouter facilement plusieurs sht15 car il est bien détaillé.
que du bonheur , dommage je me suis tournée vers autre chose comme sonde!!! lool . enfin l'info est la .

Code: [Select]
//Based of the wiring code at http://wiring.org.co/learning/basics/humiditytemperaturesht15.html

int SHT_clockPin = 3;  // pin used for clock
int SHT_dataPin  = 2;  // pin used for data

void setup(){
  Serial.begin(9600); // open serial at 9600 bps
}

void loop(){
  //these can take a bit to get the values (100ms or so)
  float temperature = getTemperature();
  float humidity = getHumidity();

  Serial.print(temperature);
  Serial.print(" | ");
  Serial.println(humidity);

}






float getTemperature(){
  //Return Temperature in Celsius
  SHT_sendCommand(B00000011, SHT_dataPin, SHT_clockPin);
  SHT_waitForResult(SHT_dataPin);

  int val = SHT_getData(SHT_dataPin, SHT_clockPin);
  SHT_skipCrc(SHT_dataPin, SHT_clockPin);
  return (float)val * 0.01 - 40; //convert to celsius
}

float getHumidity(){
  //Return  Relative Humidity
  SHT_sendCommand(B00000101, SHT_dataPin, SHT_clockPin);
  SHT_waitForResult(SHT_dataPin);
  int val = SHT_getData(SHT_dataPin, SHT_clockPin);
  SHT_skipCrc(SHT_dataPin, SHT_clockPin);
  return -4.0 + 0.0405 * val + -0.0000028 * val * val;
}


void SHT_sendCommand(int command, int dataPin, int clockPin){
  // send a command to the SHTx sensor
  // transmission start
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  digitalWrite(dataPin, HIGH);
  digitalWrite(clockPin, HIGH);
  digitalWrite(dataPin, LOW);
  digitalWrite(clockPin, LOW);
  digitalWrite(clockPin, HIGH);
  digitalWrite(dataPin, HIGH);
  digitalWrite(clockPin, LOW);

  // shift out the command (the 3 MSB are address and must be 000, the last 5 bits are the command)
  shiftOut(dataPin, clockPin, MSBFIRST, command);

  // verify we get the right ACK
  digitalWrite(clockPin, HIGH);
  pinMode(dataPin, INPUT);

  if (digitalRead(dataPin)) Serial.println("ACK error 0");
  digitalWrite(clockPin, LOW);
  if (!digitalRead(dataPin)) Serial.println("ACK error 1");
}


void SHT_waitForResult(int dataPin){
  // wait for the SHTx answer
  pinMode(dataPin, INPUT);

  int ack; //acknowledgement

  //need to wait up to 2 seconds for the value
  for (int i = 0; i < 1000; ++i){
    delay(2);
    ack = digitalRead(dataPin);
    if (ack == LOW) break;
  }

  if (ack == HIGH) Serial.println("ACK error 2");
}

int SHT_getData(int dataPin, int clockPin){
  // get data from the SHTx sensor

  // get the MSB (most significant bits)
  pinMode(dataPin, INPUT);
  pinMode(clockPin, OUTPUT);
  byte MSB = shiftIn(dataPin, clockPin, MSBFIRST);

  // send the required ACK
  pinMode(dataPin, OUTPUT);
  digitalWrite(dataPin, HIGH);
  digitalWrite(dataPin, LOW);
  digitalWrite(clockPin, HIGH);
  digitalWrite(clockPin, LOW);

  // get the LSB (less significant bits)
  pinMode(dataPin, INPUT);
  byte LSB = shiftIn(dataPin, clockPin, MSBFIRST);
  return ((MSB << 8) | LSB); //combine bits
}

void SHT_skipCrc(int dataPin, int clockPin){
  // skip CRC data from the SHTx sensor
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  digitalWrite(dataPin, HIGH);
  digitalWrite(clockPin, HIGH);
  digitalWrite(clockPin, LOW);
}

Mascime

Je n'ai toujours pas réussi à m'y mettre, je trouve cela assez compliqué ^^

Go Up
 

Quick Reply

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Note: this post will not display until it's been approved by a moderator.
Name:
Email:

shortcuts: alt+s submit/post or alt+p preview