Lettura di 2 sensori SHT10 (temperatura e umidità) con lo stesso arduino

Buongiorno a tutti, avrei la necessità di collegare 2 sensore SHT10 che rilevano temperatura ed umidità sulla stessa scheda arduino. Di seguito l'esempio base del codice per un sensore. Con un sensore tutto ok, rileva perfettamente.
Per usare un secondo sensore mi basta assegnare un altro ingresso PWM es #define dataPin2 5 e utilizzare lo stesso clock e quindi definire anche SHT1x sht1x(dataPin2, clockPin); ?
Ho provato in questo modo ma non funziona. C'è qualcuno che ha avuto a che fare con più sensori di questo tipo?

Grazie mille

/**
 * ReadSHT1xValues
 *
 * Read temperature and humidity values from an SHT1x-series (SHT10,
 * SHT11, SHT15) sensor.
 *
 * Copyright 2009 Jonathan Oxer <jon@oxer.com.au>
 * www.practicalarduino.com
 */
 
#include <SHT1x.h>
 
// Specify data and clock connections and instantiate SHT1x object
#define dataPin  10
#define clockPin 11
SHT1x sht1x(dataPin, clockPin);
 
void setup()
{
   Serial.begin(38400); // Open serial connection to report values to host
   Serial.println("Starting up");
}
 
void loop()
{
  float temp_c;
  float temp_f;
  float humidity;
 
  // Read values from the sensor
  temp_c = sht1x.readTemperatureC();
  temp_f = sht1x.readTemperatureF();
  humidity = sht1x.readHumidity();
 
  // Print the values to the serial port
  Serial.print("Temperature: ");
  Serial.print(temp_c, DEC);
  Serial.print("C / ");
  Serial.print(temp_f, DEC);
  Serial.print("F. Humidity: ");
  Serial.print(humidity);
  Serial.println("%");
 
  delay(2000);
}

Buongiorno, :slight_smile:
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

Buonasera Guglielmo, non sono nuovo in realtà ero registrato con Nick ankamacha ma ho provato in tutti i modi ad accedere con le mie credenziali ma non ci sono riuscito. In effetti è qualche annetto che non posto più niente ma a suo tempo ho pubblicato un po' di post relativi a monitoraggio con interrupt del contatore Enel e fotovoltaico, stazione meteo, bilancia con cella di carico. Questi sono i miei principali progetti realizzati. Sono perito elettronico con la passione per l' informatica. Ora sto ultimando un progetto che va a monitorare peso, temperatura e umidità interna di un alveare, temperatura e umidità esterna. Il tutto inviato tramite get su server mysql con grafici e dati visualizzabili da sito internet in modo testuale e grafico usando i chart di Google molto validi. Mi sono imbattuto in questo sensore Sht10che preso singolarmente non mi dà problemi infatti riesco a visualizzare i dati ma ora con 2 sulla stessa scheda non riesco a farlo andare. Dicono non sia compatibile con i2c ho provato a guardare dappertutto in internet ma non ho trovato nulla. Grazie mille a chi mi saprà aiutare.

Capisco, ma ... come da regolamento la presentazione la devi fare nell'apposito thread (come ti ho ben indicato), NON qui dove scompare in breve tempo. Grazie.

Guglielmo

Buongiorno Guglielmo, ho inviato la presentazione nello spazio corretto, ora va bene? Grazie mille

Perfetto, grazie ! :slight_smile:

Guglielmo

Sto cercando in ogni parte del globo qualcuno che sappia se è fattibile configurare 2 sensori SHT10 sulla stessa scheda ARDUINO YUN. Questi sensori non dispongono di interfaccia I2C. Ci sarà un modo ?
Se quella volta acquistavo gli SHT30 con la loro bella interfaccia I2C pulita, mannaggia!!! :slight_smile:

Grazie a chi saprà dirmi se la cosa è fattibile altrimenti ripiegherò sugli SHT30.

Buona serata

fragolebio

Mah, guardando la LIBRERIA sembrerebbe che basti istanziare due volte il costruttore con due nomi differenti e due set di pin differenti ... ::slight_smile:

Del tipo ...

...
SHT1x sht1x(dataPin1, clockPin1);
SHT1x sht2x(dataPin2, clockPin2);
...

... da provare e vedere se funziona.

Guglielmo

Grazie Guglielmo, quindi provo ad usare 4 ingressi PWM es, 10 per il dato 11 per il clock del primo sensore e poi 5 per il dato e 6 per il clock del secondo? Ti farò sapere. Devo andare ad installare lo sketch su arduino posto in una centralina in un parco con i sensori già fissati .

Grazie ancora

//    -------------------------
#include <SHT1x.h>

// Specify data and clock connections and instantiate SHT1x object
#define dataPin  10  // rileva la temperatura e l'umidità sull ' ingresso PWM 10 del secondo sensore ( ci va messa una resistenza da 10 Kohm tra VCC e pin 10)
#define clockPin 11  // clock PWM

#define dataPin2 5  // rileva la temperatura sull ' ingresso PWM 9 del secondo sensore ( ci va messa una resistenza da 10 Kohm tra VCC e pin 9)
#define clockPin2 6 // clock PWM


SHT1x sht1x(dataPin, clockPin);  //libreria che va a definire il sensore di temperatura e umidità 1

SHT1x sht2x(dataPin2, clockPin2); //libreria che va a definire il sensore di temperatura e umidità 2

NON mi sembra che sia richiesto che i pin di clock siano PWM (che è tutt'altra cosa) ...
... se ho visto bene fa tutto in bit banging ... ::slight_smile:

Guglielmo

Grazie Guglielmo, i 2 sensori ora rilevano in contemporanea i dati di temperatura e umidità.

Posto di seguito lo sketch base completo funzionante nel caso a qualcuno potesse fare comodo.

//Collegamento di 2 sensori digitali di temperatura e umidità SHT 10

#include <SHT1x.h>

// definisco i pin di collegamento per data e ck

//Sensore 1

#define dataPin  6
#define clockPin 5

// Sensore 2

#define dataPin2  10
#define clockPin2 11



SHT1x sht1x(dataPin, clockPin);
SHT1x sht2x(dataPin2, clockPin2);


void setup()
{
   Serial.begin(38400); // apro la seriale
   Serial.println("Starting up");
}

void loop()
{
  float temp_c;
  float temp_f;
  float humidity;

  float temp_c2;
  float temp_f2;
  float humidity2; 



  

  // leggo i valori dei 2 sensori
  temp_c = sht1x.readTemperatureC();
  temp_f = sht1x.readTemperatureF();
  humidity = sht1x.readHumidity();

  temp_c2 = sht2x.readTemperatureC();
  temp_f2 = sht2x.readTemperatureF();
  humidity2 = sht2x.readHumidity();


  // stampo i valori
  Serial.print("Temperature: ");
  Serial.print(temp_c, DEC);
  Serial.print("C / ");
  Serial.print(temp_f, DEC);
  Serial.print("F. Humidity: ");
  Serial.print(humidity);
  Serial.println("%");

  Serial.print("Temperature: ");
  Serial.print(temp_c2, DEC);
  Serial.print("C / ");
  Serial.print(temp_f2, DEC);
  Serial.print("F. Humidity: ");
  Serial.print(humidity2);
  Serial.println("%");

  delay(2000);
}