Fungsi dan manfaat Ethernet Untuk Arduino dalam system kontrol
Arduino Ethernet Tutorial, project Ethernet dengan Arduino Uno, Menghubungkan dua Arduino dengan Ethernet w5100 router untuk mendapat kan IP. Bisa di aplikasikan untuk Kontrol jarak jauh. Arduino peer to peer dengan Ethernet.
Apa sih Ethernet? Ethernet adalah sebuah device, hardware yang berfungsi untuk mengirim data dengan kecepatan yang lebih tinggi jika dibandingkan dengan pengiriman data serial. Ethernet ini juga memiliki ciri khusus seperti memiliki IP address, MAC. Biasa nya Ethernet ini berfungsi untuk membentuk jaringan Local ( LAN ) untuk menghubungkan computer dengan computer lain.
Sedangkan Fungsi Ethernet shiled untuk Arduino adalah untuk membentuk system komunikasi melalui Ethernet untuk menghubungkan Arduino dengan Arduino atau Arduino dengan web server. Tujuannya biasanya untuk membentuk system control, seperti monitoring, controlling baik local mau pun dengan internet, atau sering di sebut dengan IOT, internet of Thing.
Latar Belakang Munculnya ide menghubungkan dua Arduino dengan Ethernet Shield
Awalnya saya mengerjakan Arduino Ethernet ini adalah ketika salah satu teman WhatsApp dari Kalimantan. Dia ingin mengontrol suatu perangkat dengan jarak jauh melalui wifi. Perangkat interface yang dia gunakan adalah Nano Station. Menghubungkan dua Arduino dengan jarak 3km – 5km melalui udara. Karena nano station cukup mahal, maka di simulasikan dengan Ethernet shield W5100.
Coba coba browsing sana sini, saya coba salah satu tutorial dari Arduino forum, pas di coba gagal, Library UDP nya sudah gak support sudah beda format. Saya coba rubah list program nya. Ternyata tidak jalan juga, sempat mandek, pening, hal biasa yang di alami tukong oprek.
Tanya sana sini, akhirnya salah satu teman kasih saran pakai ENC28j60 lengkap dikasih link tutorial nya. Saya coba lagi menghubungkan dua Arduino dengan Ethernet shield tipe berbeda, eh ternyata masih gagal. Apakah yang salah? apakah programnya? apakah cara komunikasi nya?
Menghubungkan dua Arduino Uno, Mega dengan Ethernet shield menggunakan Router
Setelah semua dia atas gagal, ternyata menghubungkan dua Arduino dengan Ethernet tidak bisa langsung, bukan peer to peer Arduino Ethernet shield. Tapi ada perangkat tambahan, router untuk menghasilkan IP dan MAC nya.
Karena menggunakan enc28j60 cukup ribet akhir nya saya menggunakan Ethernet W5100 karena tinggal di plug in ke Arduino Uno atau mega nya. oke untuk memperjelas, apa saja kah yang di butuhkan untuk membuat project Arduino menggunakan Ethernet shield ini?
Bahan Bahan
- Ethernet shield W5100 dua pcs
- Arduino Uno dua pcs
- Kabel Lan dua PCS
- Router 1 pcs, saya beli yang murah saja
- software Arduino IDE
Desain interface dua Arduino bisa dilihat di gambar di bawah ini
Program Arduino Ethernet Shield dengan W5100
Karena menggunakan dua Arduino, maka kita akan membuat dua program, satu sebagai client, satu sebagai server. Kita akan coba mengirim karakter dari satu Arduino ke Arduino yang lain. Berikut program untuk mengirim karakter nya
#include "ethernet.h" EthernetClient client; const int PINsw1 = 2; const int PINsw2 = 3; void setup() { pinMode(PINsw1, INPUT_PULLUP); pinMode(PINsw2, INPUT_PULLUP); Serial.begin(9600); uint8_t mac[6] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05}; Ethernet.begin(mac); } void loop() { int sw1 = digitalRead(PINsw1); int sw2 = digitalRead(PINsw2); if (client.connect(IPAddress(192, 168, 0, 6), 80)) { if ( sw1 == 0 )client.print("A"); if ( sw2 == 0 )client.print("B"); if ( sw1 == 1 )client.print("C"); if ( sw2 == 1 )client.print("D"); client.stop(); } delay(1000); }
Cara kerja program di atas adalah, jika kita tekan push button pada d2 atau d3 akan mengirimkan karakter ke Arduino satu nya. Jelas nya bisa dilihat di coding berikut
if (client.connect(IPAddress(192, 168, 0, 6), 80)) { if ( sw1 == 0 )client.print("A"); if ( sw2 == 0 )client.print("B"); if ( sw1 == 1 )client.print("C"); if ( sw2 == 1 )client.print("D"); client.stop(); }
Kemudian mengirimkan ke Ethernet satu nya dengan IP 192,168,0,6.
Nah bagaimana kah program Arduino Ethernet yang berfungsi sebagai penerima. Berikut adalah programnya:
#include "Ethernet.h" byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192, 168, 0, 6); EthernetServer server(80); char arrayRead; void setup() { pinMode(LED_BUILTIN, OUTPUT); Ethernet.begin(mac, ip); server.begin(); Serial.begin(9600); while (!Serial) { ; } } void loop() { EthernetClient client = server.available(); if (client.available() > 0) { arrayRead = client.read(); Serial.print(arrayRead); } if (!(client.connected())) { client.stop(); } }
Setiap karakter yang di terima dari Arduino satu nya, akan di baca kemudian akan di tampilkan di serial monitor.
Program tersebut masih harus di sempurnakan menurut saya, karena Arduino hanya bisa di hubungkan dengan dua Arduino saja, bagaimana jika menggunakan 10 Arduino di hubungkan dengan Ethernet? mungkin perlu indentifikasi data yang di terima server berasal dari IP berapa seperti system antrian yang ada di bank atau yang lain nya . Tapi saya belum oprek-oprek, mungkin next time yah.
Berikut Video Pengujian nya