AI Assistant
Detail Karya Portofolio

Rancang bangun pendeteksi suhu dengan NodeMCU

Muhammad Luthfi Abduloh Oleh: Muhammad Luthfi Abduloh

Ringkasan Portofolio

Kali ini penulis merancang sebuah sistem yang dapat mengidentifikasi seberapa panas dan dingin suhu air menggunakan Mikrokontroller NodeMCU. Penulis menggunakan module DS18B20 sebagai sensor yang mampu mengukur suhu didalam air. Penulis menambahkan 3 buah LED, yang mana ke tiga LED tersebut menjadi sebuah indikator dari tingkat suhu air yang akan diukur.

Deskripsi & Detail Proyek

Pada rangkaian pendeteksi suhu air, penulis menggunakan mikrokontroller NodeMCU ESP8266 dengan sebuah sensor DS18B20 dan 3 buah LED. Penulis menggunakan sensor DS18B20 karena sensor tersebut memiliki keunggulan dimana sensor tersebut mampu tahan air dengan spesifikasi yang mampu mengukur suhu kisaran -55 sampai 125 (C) dengan akurasi kurang lebih 0,5%. 

Penulis menggunakan 3 buah buah LED dengan warna yang berbeda. Biru, kuning dan merah. Dimana LED biru sebagai indikator air dengan kisaran suhu dibawah 30(C), LED kuning bertindak sebagai indikator air dengan suhu berkisar lebih dari 30(C) dan kurang dari 60(C), sedangkan LED merah menjadi indikator dari suhu diatas 60(C).

Adapun source code yang penulis gunakan adalah sebagai berikut:

/********************************************************************/
// First we include the libraries
#include <OneWire.h> 
#include <DallasTemperature.h>
/********************************************************************/
// Data wire is plugged into pin 2 on the Arduino 
#define ONE_WIRE_BUS D4 
#define led1 D0
#define led2 D1
#define led3 D3
/********************************************************************/
// Setup a oneWire instance to communicate with any OneWire devices  
// (not just Maxim/Dallas temperature ICs) 
OneWire oneWire(ONE_WIRE_BUS); 
/********************************************************************/
// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensorSuhu(&oneWire);
float suhuSekarang;
/********************************************************************/ 
void setup(void) 

// start serial port 
Serial.begin(9600); 
Serial.println("Dallas Temperature IC Control Library Demo"); 
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
// Start up the library 
sensorSuhu.begin(); 

void loop(void) 

 digitalWrite(led1, LOW);
 digitalWrite(led2, LOW);
 digitalWrite(led3, LOW);
// call sensors.requestTemperatures() to issue a global temperature 
// request to all devices on the bus 
/********************************************************************/
Serial.print(" Suhu air = "); 
suhuSekarang = ambilSuhu();
 // Send the command to get temperature readings 
Serial.print(suhuSekarang);
Serial.println("(c)");
if(suhuSekarang < 30){
 digitalWrite(led1, HIGH);
}else if(suhuSekarang > 30 && suhuSekarang < 60){
 digitalWrite(led2, HIGH);
}else if(60 < suhuSekarang < 100){
 digitalWrite(led3, HIGH);
}
/********************************************************************/
 // Why "byIndex"?  
  // You can have more than one DS18B20 on the same bus.  
  // 0 refers to the first IC on the wire 
  delay(1000); 
}

float ambilSuhu(){
 sensorSuhu.requestTemperatures();
 float suhu = sensorSuhu.getTempCByIndex(0);
 return suhu;
}