--> Project III - 11. Thermostat dengan Menggunakan LCD Touch Screen berbasis Arduino | Tutorial arduino lengkap

Thursday, August 3, 2017

Project III - 11. Thermostat dengan Menggunakan LCD Touch Screen berbasis Arduino

| Thursday, August 3, 2017
Thermostat dengan Menggunakan LCD Touch Screen




Deskripsi


Thermostat yaitu alat yang digunakan untuk mempertahankan suhu sesuai dengan set point yang telah ditentukan. Suhu dibaca oleh sensor LM35 dan hasilnya ditampilkan pada LCD Touchscreen. Nilai set point di seting dengan menggunakan keypad 3x4 yang dibuat dengan LCD Toutch screen. Sedangkan Heater/pemanas di kontrol ON/OFF-nya menggunakan relay yang terhubung dengan kaki output Arduino pada pin 0. Dikarenakan pada pin 0 digunakan sebagai jalur download maka pada saat proses download koneksi pin 0 yang ke Relay di lepas terlebih dahulu agar proses download tidak error.

Kebutuhan Hardware

  • Sensor Suhu LM35
  • LCD 2.4’’ TFT SHIELD
  • Modul Relay 5Vdc
  • Heater
  • Modul Arduino UNO
  • Power supply +9Volt


                      Modul Relay 1 Channel (Source)            Sensor Suhu LM35 (Source)


   
                              Element Heater (Source)               LCD 2.4" TFT Shield (Source)



Diagram Blok

Schematic



Koneksi Arduino UNO dengan modul LCD TFT 2’4” tinggal dipasangkan ke pin header Arduino, seperti shield2 yang lain. Koneksi Arduino UNO dengan modul TFT LCD Shield


Source Code/Sketch
#include <Adafruit_GFX.h>
#include <Adafruit_TFTLCD.h>
#include <TouchScreen.h>
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define ORANGE 0xFD20
#define LIGHTGREY 0xC618
#define YP A3
#define XM A2
#define YM 9
#define XP 8
#define BUTTON_X 60
#define BUTTON_Y 170
#define BUTTON_W 50
#define BUTTON_H 30
#define BUTTON_SPACING_X 10
#define BUTTON_SPACING_Y 10
#define BUTTON_TEXTSIZE 2
#define TEXT_X 10
#define TEXT_Y 110
#define TEXT_W 220
#define TEXT_H 50
#define TEXT_TSIZE 3
#define TEXT_TCOLOR MAGENTA
#define TEXT_LEN 2
char textfield[TEXT_LEN+1] = "";
uint8_t textfield_i=0;
byte f_key, tb_aktif, Rly;
byte spSuhu;
String angkaStr="";
#define TS_MINX 150
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940
#define STATUS_X 10
#define STATUS_Y 65
#define LM35 A5
#define Relay 0
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
Adafruit_GFX_Button buttons[12];
char buttonlabels[12][3] = {"1", "2", "3",
"4", "5", "6",
"7", "8", "9",
"SP", "0", "OK"};
uint16_t buttoncolors[12] = {BLUE, BLUE, BLUE,
BLUE, BLUE, BLUE,
BLUE, BLUE, BLUE,
RED, BLUE, RED};
void setup(void) {
// Serial.begin(9600); //saat menggunakan serial, pin ke Relay dilepas
tft.reset();
uint16_t identifier = tft.readID();
if(identifier==0x0101)identifier=0x9341;
tft.begin(identifier);
tft.fillScreen(BLACK);
tft.drawRect(5, 145, 230, 170, WHITE);
for (uint8_t row=0; row<4; row++) {
for (uint8_t col=0; col<3; col++) {
buttons[col + row*3].initButton(&tft,
BUTTON_X+col*(BUTTON_W+BUTTON_SPACING_X),
BUTTON_Y+row*(BUTTON_H+BUTTON_SPACING_Y),
BUTTON_W, BUTTON_H, WHITE, buttoncolors[col+row*3], WHITE,
buttonlabels[col + row*3], BUTTON_TEXTSIZE);
buttons[col + row*3].drawButton();
}
}
tft.drawRect(5, 10, 230, 35, WHITE);
tft.drawRect(5, 50, 230, 90, WHITE);
tft.setTextColor(WHITE, BLACK);
tft.setTextSize(2);
tft.setCursor(12, 20);
tft.print("Thermostat Digital");
spSuhu=40;
}
#define MINPRESSURE 10
#define MAXPRESSURE 1000
void loop(void) {
pinMode(Relay, OUTPUT);
digitalWrite(13, HIGH);
TSPoint p = ts.getPoint();
digitalWrite(13, LOW);
pinMode(XM, OUTPUT);
pinMode(YP, OUTPUT);
if (p.z > MINPRESSURE && p.z < MAXPRESSURE) {
p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0);
p.y = map(p.y, TS_MINY, TS_MAXY, tft.height(), 0);
if (p.x>40 && p.x<80 && p.y>270 && p.y<290 && f_key==0){
f_key=1;
tft.setTextColor(CYAN, BLACK);
tft.setTextSize(3);
tft.setCursor(18, 60);
tft.print("Set SP:");
tft.setCursor(18, 95);
tft.setTextSize(5);
tft.print("--");
tft.setTextSize(3);
tft.print("0");
tft.setTextSize(5);
tft.print("C");
delay(200);
}
// Serial.print(p.x);
// Serial.print(",");
// Serial.println(p.y);
}
//--------------------- DISPLAY SUHU
if(f_key==0){
int suhu=(analogRead(LM35)*5)/10;
tft.setTextColor(CYAN, BLACK);
tft.setTextSize(3);
tft.setCursor(18, 60);
tft.print("Suhu:");
tft.setCursor(18, 95);
tft.setTextSize(5);
tft.print(suhu);
tft.setTextSize(3);
tft.print("0");
tft.setTextSize(5);
tft.print("C");
tft.setCursor(145, 65);
tft.setTextColor(RED, BLACK);
tft.setTextSize(2);
tft.print("SP:");
tft.print(spSuhu);
tft.setTextSize(1);
tft.print("0");
tft.setTextSize(2);
tft.print("C");
tft.setCursor(145, 90);
tft.setTextColor(RED, BLACK);
tft.setTextSize(2);
tft.print("Relay");
tft.setCursor(150, 110);
tft.setTextSize(3);
if(suhu < (spSuhu-2)){
digitalWrite(Relay,HIGH);
Rly=1;
}
else if(suhu >= spSuhu){
digitalWrite(Relay,LOW);
Rly=0;
}
if (Rly==LOW)tft.print("OFF");
else tft.print("ON ");
}
//------------------DISPLAY SETING SET POINT
else if(f_key==1 && textfield_i<2){
for (uint8_t b=0; b<12; b++) {
if (buttons[b].contains(p.x, p.y)) {
// Serial.print("Pressing: "); Serial.println(b);
buttons[b].press(true);
tb_aktif=b;
}
else {
buttons[b].press(false);
}
}
for (uint8_t b=0; b<12; b++) {
if (buttons[b].justPressed()) {
buttons[b].drawButton(true);
if ((b != 9) && (b != 11)) {
if (textfield_i < TEXT_LEN) {
textfield[textfield_i] = buttonlabels[b][0];
textfield_i++;
textfield[textfield_i] = 0;
}
}
tft.setTextColor(CYAN, BLACK);
tft.setCursor(18, 95);
tft.setTextSize(5);
tft.print(textfield);
delay(200);
buttons[tb_aktif].drawButton();
}
}
}
//--------------------TOMBOL OK
if (p.x>160 && p.x<200 && p.y>270 && p.y<290 && f_key==1) {
buttons[11].drawButton(true);
angkaStr=textfield;
spSuhu=angkaStr.toInt();
f_key=0;
for(char i=0;i<textfield_i;i++){
textfield[i]='-';
}
textfield_i=0;
delay(200);
buttons[11].drawButton();
hapusDisplay();
}
}
//-----------------HAPUS DISPLAY SUHU
void hapusDisplay(){
tft.fillRect(10, 55, 215, 80, BLACK);
}

Jalannya Alat

Proses Pengoperasian Alat

  1. Koneksikan antara sistem Arduino dengan 2.4’’ TFT LCD Shield seperti pada rangkaian (skematik).
  2. Jika menggunakan 2.4’’ TFT LCD SHIELD Anda bisa menambahkan pin koneksi pada pin A5 Arduino dengan pin deret. Sedangkan powernya (+5V dan GND) Anda juga bisa beri konektor untuk power supply sensor LM35. Begitu juga untuk pin koneksi relaynya.
  3. Pasang power supply (adaptor 9 V) dan hidupkan (colokkan ke sumber PLN 220V) sehingga lampu LED indikator nyala, LCD juga nyala. PIN POWER PIN A5 PIN 1 & PIN 2 
  4. Pastikan library TFT LCD sudah terinstal.
  5. Upload program diatas.
  6. PENTING: SAAT UPLOAD PROGRAM, KONEKSI RELAY KE PIN ARDUINO HARUS DILEPAS!!!
  7. LCD kondisi normal menampilkan suhu yang terbaca.


      8. Relay/Heater akan ON apabila suhu dibawah set point.
      9. Heater OFF pada saat suhu sama dengan set point.


     10. Heater akan menyala lagi setelah suhu berkurang 20C dibawah set point.
     11. Seting setpoint dengan menekan tombol SP


12. Masukkan nilai set point. Nilai maksimal set point yang dapat di isi 99C


    13. Tekan tombol angka sesuai dengan Set point yang ingin dicapai, contoh 55C.
    14. Tekan tombol “OK” jika setingan sudah selesai.




Video Project III - 11. Thermostat dengan Menggunakan LCD Touch Screen berbasis Arduino




KAMI MELAYANI JASA PEMBUATAN HARDWARE ATAU SOFTWARE BERBASIS ARDUINO

KONTAK KAMI 085743320570 (adi sanjaya)

Related Posts

No comments:

Post a Comment