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.
Indice
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.
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
Per ulteriori caratteriostiche vedere l’articolo KY-001 Temperature sensor module
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” 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
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.
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
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#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); } |