Pages: [1]   Go Down
Author Topic: Sensore di temperatura DTH11 via I2C  (Read 2081 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve a tutti,

sono alle prese con automazione e arduino.
Al momento attuale il mio progetto controlla 6 uscite di arduino oltre a leggere tre sensori di temperatura, il tutto via web interfacciando arduino con un db attraverso PHP.
Singolarmente tutto funziona, ma adesso ho la necessità di "remotizzare" ingressi e uscite in diverse stanze della casa.
In pratica ho pensato di utilizzare tre PCF8574A, 8 port expander, uno per ogni stanza, ai quali collegare i sensori di temperatura.
Ora il problema:
Come si fa a definire i pin del PCF?
Mi spiego meglio:
se scrivo #define pin_out_a 3 sto definendo il pin digitale 3 di arduino.
Se scrivo #define pin_out_b 14 definisco il pin analogico 1 come digitale.
Assumendo che il port expander si chiama exp_a come si fa a definire i pin di quest'ultimo?
La necessità nasce dal fatto che il DTH11, sensore che uso per la temperatura, ha bisogno di un pin definto per la lettura dei dati.
Grazie a quanti sapranno aiutarmi.
Logged

Cagliari, Italy
Online Online
Tesla Member
***
Karma: 112
Posts: 7098
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ti rimando a questo sito che spiega il funzionamento dell'integrato --> http://www.laurtec.it/brief-notes/programmazione-pic/125-bn0013-it-pcf8574-i2c-io-expander-libreria-ed-utilizzo
Qui c'è un tutorial --> http://garagelab.com/profiles/blogs/tutorial-arduino-i-o-port-expander-with-pcf8574
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Beh, io ho spostato il post in questa sezione e leggendo il tuo commento inizio a credere di non essermi spiegato bene.
Ho già implementato sia il PCF che i sensori.
Il mio unico problema e come fare a dire al sensore che è collegato all' ingresso 1 del PCF.

Posto il codice che sto utilizzando:
Al momento se collego il sensore (one wire) all'ingresso analogico 1 della board, abilitato come ingresso digitale, legge i dati e funziona tutto.
Ma vorrei farlo leggere dal PCF.

Code:
#include <PCF8574.h> // Required for ... all
#include <Wire.h> // Required for I2C communication
#include <dht11.h> // Required for sensor communication
dht11 DHT11; // Create object from DHT11 class
PCF8574 expander; // Create object from PCF8574 class

#define DHT11PIN 14; // define the pin where is connected the sensor. In this case pin Analog 1 (like digital) of arduino UNO.

void setup(){

Serial.begin(9600);
  expander.begin(0x38); //init PCF address
  expander.pinMode(7,OUTPUT); // Setup pin D7 as output
  expander.pinMode(1,INPUT); // Setup pin D1 as input

  Serial.println("DHT11 TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT11LIB_VERSION);
  Serial.println();
 
  }



void loop(){

expander.blink(7,5,200);
delay(1000);
 
int chk = DHT11.read(DHT11PIN);

  Serial.print("Read sensor: ");
  switch (chk)
  {
    case 0: Serial.println("OK"); break;
    case -1: Serial.println("Checksum error"); break;
    case -2: Serial.println("Time out error"); break;
    default: Serial.println("Unknown error"); break;
  }

  Serial.print("Humidity (%): ");
  Serial.println((float)DHT11.humidity, 2);

  Serial.print("Temperature (oC): ");
  Serial.println((float)DHT11.temperature, 2);
delay(2000);
 
} // Loop forever
Logged

0
Offline Offline
Faraday Member
**
Karma: 46
Posts: 5873
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mmm, non so se si puo' usare come dici tu,

l'expander legge/scrive l'intero byte, e lo riversa sul bus i2c.
tu vuoi attaccare un sensore 1 wire, che e' si digitale, ma usa un protocollo seriale, su un pin, e poi leggerlo con i2c.
Ma il valore rilevato sara' 0 o 1 in base all'istante di trasmissione.
dovresti sincronizzare le letture su i2c con la trasmissione 1wire, ed in un determinato tempo inserire i dati rilevati su un solo pin dell'expander in un buffer, per poi interpretarli.

spero in due soluzioni per te,
1) che io mi sbagli  smiley
2) se non mi sbaglio, che qualcuno abbia scritto una libreria per gestire il tutto

Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Offline Offline
Full Member
***
Karma: 4
Posts: 183
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

purtroppo è non possibile collegare il DHT su una uscita/ingresso del port expander,quindi ti conviene usare un pin diretto dall'arduino per sfruttare la libreria ed il protocollo di comunicazione con il medesimo.

« Last Edit: August 05, 2012, 11:24:17 am by ibbba » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao e grazie ad entrambi,

Quote
1) che io mi sbagli 
2) se non mi sbaglio, che qualcuno abbia scritto una libreria per gestire il tutto

@Testato:
1 - hai  capito benissimo   smiley
2 - qualcuno ha sicuramente scritto qualcosa. smiley-grin

esiste il DS1624 che è un misuratore di temperatura su I2C.
Avendo visto questo ho pensato che potesse essere possibile farlo con i componenti staccati, un bridge i2c e un sensore temperatura.
Ma devo ammettere che non sono un granchè in lettura datasheet & Co.
E poi il tutto lo avevo nel cassetto della scrivania, il DS avrei dovuto acquistarlo e costicchia un po...

Speriamo che qualcun'altro abbia avuto già la stessa esperienza...
Logged

Offline Offline
Full Member
***
Karma: 4
Posts: 183
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...ti conviene fare tutto su bus I2C...il port expander non è implementabile in comunicazioni complesse per sua stessa natura (vedi funzionamento ingressi sul datasheet)
Logged

Bologna
Offline Offline
Newbie
*
Karma: 1
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Perdonate.. non so se avete risolto ma per quello che mi riguarda sto progettando proprio una cosa simile.
http://forum.arduino.cc/index.php?topic=252807.0

Ciao
Logged

Pages: [1]   Go Up
Jump to: