Komunikasi Jaringan Ethernet pada Intel Galileo Gen 2 [TCP Server-Part 2]
Setelah mencoba komunikasi sederhana melalui jaringan ethernet dari PC ke Intel Galileo Gen 2, maka sekarang saatnya mencoba untuk membuat aplikasi sederhana, yaitu menghidupkan LED pada pin 13 melalui jaringan ethernet.
Jika pada artikel sebelumnya server (Intel Galileo Gen 2) akan mengembalikan data yang diterima dari client (PC), maka pada artikel kali ini, server (Intel Galileo Gen 2) tidak akan mengembalikan data tersebut ke client (PC), akan tetapi akan menganalisa data tersebut untuk mengendalikan LED pada pin 13.
Perlengkapan :
- Intel Galileo Gen 2.
- Kabel LAN.
- Kabel micro-USB.
Prosedur percobaan :
- Hubungkan kabel LAN dari PC langsung ke Intel Galileo Gen 2.
- Atur konfigurasi IP pada jaringan LAN di PC menjadi IP static.
- Buka Arduino IDE, kemudian buat file baru dan ketikan kode program berikut ini :
#include EthernetServer server(5000); boolean terhubung = false; void setup() { delay(2000); server.begin(); Serial.begin(9600); pinMode(13,OUTPUT); Serial.print("Server address:"); //Penggunaan Intel Galileo Gen 2 tanpa microSD //jika koneksi kabel LAN dari PC <> Intel Galileo Gen 2 //PC menggunakan IP Static //Intel Galileo Gen 2 menggunakan IP Static 192.168.1.13 //Alamat IP Intel Galileo Gen 2 dapat disesuaikan. //system("ifconfig eth0 192.168.1.13 netmask 255.255.255.0 up"); //system("/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}' > /dev/ttyGS0"); //Penggunaan Intel Galileo Gen 2 dengan microSD card + IoT Dev Kit Images //jika koneksi kabel LAN dari PC <> Intel Galileo Gen 2 //PC menggunakan IP Static //Intel Galileo Gen 2 menggunakan IP Static 192.168.1.13 //Alamat IP Intel Galileo Gen 2 dapat disesuaikan. system("ip addr add 192.168.1.13 dev enp0s20f6"); system("/sbin/ifconfig enp0s20f6 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}' > /dev/ttyGS0"); } void loop() { EthernetClient client = server.available(); if (client) { if (!terhubung) { client.flush(); Serial.println("Client terhubung"); client.println("Selamat Bergabung di Intel Galileo Gen 2"); client.println("Kirim karakter 1 untuk menghidupkan LED dan karakter 0 untuk mematikan LED pada pin 13"); terhubung = true; } while(client.connected()){ if (client.available() > 0) { // membaca data dari client char terimaData = client.read(); // jika client mengirimkan data 1 atau 0 (1 = LED13 ON, 0 = LED13 OFF) if(terimaData=='1'){ digitalWrite(13,HIGH); }else if (terimaData=='0'){ digitalWrite(13,LOW); } // tampilkan data di Server melalui Serial Port Serial.write(terimaData); } } Serial.println("Client tidak terhubung"); terhubung = false; } }
- Perhatikan baris ke 14 - 29. Pada baris ini dapat dipilih sesuai dengan kondisi dari Intel Galileo Gen 2 yang digunakan. Apabila tidak menggunakan microSD Card, maka nama interface dari ethernet di linux adalah eth0. Sedangkan jika menggunakan image IoT Dev Kit pada microSD Card, maka nama interface dari ethernet di linux adalah enp0s20f6.
Jika menggunakan image IoT Dev Kit pada microSD Card, maka pastikan konfigurasi pada baris 14 - 29 adalah sebagai berikut :
Jika tidak menggunakan microSD, pastikan konfigurasi pada baris 14 - 29 adalah sebagai berikut : - Kemudian Upload kode program tersebut ke Intel Galileo Gen 2.
- Tunggu sampai proses upload selesai, kemudian buka Serial Monitor.
- Jika tidak terlambat membuka Serial Monitor dan tidak ada kesalahan kode program, maka pada Serial Monitor akan muncul informasi IP TCP Server dari Intel Galileo Gen 2.
- Sama seperti artikel sebelumnya, pada percobaan kali ini akan menggunakan bantuan software Hercules. Pilih Tab TCP Client, masukan alamat IP dan Port dari Intel Galileo Gen 2.
- Kemudian tekan tombol Connect. Lalu lihat apa yang terjadi pada software Hercules dan Serial Monitor di Arduino IDE. Jika tidak ada kesalahan, pada Serial Monitor akan muncul informasi bahwa ada client yang terkoneksi ke server. Pada percobaan kali ini, server yang dimaksud adalah Intel Galileo Gen 2 dan client adalah PC.
Pada gambar di atas dapat dilihat bahwa server memberikan informasi melalui Serial Monitor bahwa ada client (PC) yang terhubung ke server.
Selain itu, server juga menyapa client dengan memberikan informasi
“Selamat Bergabung di Intel Galileo Gen 2 Kirim karakter 1 untuk menghidupkan LED dan karakter 0 untuk mematikan LED pada pin 13” - Kirimkan data dari software Hercules. Sesuai dengan informasi yang didapat dari server, karakter 1 untuk menghidupkan LED dan karakter 0 untuk mematikan LED.
- Proses pemilihan data diawali dengan mengambil data yang dikirimkan oleh client (PC). Setelah server mendapatkan karakter, kemudian diperiksa apakah karakter tersebut merupakan karakter angka ‘1’ atau angka ‘0’. Jika ‘1’ maka LED pada pin 13 akan menyala, sedangkan jika karakter ‘0’ maka LED pada pin 13 akan padam.
// membaca data dari client char terimaData = client.read(); // jika client mengirimkan data 1 atau 0 (1 = LED13 ON, 0 = LED13 OFF) if(terimaData==’1’){ digitalWrite(13,HIGH); }else if (terimaData==’0’){ digitalWrite(13,LOW); }
Setelah memahami struktur program ini, maka bisa dikembangkan aplikasi yang lebih kompleks, seperti mengendalikan lampu rumah melalui jaringan ethernet dengan bantuan relay ataupun TRIAC, atau bahkan peralatan elektronika yang lain.
Ayo kembangkan ide kreatif kalian dan wujudkan bersama Intel Galileo Gen 2 !!! ...