In questo articolo andiamo a vedere il sensore digitale di temperatura Dallas Temperature, noto anche come KY-001, in quanto lo ritroviamo all’interno di un KIT sensori costituito da 37 unità che potete acquistare a questo link.
Specifiche
Il sensore KY-001 è costituito da un chip single-bus DS18B20, alloggiato in un circuito stampato con un LED e una resistenza. Il modulo presenta 3 PIN: uno è il segnale (S), gli altri due il GND e il VCC, tramite cui possiamo fornire sia i 3,3V o i 5V, usando indifferentemente sia Arduino che le ESP8266. Il sensore è notevolmente preciso e il range di azione va dai -55°C ai 125°C con una tolleranza di circa 0,5°C.
Collegamento
Il sensore KY-001 è davvero semplice da collegare. Utilizziamo la piedinatura per collegare al PIN digitale 2 di Arduino il PIN S, il PIN – al GND e il PIN + ai 5V. Basta seguire lo schema riportato sotto.
Codice
Per programmare il sensore KY-001 è necessario scaricare le librerie DallasTemperature e OneWire. Lo sketch che vediamo oggi è il codice di esempio presente all’interno della libreria DallasTemperature, intitolato Simple. Questo sketch inizia includendo le librerie citate, indicando che il sensore è collegato al PIN 2 e avviando l’istanza OneWire per poi passarla al sensore. Anticipiamo che è stato aggiunto un delay di 1000 millisecondi per rilevare i dati ogni secondo.
#include <OneWire.h>> #include <DallasTemperature.h> #define ONE_WIRE_BUS 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire);
All’interno del VOID SETUP avviamo il monitor seriale e il sensore
void setup(void) { Serial.begin(9600); Serial.println("Dallas Temperature IC Control Library Demo"); sensors.begin(); }
Infine, nel VOID LOOP effettuiamo la richiesta per rilevare la temperatura e stampiamo a monitor seriale il risultato ogni secondo
void loop(void) { Serial.print("Requesting temperatures..."); sensors.requestTemperatures(); Serial.println("DONE"); Serial.print("Temperature for Device 1 is: "); Serial.print(sensors.getTempCByIndex(0)); delay(1000); }
La dicitura Index(0) indica che se ci sono più circuiti integrati sullo stesso bus, 0 indica il primo integrato.