1. Dasar Teori
LM35 merupakan salah satu dari sekian banyak sensor analog untuk mengukur suhu. Perubahan suhu
disekitar sensor menyebabkan terjadinya perubahan nilai tahanan pada sensor, sehingga turut
menyebabkan perubahan nilai tegangan output dari sensor. Perubahan nilai tegangan inilah yang
dimanfaatkan oleh komponen Analog to Digital Converter (ADC) pada mikrokontroler untuk
menyediakan data digital berupa data suhu yang kemudian bisa dibaca oleh mikrokontroler.
Data digital yang telah diterima oleh mikrokontroler dalam hal ini masih berupa sampel data (data
mentah) sehingga perlu dilakukan kalibrasi. Kalibrasi dilakukan dengan cara memasukan sampel data
tersebut ke sebuah fungsi yang didapat dari hasil perhitungan dengan kondisi suhu pada pengukuran
sebenarnya (perbandingan antara hasil terukur dan aktual). Setelah data suhu sebenarnya diketahui,
data suhu tersebut dikirim ke komputer menggunakan komunikasi serial untuk ditampilkan pada
interface.
Aplikasi interface pada komputer selanjutnya membaca port serial (COM) tempat dimana data suhu
tersebut akan dikirim oleh mikrokontroler. Data serial yang telah diterima kemudian ditampilkan pada
sebuah grafik sehingga bisa terlihat data suhu pada rentang waktunya, dan dalam interval waktu
tertentu fungsi catat akan mencatat data suhu ke database.
a. Perangkat Keras
3. Ranah Kerja
1 Workshop Mikrokontroler (Modul Basic 2)| Robotics AnD Embedded Systems RADE STIKOM Bali
3.1 Perakitan Perangkat Keras
Buka Arduino IDE lalu lakukan inisialisasi, pilih menu Tools, kemudian pada menu board pilih
Arduino Uno, pada menu Serial Port pilih COM yang digunakan oleh arduino (Dilihat dari Device
Manager), dan Programmer pilih USBasp. Masukan kode berikut dan klik tombol Upload. Tunggu
hingga proses upload selesai, lalu pilih menu Tools > Serial Monitor untuk melihat hasilnya.
//Pin wiper pada sensor LM32 (terminal tengah) tersambung ke Analog //Pin 3
//Yang disamping tersambung ke 5V dan Ground
int analogPin = 3;
void setup()
{
//Setup serial dengan baud 9600
Serial.begin(9600);
}
void loop()
{
//Baca pin input
suhu = analogRead(analogPin);
//Lakukan kalibrasi
suhu = suhu * 0.48828125;
//Kirim ke komputer melalui serial
Serial.println(suhu);
//Delay sebelum melakukan pembacaan selanjutnya
delay(50);
}
2 Workshop Mikrokontroler (Modul Basic 2)| Robotics AnD Embedded Systems RADE STIKOM Bali
3.3 Pemrograman Interface dan Database
Pertama kita akan membuat database untuk menyimpan data suhu. Buka SQL Server Management
Studio dan buat query baru dengan mengklik menu New Query. Masukan query berikut dan klik
Execute !
Setelah database terbentuk, dilanjutkan dengan membuat interface pada Visual Studio. Buka Visual
Studio IDE, buat proyek baru dengan tipe Visual C# dan pilih Windows > Windows Forms
Application. Ketik nama proyek Monitor Suhu kemudian OK.
Tab Monitor
3 Workshop Mikrokontroler (Modul Basic 2)| Robotics AnD Embedded Systems RADE STIKOM Bali
Tab Pencatat
Mulai membuat interface dengan mendrag-and-drop masing-masing kontrol ke form. Kemudian untuk
kode pada form1 atau form utama gunakan kode berikut :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//namespace untuk zedGrpah
using ZedGraph;
//namespace untuk class serial
using System.IO.Ports;
//namespace untuk melihat setting global komputer
using System.Globalization;
//Namespace untuk databse MSSQL
using System.Data.SqlClient;
namespace Monitor_Suhu
{
public partial class Form_utama : Form
{
/**Inisialisaisi arduino
* Setup port serial dengan nama port COM65,
* dan baud rate sebesar 9600.
* Baud rate disini dengan di arduino harus sama
* **/
SerialPort arduino = new SerialPort("COM65",9600);
/**Inisialisasi databse
* setup string koneksi
* **/
4 Workshop Mikrokontroler (Modul Basic 2)| Robotics AnD Embedded Systems RADE STIKOM Bali
SqlConnection cs = new SqlConnection("Data Source=localhost;Initial
Catalog=DB_SUHU;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter();
//konstruktor
public Form_utama()
{
InitializeComponent();
}
//nyalakan detak
Detak.Enabled = true;
//mulai detak
Detak.Start();
}
catch (Exception gagal)
{
//Error handling
//MessageBox.Show(gagal.ToString());
}
}
5 Workshop Mikrokontroler (Modul Basic 2)| Robotics AnD Embedded Systems RADE STIKOM Bali
//Mulai komunikasi dengan arduino
arduino.Open();
//get PointPairList
IPointListEdit listSuhu = kurvaSuhu.Points as
IPointListEdit;
// Redraw paksa
zedGraphSuhu.Invalidate();
/**
* Mencatat suhu ke database
* **/
6 Workshop Mikrokontroler (Modul Basic 2)| Robotics AnD Embedded Systems RADE STIKOM Bali
cs.Open();
//eksekusi query insert
da.InsertCommand.ExecuteNonQuery();
//tutup koneksi ke database
cs.Close();
//reset pencacah
counter = 0;
}
}
catch (Exception gagal)
{
//error handling
//tutup komunikasi dengan arduino jika masih terhubung
if (arduino.IsOpen)
{
arduino.Close();
}
//MessageBox.Show(gagal.ToString());
}
//Inisialisasi ZedGraph
GraphPane grafikSuhu = zedGraphSuhu.GraphPane;
grafikSuhu.Title.Text = "Grafik Suhu";
grafikSuhu.XAxis.Title.Text = "Waktu (Detik)";
7 Workshop Mikrokontroler (Modul Basic 2)| Robotics AnD Embedded Systems RADE STIKOM Bali
grafikSuhu.YAxis.Title.Text = "Suhu (Celcius)";
//Inisialisasi kurva
LineItem kurvaSuhu = grafikSuhu.AddCurve("Suhu", listSuhu,
Color.Red, SymbolType.None);
}
catch (Exception gagal)
{
//error handling
//MessageBox.Show(gagal.ToString());
}
}
8 Workshop Mikrokontroler (Modul Basic 2)| Robotics AnD Embedded Systems RADE STIKOM Bali
}
}
}
Lakukan pengujian dengan menghubungkan Arduino ke komputer. Periksa nama port COM yang
digunakan oleh Arduino dari Device Manager, kemudian pastikan tidak ada program lain yang
menggunakan port tersebut termasuk Arduino IDE agar tidak bentrok. Kemudian cocokan nama port
serialnya dengan yang tertulis di program. Run program untuk memulai debugging.
9 Workshop Mikrokontroler (Modul Basic 2)| Robotics AnD Embedded Systems RADE STIKOM Bali