Sensore umidità/temperatura AM2315 in bus

Salve ragazzi, possiedo dei sensori Am2315 e siccome devo metterli all’interno di alcune serre, anzichè collegarle ognuno con 4 fili, vorrei sfruttare la tecnologia one wire in modo tale da sfruttare scl sda come linee di bus per tutti i sensori e 5v e gnd come alimentazione. scaricando la libreria del sonsore ovviamente sono riuscito a farlo funzionare da solo, ma dal momento che vorrei creare lo sketch per farli funzionare in bus, nn so da dove cominciare…inoltre come faccio a trovare il codice identificativo di ogni sensore? help me. grazie… vi posto lo sketch di test del sonsore:

#include <Wire.h>
#include <Adafruit_AM2315.h>

/*************************************************** 
  This is an example for the AM2315 Humidity + Temp sensor

  Designed specifically to work with the Adafruit BMP085 Breakout 
  ----> https://www.adafruit.com/products/1293

  These displays use I2C to communicate, 2 pins are required to  
  interface
  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************/

// Connect RED of the AM2315 sensor to 5.0V
// Connect BLACK to Ground
// Connect WHITE to i2c clock - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 5
// Connect YELLOW to i2c data - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 4

Adafruit_AM2315 am2315;

void setup() {
  Serial.begin(9600);
  Serial.println("AM2315 Test!");

  if (! am2315.begin()) {
     Serial.println("Sensor not found, check wiring & pullups!");
     while (1);
  }
}

void loop() {
  Serial.print("Hum: "); Serial.println(am2315.readHumidity());
  Serial.print("Temp: "); Serial.println(am2315.readTemperature());

  delay(1000);
}

Semplicemente NON puoi ...

... se ti studi il datasheet di quel sensore, alla pagina 9 (Communication I2C slave address) c'è chiaramente scritto che l'indirizzo I2C è fisso ed è 0xB8 e che quindi sul un bus I2C può esserci UN solo sensore AM2315.

Guglielmo

Una possibile alternativa è usare un multiplexer I2C ... ma il numero di cavi cresce mica male ... comunque, puoi leggere QUI.

Considera poi sempre il fatto che il bus I2C NON è fatto per lunghe distanze (max qualche decina di cm) altrimenti occorre anche usare degli externder ... ::slight_smile:

Guglielmo

innanzitutto grazie per la risposta Guglielmo. ho capito e infatti era quello che avevo intuito. io adesso ho questi due sensori xke li avevo presi per provarli...quindi in pratica 2 insieme nn posso nemmeno farli funzionare. o sbaglio?

No, non sbagli ...
... salvo appunto usare un multiplexer con il quale colleghi una volta l'uno, un'altra volta l'altro.

Guglielmo

grazie ancora guglielmo...e sapresti consigliarmi allora sensori di temperatura umidità che funzionano in bus? poi a limite metto un extender...in pratica a me andrebbe bene pure un sensore a 3 fili...come quelli che già ho montato:

questi sono diciamo buonini ma all'interno della serra dopo qualke mese si rompe la parte che misura l'umidità in quanto le serre sono umide ovviamente e quindi lui si blocca a 100& oppure slitta a 1%...mi serve un sensore buono..ma nn so cosa comprare...attualmente le serre stanno predisposte per sensori a 3 fili ogni serra..solo che a mano a mano si stanno rompendo tutti i sensori

... a che percentuale di umidità costante è sottoposto il sensore ?

Guglielmo

durante la giornata passa tra i 10% di giorno quando le serre sono al sole, ai 100% di umidità durante la notte...almeno l'attuale sensore questo misura