Dalam artikel kali ini akan dibahas mengenai tutorial dasar Arduino Indonesia dengan Ethernet Shield untuk komunikasi data ke internet. Sebelum masuk dalam pembahasan Arduino, tidak ada salahnya terlebih dahulu memahami sedikit tentang jaringan.
Ethernet Shield
Agar suatu perangkat dapat terhubung dalam jaringan internet, perangkat tersebut terlebih dahulu harus memiliki identitas unik dalam jaringan, yakni IP (Internet Protocol) address. IP address dari sebuah perangkat merupakan identifier yang unik, dalam standard IPv4, yang mana setiap setiap byte memiliki nilai 0 hingga 255. Untuk IP address 192.168.xxx.xxx, bersifat non routable, packet data yang dikirimkan dalam jaringan tidak dapat melewati switch internet. Meski begitu perangkat dengan IP address 192.168.xxx.xxx, dapat terhubung dalam physical network. Oleh karena itu perangkat dalam home network biasanya menggunakan IP address semisal 192.168.xxx.xxx.
IP address dari suatu perangkat dapat bersifat static atau dynamic. Sebuah perangkat yang tidak memiliki static IP address dapat meminta IP address dari komputer manapun dalam jaringan yang sama sebagai DHCP (Dynamic Host Configuration Protocol) server. Tergantung pada konfigurasi pada server, IP address yang tersedia dapat diberikan pada perangkat secara random atau berdasarkan pada identitas perangkat tersebut.
Setiap perangkat yang terhubung dalam jaringan memiliki MAC (Media Access Control) address. MAC address tersusun dari kumpulan enam byte, yang biasanya ditampilkan dalam bilangan berbasis hexadecimal, sebagai contoh 5e:a4:18:f0:8a:f6. Request MAC address tersebut dikirimkan lewat jaringan, sehingga DHCP server dapat menentukan untuk membalas request tersebut atau mengacuhkannya.
Dengan hanya memiliki IP address saja tidak cukup bagi perangkat tersebut untuk berkomunikasi dengan perangkat lainnya. Packet data tersebut harus terlebih dahulu mencapai perangkat khusus, yang disebut gateway. Perangkat gateway tersebut juga harus diberikan IP address yang dikenali oleh perangkat lainnya dalam jaringan.
IP address dapat diasosiasikan dengan host name dan domain name. Semua perangkat dalam satu jaringan yang sama berbagi domain name yang sama juga. Sementara untuk host name bersifat unik. Domain Name System (DNS) merupakan sebuah perangkat yang dapat untuk mengasosiasikan IP address dari suatu perangkat lain dengan host name yang ada. Satu lagi ialah subnet mask. Secara sederhana subnet mask merupakan suatu cara untuk menentukan rentang alamat suatu perangkat yang dapat diakses langsung melalui gateway.
Arduino Ethernet Shield menghubungkan board Arduino dengan jaringan internet, cukup dengan plug-in module ini ke board Arduino, menghubungkannya ke jaringan dengan kabel RJ-45. Seperti biasa setiap elemant dari Arduino, baik hardware, software, dan juga dokumentasi yang ada, tersedia dan dapat diakses gratis karena bersifat open source. Berikut ini requirement penggunaan module Ethernet Shield.
- Bekerja dengan board Arduino melalui port SPI
- Tegangan operasi sebesar 5V dari board Arduino
- Ethernet Controller W5100 dengan internal buffer sebesar 16K
- Connection speed mulai 10Mb hingga 100Mb
Terdapat sebuah onboard micro-SD card slot, yang dapat digunakan untuk menyimpan berkas. Module Ethernet Shield ini compatible dengan board Arduino Uno dan Mega. Untuk microSD card reader onboard dapat diakses dengan menggunakan library SD card. Saat menggunakan library ini, SS dengan Pin 4. Terdapat pula reset controller, untuk memastikan bahwa W5100 Ethernet module dapat reset on power-up.
Untuk board Arduino berkomunikasi baik dengan W5100 dan SD card menggunakan SPI bus melalui ICSP header, yang ada di pin digital 10, 11, 12, dan 13 untuk board Arduino Uno, sedangkan pin digital 50, 51, dan 52 untuk board Arduino Mega. Di kedua board tersebut, pin digital 10 digunakan untuk memilih module W5100 dan pin digital 4 untuk SD card, yang mana pin tersebut tidak dapat digunakan sebagai pin I/O biasa. Dalam board Arduino Mega, pin digital 53 (SS) tidak digunakan sama sekali, baik untuk memilih antara module W5100 atau SD card, namun harus tetap dideklarasikan sebagai output agar interface SPI tetap dapat bekerja dengan baik.
Sebagai catatan, karena module W5100 dan SD card sama-sama menggunakan SPI bus, maka hanya ada satu yang bisa aktif digunakan dalam satu waktu.
Sketch
Berikut ini ialah source code (sketch) dasar untuk menghubungkan Arduino ke jaringan.
#include <Ethernet.h>
#include <SPI.h>
byte macAddr[] = {0x5e, 0xa4, 0x18, 0xf0, 0x8a, 0xf6};
IPAddress arduinoIP(192, 168, 1, 67);
IPAddress dnsIP(192, 168, 1, 254);
IPAddress gatewayIP(192, 168, 1, 254);
IPAddress subnetIP(255, 255, 255, 0);
void setup()
{
Ethernet.begin(mac, arduinoIP, dnsIP, gatewayIP, subnetIP);
}
void loop()
{
}
#include <SPI.h>
byte macAddr[] = {0x5e, 0xa4, 0x18, 0xf0, 0x8a, 0xf6};
IPAddress arduinoIP(192, 168, 1, 67);
IPAddress dnsIP(192, 168, 1, 254);
IPAddress gatewayIP(192, 168, 1, 254);
IPAddress subnetIP(255, 255, 255, 0);
void setup()
{
Ethernet.begin(mac, arduinoIP, dnsIP, gatewayIP, subnetIP);
}
void loop()
{
}
Untuk board Arduino Uno dengan Ethernet Shield yang terhubung dengan router melalui kabel RJ-45. Untuk dapat menyesuaikan konfigurasi perangkat dalam jaringan, terlebih dahulu perlu untuk mengetahui MAC address dari Ethernet Shield tersebut. Source code (sketch) Arduino ini mencakup library Ethernet.h dan SPI.h, yang mencakup deklarasi class yang digunakan. MAC address didefinisikan sebagai larik byte, yang mana setiap byte direpresentasikan dalam hexadecimal. Untuk arduinoIP, dnsIP, subnetIP, dan gatewayIP dari Ethernet Shield merupakan object dari class IPAddress.
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.