Tutorial Arduino Indonesia kembali mengulas tentang materi modul Ethernet Shield dan penggunaannya.
Dalam tutorial terdahulu telah dijelaskan tentang bagaimana melakukan konfigurasi Arduino dengan Ethernet Shield agar dapat terhubung dalam jaringan. Board Arduino Uno biasa digunakan untuk menerima data dari lingkungan dengan sensor, mengolah data tersebut, kemudian memberikan tanggapan reaksi yang dapat berupa actuator seperti motor, servo, relay, dan lain sebagainya. Dalam tutorial kali ini akan dibahas mengenai bagaimana menggunakan board Arduino Uno untuk mengumpulkan data suhu dengan sensor LM35. Data suhu yang telah diolah oleh board Arduino Uno tersebut kemudian akan dikirimkan ke komputer dengan menggunakan Ethernet Shield.
Sensor Suhu LM35
Sensor suhu LM35 merupakan komponen elektronika yang memiliki kemampuan mendeteksi input nilai besaran suhu dari lingkungannya, kemudian memberikan output besaran listrik dalam bentuk tegangan. Konfigurasi kaki IC LM35 tampak pada gambar, dengan urutan Vs tegangan pencatu (5 volt), nilai tegangan input ke microcontroller Arduino, dan ground.
Berikut ini adalah karakteristik dari sensor suhu LM35.
- Memiliki tingkat kepekaan suhu, dengan faktor skala linier berbanding dengan suhu 10 mV untuk setiap perubahan 1 derajad celsius
- Memiliki tingkat ketepatan kalibrasi yaitu 0,5 derajad celsius, pada suhu ruangan 25 derajad celsius
- Memiliki jangkauan maximum operasi hingga 150 derajad celsius
- Mampu bekerja pada tegangan input 4 volt hingga 30 volt
- Memiliki arus rendah yaitu kurang dari 60 µA
- Memiliki pemanasan sendiri yang rendah (low-self-heating) yaitu kurang dari 0,1 derajad celsius pada ruang kamar
- Memiliki tingkat impedance keluaran yang rendah yaitu 0,1 W untuk beban 1 mA
- Memiliki ralat sekitar kurang lebih 0,25 derajad celsius
Wiring Diagram
Berikut ini ialah wiring diagram antara board Arduino Uno dengan sensor suhu LM35.
Dengan satu pin LM35 ke Vcc, satu lagi ke Ground, dan satu lagi ke pin analog Arduino A0.
Sketch
Berikut ini ialah wiring diagram board Arduino Uno dengan sensor suhu LM35, kemudian mengirimkannya via Ethernet Shield.
/*
Program mengukur suhu
sensor LM35 dengan Ethernet Shield
Loki Lang
*/
#include <Ethernet.h>
#include <SPI.h>
#define PORT 5000
byte mac[] = {0x5e, 0xa4, 0x18, 0xf0, 0x8a, 0xf6};
IPAddress arduinoIP(192, 168, 1, 67);
IPAddress dnsIP(192, 168, 1, 1);
IPAddress gatewayIP(192, 168, 1, 1);
IPAddress subnetIP(255, 255, 255, 0);
EthernetServer server(PORT);
boolean notYetConnected;
void setup()
{
Ethernet.begin(mac, arduinoIP, dnsIP, gatewayIP, subnetIP);
notYetConnected = true;
}
void loop()
{
int i = 0;
EthernetClient client = server.available();
if (client)
{
if (notYetConnected)
{
client.println("Welcome");
notYetConnected = false;
}
if (client.available())
{
unsigned long now = millis();
int lm35 = analogRead(A0);
now += millis();
float temp = lm35 * 500;
temp /= 1023;
server.print(0.5 * now);
server.print(" ");
server.println(temp);
}
}
}
Program mengukur suhu
sensor LM35 dengan Ethernet Shield
Loki Lang
*/
#include <Ethernet.h>
#include <SPI.h>
#define PORT 5000
byte mac[] = {0x5e, 0xa4, 0x18, 0xf0, 0x8a, 0xf6};
IPAddress arduinoIP(192, 168, 1, 67);
IPAddress dnsIP(192, 168, 1, 1);
IPAddress gatewayIP(192, 168, 1, 1);
IPAddress subnetIP(255, 255, 255, 0);
EthernetServer server(PORT);
boolean notYetConnected;
void setup()
{
Ethernet.begin(mac, arduinoIP, dnsIP, gatewayIP, subnetIP);
notYetConnected = true;
}
void loop()
{
int i = 0;
EthernetClient client = server.available();
if (client)
{
if (notYetConnected)
{
client.println("Welcome");
notYetConnected = false;
}
if (client.available())
{
unsigned long now = millis();
int lm35 = analogRead(A0);
now += millis();
float temp = lm35 * 500;
temp /= 1023;
server.print(0.5 * now);
server.print(" ");
server.println(temp);
}
}
}
Untuk directive include digunakan untuk mencakup library yang dibutuhkan Ethernet shield. Untuk PORT digunakan untuk mengirimkan data ke internet.
Selain alamat yang digunakan untuk konfigurasi Ethernet shield (dapat disesuaikan), sejumlah data juga didefinisikan semisal EthernetServer object dengan nama server. Dengan ini akan membuat object dalam Arduino yang menghubungkan ke internet dan menunggu signal dari port yang diberikan, sebagai contoh 5000.
Selanjutnya ialah method setup() yang digunakan untuk inisialisasi variable dan konfigurasi Ethernet Shield. Method loop() digunakan untuk membuat object client dari class EthernetClient. Bila client tidak terhubung, server akan memberikan tanggapan return value NULL. Sebaliknya bila client ditemukan dan komunikasi dapat dilakukan, maka data suhu dapat dikirimkan.
Sebelum mengirimkan data suhu, maka terlebih dahulu perlu mendapatkannya, lihat artikel tutorial Arduino pembacaan suhu dengan sensor LM35. Hal lain dalam program ini ialah menggunakan waktu operasional untuk dikirimkan sekaligus dengan nilai suhu. Waktu operasional dalam millisecond mulai dari awal eksekusi program. Dengan menggunakan function millis() yang direpresentasikan dalam unsigned long integer.
Untuk mengirimkan data suhu dan waktu operasional ke remote client, cukup dengan memanggil method print() dari object server.
Bila ada sesuatu yang belum jelas dan ingin tahu lebih dalam seputar project Arduino, pemrograman, dan elektronika, bisa bertanya pada bagian comment atau melalui page Facebook berikut.