|
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
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 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
|
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 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 |
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. |
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 |
|
|
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 |