Contents
ENC28J60 adalah sebuah modul elektronik yang bekerja sebagai ethernet controller. Modul ini terdiri dari chip ENC28J60 itu sendiri, konektor RJ45 female dan beberapa rangkaian komponen resistor, kapasitor dan induktor. Sebagai sebuah modul, ENC28J60 ini dapat berfungsi sebagai gateway Arduino (dan mikrokontroller lain) ke jaringan TCP/IP yakni bisa berupa LAN (Local Area Network), WAN (Wide Area Network) maupun MAN (Metropolitan Area Network). Atau lebih singkatnya dapat kita sebut jaringan intranet dan internet. Â Sebagai sebuah gateway jaringan, tentunya ENC28J60 ini juga dapat disetting IP-nya, subnet mask-nya, IP gateway-nya dan DNS-nya. Karena harganya yang sangat ekonomis dibanding dengan ethernet modul yang tipenya shield (ethernet shield), modul ENC28J60 ini banyak digunakan di project-project arduino
[AdSense-B]
ENC28J60 dan SPI
Agar sebuah ENC28J60 dapat bekerja dengan Arduino tentunya kita harus mengkoneksikannya dengan properly. Modul ENC28J60 ini melakukan interfacing menggunakan protokol SPI (Serial Peripheral Interface), jadi bagi siapa saja yang mau berhubungan dengan modul ini tentunya harus support protokol komunikasi tersebut. Kalau kita kita lihat dalam keluarga Arduino yang berbasis mikrokontroller ATMEGA ternyata sudah support protokol tersebut sehingga dapat langsung kita hubungkan ke pin-pin terkait. Seperti yang kita ketahui, pin-pin yang digunakan untuk berkomunikasi SPI adalah MISO (Master In Slave Out), MOSI (Master Out Slave In), SCK (Serial Clock) dan SS (Slave Select). Pin MISO/MOSI digunakan untuk bertukar data, SCK digunakan untuk clock sinkronisasi sedangkan pin SS dipakai untuk memilih slave yang akan ‘diajak’ berkomunikasi (pin SS ini akan sangat berguna jika slave SPI Anda lebih dari satu).
Adapun pin SPI di keluarga Arduino berbeda-beda. Sebagai gambaran di Arduino Uno, SPI berada di pin 10-13, sedangkan di Arduino Mega, SPI berada pin 51-53. Untuk tipe papan Arduino lain selengkapnya dapat dibaca di tabel di bawah
Tipe Arduino | MOSI | MISO | SCK | SS (slave) | SS (master) |
Uno, Nano,Pro Mini | 11 or ICSP-4 | 12 or ICSP-1 | 13 or ICSP-3 | 10 | – |
Mega | 51 or ICSP-4 | 50 or ICSP-1 | 52 or ICSP-3 | 53 | – |
Leonardo | ICSP-4 | ICSP-1 | ICSP-3 | – | – |
Due | ICSP-4 | ICSP-1 | ICSP-3 | – | 4, 10, 52 |
Zero | ICSP-4 | ICSP-1 | ICSP-3 | – | – |
101 | 11 or ICSP-4 | 12 or ICSP-1 | 13 or ICSP-3 | 10 | 10 |
MKR1000 | 8 | 10 | 9 | – | – |
Alat dan Bahan
- Arduino Uno, Rp 84.000 bisa dibeli di sini  atau ini yang lebih murah
- Modul ethernet ENC28J60, harga 40 ribuan bisa di beli di sini atau di sini
- Kabel jumper male-female secukupnya Rp 400/pc, bisa dibeli di sini
[AdSense-B]
Koneksi ENC28J60 dengan Arduino
Setelah mengetahui pinout SPI Arduino, berikutnya kita coba hubungkan dengan jumper kabel ke modul ENCJ60. Yang perlu Anda perhatikan bahwa di pasaran ada beberapa model ENC28J60. Ada yang powernya 5V ada juga yang 3,3V. Jadi lebih baik diteliti dulu, modul ethernet yang Anda beli tipe yang, jangan sampai sembarangan colok power terus rusak deh (pengalaman soalnya, he he he). Baiklah, kurang lebih begini koneksi antara modul ethernet ENC28J60 dengan Arduino. Walaupun berbeda-beda model, koneksinya ya itu-itu jua 🙂 , jadi jangan bingung ya …..
Sketch ENC28J60 dengan Arduino
Setelah koneksi/wiring kabel sudah dihubungkan, marilah kita coba isi program di Arduino kita agar dapat menghubungi modul ENC28J60 sekaligus bergabung dengan jaringan TCP/IP. Untuk mudahnya, saya sarankan Anda mendownload library UIPEthernet.h. Library ini semua function-nya sangat mirip dengan library Ethernet.h yang merupakan bawaan Arduino.
Note : Library Ethernet.h hanya support ethernet modul yang berwujud shield
Jadi semua program yang ditulis menggunakan library Ethernet.h dapat langsung digunakan jika library-nya langsung diganti UIPEthernet.h. Enak, kan? 🙂 . Istilah kerennya, library UIPEthernet.h ini memiliki compatibility dan interoperability yang bagus dengan native Arduino library. Baiklah, silahkan download library tersebut di sini, instal library-nya (jika belum tahu cara instal library bisa baca artikel ini), kemudian langsung buka program example bawaan IDE Arduino di menu File-Example-Ethernet-WebServer. Ubah dulu library Ethernet.h menjadi UIPEthernet.h, kemudian upload sketch tersebut ke Arduino, tunggu beberapa saat dan lihatlah hasilnya di web browser Anda. Kalau bingung, silahkan lihat sketch di bawah sebagai hasil modifikasi program example di atas
#include <SPI.h> #include <UIPEthernet.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192, 168, 169, 177); EthernetServer server(80); void setup() { Serial.begin(9600); while (!Serial) { ;Â } Ethernet.begin(mac, ip); server.begin(); Serial.print("server is at "); Serial.println(Ethernet.localIP()); } void loop() { EthernetClient client = server.available(); if (client) { Serial.println("new client"); boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); if (c == '\n' && currentLineIsBlank) { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close");Â client.println("Refresh: 5");Â client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); for (int analogChannel = 0; analogChannel < 6; analogChannel++) { int sensorReading = analogRead(analogChannel); client.print("analog input "); client.print(analogChannel); client.print(" is "); client.print(sensorReading); client.println("<br />"); } client.println("</html>"); break; } if (c == '\n') { currentLineIsBlank = true; } else if (c != '\r') { currentLineIsBlank = false; } } } delay(1); client.stop(); Serial.println("client disconnected"); } }
Ohya, hubungkan ethernet modul ENC28J60 ke laptop Anda menggunakan kabel UTP (RJ45) ya…. Jangan lupa setting IP laptop Anda satu kelas dengan IP ENC28J60. Untuk case di atas, kurang lebih ilustrasi koneksi kabel UTP dan settingan IP-nya seperti gambar di bawah
Untuk mengecek koneksi, Anda dapat menge-ping ethernet module sesuai alokasi IP-nya, sebagai berikut
Jika semuanya sudah oke (sketch, koneksi kabel, dll), maka Anda akan dapat langsung melihat hasilnya di web browser Anda sebagai berikut
Demikian sedikit tutorial tentang Cara Menggunakan Ethernet Module ENC28J60 dengan Arduino, semoga dapat menggugah ide-ide baru Anda yang berhubungan dengan arduino dan networking. Selamat mencoba
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
Pak materi ini kalau analog nya di ganti digital code nya jadi gimana ya? misal di kasih button jika ditekan di layar menampilkan tulisan nyala, jika tidak ditekan menampilkan tulisan mati. terimakasih
intinya mah bisa aja mas dan sama caranya. analogRead ganti digitalRead
Cara melihat MAC address pada ENC28J60 bagaimana?