KY-001 DS18B20 – Wemos D1 mini multi test shield

In questo articolo vedremo come utilizzare la scheda  Wemos D1 mini collegata al modulo KY-001 su cui è presente il sensore  DS18B20 per misurare la temperatura ambiente.
Il modulo KY-001 Temperature sensor module,  fa parte della serie “37 In 1 Sensor Module Board Set Kit For Arduino” e consente di misurare la temperatura ambiente utilizzando il bus seriale digitale.
Per il test utilizziamo il Wemos D1 mini multi test shield, per informazioni sullo questo shield vedere il relativo articolo.

wemos d1 mini ky-001 DS18b20

Il modulo KY-001 Temperature sensor module

Il modulo KY-001 Temperature sensor module, è composto dal sensore di temperatura DS18B20, un LED ed un resistore.
Il sensore è compatibile con le piattaforme di elettronica popolari popolari come Arduino (sensore alimentato a 5V) e Raspberry Pi (sensore alimentato a 3,3V).
il led si accenderà ogni volta che sarà letto il sensore.

wemos d1 mini ky-001 DS18b20

Caratteristiche del modulo

  • Tensione di funzionamento: 3.0V a 5.5V
  • Gamma di misurazione della temperatura -55 ° C a 125 °C]
  • Precisione di misura ± 0,5 ° C
  • Dimensioni 18,5 x 15 mm

Dove trovare il modulo

Il modulo oltre che nella confezione “37 In 1 Sensor Module Board Set Kit For Arduino“, piò essere acquistato separatamente, per esempio sul sito Homotix al costo dell’uscita di questo articolo al costo di circa 2€.
Se al momento dell’ordine inserirete il codice sconto  “ADRIROBOT_20” avrete diritto ad uno sconto.

Librerie per la gestione del sensore

Poiché il sensore 18B20 utilizza il protocollo onewire, occorrerà caricare nell’IDE le relative librerie, una denominata  onewire accoppiata con la libreria Dallas Temperature.
Questo consentirà di indirizzare correttamente il sensore di temperatura e leggere la temperatura in gradi Celsius.
Per caricare le librerie sarà sufficiente accedere alla gestione Librerie, ricercare e successivamente caricare

wemos d1 mini ky-001 DS18b20

wemos d1 mini ky-001 DS18b20

Test dello shield montato

Ora possiamo passare al collaudo del sensore, come visibile nello schema sotto riportato.
Come potete vedere il Wemos D1 mini è collegato al modulo KY-001 (su cui è presente il sensore DS18B20 montato sul modulo KY-001)  tramite le linee 3,3 volt e GND rispettivamente, mentre la porta D3 è collegata al pin dati del sensore.
È importante notare che i pin digitali di WeMos possono accettare, al massimo, fino a 3,3 volt sui loro input. Ciò significa che il pin VCC dei sensori WS18B20 deve essere collegato a 3,3 volt e non alla linea a 5 volt.
Se si utilizzerà il Wemos D1 mini multi test shield, non ci saranno problemi in quanto basterà inserire il modulo sul connettore JP3 e tutti i collegamenti saranno già effettuati correttamente.

wemos d1 mini ky-001 DS18b20
NOTA: Nello schema il pin dati è collegato oltre che al pin D3 del WeMos anche ad un resistore da 4,7k tra il pin dati e la linea da 3,3 volt. Questa resistenza di pull-up assicura che la linea sia posta a livello alto, ma non è strettamente necessaria.

Schema di collegamento

wemos d1 mini ky-001 DS18b20

wemos d1 mini ky-001 DS18b20

Versione programma ridotta

Il programma che segue è una versione ridotta, che permette di testare rapidamente il sensore, i valori di temperatura sono mostrati nella finestra del monitor seriale impostato a 9600 baud.

#include <OneWire.h>
#include <DallasTemperature.h>
 
#define ONE_WIRE_PIN D3
 
OneWire oneWire(ONE_WIRE_PIN);
DallasTemperature sensors(&oneWire);
 
void setup() {
  Serial.begin(115200);
}
 
void loop() {
  sensors.requestTemperatures();
  Serial.println(sensors.getTempCByIndex(0));
  delay(1000);
}

Versione programma  con uso display

Quella che segue è una versione estesa del programma che permette, se viene montato lo shield OLED  sul Wemosd D1 mini, di visualizzare i valori di temperatura direttamente sul display.

wemos d1 mini ky-001 DS18b20

 

#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_PIN D3
OneWire oneWire(ONE_WIRE_PIN);
DallasTemperature sensors(&oneWire);

#define OLED_RESET 0  // GPIO0
Adafruit_SSD1306 display(OLED_RESET);

void setup()   {
  Serial.begin(9600);

  // Impostazione modulo display con indirizzo I2C addr 0x3C
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.display();
  delay(2000);
  // Cancellazione schermo e buffer
  display.clearDisplay();

  // Messaggio iniziale
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println(" ADRIROBOT ");
  display.setTextColor(BLACK, WHITE); // Inverte il colore del testo
  display.setCursor(0, 10);
  display.println("  KY-001  ");
  display.setTextColor(WHITE);
  display.setCursor(0, 20);
  display.print("Temperat.");
  display.display();
}

void loop()
{
  display.setTextSize(2);
  display.fillRect(0, 30, 64, 30, BLACK);
  display.setCursor(0, 30);
  display.print(sensors.getTempCByIndex(0));
  display.display();
  sensors.requestTemperatures();
  Serial.println(sensors.getTempCByIndex(0));
  delay (2000);
}