Sensore temperatura+umidita' con interfaccia SPI

Buongiorno gente,
sto tentando di capire come far funzionare questo sensore con arduino. A parte che i piedini non si incastrano nella breadboard (andra' a finire che li saldero' a dei fili volanti per ora) , qualcuno riesce ad indicarmi un link dove spiega passo passo cosa-metto-dove-dove-metto-cosa?

Trovato molte cose che riguardano l'SPI ma piu' collegate al collegare due board o lo schermo, niente sui sensori.

Grazie.

Sembra strano che i piedini non si incastrino nella board, hanno un passo standard. :roll_eyes:
Riguardo al resto la vedo dura. Non c'è uno straccio di libreria per quel sensore e anche col manuale non sarà facile ricreare il protocollo di comunicazione.

Riguardo ai collegamenti, è descritto sul manuale i tipi di collegamenti da effettuare col micro-controllore, i condensatori aggiuntivi da utilizzare e le varie resistenze.
--> http://www.sure-electronics.net/download/MB-SM24118_Manual.pdf

PaoloP:
Sembra strano che i piedini non si incastrino nella board, hanno un passo standard. :roll_eyes:

Pensavo anche io, ma questi hanno una distanza piu' breve.

PaoloP:
Riguardo al resto la vedo dura. Non c'è uno straccio di libreria per quel sensore e anche col manuale non sarà facile ricreare il protocollo di comunicazione.

Pensavo di utilizzare la libreria SPI.h , ma non trovo altri sensori che la utilizzino.

Riguardo ai collegamenti, è descritto sul manuale i tipi di collegamenti da effettuare col micro-controllore, i condensatori aggiuntivi da utilizzare e le varie resistenze.
--> http://www.sure-electronics.net/download/MB-SM24118_Manual.pdf

L'avevo visto, pero' speravo di trovare da qualche parte uno schema tipo questo, per me neofita di piu' semplice comprensione.

La cosa non è di semplice soluzione.
Dovresti scriverti la libreria di sana pianta e inoltre, con pazienza, ricavarti anche lo schema del circuito perché dal manuale non si capisce se, ad esempio, i condensatori sono da aggiungere o sono già previsti sulla scheda.
E' un vero peccato perché come prodotto sembra interessante, ma senza supporto diventa difficile utilizzarlo per i propri progetti.

Capisco, cercheró un modello differente di sensore (e inizieró a fidarmi meno del ragazzo dietro al bancone porc..).

Avete qualche consiglio?

Mai arrendersi! Tutto si può fare, basta solo capire come...
Ho avuto tra le mani questo sensore e dopo aver constatato che esistono poche e lacunose informazioni mi sono messo all'opera ed ho trovato il modo di farlo funzionare. Il sensore in questione è + o - uguale ad un altro sensore di cui ho trovato un utilizzo. Ho eliminato il controllo CRC perchè, nonostante l'utilizzo di vari condensatori di decoupling, continuavo ad avere disturbi sulla trasmissione. In ogni caso, al momento sto utilizzando il sensore senza controllo CRC da un bel pò e non mi ha dato nessun tipo di problema, ho fatto vari test con temperatura ed umidità diverse ed ha risposto in modo affidabile. Riguardo i piedini più stretti, piuttosto che cercare lo zoccolo adatto che cmq darebbe poi problemi simili avendo lo stesso tipo di piedinatura, consiglio di saldare 6 fili direttamente al posto dei piedini. Di seguito il programma modificato:

// Written by Nick Gammon
// February 2011
// see http://mushclient.com/spi 

// Rework for DYPTH01B_SPI Temperature and Humidity sensor
// using MTH01 Sensor
// D. Richards, Jan 2012
// see http://www.suntekstore.co.uk/product-14001923-DYPTH01B-SPI+Temperature++Humidity+Sensor+Module.html 

// Rework for MB-SM24118 High Sensitivity Humidity & Temperature Sensor Module
// G. Di Febbraro, June 2013
// see http://www.sureelectronics.net/goods.php?id=1438
// Corrected pinout corrispondences
// Removed CRC check - to be optimized - I don't need it - for me work very well!


//  Sensor top view
//  CS     -  On/Off   1|°   -------      [][][][]
//  SCK    -  CLK      2|°  [       ]     [][][][]
//  SDAT   -  MOSI     3|°  [       ]     [][][][]
//  Reset  -  Reset    4|°  [       ]     [][][][]
//  VSS    -  GND      5|°   -------       °    °
//  VDD    -  +5 V     6|°                 °    °
//                      ------------------------------

// Work well with +3.3 V too

//Pin Arduino(Slave)    Pin Sensor(Master)
//       7                      1
//      11                      3
//      13                      2

#include "pins_arduino.h"

unsigned char buf [7];
volatile byte pos;
volatile boolean process_it;
int MTH_temperature;
int MTH_humidity;
#define HCS 6

void setup (void)
{
  Serial.begin (9600);   // debugging
  Serial.println ("MB-SM24118 High Sensitivity Humidity & Temperature Sensor Module");
  pinMode(HCS, OUTPUT);        // CS output
  digitalWrite(HCS, HIGH);     // CS inactive
  SPCR |= _BV(SPE);            // turn on SPI in slave mode - get ready for an interrupt 
  pos = 0;                     // empty buffer
  process_it = false;
  SPCR |= _BV(SPIE);           // now turn on interrupts
  digitalWrite(HCS, LOW);      // CS active, starts conversion
}

// SPI interrupt routine
ISR (SPI_STC_vect)
{
  byte c = SPDR;                // grab byte from SPI Data Register
  if (pos < sizeof buf)         // add to buffer if room
  {
    buf [pos++] = c;
    if(pos >= 4)                // when all 4 bytes received
    {
      digitalWrite(HCS, HIGH);  // disable further conversions
      process_it = true;        // signal ready to main loop
    }      
  }
}

void loop (void)
{
  if (process_it)
  {
    MTH_temperature = ( (256*buf[0]) + buf[1] ) - 400;
    MTH_humidity = buf[2];
    Serial.print(" T=");
    Serial.print( MTH_temperature / 10);
    Serial.print(".");
    Serial.print( MTH_temperature % 10);
    Serial.print("C, H=");
    Serial.print(MTH_humidity);
    Serial.println("%");
    delay(5000);
    pos = 0;                // reset buffer index
    process_it = false;     // preset buffer not ready
    digitalWrite(HCS, LOW); // start conversion    
  }
}

Usa i tag CODE per racchiudere il codice. :wink: