Arduino Ethernet Shield W5100 : Kontrol Jarak Jauh
Mumpung lagi rame tentang aplikasi IoT (Internet of Things), yuk kita bikin juga aplikasi dasarnya. Sudah pernah denger modul Arduino Ethernet shield w5100 kan ? Oke, sebuah modul/board yang tinggal kita pasang (masukkan soket ke pin Arduino) ke Arduino maka si Arduino mempunyai kemampuan terkoneksi dengan sebuah jaringan ethernet/internet. Saat ini memang lagi trend yang model wireless seperti ESP8266 maupun NodeMCU. Kami juga sudah bikin tulisannya : Belajar IoT dasar. Tetapi saya kira juga masih sangat relevan memakai Arduine Ethernet shield W5100 ini.
Arduino Ethernet shield W5100 ini berbasis chip atau IC W5100 yang mampu terhubung dengan jaringan (IP) yang mendukung TCP dan UDP. Pada modul ini juga terdapat slot memori card (SD card) untuk keperluan penyimpanan memori data. Komunikasi antara Arduino dengan W5100 melalui jalur SPI. Pin Arduino UNO yang digunakan adalah pin 11, 12 dan 13. Sedangkan pin 10 digunakan untuk memilih W5100 dan pin 4 untuk SD card. Sedangkan jika memakai Arduino Mega maka pin yang digunakan oleh Arduino Ethernet shield w5100 adalah pin 50, 51 dan 52. So nantinya pin tersebut tidak dapat digunakan oleh Arduino untuk keperluan input – output.
Spesifikasi dan detail Arduino Ethernet shield W5100 silakan baca datasheet-nya, dapat juga cek disini . Kita langsung mulai ke aplikasi Arduino Ethernet shield W5100. Pada aplikasi ini kita akan membuat client dan server untuk keperluan kontrol jarak jauh. Kita tinggal menghubungkan antara modul Ethernet shield dengan kabel Ethernet (RJ45) saja dengan jarak jangkauan yang lumayan jauh. Pada sisi client kita pasang 4 tombol untuk kontrolnya dan pada sisi server kita pasang LED untuk obyek yang dikontrol. Kompponen yang perlu disiapkan :
- Arduino UNO (2)
- Ethernet shield W5100 (2)
- Router (1)
- Tombol push on (4)
- LED 5mm (4)
- Resistor 220 ohm (4)
- Kabel jaringan LAN (2)
- Kabel konektor (seperlunya)
- Breadboard (2)
Selanjutnya kita buat rangkaian Arduino Ethernet shield w5100 dengan beberapa perangkat tadi. Untuk koneksi Arduino dengan Ethernet shield tinggal dipasangkan saja.
Rangkaian bagian client cukup Arduino ethernet shield w5100 dengan 4 buah switch saja.
Sedangkan rangkaian bagian server dengan 2 buah LED.
Oke sudah siap hardware Arduino Ethernet shield dan rangkaiannya tadi ? Sekarang kita siapkan programnya. Disini kita akan membuat 2 program Arduino : program untuk client dan program untuk server. Library Ethernet sudah ada (bawaan) di Arduino IDE. Kita mulai dari program untuk client dulu.
/********************************** * Ethernet Client Arduino WIZ5100 * www.ardutech.com * *********************************/ #include <Ethernet.h> EthernetClient client; #define SW1 2 #define SW2 3 #define SW3 5 #define SW4 6 void setup() { pinMode(SW1,INPUT_PULLUP); pinMode(SW2,INPUT_PULLUP); pinMode(SW3,INPUT_PULLUP); pinMode(SW4,INPUT_PULLUP); Serial.begin(9600); uint8_t mac[6] = {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}; Ethernet.begin(mac); } char tx_data; void loop() { if(client.connect(IPAddress(192,168,0,1),80)) { if ( digitalRead(SW1) == 0 ) { client.print('1'); delay(300); } else if ( digitalRead(SW2) == 0 ){ client.print('2'); delay(300); } else if ( digitalRead(SW3) == 0 ){ client.print('3'); delay(300); } else if ( digitalRead(SW4) == 0 ){ client.print('4'); delay(300); } client.stop(); } }
Simpan (save) kemudian Upload ke Arduino client. Ok selanjutnya kita buat program untuk Arduino server.
/********************************** * Ethernet Server Arduino WIZ5100 * www.ardutech.com * *********************************/ #include <Ethernet.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192,168,0,1); EthernetServer server(80); char str; #define L1 2 #define L2 3 void setup() { pinMode(L1,OUTPUT); pinMode(L2,OUTPUT); Ethernet.begin(mac, ip); server.begin(); } void loop() { EthernetClient client = server.available(); if (client.available() > 0) { str = client.read(); if(str=='1') digitalWrite(L1,HIGH); else if(str=='2') digitalWrite(L1,LOW); else if(str=='3') digitalWrite(L2,HIGH); else if(str=='4') digitalWrite(L2,LOW); } if (!(client.connected())) { client.stop(); } }
Simpan (save) kemudian Upload ke Arduino server. Koneksikan antara Arduino Ethernet shield w5100 (clien) dengan router memakai kabel LAN RJ45. Koneksikan juga untuk W5100 (server) ke router dengan kabel LAN. Berikan tegangan pada masing – masing roter dan ke-2 Arduino UNO. Jika sudah, kita coba jalankan programnya. Tekan tombol 1 di client, hasilnya lihat di LED (server). Apabila programnya sukses maka LED 1 akan ON, tekan tombol 2 makan LED 1 akan OFF. Coba juga untuk SW 3 (LED 2 ON) dan SW 4 (LED 2 OFF).
Program pada client di fungsi setup membuat alias untuk pin yang terhubung dengan tombol/switch ke Arduino. Baris berikutnya membuat MAC address (Media Access Control) yang merupakan alamat fisik suatu interface jaringan sebagai identitas si Ethernet shield-nya.
pinMode(SW1,INPUT_PULLUP); pinMode(SW2,INPUT_PULLUP); pinMode(SW3,INPUT_PULLUP); pinMode(SW4,INPUT_PULLUP); Serial.begin(9600); uint8_t mac[6] = {0xDE,0xAD,0xBE,0xEF,0xFE,0xEE}; Ethernet.begin(mac);
Sedangkan pada program utama loop () program membaca status tombol, jika tombol ditekan (ON) maka client akan mengirimkan data (berupa karakter) ke server. Pada contoh aplikasi ini jika tombol 1 ON maka akan mengirimkan karakter ‘1’ dan jika tombol 2 ditekan akan mengirimkan karakter ‘2’.
if(client.connect(IPAddress(192,168,0,1),80)) { if ( digitalRead(SW1) == 0 ) { client.print('1'); delay(300); } else if ( digitalRead(SW2) == 0 ){ client.print('2'); delay(300); } else if ( digitalRead(SW3) == 0 ){ client.print('3'); delay(300); } else if ( digitalRead(SW4) == 0 ){ client.print('4'); delay(300); } client.stop(); }
Program Arduino untuk server tugasnya membaca data yang masuk kemudian ‘menerjemahkan’ menjadi kontrol LED. Jika karakter yang diterima ‘1’ maka LED 1 nyala, jika karakter ‘2’ maka LED 1 mati.
EthernetClient client = server.available(); if (client.available() > 0) { str = client.read(); if(str=='1') digitalWrite(L1,HIGH); else if(str=='2') digitalWrite(L1,LOW); else if(str=='3') digitalWrite(L2,HIGH); else if(str=='4') digitalWrite(L2,LOW);
Aplikasi Arduino Ethernet shield W5100 ini masih tergolong sederhana, tetapi anda dapat menerapkan untuk system kontrol yang memerlukan jarak cukup jauh. Sahabat juga dapat mengembangkan menjadi beberapa Arduino yang membentuk jaringan Arduino. Semoga bermanfaat.
Pingback: Arduino Ethernet Shield Sebagai Server.
Mau tanya. Apakan pakai router, apa bisa pakai semua jenis router?
Terima kasih
Bisa pakai semua jenis router
kalau semisal arduino nya lebih dari 2 bagaimana gan ?
Terima kasih.
Pakainya addressing mas, itu konsepnya, cuman di prakteknya memang kudu ngoprek dulu. kapan2 klo pas longgar ngoprekin itu mas.
Trims sudah mampir
Bisa kah routernya menggunakan laptop
Maaf mas belum pernah kalau router diganti laptop.
Trims udah mampir
Kalau misalnya kita mau nyalainn lampu lebih dari dua kira kira 5 lampu kita ambil pin dimana?
Yang tidak boleh dipakai adalah pin 10,11,12 dan 13. Selain itu bisa dipakai.
Trims udah mampir
kalo konsep seperti ini tapi menggunakan raspberry pi, apakah ada tutorialnya
Sangat bisa mas
kalo arduino nya diganti menggunakan raspberry pi, apakah bisa ?
bagaimana caranya
Raspberry udah ada modul wifinya malahan mas