ultimo aggiornamento 27 maggio 2013


 

Per utilizzare il sensore Sensirion SHT11 (per le caratteristiche vedere questa pagina)  con la scheda Arduino occorre seguire gli schemi sotto riportati.
Sono disponibili schemi di collegamento e programmi per mostrare i dati misurati sia nella finestra de monitor seriale per cui con la scheda Arduino connessa al PC, oppure mostrati su un display LCD con la scheda Arduino e sensore autonomi.   Le versioni dei programmi sono realizzati sia per la versione dell'IDE versione 0023 che per la 1.0.X.

1) Visualizzazione su monitor seriale, versione IDE 1.0.X - scheda Arduino UNO
2) Visualizzazione su display LCD versione IDE 1.0.X - scheda Arduino UNO
3) Visualizzazione su monitor seriale, versione IDE 0023 - scheda Arduino NANO
2) Visualizzazione su display LCD seriale versione IDE 0023 - scheda Arduino NANO

 

 

 

 

homotix

PCBA

Libreria per lettura sensore

I programmi utilizzano per semplificare la lettura del sensore la libreria che può essere scaricata all'indirizzo https://github.com/practicalarduino/SHT1x scritta da Jonathan Oxer

Libreria per il sensore SHT1x temperatura/umidità  per Arduino scritta daJ onathan Oxer e Maurice Ribble

La libreria fornisce una semplice interfaccia per i sensori di temperatura / umidità prodotti dalla Sensirio serie SHT1x (SHT10, SHT11, SHT15) e serie SHT7x (SHT71, SHT75).
Questi sensori utilizzano un bus di comunicazioni "2-wire" che è simile a I2C e possono coesistere sullo stesso cavo fisico come dispositivi I2C.

Installazione
Scaricare la directory "SHT1x" e spostarlo nella cartella "librerie" dentro la directory di lavoro del programma, quindi riavviare l'IDE di Arduino. La libreria si vedrà, quindi, sotto l'elenco File-> Esempi-> SHT1x.

Utilizzo
La libreria viene utilizzata come un oggetto con comandi per leggere umidità relativa e temperatura. Occorre Includerla nel vostro
sketch e quindi creare un oggetto, specificando i pin da utilizzare per la comunicazione con il sensore:

#include <SHT1x.h>
#define dataPin  10
#define clockPin 11
SHT1x sht1x(dataPin, clockPin);

È quindi possibile richiamare i comandi  all'interno del programma. Nell'esempio è stato creato un oggetto chiamato "SHT1x", ma avrebbe potuto essere chiamato anche in altri modi. Un programma completo di esempio è incluso con la biblioteca e si può accedere da File-> Esempi-> Menu SHT1x.

readTemperatureC ()
Restituisce un valore float all'interno del campo valido del sensore di -40 a 123,8 C. Un valore di -40 viene restituito in caso di errore di comunicazione con il sensore.

Esempio:
 

  float temp_c = sht1x.readTemperatureC();

readTemperatureF ()
Restituisce un valore float all'interno del campo valido del sensore di -40 a 254,9 F. Un valore di -40 viene restituito in caso di errore di comunicazione con il sensore.

Esempio:

  float temp_f = sht1x.readTemperatureF();

readHumidity ()
Restituisce un valore float all'interno del campo valido del sensore da 0 a 100%. Un valore negativo viene restituito in caso di errore di comunicazione con il sensore.

Esempio:

  float humidity = sht1x.readHumidity();



Programma di test versione IDE 1.0.X - lettura con monitor seriale

Programma di test con lettura dei dati tramite monitor seriale, verificare che la velocità della posta sia settata a 38400 baud, la versione del programma è per la versione dell'IDE 1.0.4, necessita della nuova versione di libreria scaricabile da  https://github.com/practicalarduino/SHT1x


Scarica programma

Listato del programma

#include <SHT1x.h>

// Specifica i pin a cui è collegato il sensore 
#define dataPin  10
#define clockPin 11
SHT1x sht1x(dataPin, clockPin);

void setup()
{
   Serial.begin(38400);
// Apertura della connessione seriale per la trasmisione dei dati
   Serial.println("Avvio della misura....");
   delay (1000);
}

void loop()
{

  // Lettura dei valori dal sensore
  float temp_c = sht1x.readTemperatureC();
  float humidity = sht1x.readHumidity();

  // Scrive i valori sul monitor seriale 
  Serial.print("Temperatura: ");
  Serial.print(temp_c,1);
  Serial.print(" C / ");
  Serial.print("Umidita': ");
  Serial.print(humidity, 1);
  Serial.println("%");

  delay(2000); //Intervallo di misura

Programma di test versione IDE 1.0.X - lettura con display LCD

Programma di test con lettura dei dati tramite LCD, il display è connesso utilizzando una mini scheda, la ci descrizione è presente in questa pagina.
 

 

Collegamento LCD  con scheda Arduino

Funzione LCD Pin mini shield Pin Arduino Colore
VDD +5V pin +5V Rosso
RS (Register Selec) RS digitale 12 Verde
EN (Enable) EN  digitale 11 Arancio
Data Bus line 4 D4  pin digitale 5 Giallo
Data Bus line 5 D5 pin digitale 4 Ciano
Data Bus line 6 D6 pin digitale 3 Viola
Data Bus line 7 D7 pin digitale 2 Blu
GND-VSS GND  pin GND Nero

 

Collegamento sensore con scheda Arduino

Funzione sensore Pin sensore Pin Arduino Colore
VDD 8 pin +5V Rosso
Data 1  pin digitale 9 Rosa
Clok 3  pin digitale 10 Verde chiaro
VSS 4  pin GND Nero

 


Scarica programma

Listato del programma

#include <SHT1x.h> //Libreria lettura sensore
#include <LiquidCrystal.h> //Libreria LCD

// Inizializza la libreria con i numeri dei pin d'interfaccia
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// Specifica i pin a cui è collegato il sensore 
#define dataPin  9
#define clockPin 10
SHT1x sht1x(dataPin, clockPin);

void setup()
{
  lcd.begin(16, 2); //Imposta il numero di righe e colonne del LCD
  delay (1000);
}

void loop()
{

  // Lettura dei valori dal sensore
  float temp_c = sht1x.readTemperatureC();
  float humidity = sht1x.readHumidity();

  temp_c = temp_c-3;

  // Scrive i valori sul monitor seriale 
  lcd.setCursor(0, 0);
  lcd.print("Temp.   :");
  lcd.print(temp_c,1);
  lcd.print(" C ");
  lcd.setCursor(0, 1);
  lcd.print("Umidita':");
  lcd.print(humidity, 1);
  lcd.print(" %");

  delay(2000); //Intervallo di misura
}

Programma di test versione IDE 0023 - Versione con lettura tramite monitor porta seriale PC

Versione del programma, i dati letti dalla scheda Arduino, in questo caso si è utilizzato un Arduino Nano V 3.0 prodotto dalla  GRAVITECH, che è montato su una piccola breadboard
I valori letti sono mostrati nella finestra del monitor della porta seriale

Programma di test con lettura dei dati tramite monitor seriale, verificare che la velocità della posta sia settata a 38400 baud, la versione del programma è per la versione dell'IDE sino alla 0023.


Scarica programma

 Listato del programma

#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();
  humidity = sht1x.readHumidity();

  // Print the values to the serial port
  Serial.print("Temperatura: ");
  Serial.print(temp_c, 1);
  Serial.print("C / ");
  Serial.print("Umidita': ");
  Serial.print(humidity,1);
  Serial.println("%");

  delay(2000);
}

Programma di test versione IDE 0023 Lettura mostrata su display LCD connesso in seriale alla scheda Arduino

Versione del programma, i cui dati letti dalla scheda Arduino Nano sono mostrati tramite un display LCD 16x2 connesso in seriale alla scheda Arduino


Scarica programma

 

 

Collegamento LCD  con scheda Arduino

Funzione LCD

Pin mini shield

Pin Arduino

Colore

+5V +5V pin +5V Rosso
Dati D7 pin digitale 2 Blu
GND GND  pin GND Nero

Collegamento sensore con scheda Arduino

Funzione sensore Pin sensore Pin Arduino Colore
VDD 8 pin +5V Rosso
Data 1  pin digitale 10 Rosa
Clok 3  pin digitale 11 Verde chiaro
VSS 4  pin GND Nero

Listato del programma

#include <SHT1x.h>

// Inclusione della libreria SoftwareSerial in
// modo da poter utilizzare le sue funzioni:
#include <SoftwareSerial.h>
#define rxPin 3
#define txPin 4

// Imposta una nuova porta seriale
SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);
byte pinState = 0;

// Specfica pin per data e clock connessi al senosre SHT1x
#define dataPin  10
#define clockPin 11
SHT1x sht1x(dataPin, clockPin);

void setup()
{

  pinMode(rxPin, INPUT); // definisce i pin per tx, rx:
  pinMode(txPin, OUTPUT);

  // imposta la velocità della porta
  mySerial.begin(9600);
}
// Resetta il display, annullando qualsiasi scorrimento
// e la rimozione di tutto il testo
void clearLCD(){ 
  mySerial.print(0xFE, BYTE); //command flag 
  mySerial.print(0x01, BYTE); //Comando clear //
  delay(50);
} 
// Avvia il cursore all'inizio della prima linea
void firstrow(){ 
  mySerial.print(0xFE, BYTE); 
  mySerial.print(128, BYTE); 
  delay(2); 
} 
// Avvia il cursore all'inizio della seconda linea
void secndtrow(){ 
  mySerial.print(0xFE, BYTE); 
  mySerial.print(128+64, BYTE); 
  delay(2); 
} 

void loop()
{
  float temp_c;
  float humidity;
  // Lettura valori dal sensore
  temp_c = sht1x.readTemperatureC();
  humidity = sht1x.readHumidity();
  // Scrittura valori letti su LCD
  clearLCD(); 
  firstrow(); 
  mySerial.print("Temperatura:");
  mySerial.print(temp_c,DEC);  
  delay(500); 
  secndtrow(); 
  mySerial.print("Umidita'   :"); 
  mySerial.print(humidity,DEC);
  delay(1000);
}

 

Elenco revisioni
27/05/2013 Aggiornato pagina, inserito programmi per versione IDE 1.x.x
06/01/2013 Aggiornato pagina
27/08/2011 Emissione preliminare
Private Policy Cookie Policy