Muhammad Sulthon Nashir KTI PRA
Muhammad Sulthon Nashir KTI PRA
Muhammad Sulthon Nashir KTI PRA
TUGAS AKHIR
Oleh
20173010083
TUGAS AKHIR
Oleh
MUHAMMAD SULTHON NASHIR
20173010083
Mengetahui,
Ketua Program Studi Teknik Elektromedik
iii
iv
Tugas Akhir ini Diterima Sebagai Salah Satu Persyaratan untuk Memperoleh
PROGRAM VOKASI
DIREKTUR
iv
v
PERNYATAAN
Penulis menyatakan bahwa dalam Tugas Akhir ini tidak terdapat karya yang
pernah diajukan untuk memperoleh derajat Profesi Ahli Madya atau gelar
kesarjanaan pada suatu perguruan tinggi dan sepanjang pengetahuan penulis juga
tidak terdapat pendapat yang pernah ditulis atau diterbitkan oleh orang lain,
kecuali yang secara tertulis diacu dalam naskah ini serta disebutkan dalam daftar
pustaka.
Yang menyatakan,
v
vi
KATA PENGANTAR
aplikasi blynk”. Laporan tugas akhir ini disusun untuk memenuhi salah satu
syarat dalam memperoleh gelar Ahli Madya pada Program Studi D3 Teknik
kebenaran berupa keislaman serta menjauhkan kita dari zaman kebodohan dan
menuntun kita menuju zaman yang terang dan penuh ilmu pengetahuan seperti
sekarang ini. Semoga beliau selalu menjadi suri tauladan dan sumber inspirasi
terbaik, berupa kasih sayang, doa tulus dan hal lain yang tidak mungkin
vi
vii
3. Bapak Wisnu Kartika, S.T., M.Eng, selaku dosen pembimbing satu, dan
Bapak Susilo Ari Wibowo, S.T. selaku dosen pembimbing dua, yang
penulis.
belajar.
baik.
jauh dari sempurna, untuk itu semua jenis saran, kritik dan masukan yang
vii
viii
bersifat membangun sangat penulis harapkan. Akhir kata, semoga tulisan ini
viii
DAFTAR ISI
BLYNK .................................................................................................................. ii
PERNYATAAN ..................................................................................................... v
ix
2.1 Penelitian Terdahulu ............................................................................ 17
x
DAFTAR GAMBAR
OPERASI .............................................................................................................. 33
OPERASI .............................................................................................................. 33
OPERASI .............................................................................................................. 35
OPERASI .............................................................................................................. 36
xi
GAMBAR 3. 11 SKEMATIK RANGKAIAN CATU DAYA SMPS .................. 45
xii
DAFTAR TABEL
xiii
PEMANTAUAN SUHU KELEMBABAN DAN TEKANAN
UDARA TERPUSAT PADA RUANG OPERASI MENGGUNAKAN
APLIKASI BLYNK
Muhammad Sulthon Nashir1, Wisnu Kartika1, Susilo Ari Wibowo2
1
Prodi D3 Teknik Elektromedik Program Vokasi
Universitas Muhammadiyah Yogyakarta
Jl. Brawijaya, Kasihan, Bantul-DIY, Indonesia 55183
Telp. (0274) 387656 Ext. 265, Fax. (0274) 387646
2
Rumah Sakit Islam, Klaten
[email protected], [email protected]
ABSTRAK
Saat ini dunia sedang mengalami sebuah perubahan besar terkait dengan
perkembangan dan kemajuan teknologi. Salah satu yang menjadi tolak ukur
kemajuan teknologi dalam bidang kesehatan adalah penemuan dan penciptaan
alat-alat medis yang berkembang sedemikian pesat baik yang berhubungan
dengan elektronik, mekanik maupun gabungan dari keduanya. Pada umumnya alat
untuk memantau baik suhu ruangan, kelembaban dan tekanan ruangan dilakukan
di ruangan yang akan dipantau. Oleh sebab itu untuk mempermudah dalam
melakukan pemantauan pada ruangan operasi dirancanglah sebuah alat
pemantauan suhu, kelembaban dan tekanan udara terpusat pada ruang operasi
menggunakan aplikasi blynk. Perancangan alat ini menggunakan beberapa
komponen inti yaitu sensor DHT11, sensor BMP280 dan NodeMCU ESP8266,
serta Arduino Mega yang nanti akan terhubung dengan wifi dengan hasil
pengukuran dari tiap-tiap sensor ditampilkan ke sebuah aplikasi smartphone yang
sudah diprogramkan dan dapat dibuka menggunakan aplikasi blynk yang tersedia
di Smartphone serta dapat ditampilkan pada layar LCD.
xiv
BAB I
PENDAHULUAN
Saat ini dunia sedang mengalami sebuah perubahan besar terkait dengan
dalam menjalankan aktivitas dan kepentingannya. Salah satu yang menjadi tolak
dengan baik. Oleh sebab itu pemeridiperlukan ruangan yang sesuai dengan
sekitar 20°C sampai 25°C dengan tujuan menjaga alat-alat kesehatan yang berada
pada ruangan tersebut dapat bekerja secara optimal atau alat tidak dalam kondisi
dari pengukuran suhu baik pada tubuh maupun pada suatu ruangan. Pemantauan
suhu pada ruangan tidak akan terlepas dengan pemantauan kelembaban ruangan.
Kelembaban ini dipantau dengan tujuan agar kelembaban ruangan dapat diketahui
13
14
setiap saat dan dapat mengurangi pengaruh yang disebabkan oleh kelembaban
yang terlalu basah ataupun yang terlalu kering akan merusak alat-alat kesehatan
serta dapat memberikan dampak yang berbahaya pada orang yang berada pada
ruangan tersebut. Maka dari itu Menteri Kesehatan memberikan peraturan standar
Ruangan operasi pada rumah sakit dibagi menjadi lima zona yaitu zona 1,
zona 2, zona 3, zona 4, zona 5. Zona 1 hingga zona 3 memiliki kesamaan yaitu
ruangan tidak memiliki tekanan udara positif karena pada zona ini masih masuk
pada tingkat resiko rendah, resiko sedang, dan resiko tinggi. Pada zona ini hanya
penyakit atau bakteri dari udara Sedangkan pada zona 4 memerlukan tekanan
udara positif untuk mecegah penyakit masuk karena memiliki tingkat resiko yang
sangat tinggi dan zona 5 merupakan area berlangsungnya operasi atau area meja
sebuah smartphone[4] yang dapat diunduh secara gratis dan dapat berfungsi
sebagai kontrol arduino dan sejenisnya. Blynk sangat cocok digunkanan untuk
interface pada projek-projek sederhana, seperti halnya alat untuk memantau suhu
kelembaban dan tekanan udara pada suatu ruangan. Pada umumnya alat untuk
memantau baik suhu ruangan, kelembaban dan tekanan udara suatu ruangan
dilakukan diruangan yang akan dipantau yang kemudian teknisi atau karyawan
dari IPSRS harus datang keruangan tersebut dan mengecek data ruangan untuk
15
tekanan udara terpusat pada ruang operasi menggunakan aplikasi blynk. Sehingga
mengetahui jika terdapat keeroran baik pada pengatur suhu, atau pada tekanan
maksimum.
16
d. Mengetahui dan memahami prinsip dari kerja baik secara teori maupun
praktik.
1.5 Manfaat
Muhammadiyah Yogyakarta.
pengambilan data suhu, kelembaban dan tekanan udara pada ruang operasi secara
aktual.
BAB II
TINJAUAN PUSTAKA
Pada penelitian yang dilakukan oleh [5] yang melakukan perancangan alat
pemantau suhu dan kelembaban pada ruang ICU yang menggunakan sensor DHT-
modul DHT-11 sebagai modul sensor suhu dan kelembaban. Hasil dari pengujian
alat ini dengan cara membandingkan rancang bangun alat dengan alat
adalah 0°C hingga 0,8°C. Secara umum komponen unit alat ini terdiri dari
Mikrokontroler, Modul sensor DHT-11, dan LCD. Cara kerja alat ini masih
portable sehingga untuk melihat hasil pengukuran harus mendekat ke alat terlebih
mengukur suhu, kelembaban, dan tekanan udara yang dilengkapi perekam data,
nirkabel terbagi dua bagian yaitu unit pengirim dan unit penerima. Unit pengirim
SD Card, dan modul transmiter RF. Unit alat pada bagian penerima terdiri dari
keras terdiri atas unit pengirim (Tx) dan unit penerima (Rx). Unit alat pada bagian
17
18
modul 3DR Telemetry 915MHz (Tx), sensor suhu dan kelembaban (SHT 11),
sensor tekanan udara (BMP280), LCD 16x2, RTC, z3DR Telemetry 915MHz
(Rx) dan PC yang sudah diakuisisi. Pada pengujian yang sudah dilakukan
memberikan hasil bahwa alat ukur dapat bekerja dengan baik pada jarak 200 m
dan waktu penerimaan data 2 detik, ini dilakukan pada kondisi full outdoor dan
tanpa halangan. Sedangkan pada pengujian semi outdoor dengan halangan dinding
jarak maksimalnya adalah 100 m dengan waktu penerimaan 2 detik. Nilai korelasi
pada sensor suhu diperoleh hasil sebesar R2= 0,973, kelembaban sebesar R2=
0,875, dan tekanan udara sebesar R2= 0,924, hasil ini menunjukkan hubungan
korelasi yang kuat antara alat standar dengan alat rancangan dengan garis lurus
yang linier. Dalam rancangan alat ini masih menggunakan sinyal berfrekuensi
yang dijadikan sebagai pengiriman data, oleh sebab itu menggunkan sinyal
Pembahasan pada penelitian yang dilakukan oleh [7] dengan judul sistem
dengan metode logika fuzzi dengan sensor suhu dan kelembaban yang digunakan
adalah DHT1 dengan hasil pembacaan sensor memiliki rata-rata error sebesar
4.07%. Cara kerja alat ini masih tergantung dengan jaringan internet atau tidak
adanya sebuah sistem kendali ke dua tanpa adanya bantuan dari jaringan internet.
merancang sebuah alat yang dapat melakukan pemantauan pada ruangan operasi
dengan parameter suhu, kelembaban dan tekanan udara yang menggunakan mode
pengiriman melalui aplikasi blynk dengan tujuan data dari alat yang sudah
diberikan dapat dipantau secara online dan tidak dipengaruhi oleh jarak antara
pengiriman data dan penerimanya. Proses pengiriman data dari sensor suhu,
kelembaban dan tekanan udara akan dikirim melalui jaringan internet yang
kemudian akan ditampilkan di aplikasi blynk yang digunakan untuk melihat hasil
pembacaan sensor dapat dilihat dengan membuka aplikasi blynk yang diakses
menjalankan aplikasi sendiri. Modul ini dirancang oleh ESPressif System yaitu
perusahaan dari Shanghai, China[8]. Dengan adanya modul ini dapat memberikan
kemudahaan pada suatu sistem yang bisa menjalankan program secara mandiri
atau online dan dapat dikontrol dimanapun dan kapanpun selama terhubung
melalui internet dimanapun berada sering disebut dengan istilah Internet of Things
(IOT). IOT merupakan segala aktifitas saling interaksi dengan pelakunya melalui
keunggulan dari pada versi sebelumnya berupa penggunaan tenaga tambahan dari
USB sehingga pada versi ke 3 ini lebih memiliki kecepatan antar muka USB yang
dari mudul ini dapat diperhatikan pada gambar 2.1 dan tabel 1
NO SPESIFIKASI
1 Tegangan 3,3 V
2 Wi-Fi Direct (P2P), soft-AP
3 Arus yang digunakan 10uA~170mA
4 Flash memory 16MB max (512K normal)
5 Integrated TCP/IP protocol stack
6 Processor Tensilica L106 32-bit
7 Processor speed 80~160MHz.
8 RAM 32K + 80K.
9 GPIOs: 17
10 Analog to Digital 1 input with 1024 step resolution
11 802.11 support
12 Maximum concurrent TCP connections 5
Untuk mengetahui letak dari pin-pin yang tersedia pada mudul ESP8266
dapat dilihat pada Gambar 2.2. Beberapa pin yang tersedia tidak jauh berbeda
dengan pin-pin yang dimiliki oleh Arduino. ESP8266 ini memiliki 30 kaki/pin
dengan 16 pin input output, 5 pin ground, 1 pin Vin, 2 pin dengan tegangan 3,3V,
21
1 pin CLK, 1 pin reset, 2 pin tx dan 2 pin rx. Didalam modul ESP8266 terdapat 2
tombol yang sudah disediakan yaitu satu tombol digunakan sebagai tombol
mereset dan yang satunya digunakan untuk men-flash modul ESP8266. Fungsi
tersimpan dalam modul ESP8266. Berikut gambar 2.2 pin-pin dalam NodeMCU
sebagai pin PWM, 16 pin sebagai pin analog, dan 4 pin sebagai port serial
hardware. Sama seperti Arduino UNO, board mikrokontroler ini memiliki kristal
osilator sebesar 16 Mhz, koneksi USB dan suppy, dan beberapa komponen
port USB ke komputer atau laptop menggunakan kabel USB yang sesuai. IC
Pada gambar di atas konfigurasi pin dapat digunakan sebagai input maupun
resistor pull-up internal (yang dapat terputus secara default) sebesar 20-50 KΩ.
a. Port Serial : Pin 0 (RX) dan Pin 1 (TX); Port Serial 1 : Pin 19 (RX) dan
Pin 18 (TX); Port Serial 2 : Pin 17 (RX) dan Pin 16 (TX); Port Serial 3
data serial TTL dan Pin (TX) untuk mengirim data serial TTL.
(Interrupt 2).
wire library.
suhu dan kelembaban udara yang berada di sekitarnya. Sensor ini memiliki
teknik akuisisi sinyal digital dan teknologi pengindraan suhu dan kelembaban
tipe dan komponen pengukuran suhu NTC, dan terhubung ke mikrokontroler 8-bit
berkinerja tinggi. Penggunaan modul ini memiliki kualitas yang sangat baik,
24
DHT11 ini memiliki range dalam pengukuran suhu sebesar 0-50°C dan range
pembacaan kelembaban sebesar 20-90% RH. Adapun toleransi pada modul ini
±5%RH dan ±2°C. Dengan range yang tidak terlalu besar dan toleransi alat yang
minim menjadikan pilihan yang tepat untuk digunakan sebagai sensor yang
alat juga menggunakan modul DHT11. Adapun gambar dari modul DHT11
Terdapat 4 kaki pada modul DHT11 yang dapat dilihat dari gambar 2.3
dimulai dari kiri adalah kaki 1 sebagai inputan VCC dan kaki 2 sebagai outputnya
dari hasil pengolahan data analog dari sensor DHT11 yang dihubungkan ke
bagian analog input mikrokontroler kemudian kaki 3 adalah nul atau tidak
digunakan dan kaki 4 adalah ground. Tabel dari spesifikasi modul DHT11
membaca tekanan udara pada suatu tempat. Sensor ini dapat membaca ketinggian
diatas permukaan laut serta suhu disekitar sensor. Sensor ini merupakan
dalam akurasi pembacaan pada BMP280 lebih tinggi dari pada sensor-sensor
sebelumnya. Sensor ini dapat membaca tekanan udara pada jarak 300 hPa hingga
1100 hPa atau sama dengan +9000 hingga -500 diatas atau dibawah permukaan
laut. Adapaun keakurasiaan sensor ini kurang lebih bersekitar 0,12 hPa hingga 1
hPa. Berikut gambar dari sensor BMP280 pada gambar 2.5 dan gambar 2.6
26
Sumber: https://forum.arduino.cc/index.php?topic=654763.0
Thin Film Transistor (TFT) merupakan salah satu jenis dari Liquid crystal
display (LCD) yang menggunakan transistor film tipis untuk mengasilkan kualitas
gambar seperti kontras dan kecerahan menjadi lebih baik seperti pada Gambar 2.7.
TFT artinya transistor film tipis, yang berarti setiap pixel cair terdiri dari transistor
kecerahan tinggi, dan kontras yang tinggi tampilan informasi layar dapat dicapai.
27
Selain itu TFT juga dapat diartikan salah satu tipe layar LCD yang datar, di mana
Teknologi ini menyediakan resolusi terbaik dari teknik panel data. TFT LCD
sering disebut juga active-matrix LCD. Layar ini menampilkan gambar yang kaya
warna dan permukaannya sensitif terhadap sentuhan. Touchscreen jenis TFT LCD
sudah termasuk memori, prosesor dan juga akses GPIO. Modul ini memerlukan
tegangan kerja sebesar 3,3V. Modul ini di produksi oleh Espressif Chinese
manufacturer. Pada tahun 2014, AI-Thinker manufaktur pihak ketiga dari modul
ini mengeluarkan modul ESP-01 dengan dimensi 14,3 mm x 24,8 mm. Berikut
Flowchart digunakan untuk menjelaskan gambaran logis sebuah sistem yang akan
Proses
Mendeskripsikan sebuah tabel
Hitung
atau proses operasi
Terminal point
Awal/ akhir flowchart
Mulai
Keputusan
Mendeskripsikan
relasi
Manual Operasi
Menunjukkan pengolahan yang
Pencet
tidak dilakukan oleh computer. tombol
Input/Output
Mepresentasikan input data atau
Baca
output data yang diproses. Sensor
BAB III
METODE PENELITIAN
Proses dari metode penelitian yang dilakukan dari awal peancangan hingga
Start
Tidak
Uji coba
alat
Ya
Pengambilan data
Analisis
Kesimpulan
Penulisan KTI
End
30
31
skematik adalah mencari bentuk rangkaian model alat yang optimal dari sistem
Melakukan riset dan pembuatan alat ini adalah satu kesatuan yang tidak
dapat dipisahkan. Hal ini dilakukan dengan tujuan agar setelah melakukan
sebelumnya sehingga riset ini sebagai bentuk percobaan dari pada hasil
Uji coba alat ini bertujuan untuk melakukan pengukuran dan pengujian
alat untuk melihat performa dari alat yang telah dirancang apakah alat yang
4. Pengambilan Data
Proses ini dapat dilakukan jika alat yang telah dibuat dapat bekerja
mengambil kesimpulan dari hasil analisis dari masalah yang terjadi dan juga
tugas akhir berisi tentang latar belakang permasalahan alat, landasan teori
dalam perancangan alat, metode penelitian alat yang berisi diagram sistem, alat
Seriap dari perancangan alat tidak akan terlepas dengan diagram blok sistem
alat. Pada perancangan pemantauan suhu, kelembaban dan tekana udara terpusat
pembacaan di dalam ruang operasi dan pembacaan dibagian luar kamar operasi.
Hal ini bertujuan agar dapat membandingkan antara bagian dalam ruangan dan
luar ruangan. Berikut gambar 3.2 dan 3.3 yang merupakan diagram sistem alat
yang diletakkan didalam ruangan operasi dan diagram sistem alat yang diletakkan
dan tekanan yang berada pada ruang tesebut. Gambar 3.3 adalah gambar diagram
sistem alat bagian luar kamar operasi yang nantinya sebagai pembanding antara
tekanan udara yang ada pada ruang operasi dengan tekanan udara diluar kamar
34
operasi. Kedua gambar diatas pada dasarnya memiliki sistem yang sama,
sensor yaitu BMP280 dan DHT11, dan satunya lagi hanya menggunakan 1 sensor
yaitu BMP280. Proses pemantauan dimulai dari pemberian tegangan supply yang
berasal dari PLN dengan tegangan AC atau tegangan bolak balik yang kemudian
disearahkan dengan rangkaian power supply unit (PSU) dan menjadi tegangan DC
atau tegangan searah. Hasil dari rangkain PSU menjadi sumber tegangan dari
semua rangkaian pada alat ini baik sensor maupun mikrokontroler kecuali pada
bagian Blynk yang merupakan sebuah aplikasi di smartphone atau HP. PSU
berfungsi sebagai pengatur dan juga pembacaan sensor. Sensor BMP280 dan
sensor DHT11 memberikan data berupa sinyal digital yang nantinya diproses oleh
melalu LCD TFT kurang atau pun lebih maka buzzer menyala sebagai alarm. Hal
ini bertujuan agar ketika terjadi perubahan pada sensor baik suhu, kelembaban dan
tekanan udara tidak sesuai dengan kebutuhan ruangan maka akan memberikan
nya sudah terdapat ESP8266. Ketika wifi terhubung dengan ESP8266 dan juga
jaringan wifi. Hal ini bertujuan agar semua pembacaan seonsor dapat ditampilkan
Diagram alir sistem kerja pada alat ini terdapat 2 bagian diagram yaitu
diagram alir untuk alat yang diletakkan didalam kamar operasi dan diagram alir
untuk alat yang diletakkan diluar kamar operasi. Perhatikan gambar 3.4 sebagai
gambar diagram alir sistem kerja alat yang diletakkan di dalam kamar operasi dan
gambar 3.5 sebagai gambar diagram alir sistem kerja alat yang diletakkan di luar
kamar operasi.
ketika alat menyala (start) sistem akan memulai inisialisasi, apabila berhasil maka
LCD TFT menampilkan proses kerja alat dan menampilkan menu atau settingan.
Setelah memilih menu, proses akan dijalankan dan data proses tersebut apabila
dapat diterima maka proses pemantauan dapat berjalan dengan membaca sensor.
37
Apabila tidak dapat diterima maka akan kembali ke pemilihan menu. Pada saat
data akan diproses untuk menyesuaikan data wifi pada mikro dengan wifi yang
tersedia. Jika data mikro dengan wifi yang tersedia sesuai maka data akan dikirim
ke aplikasi Blynk dan apabila data wifi tidak sama dengan wifi yang tersedia
Diagram alir kerja alat yang nantinya diletakkan di luar kamar operasi
memiliki alur yang tidak jauh berbeda dengan sebelumnya, hanya saja memiliki
dengan sebelumnya, akan tetapi tujuan dari pembuatan ini sebagi pembanding
antara tekanan udara yang berada pada luar kamar operasi yang berada dibagian
dalam kamar operasi. Semua alat baik didalam maupun diluar kamar operasi
menggunakan sistem IOT yang menggunakan website sebagai server yang bisa
memperkirakan bentuk dan susunan dari alat yang akan dibuat nantinya. Terdapat dua
interface pada smartphone. Bentuk dari rancangan alat hardcase dapat dilihat pada
Gambar 3.6 dan perancangan pada bagian interface smartphone pada gambar 3.7
38
3.5.1 Alat
alat ini. Adapun beberapa alat yang digunakan dapat dilihat pada tabel 3 berikut:
1. Laptop 1
2. Penyedot Timah 1
3. Solder 1
4. Tool Set 1
5. Bor PCB 1
6. Gergaji 1
7. Multimeter 1
8. Konektor 1
3.5.2 Bahan
karakteristik alat yang akan di buat. Bahan yang di gunakan dapat di lihat pada
tabel 3.2
1 PCB 1
2 Timah 1
3 ESP8266 1
4 Sensor DHT11 2
5 Sensor BMP280 3
6 Arduino Mega2560 2
7 Kabel Konektor -
8 Konsil -
dari rangkaian elektronika tersebut secara langsung dapat dilihat pada gambar
dibawah.
41
mikrokontroler dapat bekerja atau melakukan proses pengolahan data yang sesuai
minimum kerja pada komponen ESP8266. ESP8266 yang sudah dapat bekerja
akan penangkap sinyal wifi dan menghubungkan dengan wifi yang tersedia
sebagai regulator atau penurun tegangan menjadi 3,3V dan kapasitor polar yang
43
pembacaan sensor DHT11 pada bagian suhu maupun kelembaban dapat lebih
stabil yaitu dengan menambahkan sebuah resistor yang dihunbungkan dari vcc
denngan kaki 2 pada sensor DHT11, serta kapasitor yang dihubungkan dari vcc ke
ground. Skematik rangkaian DHT11 dapat dilihat pada gambar 3.9 berikut.
Sensor tekanan BMP berfungsi sebagai pengukur nilai tekanan udara pada
yang dihasilakan secara langsung tampa ada konversi nilai ADC. Dengan
menghubungkan kaki satu pada tegangan 5Vdc dan pada kaki 2 sensor ke ground
tegangan jala-jala PLN yang semula berupa tegangan AC sebesar 220 V diubah
elektronika pada alat. Pada perancangan catu daya dengan prinsip penurunan
dengan sukunder serta beberapa komponen lain berupa dioda sebgaai penyearah
memiliki fungsi dapat menjadikan perbandingan lilitan trafo menjadi lebih sedikit.
Sebelum dapat menjadi DC murni tegangan yang sudah melewati rangkaian diode
akan masuk ke rangkaian filter yang terdiri dari resistor dan kapasitor kemudian
photodiode atau IC PC617 yang nantinya photodiona ini akan meberikan sinyal
pada gate dikaki IC pembangkit frekuesi. dan beberpa kapasitor sebagai filter dan
gate pada pin IC pembangkit frekuensi. Skemtik rangkaian catu daya dengan
pembangkit frequensi tinggi yang digunakan pada alat pertama dapat dilihat pada
gambar 3.11 dan skematik rangkaian catu daya dengan trafo CT pada gambar 3.12
berikut.
seting pemrograman Arduino IDE yang di masukkan pada minimum sistem agar
dapat melakukan perintah pada perangkat keras untuk bekerja. Detail dari pada
Kode program pada Tabel 6 dibawah digunakan sebagai deklarasi awal atau
pengaturan awal fungsi suatu pin pada mikrokontroler dengan tujuan pin yang
digunakan sesui dengan rangkaian yang akan bekerja. Deklarasi ini bertujuan
untuk mengatur pin pada mikrokontroler yang terhubung dengan rangkaian yang
#define YP A3
#define XM A2
Deklarasi pin untuk lcd tft sebagai touchscreen
#define YM 23
#define XP 22
#define LCD_CS A3
#define LCD_CD A2
Deklarasi pin untuk lcd tft sebagai mode tampilan
#define LCD_WR A1
#define LCD_RD A0
yang akan di gunakan sebagai msaukan atau keluaran. awal atau pengaturan awal
fungsi suatu pin pada mikrokontroler dengan tujuan pin yang digunakan sesui
dengan rangkaian yang akan bekerja. Terdapat beberapa pin yang digunakan
sebagai penerima data dari sensor, ada yang digunakan sebagai tampilan pada lcd
tft maupun tombol touchscreen dan lain sebagainnya. Deklarasi ini bertujuan
untuk mengatur pin pada mikrokontroler yang terhubung dengan rangkaian yang
#include <Fonts/FreeSans9pt7b.h>
#include <Fonts/FreeSans12pt7b.h>
#include <Fonts/FreeSerif9pt7b.h>
Penambahan librabri pada
#include <Fonts/FreeSerif12pt7b.h> untuk font pada tampilan
lcd tft
#include <Fonts/FreeSerifBold12pt7b.h>
#include <Fonts/FreeSerifBold9pt7b.h>
#include <FreeDefaultFonts.h>
int detik;
Nilai pembacaan sensor DHT11 dan BMP280 berupa sinyal digital sehingga
nilai pada pembacaan sensor ini dapat langsung terbaca tetapi memerlukan sebuah
librari yang sesuai dengan sensor dan dapat bekerja menggunakan Arduino,
void bacaSensor()
if (isnan(hum) || isnan(temp)) {
Kode program Ketika
tft.setCursor (20, 80); pembacaan sensor dht11
terputus maka akan tertampil
tft.setFont(&FreeSerif9pt7b); pada display ke eroran
dengan font Free Serif pada
tft.setTextSize(1); titik poin di display 20,80
dengan besaran font 1 kali
tft.setTextColor(WHITE, LIGHTGREY); ukuran normal yang diberi
warna WHITE dengan
tft.print("T_Error"); background LIGHTREY
tft.setFont(&FreeSerif9pt7b);
tft.setTextSize(1);
tft.setTextColor(WHITE, LIGHTGREY);
51
if (!bmp.begin(0x76))
else
}}
awal alat, pilihan menu, nilai pembacaan dan tampilan proses pemantauan.
void tampil(int x, int y, int sz, const GFXfont *f, const char
*msg)
void awalan() {
void pilihan_awal(){
void pilihan_kedua()
void set_kelembapan()
tft.fillTriangle (15, 35, 50, 20, 50, 50, RED); // set segitiga
dengan waran
void set_tekanan()
tft.fillTriangle (15, 35, 50, 20, 50, 50, RED);// set segitiga
dengan warana
void set_wifi()
tft.fillTriangle (15, 35, 50, 20, 50, 50, RED); // set segitiga
dengan warna }
void normal()
////////.............BARIS KE DUA.............\\\\\\\\\\
////BARIS KE TIGA
/////BARIS KE EMPAT
59
/////BARIS KE EMPAT
////////.............BARIS KE DUA.............\\\\\\\\\\
void uper_case()
////////.............BARIS KE DUA.............\\\\\\\\\\
63
//////.............BARIS KE DUA.............\\\\\\
/////BARIS KE EMPAT
////////.............BARIS KE DUA.............\\\\\\\\\\
65
/////.............BARIS KE DUA.............\\\\\
tft.setTextColor (BLACK);
void number ()
/////.............BARIS KE DUA.............\\\\\
/////BARIS KE EMPAT
////////.............BARIS KE DUA.............\\\\\\\\\\
tft.setFont(&FreeSans9pt7b);
tft.setCursor(215, 180);
72
void gantiwifi() {
penghubung hardware alat ke jaringan wifi sehingga dapat mengirimkan data pada
server blynk dan akan tampil pada layar smartphoe yang sudah tersedia dengan
aoikasi blynk. Program dalam menghubungkan degan wifi dan sekaligus dengan
void resetwifi() {
}
Adapun untuk program lebih lengkapnya dapat dilihat pada halaman lampiran.
75
standar kelayakan penggunaan dari alat yang dirancang. Beberapa pengujian yang
suhu pada saat proses pemantauan. Stabilitas dan keakurasian sangat penting
thermohigro ruangan.
keakurasian nilai tekanan udara pada saat proses pemantauan. Stabilitas dan
keakurasian sangat penting dalam proses pemantauan. Pengujian tekanan udara ini
ruangan.
ruangan dapat dipantau secara langsung dalam satu tampilan di smartphone yang
sudah tersedia aplikasi blynk. Pengujian ini menggunakan sebuat tabel uji apakah
dapat terhubung dengan baik atau tidak dengan mencoba beberapa wifi yang
berbeda.
dibuat dengan alat layak pakai dan dilakukan perhitungan nilai rata-rata dan
simpangan error
3.6.1 Rata-Rata
Rata-rata adalah nilai atau hasil pembagian dari jumlah data yang diambil
Keterangan:
x = rata-rata
Error adalah selisih atau perbedaan nilai antara rata-rata alat yang dibuat
Keterangan:
tampilan dari alat pemantauan ruang operasi seperti gambar 4.1 yang penulis
2. Max Temperature : 50 oC
3. Max Humidity : 90 %
sesuai yang dilakukan untuk memastikan dan menjaga alat agar tetap dalam
1. Persiapan
78
79
2. Pelaksanaan
yang tersedia.
wifi
3. Pengemasan
rapikan kabel
menempel.
diturunkan dan diserahkan terlebih dahulu dengan rangkaian catu data menjadi 5
DHT 11, rangkaian sensor BMP280, display, buzzer dan ESP8266. Rangkaian
mikrokontroler ini sebagai rangkaian pengolah dan menjadi pusat perintah kerja
sistem.
atau menyala, kemudian display lcd akan hidup. Sistem akan menganalisis alat,
ketika menjalankan program lcd tft dengan touchscreen sehingga lcd dapat
dijadikan sebagai display sekaligus sebagai inputan data. Setelah lcd menyala dan
bekerja dengan semestinya, mikrokontrler akan membaca kedua sensor dan dapat
berupa ssid dan password yang tersedia sehingga ESP8266 dapat terhubung
dengan wifi yang memiliki ssid dan password yang sama. Untuk dapat
menampilkan data yang sudah terkirim ke server blynk menggunakan token yang
sudah diberikan oleh aplikasi blynk dengan akun tertentu , sehingga data data
pada sever tidak akan terbaca selain dari token yang diberikan.
Hasil pengukuran berisikan data nilai hasil percobaan dan uji fungsi alat.
Gamping yang ruangannya sudah sesuai dengan ketentuan berlaku. Pengujian ini
digital. Pengambilan data dialkukan dengan membaca nilai suhu tiap satu menit.
Hasil pengambilan data suhu ruangan operasi pertama ditampilkan pada tabel 11
Tabel 11 Nilai suhu pembacaan alat dan thermohygro pada ruang pertama
1 24.4 23.9
2 24.3 24
3 24.3 23.8
4 24.3 23.8
5 24 23.5
6 23.9 23.4
82
7 24 23.2
8 24.1 23
9 24.1 22.9
10 24.2 23.1
11 24.2 23.2
12 24.3 23.5
13 24.3 23.7
14 24.3 23.9
15 24.3 23.9
16 24.3 24
17 24.4 24
18 24.4 24.1
19 24.4 24.1
20 24.5 24.1
Rata-Rata 24.3 23.7
Error 2.5%
Standart
0.1572
Deviasi
Dari hasil pengambilan data dan membandingkan dengan alat thermohygro
digital, bahwasanya alat yang menggunakan sensor DHT 11 sebagai sensor suhu
memilki tingkat ke akurasian yang cukup stabil dengan nilai suhu tertinggi pada
suhu 24.5 oC dengan pembadingnya pada suhu 24.1 oC pada menit ke 20 dan suhu
paling rendah yang terbaca adalah 23.9 oC dengan pembandingnya pada suhu 23.4
o
C pada menit ke 6. Sehingga dapat diperoleh nilai rata-rata dari suhu yang
terbaca pada ruang satu menggunakkan sensor DHT11 adalah 24.3 oC dan rata-
rata suhu yang terbaca menggunakan thermohygro digital adalah 23.7 oC dengan
nilai eror sebesar 2.5%. Terjadinya eror atau selisih dikarenakan letak dari pada
sensor yang didalam dan diatas dari pada rangkaian power supply yang diketahui
bahwa power supply memiliki hawa panas yang ditimbulkan dari IC ataupun dari
83
transformator. Dari data diatas dapat ditampilkan menjadi grafik yang ditampilkan
Suhu Ruang 1
25
24.5
24
Suhu (oC)
23.5
23
22.5
22
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Menit
DHT 11 Thermohygro
sensor lebih tinggi dari pada nilai pembacaan suhu pada alat Thermohygro. Pada
waktu menit pertama, selisih diantara pembacaan suhu pada alat dengan sensor
DHT11 kurang dari pada 1 oC dengan nilai suhu DHT lebih tinggi dari pada alat
7 hingga ke 10, perbandingan suhu kedua alat menjadi lebih jauh yang mana suhu
pada alat Thermohygro lebih rendah dari pada sensor DHT11. Hal ini di sebabkan
sensor pada alat Thermohygro menyentuh lantai sehingga suhu yang terbaca lebih
rendah dari pada suhu ruangan. Setelah itu, pada menit ke 11 hingga ke 20 suhu
ruangan mulai sedikit naik yang dikarenakan pada dalam ruangan operasi terdapat
beberapa orang yang keluar masuk ruangan guna mempersiapkan kegiatan operasi
yang ditaruh diatas dari rangkaian power supply dimana power supply ini
ataupun transformator.
Tabel 12 Nilai suhu pembacaan alat dan thermohygro pada ruang kedua
1 24.1 23.1
2 24.3 23.1
3 23.9 22.8
4 24.3 22.9
5 24.5 23.1
6 24.6 23.1
7 24.6 23.3
8 24.6 23.2
9 24.5 23.5
10 24.3 23.7
11 24.5 23.7
12 24.2 23.7
13 24.2 23.7
14 24.2 23.8
15 24.3 24
16 24.4 24.1
17 24.4 24.1
18 24.3 24.5
19 24.6 24.6
20 24.7 24.5
Rata-Rata 24,4 23.6
Error 3.2%
Standart
0.2023
Defiasi
85
digital, bahwasanya alat yang menggunakan sensor DHT 11 sebagai sensor suhu
memilki tingkat ke akurasian yang cukup stabil dengan nilai suhu tertinggi pada
suhu 24.7 oC dengan pembadingnya pada suhu 24.5 oC pada menit ke 20 dan suhu
paling rendah yang terbaca adalah 23.9 oC dengan pembandingnya pada suhu 22.8
o
C pada menit ke 3. Sehingga dapat diperoleh nilai rata-rata dari suhu yang
terbaca pada ruang ke dua menggunakkan sensor DHT11 adalah 24.4 oC dan rata-
rata suhu yang terbaca menggunakan thermohygro digital adalah 23.6 oC dengan
nilai eror sebesar 3.2%. Terjadinya eror atau selisih dikarenakan letak dari pada
sensor yang didalam dan diatas dari pada rangkaian power supply yang diketahui
bahwa power supply memiliki hawa panas yang ditimbulkan dari IC ataupun dari
Suhu Ruang 2
25.5
25
24.5
Suhu (oC)
24
23.5
23
22.5
22
21.5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Menit
DHT11 Thermohygro
Hasil dari pembacaan grafik diatas, didapatkan nilai suhu dari pembacaan
sensor pada menit awal lebih tinggi dari pada nilai Thermohygro dan perlahan
menjadi stabil. Terjadinya lonjakan nilai pembacaan sensor yang tinggi pada
menit ke 3 dengan selisih dari keduanya lebih dari 1 oC. Penyebab terjadinya
lonjakan nilai suhu pada sensor DHT11 adalah kondisi dari IC TIP3055 yang
merupakan IC transistor pada rangkaian power supply terjadi kenaikan suhu yang
tinggi. Hal ini disebabkan karena transistor sebagai penguat arus akan semakin
panas ketika arus yang digunakan pada alat cukup tinggi. Akan tetapi pada menit
ke 4 hingga menit ke 20 suhu yang terbaca pada sensor DHT11 menjadi stabil
berkisar pada suhu 24 oC hingga 24.7 oC yang mana suhu yang terbaca pada alat
Thermohygro naik karena ruangan yang seringnya dibuka dan ditutup serta
dimasuki pasien dan para tenaga medis lain yang hendak melakukan tindakan
pembedahan.
data dilakukan dengan membaca nilai kelembaban tiap lima menit sekali. Hasil
pengambilan data kelembaban pada alat pertama ditampilkan pada tabel 13 dan
Tabel 13 Nilai kelembaban pembacaan alat dan pembacaan dari alat Fluke DPM4
pada alat ke satu.
87
5 47.2 50.1
10 46.1 50.4
15 46.1 49.9
20 45 49.9
25 45 49.9
30 45 50
35 45 49.9
40 45 49.2
45 45 48.6
50 49.4 48
55 52.7 47.7
60 51.8 47.6
65 51.3 47.4
70 52.8 47
75 51.8 47.3
80 52 47.4
85 51.3 47.9
90 51.6 47.7
95 47.2 47.4
100 47.2 47.5
Rata-Rata 48.4 48.5
Error 0.2%
Standart
3.1308
Defiasi
memiliki tingkat akurasi cukup baik dengan batasan dari pada sensor asli yakni
Fluke DPM4 nilai rata-rata diperoleh sebesar 48. 4%Rh dan 48.5 %Rh dengan
88
rata-rata selisihnya adalah 0.1 %Rh. Pengukuran tertinggi pada sensor DHT11
adalah 52.7 %Rh pada menit ke 55 dengan pembandingnya sebesar 47.7 %Rh.
Selisih dari pada simpangan yang terjadi kurang daripada nilai batas bawaan
sensor DHT11 yakni kurang atau lebih 5 %Rh sehingga sensor DHT11 dalam
mengukur kelembaban masih dapat berfungsi dengan baik. Adapun nilai terendah
besar nilai kelembaban DHT11 yakni 45 %Rh dan pada alat Fluke DPM4
bersekitar di 48.6 %Rh hingga 50 %Rh dengan selisih masih dalam toleransi
sensor yakni kurang atau lebih dari 5 %Rh. Dengan demikian sensor DHT11
masih baik digunakan. Hasil dari pembacaan kelembaban pada alat kesatu dapat
Kelembaban Alat 1
54
52
Kelembaban (%Rh)
50
48
46
44
42
40
5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
Menit
pada sensor DHT11 memiliki akurasi yang cukup baik dengan selisih pembacaan
pada sensor DHT11 dengan alat Fluke DPM4 masih dalam toleransi yang dimiliki
89
oleh sensor yakni kurang atau lebih dari 5 %Rh. Adapun masalah ke stabilan
lebih tinggi dari pada dengan alat pembandingnya yang mana masih di sekitar 50
%Rh hingga 46 %Rh. Dengan kenaikan kelembaban yang tidak stabil tersebut
disebab adanya pengaruh dari rangkaian power supply yang menghantarkan panas
terpengaruhi seperti halnya pada saat pembacaan suhu sebelumnya. Adapun pada
menit ke 95 dan 100 nilai pembacaan sensor DHT11 akurasi dan ke stabilan yang
Tabel 14 Nilai kelembaban pembacaan alat dan pembacaan dari alat Fluke DPM4
pada alat ke dua
5 46.7 51
10 47.7 50.1
15 46.7 49.9
20 45.9 50
25 46.9 49.9
30 47 50.2
35 46 49.6
40 49.1 49
45 43.9 48.3
50 51.5 48
55 51.5 47.6
60 51.5 47.5
65 51.5 47.4
70 51.5 47.3
75 51.5 47.3
80 55.3 47.9
90
85 55.3 47.8
90 52.3 47.8
95 44.8 47.4
100 43.9 47.4
Rata-Rata 49.025 48.57
Error 0.9%
Standart
3.5297
Defiasi
kelembaban pada alat kedua ini memiliki rata-rata pengukuran sebesar 49.025
%Rh dan dengan pembanding alat Fluke DPM4 dengan rata-rata 48.57 %Rh.
Dengan selisih rata-rata keduanya yakni 0.455 %Rh yang mana selisih ini
memiliki nilai yang cukup kecil dan masih memenuhi toleransi pada sensor yang
digunakan yakni kurang atau lebih dari 5 %Rh. Adapun nilai eror yang d
cantumkan pada data diatas sebesar 0.9% yang didapatkan dari menghitung selisih
pembandingnya yaitu Fluke DPM4 yang setelah itu dibagi dengan rata-rata
kelembaban yakni 3.5297. Hasil dari pembacaan kelembaban pada alat kedua
Kelembaban Alat 2
60
50
Kelembaban (%Rh)
40
30
20
10
0
5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
Menit
Fluke DPM4 DHT11
kestabilan nilai yang cukup tinggi dimana setiap 5 menit pada pengukuran awal
hingga ke menit 35 kestabilan antara naik dan turun pada kelembaban ini cukup
sedikit atau bisa dibilang konstan. Adapun pembacaan pada menit ke 40 hingga
menit 50 perubahan kelembaban sedikit tidak stabil akan tetapi masih dapat
masuk toleransi pembatasan keeroran sensor yang memiliki selisih kurang atau
tekanan udara BMP280 dengan Fluke DPM4. Pengambilan data dilakukan dengan
membaca nilai tekanan udara raungan tiap lima menit sekali. Hasil pengambilan
92
data tekanan udara ini pada alat pertama ditampilkan pada tabel 15 dan untuk alat
Tabel 15 Nilai tekanan udara alat pertama dengan pembanding Fluke DPM4
5 98890 98870
10 98884 98860
15 98877 98850
20 98855 98830
25 98855 98840
30 98848 98820
35 98843 98810
40 98838 98820
45 98831 98810
50 98839 98810
55 98831 98800
60 98821 98800
65 98820 98800
70 98810 98790
75 98811 98790
80 98811 98790
85 98804 98790
90 98787 98770
95 98761 98750
100 98760 98740
Rata-Rata 98828.8 98807
Error 0.02%
Standart
35.5966
Defiasi
93
Dari hasil pengambilan data dari alat pertama diatas, serta membandingkan
dengan alat Fluke DPM4, bahwasannya alat yang menggunakan sensor tekanan
udara absolut atau yang terdapat pengaruh dari tekanan atsmorfir bumi memiliki
nilai kestabilan yang cukup tinggi dengan keeroran sebesar 0.02%, adapun rata-
rata pembacaan tekanan udara pada sensor BMP280 adalah 98828.8 Pa dan
pembandingnya sebesar 98807 Pa dengan selisih dari kedua rata-rata diatas adalah
21.8 Pa. Standart defiasi yang dihasilkan dari seluruh pembacaan tekanan udara
pada sensor BMP280 sebesar 35.5966. Hasil pengambilan data pada alat pertama
dapat ditampilkan dalam bentuk grafik yang ditampikan pada gambar 4.5 dibawah
ini.
98850
98800
98750
98700
98650
5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
Menit
memiliki keaskurasian dan kestabilan yang sangat bagus dengan selisih antara
pembacaan sensor BMP280 dengan alat Fluke DPM4 tidak lebih dari 1 hPa serta,
perubahan nilai tekanan udaranya, sangat stabil tanpa adanya lonjakan yang
94
dipengaruhi dari rangkaian power supply atau pun rangkaian lainnya. Pada menit
5 hingga menit ke 20 terjadi penurunan tekanan udara pada ruangan dan dapat
dibaca dengan kedua alat yanag sama-sama tekanan udaranya menurun dengan
cukup stabil. Adapun pada menit ke 25 pada alat Fluke DPM4 terjadi kenaikan
tekanan udara dan diikuti dengan sensor BMP280 dengan sedikit kenaikannya
dari pada pembacaan sebelumnya. Setelah itu, pada menit 30 hingga menit 100
terjadi kenaikan dan penurunan tekanan udara dengan stabil dan dapat diikuti
Tabel 16 Nilai tekanan udara alat kedua dengan pembanding Fluke DPM4
5 98895 98870
10 98884 98860
15 98870 98850
20 98859 98840
25 98861 98840
30 98851 98830
35 98837 98810
40 98838 98820
45 98832 98810
50 98830 98810
55 98820 98800
60 98821 98800
65 98825 98800
70 98816 98790
75 98824 98790
80 98815 98790
85 98810 98780
90 98785 98760
95
95 98771 98740
100 98765 98740
Rata-Rata 98830.45 98806.5
Error 0.02%
Standart
33.9434
Defiasi
Dari hasil pengambilan data dari alat ke dua diatas, serta membandingkan
dengan alat Fluke DPM4, bahwasannya alat yang menggunakan sensor tekanan
udara absolut atau yang terdapat pengaruh dari tekanan atsmorfir bumi memiliki
nilai kestabilan yang cukup tinggi dengan keeroran sebesar 0.02%, adapun rata-
rata pembacaan tekanan udara pada sensor BMP280 adalah 98830.45 Pa dan rata-
rata pada alat pembandingnya sebesar 98806.5 dengan selisih diantara kedua rata-
rata tersebut sebesar 23,92 Pa, sehingga dapat dikatakan presisi karena masih
dibawah 1hPa dengan nilai pembacaan tekanan udara pada sensor BMP280
tertinggi yakni 98895 Pa pada menit ke 5 dengan alat Fuke DPM4 pada tekanan
udara sebesar 98870 Pa serta pembacaan nilai terrendah pada sensor BMP280
yakni 98765 Pa, pada menit ke 100 dengan nilai pembandingnya sebesar 98740
Pa. Standart defiasi yang dihasilkan dari pengukuran selama 100 menit dengan
pengambilan data tiap 5 menit sekali diatas adalah 33.9434. Hasil pengambilan
data pada alat kedua dapat ditampilkan dalam bentuk grafik yang ditampikan pada
98850
98800
98750
98700
98650
5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
Menit
memiliki keaskurasian dan kestabilan yang sangat bagus dengan selisih antara
pembacaan sensor BMP280 dengan alat Fluke DPM4 tidak lebih dari 1 hPa serta,
perubahan nilai tekanan udaranya, sangat stabil tanpa adanya lonjakan yang
dipengaruhi dari rangkaian power supply atau pun rangkaian lainnya. Pada
tekanan secara konstan. Adapun pada menit ke 25 terjadi sedikit kenaikan tekanan
udara yang tidak terlalu signifikan, kemudian pada menit ke 30 hingga menit 35
udara. Hingga pada menit 45 ke menit 100 tekanan udara masih mengalami
penurunan dan kenaikan sedikit. Semua kenaikan dan penurunan diikuti dengan
baik oleh sensot BMP280 dengan pembandingnya yakni dari alat Fluke DPM4
DAFTAR PUSTAKA
2004.
[3] Menkes RI, “Pedoman teknis bangunan rumah sakit ruang gawat darurat,”
97
98
Datasheet, p. 9, 2010.
24.4 + 24.5 / 20
= 485/20
= 24.25 oC
+ 24.3 + 24.6 / 20
= 488.8 / 20
= 24.44 oC
24.1 + 24.1 / 20
= 473.1 / 20
= 23.66 oC
99
100
= 472.5 / 20
= 23.63 oC
b. Persentase Error
100%
= -2.5 %
= 2.5 %
= -3.4%
= 3.4%
+ 47.2 / 20
= 48.425 %Rh
101
+ 47.4 + 47.5 / 20
= 48.54 %Rh
= 49.025 %Rh
+ 47.4 + 47.4 / 20
= 48.57 %Rh
b. Persentase Error
100%
= 0.2 %
= -0.9%
= 0.9 %
102
= 98829 Pa
= 98807 Pa
= 98830 Pa
= 99907 Pa
b. Persentaase Error
100%
= -0.02%
= 0.021 %
= -0.02%
= 0.02 %
1) Pengujian Suhu
104
2) Rangkaian Mikrokontroler
5) Rangkaian NodeMCU
6) Modul ESP8266
107
4. Program Keseluruhan
#include <Adafruit_GFX.h>
#include <Adafruit_TFTLCD.h>
#include <TouchScreen.h>
#include <DHT.h>
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
//#include <BlynkSimpleEsp8266.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#define EspSerial Serial1
#define ESP8266_BAUD 115200
ESP8266 wifi(&EspSerial);
#define YP A3
#define XM A2
#define YM 23
#define XP 22
#define TS_MINX 150
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
tft.fillTriangle (15, 35, 50, 20, 50, 50, RED); //
(x1,y1,x2,y2,x3,y3)
tft.fillCircle(285, 35, 20, MAROON);
tampil(272.5, 40, 0, &FreeSerif9pt7b, "OK");
108
//SimpleTimer timer;
//char auth[] = "g3djX6HPkRyfjKLgNY-OEYJOqa8tuw8r";
char auth[] = "K27rk1a2VBh7NQV4g0_whYywytS8KV-e";
char ssid[] = "Xperia X";
char pass[] = "sandineiki";
char SSid,PASS;
float hum, temp, pres ;
int detik;
int sampling = 1000;
int buzzer1, buzzer2, kembali;
int BOXSIZE = 25;
String kecil, besar, num, Ssid, Pass;
void bacaSensor()
{
if (isnan(hum) || isnan(temp)) {
tft.setCursor (20, 80);
tft.setFont(&FreeSerif9pt7b);
tft.setTextSize(1);
tft.setTextColor(WHITE, LIGHTGREY);
tft.print("T_Error");
tft.setFont(&FreeSerif9pt7b);
tft.setCursor (160, 80);
tft.setTextSize(1);
tft.setTextColor(WHITE, LIGHTGREY);
tft.print("H_Error");
Blynk.virtualWrite(V4, HIGH);
Blynk.virtualWrite(V6, HIGH);
}
if (!bmp.begin(0x76))
{
tft.setFont(&FreeSerif9pt7b);
tft.setFont();
void normal()
{
110
}
//***************************************************************
//
void pilihan_kedua()
{
tft.fillScreen (WHITE);
tft.setTextColor(BLACK);
tampil(100, 20, 0, &FreeSerifBold9pt7b, "PENGATURAN");
tft.fillRect(80, 37, 175, 30, BLUE);
tampil(95, 57, 0, &FreeSans9pt7b, " SET SUHU");
tft.fillRect(80, 85, 175, 30, BLUE);
tampil(90, 105, 0, &FreeSans9pt7b, "SET KELEMBAPAN");
tft.fillRect(80, 135, 175, 30, BLUE);
tampil(90, 155, 0, &FreeSans9pt7b, " SET TEKANAN");
tft.fillRect(80, 185, 175, 30, BLUE);
tampil(95, 205, 0, &FreeSans9pt7b, " SET WIFI");
tft.fillTriangle (15, 35, 50, 20, 50, 50, RED); //
(x1,y1,x2,y2,x3,y3)
}
/////////////////////////////////////////////////////////////////
/////
void set_suhu_max()
114
/////////////////////////////////////////////////////////////////
/////
void set_suhu_max()
{
tft.fillScreen (WHITE);
tft.setTextColor(BLACK);
tft.fillRect(70, 30, 180, 50, BLUE);
tft.drawRect(70, 30, 180, 50, BLACK);
tampil(90, 52, 0, &FreeSerifBold9pt7b, "SET SUHU MAX");
tft.fillRect(70, 62, 180, 100, LIGHTGREY);
tft.drawRect(70, 62, 180, 100, BLACK);
tft.drawRect(70, 162, 180, 50, BLACK);
tft.drawRect(70, 162, 90, 50, BLACK);
tft.setCursor (130, 132);
tft.setTextSize (3);
tft.print(setSuhuMax);
tft.fillTriangle (15, 35, 50, 20, 50, 50, RED); //
(x1,y1,x2,y2,x3,y3)
tft.fillCircle(285, 35, 20, MAROON);
tampil(272.5, 40, 0, &FreeSerif9pt7b, "OK");
tft.fillTriangle (120, 175, 100, 205, 140, 205, RED); //
(x1,y1,x2,y2,x3,y3)
tft.fillTriangle (200, 205, 180, 175, 220, 175, RED); //
(x1,y1,x2,y2,x3,y3)
}
/////////////////////////////////////////////////////////////////
/////
void set_suhu_min()
{
tft.fillScreen (WHITE);
tft.setTextColor(BLACK);
tft.fillRect(70, 30, 180, 50, BLUE);
tft.drawRect(70, 30, 180, 50, BLACK);
tampil(90, 52, 0, &FreeSerifBold9pt7b, "SET SUHU MIN");
tft.fillRect(70, 62, 180, 100, LIGHTGREY);
tft.drawRect(70, 62, 180, 100, BLACK);
tft.drawRect(70, 162, 180, 50, BLACK);
115
/////////////////////////////////////////////////////////////////
///////////////
void set_kelembapan()
{
tft.fillScreen (WHITE);
tft.setTextColor(BLACK);
tft.fillRect(70, 30, 180, 50, BLUE);
tft.drawRect(70, 30, 180, 50, BLACK);
tampil(80, 52, 0, &FreeSerifBold9pt7b, "SET KELEMBAPAN");
tft.fillRect(70, 62, 180, 100, LIGHTGREY);
tft.drawRect(70, 62, 180, 100, BLACK);
tft.drawRect(70, 162, 180, 50, BLACK);
tft.drawRect(70, 162, 90, 50, BLACK);
tft.setCursor (130, 132);
tft.setTextSize (3);
tft.print(setKelembaban);
tft.fillTriangle (15, 35, 50, 20, 50, 50, RED); //
(x1,y1,x2,y2,x3,y3)
tft.fillCircle(285, 35, 20, MAROON);
116
tft.print(setKelembaban);
tft.fillTriangle (15, 35, 50, 20, 50, 50, RED); //
(x1,y1,x2,y2,x3,y3)
tft.fillCircle(285, 35, 20, MAROON);
tampil(272.5, 40, 0, &FreeSerif9pt7b, "OK");
tft.fillTriangle (120, 175, 100, 205, 140, 205, RED); //
(x1,y1,x2,y2,x3,y3)
tft.fillTriangle (200, 205, 180, 175, 220, 175, RED); //
(x1,y1,x2,y2,x3,y3)
}
/////////////////////////////////////////////////////////////////
/////
void set_tekanan()
{
tft.fillScreen (WHITE);
tft.setTextColor(BLACK);
tft.fillRect(70, 30, 180, 50, BLUE);
tft.drawRect(70, 30, 180, 50, BLACK);
tampil(90, 52, 0, &FreeSerifBold9pt7b, "SET TEKANAN");
tft.fillRect(70, 62, 180, 100, LIGHTGREY);
tft.drawRect(70, 62, 180, 100, BLACK);
tft.drawRect(70, 162, 180, 50, BLACK);
tft.drawRect(70, 162, 90, 50, BLACK);
tft.setCursor (130, 132);
tft.setTextSize (1);
tft.print(setTekanan);
tft.fillTriangle (15, 35, 50, 20, 50, 50, RED); //
(x1,y1,x2,y2,x3,y3)
tft.fillCircle(285, 35, 20, MAROON);
tampil(272.5, 40, 0, &FreeSerif9pt7b, "OK");
tft.fillTriangle (120, 175, 100, 205, 140, 205, RED); //
(x1,y1,x2,y2,x3,y3)
tft.fillTriangle (200, 205, 180, 175, 220, 175, RED); //
(x1,y1,x2,y2,x3,y3)
}
/////////////////////////////////////////////////////////////////
//////
117
}
/////////////////////////////////////////////////////////////////
//////
void set_wifi()
{
tft.fillScreen (WHITE);
tft.fillScreen (WHITE);
tft.setTextColor(BLACK);
tampil(100, 40, 0, &FreeSerifBold12pt7b, "SET WIFI");
tft.fillRect(70, 77, 190, 40, BLUE);
tampil(80, 100, 0, &FreeSerif12pt7b, "CHECK WIFI");
tft.fillRect(70, 150, 190, 40, BLUE);
tampil(80, 175, 0, &FreeSerif12pt7b, "RESET WIFI");
tft.fillTriangle (15, 35, 50, 20, 50, 50, RED); //
(x1,y1,x2,y2,x3,y3)
}
void normal()
{
tft.fillRect(10, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(40, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(70, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(100, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(130, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(160, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(190, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(220, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(250, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(280, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
////////.............BARIS KE DUA.............\\\\\\\\\\
void uper_case()
{
tft.fillRect(10, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(40, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(70, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(100, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(130, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(160, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(190, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(220, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(250, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
tft.fillRect(280, 90, BOXSIZE, BOXSIZE, LIGHTGREY);
////////.............BARIS KE DUA.............\\\\\\\\\\
void ketik()
{
tft.setRotation (1);
tft.fillRect (0, 0, tft.width(), 75, WHITE);
tft.drawRect (0, 0, tft.width(), 75, LIGHTGREY);
}
void gantiwifi() {
tft.setTextColor(BLACK);
tampil(10, 35, 1, &FreeSans9pt7b, "SSID= ");
tft.fillRect (80, 20, 200, 30, LIGHTGREY);
tft.drawRect (80, 20, 200, 30, BLACK);
tft.setCursor (90, 40);
tft.setTextSize (1);
tft.print (Ssid);
tampil(10, 85, 1, &FreeSans9pt7b, "PASS= ");
tft.fillRect (80, 70, 200, 30, LIGHTGREY);
tft.drawRect (80, 70, 200, 30, BLACK);
tft.setCursor (90, 90);
129
pilihan_awal();
mode = 19;
break;
case 1:
tmode = 1;
tampilan_monitoring();
mode = 19;
break;
case 2:
tmode = 2;
pilihan_kedua();
mode = 19;
break;
case 3:
tmode = 3;
set_suhu_max();
mode = 19;
break;
case 4:
tmode = 4;
set_suhu_min();
mode = 19;
break;
case 5:
tmode = 5;
set_kelembapan();
mode = 19;
break;
case 6:
tmode = 6;
set_tekanan();
mode = 19;
break;
case 7:
tmode = 7;
131
break;
case 7:
tmode = 7;
set_wifi();
mode = 19;
break;
case 8:
tmode = 8;
cek_wifi();
mode = 19;
break;
case 9:
tmode = 9;
normal();
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.print(Ssid);
mode = 19;
break;
case 10:
tmode = 10;
uper_case();
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.print(Ssid);
mode = 19;
break;
case 11:
tmode = 11;
number();
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.print(Ssid);
mode = 19;
break;
132
tft.print(Ssid);
mode = 19;
break;
case 12:
tmode = 12;
normal();
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.print(Pass);
mode = 19;
break;
case 13:
tmode = 13;
uper_case();
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.print(Pass);
mode = 19;
break;
case 14:
tmode = 14;
number();
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.print(Pass);
mode = 19;
break;
case 15:
tmode = 15;
gantiwifi();
mode = 19;
break;
case 16:
tmode=16;
resetwifi();
133
case 16:
tmode=16;
resetwifi();
mode = 19;
break;
}
switch (tmode)
{
case 0:
baca();
break;
case 1:
baca1();
break;
case 2:
baca2();
break;
case 3:
baca3();
break;
case 4:
baca4();
case 5:
baca5();
break;
case 6:
baca6();
break;
case 7:
baca7();
break;
case 8:
C_wifi();
break;
case 9:
134
C_wifi();
break;
case 9:
keybord1();
break;
case 10:
keybord2();
break;
case 11:
keybord3();
break;
case 12:
keybord4();
break;
case 13:
keybord5();
break;
case 14:
keybord6();
break;
case 15:
T_wifi();
break;
case 16:
rstwifi();
break;
}
}
////////---------------------------------------------------------
---------------------------
void baca()
{
TSPoint p = ts.getPoint(); // get the screen touch
if ((p.z > MINPRESSURE && p.z < MAXPRESSURE)) { // if it's a
valid touch
135
void baca1()
{ TSPoint p = ts.getPoint(); // get the screen touch
pinMode(YP, OUTPUT); //restore the TFT control pins
pinMode(XM, OUTPUT);// for display after detecting a touch
p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0);
p.y = map(p.y, TS_MINY, TS_MAXY, tft.height(), 0);
bacaSensor();
tft.setFont();
136
Serial.print (p.x);
Serial.print ("//");
Serial.println (p.y);
tft.fillRect(15, 40, 140, 30, RED);
tft.drawRect(15, 40, 140, 30, BLACK);
tampil(20, 60, 0, &FreeSans9pt7b, "TEMPERATURE");
delay(100);
tft.fillRect(15, 40, 140, 30, BLUE);
tft.drawRect(15, 40, 140, 30, BLACK);
tampil(20, 60, 0, &FreeSans9pt7b, "TEMPERATURE");
delay(100);
buzzer(1);
if (p.x >= 33 and p.x <= 82 and p.y >= 30 and p.y <= 56)
{
tft.fillTriangle (15, 200, 50, 180, 50, 220, YELLOW);
delay (200);
mode = 0 ;
setSuhuMax = 40;
}
if (p.x >= 60 and p.x <= 116 and p.y >= 200 and p.y <= 217)
{
tft.fillRect(230, 140, 60, 60, GREEN);
tft.drawRect(230, 140, 60, 60, BLACK);
tampil(235, 165, 0, &FreeSans9pt7b, "MUTE");
setSuhuMax = 40;
}
waktu = millis();
}
}
else if (setSuhuMax >= suh and setSuhuMin >= suh and
setKelembaban >= kel )
{
if (millis() - waktu > 100)
{
TSPoint p = ts.getPoint(); // get the screen touch
139
bacaSensor();
tft.setFont();
tft.setCursor (20, 80);
tft.setTextSize(2);
tft.setTextColor(WHITE, LIGHTGREY);
tft.print(suh, 1);
tft.print(" C");
tft.setFont(&FreeSerif9pt7b);
tft.setFont();
tft.setCursor (160, 80);
tft.setTextSize(2);
tft.setTextColor(WHITE, LIGHTGREY);
tft.print(kel, 1);
tft.print(" % ");
tft.setFont(&FreeSerif9pt7b);
tft.setFont();
tft.setCursor (83, 170);
tft.setTextSize(2);
tft.setTextColor(WHITE, LIGHTGREY);
tft.print(tek, 1);
tft.print(" Pa");
tft.setFont(&FreeSerif9pt7b);
tft.fillRect(155, 40, 140, 30, RED);
tft.drawRect(155, 40, 140, 30, BLACK);
tampil(180, 60, 0, &FreeSans9pt7b, "HUMIDITY");
tft.fillRect(155, 40, 140, 30, BLUE);
tft.drawRect(155, 40, 140, 30, BLACK);
tampil(180, 60, 0, &FreeSans9pt7b, "HUMIDITY");
delay(100);
tampil(20, 60, 0, &FreeSans9pt7b, "TEMPERATURE");
delay(100);
tft.fillRect(15, 40, 140, 30, BLUE);
tft.drawRect(15, 40, 140, 30, BLACK);
tampil(20, 60, 0, &FreeSans9pt7b, "TEMPERATURE");
delay(100);
144
void baca2()
{
TSPoint p = ts.getPoint(); // get the screen touch
if ((p.z > MINPRESSURE && p.z < MAXPRESSURE)) { // if it's a
valid touch
pinMode(YP, OUTPUT); //restore the TFT control pins
pinMode(XM, OUTPUT);// for display after detecting a touch
p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0);
p.y = map(p.y, TS_MINY, TS_MAXY, tft.height(), 0);
147
}
}
if (p.y <= 44 && p.y >= 33 && p.x <= 305 && p.x >= 284)
{
tft.fillTriangle (15, 35, 50, 20, 50, 50, YELLOW);
delay (500);
mode = 0;
}
}
}
void baca3()
{
TSPoint p = ts.getPoint(); // get the screen touch
if ((p.z > MINPRESSURE && p.z < MAXPRESSURE)) { // if it's a
valid touch
pinMode(YP, OUTPUT); //restore the TFT control pins
pinMode(XM, OUTPUT);// for display after detecting a touch
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.y <= 107 && p.y >= 95 && p.x >= 35 && p.x <= 55)
{
delay (100);
tft.setFont(&FreeSans12pt7b);
tft.setCursor (130, 132);
tft.setTextSize (3);
tft.setTextColor(BLACK);
tft.fillRect(70, 62, 180, 100, LIGHTGREY);
tft.drawRect(70, 62, 180, 100, BLACK);
tft.print(setSuhuMax);
setSuhuMax++;
if (setSuhuMax >= 40)
setSuhuMax = 40;
}
if (p.y >= 167 and p.y <= 171 and p.x >= 53 and p.x <= 77)
149
setSuhuMax = 40;
}
if (p.y >= 167 and p.y <= 171 and p.x >= 53 and p.x <= 77)
{
delay(100);
tft.setCursor (130, 132);
tft.setTextSize (3);
tft.setTextColor(BLACK);
tft.fillRect(70, 62, 180, 100, LIGHTGREY);
tft.drawRect(70, 62, 180, 100, BLACK);
tft.print(setSuhuMax);
setSuhuMax--;
if (setSuhuMax <= 10)
setSuhuMax = 10;
}
if (p.y <= 44 && p.y >= 33 && p.x <= 305 && p.x >= 284)
{
tft.fillTriangle (15, 35, 50, 20, 50, 50, YELLOW);
delay (500);
mode = 2;
}
if (p.x >= 296 and p.x <= 308 and p.y >= 223 and p.y <= 230)
{
tft.fillCircle(285, 35, 20, YELLOW);
delay (200);
mode = 4;
}
}
}
void baca4()
{
TSPoint p = ts.getPoint(); // get the screen touch
if ((p.z > MINPRESSURE && p.z < MAXPRESSURE)) { // if it's a
valid touch
pinMode(YP, OUTPUT); //restore the TFT control pins
150
}
if (p.y <= 44 && p.y >= 33 && p.x <= 305 && p.x >= 284)
{
tft.fillTriangle (15, 35, 50, 20, 50, 50, YELLOW);
delay (500);
mode = 2;
}
if (p.x >= 296 and p.x <= 308 and p.y >= 225 and p.y <= 230)
{
tft.fillCircle(285, 35, 20, YELLOW);
delay (200);
mode = 2;
}
}
}
void baca5()
{
TSPoint p = ts.getPoint(); // get the screen touch
if ((p.z > MINPRESSURE && p.z < MAXPRESSURE)) { // if it's a
valid touch
pinMode(YP, OUTPUT); //restore the TFT control pins
pinMode(XM, OUTPUT);// for display after detecting a touch
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.y <= 107 && p.y >= 95 && p.x >= 35 && p.x <= 55)
{
delay (100);
tft.setFont(&FreeSans12pt7b);
tft.setCursor (130, 132);
tft.setTextSize (3);
tft.setTextColor(BLACK);
tft.fillRect(70, 62, 180, 100, LIGHTGREY);
tft.drawRect(70, 62, 180, 100, BLACK);
tft.print(setKelembaban);
152
}
}
void baca6()
{
TSPoint p = ts.getPoint(); // get the screen touch
if ((p.z > MINPRESSURE && p.z < MAXPRESSURE)) { // if it's a
valid touch
pinMode(YP, OUTPUT); //restore the TFT control pins
pinMode(XM, OUTPUT);// for display after detecting a touch
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.y <= 107 && p.y >= 95 && p.x >= 35 && p.x <= 55)
{
delay (100);
tft.setFont(&FreeSans12pt7b);
tft.setCursor (130, 132);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.fillRect(70, 62, 180, 100, LIGHTGREY);
tft.drawRect(70, 62, 180, 100, BLACK);
tft.print(setTekanan);
setTekanan+10;
if (setTekanan >= 111000)
setTekanan = 111000;
}
if (p.y >= 167 and p.y <= 171 and p.x >= 53 and p.x <= 77)
{
delay(100);
tft.setCursor (130, 132);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.fillRect(70, 62, 180, 100, LIGHTGREY);
tft.drawRect(70, 62, 180, 100, BLACK);
tft.print(setTekanan);
154
void baca7()
{
TSPoint p = ts.getPoint(); // get the screen touch
if ((p.z > MINPRESSURE && p.z < MAXPRESSURE)) { // if it's a
valid touch
pinMode(YP, OUTPUT); //restore the TFT control pins
pinMode(XM, OUTPUT);// for display after detecting a touch
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.y <= 212 && p.y >= 76)
{
if (p.x <= 233 && p.x >= 185)
{
155
{
if (p.x <= 233 && p.x >= 185)
{
tft.drawRect (70, 77, 190, 40, YELLOW);
delay (200);
// tampilan_monitoring();
delay(200);
mode = 8;
}
if (p.x <= 120 && p.x >= 60)
{
tft.drawRect (70, 150, 190, 40, YELLOW);
delay (200);
mode = 16;
}
}
if (p.y <= 44 && p.y >= 33 && p.x <= 305 && p.x >= 284)
{
tft.fillTriangle (15, 35, 50, 20, 50, 50, YELLOW);
delay (500);
mode = 2;
}
}
}
void cek_wifi()
{
tft.setRotation(1);
tft.fillScreen (BLACK);
for (int j = 1; j <= 3; j++) {
tft.setTextColor(WHITE);
tampil(20, 20, 1, &FreeSerif9pt7b, "Checking for
Connection");
for (int i = 1; i <= 4; i++) {
delay(500);
156
void C_wifi() {
TSPoint p = ts.getPoint(); // get the screen touch
if ((p.z > MINPRESSURE && p.z < MAXPRESSURE)) { // if it's a
valid touch
pinMode(YP, OUTPUT); //restore the TFT control pins
pinMode(XM, OUTPUT);// for display after detecting a touch
p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0);//mapping
touchScreen by tft width for p.x
p.y = map(p.y, TS_MINY, TS_MAXY, tft.height(), 0);//mapping
touchScreen by tft height for p.y
if ((p.z > MINPRESSURE && p.z < MAXPRESSURE)) {
if (p.x <= 137 and p.x >= 83) {
if (p.y >= 23 and p.y <= 70) {
157
ketik();
mode = 9;
delay(100);
}
if (p.x >= 210 and p.x <= 249) {
//Pass=text;
tft.fillScreen (BLACK);
ketik();
mode = 12;
delay(100);
}
}
if (p.x <= 171 and p.x >= 111) {
if (p.y >= 22 and p.y <= 88) {
Ssid.toCharArray(SSid,55);
Pass.toCharArray(PASS,55);
Blynk.begin(auth, wifi, SSid, PASS);
mode = 7;
delay(100);
}
if (p.y >= 108 and p.y <= 162) {
mode = 7;
delay(100);
}
}
}
}
}
void keybord1()
{
TSPoint p = ts.getPoint(); // get the screen touch
if ((p.z > MINPRESSURE && p.z < MAXPRESSURE)) { // if it's a
valid touch
pinMode(YP, OUTPUT); //restore the TFT control pins
pinMode(XM, OUTPUT);// for display after detecting a touch
159
tft.print(Ssid);
delay(100);
}
if (p.y <= 108 and p.y >= 90) {
kecil = "r";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y <= 128 and p.y >= 118) {
kecil = "t";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 138 and p.y <= 148) {
kecil = "y";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 158 and p.y <= 171) {
kecil = "u";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
161
delay(100);
}
}
if (p.x <= 168 and p.x >= 138)
{
if (p.y >= 32 and p.y <= 47) {
kecil = "a";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 53 and p.y <= 71) {
kecil = "s";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 79 and p.y <= 94) {
kecil = "d";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 100 and p.y <= 118) {
kecil = "f";
Ssid = Ssid + kecil;
163
}
if (p.y >= 100 and p.y <= 118) {
kecil = "f";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 122 and p.y <= 142 ) {
kecil = "g";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 150 and p.y <= 164) {
kecil = "h";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 170 and p.y <= 187) {
kecil = "j";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
164
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 192 and p.y <= 208) {
kecil = "k";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 216 and p.y <= 231) {
kecil = "l";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
}
if (p.x <= 113 and p.x >= 61)
{
if (p.y >= 23 and p.y <= 53) {
tft.fillRect(10, 160, 40, BOXSIZE, YELLOW);
tft.drawRect(10, 160, 40, BOXSIZE, WHITE);
delay(100);
mode = 10;
}
if (p.y >= 61 and p.y <= 75) {
kecil = "z";
Ssid = Ssid + kecil;
165
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 153 and p.y <= 168) {
kecil = "b";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 177 and p.y <= 190) {
kecil = "n";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 197 and p.y <= 207) {
kecil = "m";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 222 and p.y <= 240) {
int T = Ssid.length() - 1;
String Ssid1 = Ssid.substring(0, T);
Ssid = Ssid1;
167
int T = Ssid.length() - 1;
String Ssid1 = Ssid.substring(0, T);
Ssid = Ssid1;
ketik();
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
}
if (p.x <= 55 and p.x >= 11)
{
if (p.y >= 24 and p.y <= 49) {
tft.fillRect(10, 195, 40, 30, YELLOW);
tft.drawRect(10, 195, 40, 30, WHITE);
delay(100);
mode = 11;
}
if (p.y >= 59 and p.y <= 76) {
kecil = ",";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 82 and p.y <= 168) {
kecil = " ";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
168
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 181 and p.y <= 196) {
kecil = ".";
Ssid = Ssid + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 205 and p.y <= 242) {
tft.fillScreen (WHITE);
mode = 15;
delay (100);
}
}
}
}
void keybord2()
{
TSPoint p = ts.getPoint(); // get the screen touch
delay(100);
}
if (p.y >= 183 and p.y <= 197) {
besar = "I";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 208 and p.y <= 219) {
besar = "O";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 228 and p.y <= 241) {
besar = "P";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
}
if (p.x <= 168 and p.x >= 138)
{
if (p.y >= 32 and p.y <= 47) {
besar = "A";
Ssid = Ssid + besar;
172
{
if (p.y >= 32 and p.y <= 47) {
besar = "A";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 53 and p.y <= 71) {
besar = "S";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 79 and p.y <= 94) {
besar = "D";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 100 and p.y <= 118) {
besar = "F";
Ssid = Ssid + besar;;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
173
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 122 and p.y <= 142 ) {
besar = "G";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 150 and p.y <= 164) {
besar = "H";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 170 and p.y <= 187) {
besar = "J";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 192 and p.y <= 208) {
besar = "K";
Ssid = Ssid + besar;
174
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 83 and p.y <= 98) {
besar = "X";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 104 and p.y <= 118) {
besar = "C";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 128 and p.y <= 144) {
besar = "V";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 153 and p.y <= 168) {
besar = "B";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
176
besar = "B";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 177 and p.y <= 190) {
besar = "N";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 197 and p.y <= 207) {
besar = "M";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 222 and p.y <= 240) {
int T = Ssid.length() - 1;
String Ssid1 = Ssid.substring(0, T);
Ssid = Ssid1;
ketik();
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid1);
177
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid1);
delay(100);
}
}
if (p.x <= 55 and p.x >= 11)
{
if (p.y >= 24 and p.y <= 49) {
tft.fillRect(10, 195, 40, 30, YELLOW);
tft.drawRect(10, 195, 40, 30, WHITE);
delay(100);
mode = 11;
}
if (p.y >= 59 and p.y <= 76) {
besar = ",";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 82 and p.y <= 168) {
besar = " ";
Ssid = Ssid + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 181 and p.y <= 196) {
besar = ".";
Ssid = Ssid + besar;
178
}
if (p.y <= 128 and p.y >= 118) {
num = "5";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 138 and p.y <= 148) {
num = "6";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 158 and p.y <= 171) {
num = "7";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 188 and p.y <= 197) {
num = "8";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
181
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 208 and p.y <= 219) {
num = "9";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 228 and p.y <= 241) {
num = "0";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
}
if (p.x <= 168 and p.x >= 138)
{
if (p.y >= 32 and p.y <= 47) {
num = "@";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
182
tft.print(Ssid);
delay(100);
}
if (p.y >= 53 and p.y <= 71) {
num = ":";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 79 and p.y <= 94) {
num = ";";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 100 and p.y <= 118) {
num = "_";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 122 and p.y <= 142 ) {
num = "-";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
183
delay(100);
}
if (p.y >= 216 and p.y <= 231) {
num = "/";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
}
if (p.x <= 113 and p.x >= 61)
{
if (p.y >= 61 and p.y <= 75) {
num = ".";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 83 and p.y <= 98) {
num = ",";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 104 and p.y <= 118) {
num = "?";
Ssid = Ssid + num;
185
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 197 and p.y <= 207) {
num = "+";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 222 and p.y <= 240) {
int T = Ssid.length() - 1;
String Ssid1 = Ssid.substring(0, T);
Ssid = Ssid1;
ketik();
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid1);
delay(100);
}
}
if (p.x <= 55 and p.x >= 11)
{
if (p.y >= 24 and p.y <= 49) {
tft.fillRect(10, 195, 40, 30, YELLOW);
tft.drawRect(10, 195, 40, 30, WHITE);
delay(100);
mode = 9;
}
if (p.y >= 82 and p.y <= 168) {
num = " ";
187
}
if (p.y >= 82 and p.y <= 168) {
num = " ";
Ssid = Ssid + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Ssid);
delay(100);
}
if (p.y >= 205 and p.y <= 242) {
tft.fillScreen(WHITE);
mode = 15;
delay (100);
}
}
}
}
void keybord4()
{
TSPoint p = ts.getPoint(); // get the screen touch
if ((p.z > MINPRESSURE && p.z < MAXPRESSURE)) { // if it's a
valid touch
pinMode(YP, OUTPUT); //restore the TFT control pins
pinMode(XM, OUTPUT);// for display after detecting a touch
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 <= 250 and p.x >= 188)
{
if (p.y <= 35 and p.y >= 22) {
kecil = "q";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
188
}
if (p.y <= 128 and p.y >= 118) {
kecil = "t";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 138 and p.y <= 148) {
kecil = "y";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 158 and p.y <= 171) {
kecil = "u";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 183 and p.y <= 197) {
kecil = "i";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
190
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 208 and p.y <= 219) {
kecil = "o";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 228 and p.y <= 241) {
kecil = "p";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
}
if (p.x <= 168 and p.x >= 138)
{
if (p.y >= 32 and p.y <= 47) {
kecil = "a";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
191
tft.print(Pass);
delay(100);
}
if (p.y >= 53 and p.y <= 71) {
kecil = "s";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 79 and p.y <= 94) {
kecil = "d";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 100 and p.y <= 118) {
kecil = "f";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 122 and p.y <= 142 ) {
kecil = "g";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
192
delay(100);
}
if (p.y >= 216 and p.y <= 231) {
kecil = "l";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
}
if (p.x <= 113 and p.x >= 61)
{
if (p.y >= 23 and p.y <= 53) {
tft.fillRect(10, 160, 40, BOXSIZE, YELLOW);
tft.drawRect(10, 160, 40, BOXSIZE, WHITE);
delay(100);
mode = 13;
}
if (p.y >= 61 and p.y <= 75) {
kecil = "z";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 83 and p.y <= 98) {
kecil = "x";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
194
}
if (p.y >= 177 and p.y <= 190) {
kecil = "n";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 197 and p.y <= 207) {
kecil = "m";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 222 and p.y <= 240) {
int T = Pass.length() - 1;
String Pass1 = Pass.substring(0, T);
Pass = Pass1;
ketik();
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
}
if (p.x <= 55 and p.x >= 11)
{
if (p.y >= 24 and p.y <= 49) {
tft.fillRect(10, 195, 40, 30, YELLOW);
196
{
if (p.y >= 24 and p.y <= 49) {
tft.fillRect(10, 195, 40, 30, YELLOW);
tft.drawRect(10, 195, 40, 30, WHITE);
delay(100);
mode = 14;
}
if (p.y >= 59 and p.y <= 76) {
kecil = ",";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 82 and p.y <= 168) {
kecil = " ";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 181 and p.y <= 196) {
kecil = ".";
Pass = Pass + kecil;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 205 and p.y <= 242) {
197
delay(100);
}
if (p.y >= 205 and p.y <= 242) {
tft.fillScreen (WHITE);
mode = 15;
delay (100);
}
}
}
}
void keybord5()
{
TSPoint p = ts.getPoint(); // get the screen touch
if ((p.z > MINPRESSURE && p.z < MAXPRESSURE)) { // if it's a
valid touch
pinMode(YP, OUTPUT); //restore the TFT control pins
pinMode(XM, OUTPUT);// for display after detecting a touch
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 <= 250 and p.x >= 188)
{
if (p.y <= 35 and p.y >= 22) {
besar = "Q";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y <= 60 and p.y >= 45) {
besar = "W";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
198
delay(100);
}
if (p.y >= 138 and p.y <= 148) {
besar = "Y";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 158 and p.y <= 171) {
besar = "U";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 183 and p.y <= 197) {
besar = "I";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 208 and p.y <= 219) {
besar = "O";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
200
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 79 and p.y <= 94) {
besar = "D";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 100 and p.y <= 118) {
besar = "F";
Pass = Pass + besar;;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 122 and p.y <= 142 ) {
besar = "G";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 150 and p.y <= 164) {
besar = "H";
Pass = Pass + besar;
tft.setCursor (10, 10);
202
besar = "H";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 170 and p.y <= 187) {
besar = "J";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 192 and p.y <= 208) {
besar = "K";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 216 and p.y <= 231) {
besar = "L";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
203
tft.print(Pass);
delay(100);
}
}
if (p.x <= 113 and p.x >= 61)
{
if (p.y >= 23 and p.y <= 53) {
tft.fillRect(10, 160, 40, BOXSIZE, YELLOW);
tft.drawRect(10, 160, 40, BOXSIZE, WHITE);
delay(100);
mode = 12;
}
if (p.y >= 61 and p.y <= 75) {
besar = "Z";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 83 and p.y <= 98) {
besar = "X";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 104 and p.y <= 118) {
besar = "C";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
204
delay(100);
}
if (p.y >= 197 and p.y <= 207) {
besar = "M";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 222 and p.y <= 240) {
int T = Pass.length() - 1;
String Pass1 = Pass.substring(0, T);
Pass = Pass1;
ketik();
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
}
if (p.x <= 55 and p.x >= 11)
{
if (p.y >= 24 and p.y <= 49) {
tft.fillRect(10, 195, 40, 30, YELLOW);
tft.drawRect(10, 195, 40, 30, WHITE);
delay(100);
mode = 14;
}
if (p.y >= 59 and p.y <= 76) {
besar = ",";
Pass = Pass + besar;
tft.setCursor (10, 10);
206
besar = ",";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 82 and p.y <= 168) {
besar = " ";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 181 and p.y <= 196) {
besar = ".";
Pass = Pass + besar;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 205 and p.y <= 242) {
tft.fillScreen(WHITE);
mode = 15;
delay (100);
}
}
}
}
207
}
}
void keybord6()
{
TSPoint p = ts.getPoint(); // get the screen touch
}
if (p.y <= 82 and p.y >= 67) {
num = "3";
Pass = Pass + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y <= 108 and p.y >= 90) {
num = "4";
Pass = Pass + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y <= 128 and p.y >= 118) {
num = "5";
Pass = Pass + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 138 and p.y <= 148) {
num = "6";
Pass = Pass + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
209
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 158 and p.y <= 171) {
num = "7";
Pass = Pass + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 188 and p.y <= 197) {
num = "8";
Pass = Pass + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 208 and p.y <= 219) {
num = "9";
Pass = Pass + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 228 and p.y <= 241) {
num = "0";
Pass = Pass + num;
210
delay(100);
}
if (p.y >= 170 and p.y <= 187) {
num = "(";
Pass = Pass + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 192 and p.y <= 208) {
num = ")";
Pass = Pass + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 216 and p.y <= 231) {
num = "/";
Pass = Pass + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
}
if (p.x <= 113 and p.x >= 61)
{
if (p.y >= 61 and p.y <= 75) {
num = ".";
Pass = Pass + num;
213
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 153 and p.y <= 168) {
num = "'";
Pass = Pass + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 177 and p.y <= 190) {
num = '"';
Pass = Pass + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 197 and p.y <= 207) {
num = "+";
Pass = Pass + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 222 and p.y <= 240) {
int T = Pass.length() - 1;
String Pass1 = Pass.substring(0, T);
Pass = Pass1;
215
int T = Pass.length() - 1;
String Pass1 = Pass.substring(0, T);
Pass = Pass1;
ketik();
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
}
if (p.x <= 55 and p.x >= 11)
{
if (p.y >= 24 and p.y <= 49) {
tft.fillRect(10, 195, 40, 30, YELLOW);
tft.drawRect(10, 195, 40, 30, WHITE);
delay(100);
mode = 12;
}
if (p.y >= 82 and p.y <= 168) {
num = " ";
Pass = Pass + num;
tft.setCursor (10, 10);
tft.setTextSize (1);
tft.setTextColor(BLACK);
tft.print(Pass);
delay(100);
}
if (p.y >= 205 and p.y <= 242) {
tft.fillScreen(WHITE);
mode = 15;
delay (100);
}
}
}
216
}
}
}
}
void resetwifi() {
tft.setRotation(1);
tft.fillScreen (BLACK);
for (int j = 1; j <= 3; j++) {
tft.setTextColor(WHITE);
tampil(20,20,0,&FreeSans9pt7b,"Checking for Connection");
for (int i = 1; i <= 4; i++) {
delay(500);
tft.print(".");
}
tft.fillRect(218, 10, 50, 20, BLACK);
}
}
void rstwifi(){
Blynk.begin(auth, wifi, ssid, pass);
tft.setCursor(20, 40);
tft.print ("Connected");
tft.setTextColor(WHITE);
//delay (1000);
mode = 7;
}
void coba_ts()
{
TSPoint p = ts.getPoint(); // get the screen touch
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#define BLYNK_PRINT Serial
#define BMP_SCK (5)
#define BMP_MISO (2)
#define BMP_MOSI (4)
#define BMP_CS (0)
Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);
char auth[] = "xxxxxxx”;
char ssid[] = "xxxxxxx";
char pass[] = "xxxxxxx";
float hum, temp, pres ;
void sendSensor(){
pres = bmp.readPressure();
Blynk.virtualWrite(V3, pres); //V2 is for pressure
}
void setup(){
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
bmp.begin(0x76);
}
void loop(){
Blynk.run();
sendSensor();
}