Modul 6 Komunikasi Ethernet...11.Buka browser (Mozilla Firefox, Google Chrome, dll.) dan masukkan...

12
Modul 6 Komunikasi Ethernet Tujuan: Memahami tentang LAN Memahami prinsip kerja komunikasi ethernet Memahami MAC address dan IP address Dapat mengimplementasikan komunikasi ethernet pada mikrokontroler sebagai client dan server Dapat mengintegrasikan mikrokontroler dengan server PHP XAMPP Alat dan Bahan: Mikrokontroler STM32F103C8T6 (Bluepill) Programmer ST-Link Modul ethernet ENC28J60 Kabel UTP Crossover PC/Laptop Arduino IDE Software XAMPP Text Editor (Sublime, VSCode, Atom, Notepadd++, dll.) LAN (Local Access Network) LAN merupakan sekumpulan komputer yang terhubung dalam suatu ruang lingkup jaringan lokal seperti kantor, sekolah, dan lain-lain baik dengan kabel maupun tanpa kabel(wireless). Implementasi LAN biasanya untuk menghubungkan satu komputer dengan komputer lain atau perangkat lainnya seperti printer, tempat penyimpanan data lokal, dan lain-lain[1]. MAC Address MAC (Media Access Control) Address merupakan kode unik yang dimiliki setiap perangkat keras jaringan/Network Interface Controller (NIC). MAC Address terletak pada data link layer atau layer kedua pada layer OSI. MAC address biasanya terdapat pada perangkat yang berhubungan dengan standar IEEE 802, seperti Wi-Fi, Ethernet, Bluetooth, dan lain-lain.[2]

Transcript of Modul 6 Komunikasi Ethernet...11.Buka browser (Mozilla Firefox, Google Chrome, dll.) dan masukkan...

Page 1: Modul 6 Komunikasi Ethernet...11.Buka browser (Mozilla Firefox, Google Chrome, dll.) dan masukkan alamat IP mikrokontroler, pada kasus ini 192.168.1.200 12.Jika muncul halaman seperti

Modul 6 Komunikasi Ethernet

Tujuan:

● Memahami tentang LAN ● Memahami prinsip kerja komunikasi ethernet ● Memahami MAC address dan IP address ● Dapat mengimplementasikan komunikasi ethernet pada mikrokontroler

sebagai client dan server ● Dapat mengintegrasikan mikrokontroler dengan server PHP XAMPP

Alat dan Bahan: ● Mikrokontroler STM32F103C8T6 (Bluepill) ● Programmer ST-Link ● Modul ethernet ENC28J60 ● Kabel UTP Crossover ● PC/Laptop ● Arduino IDE ● Software XAMPP ● Text Editor (Sublime, VSCode, Atom, Notepadd++, dll.)

LAN (Local Access Network) LAN merupakan sekumpulan komputer yang terhubung dalam suatu ruang lingkup jaringan lokal seperti kantor, sekolah, dan lain-lain baik dengan kabel maupun tanpa kabel(wireless). Implementasi LAN biasanya untuk menghubungkan satu komputer dengan komputer lain atau perangkat lainnya seperti printer, tempat penyimpanan data lokal, dan lain-lain[1]. MAC Address MAC (Media Access Control) Address merupakan kode unik yang dimiliki setiap perangkat keras jaringan/Network Interface Controller (NIC). MAC Address terletak pada data link layer atau layer kedua pada layer OSI. MAC address biasanya terdapat pada perangkat yang berhubungan dengan standar IEEE 802, seperti Wi-Fi, Ethernet, Bluetooth, dan lain-lain.[2]

Page 2: Modul 6 Komunikasi Ethernet...11.Buka browser (Mozilla Firefox, Google Chrome, dll.) dan masukkan alamat IP mikrokontroler, pada kasus ini 192.168.1.200 12.Jika muncul halaman seperti

IP Address IP address merupakan alamat unik yang menandakan sebuah perangkat yang terhubung ke suatu jaringan berbasis IP. Lain halnya dengan MAC address yang bekerja pada data link layer atau layer ke-2 pada OSI, IP address bekerja pada network layer atau layer ke-3 dari pada OSI.[3] Saat ini ada 2 versi IP address, yaitu IPv4 dan IPv6. Yang saat ini banyak digunakan adalah IPv4. Tetapi karena keterbatasan jumlah IP yang dapat digunakan, untuk ke depannya yang akan digunakan adalah IPv6. Penulisan alamat IPv4:

172.16.254.1 Penulisan alamat IPv6:

2001:db8:0:1234:0:567:8:1

Modul Komunikasi Ethernet Salah satu modul komunikasi ethernet untuk mikrokontroler adalah ENC28J60. ENC28J60 merupakan chip yang dibuat oleh perusahaan Microchip Technology yang dikhususkan untuk antarmuka komunikasi ethernet. Terdapat modul komunikasi ethernet lain seperti W5500, tetapi untuk modul ini dipakai ENC28J60.

Modul WS5500

Page 3: Modul 6 Komunikasi Ethernet...11.Buka browser (Mozilla Firefox, Google Chrome, dll.) dan masukkan alamat IP mikrokontroler, pada kasus ini 192.168.1.200 12.Jika muncul halaman seperti

Modul ENC28J60

Langkah Praktikum Praktikum ini menggunakan library EtherCard dan UIPEthernet untuk menghubungkan board Bluepill ke modul ethernet ENC28J60.

EtherCard sudah ada pada default library Arduino STM32, jadi tidak perlu melakukan instalasi lagi. Library EtherCard pada STM32 bernama Serasidis_EtherCard_STM. Link untuk library UIPEthernet: https://github.com/UIPEthernet/UIPEthernet Koneksi pin-pin ENC28J60: Peringatan! Jangan koneksikan VCC modul Ethernet ke 5V. Modul ethernet akan rusak. EtherCard:

(STM32) -> (ENC28J60) ● VCC -> 3.3V ● GND -> GND ● CS -> PA8 ● SCK -> PA5 ● MISO/SO -> PA6 ● MOSI/SI -> PA7

Page 4: Modul 6 Komunikasi Ethernet...11.Buka browser (Mozilla Firefox, Google Chrome, dll.) dan masukkan alamat IP mikrokontroler, pada kasus ini 192.168.1.200 12.Jika muncul halaman seperti

UIPEthernet: (STM32) -> (ENC28J60)

● VCC -> 3.3V ● GND -> GND ● CS -> PA4 ● SCK -> PA5 ● MISO/SO -> PA6 ● MOSI/SI -> PA7

Untuk pengetesan koneksi ENC28J60 dengan STM32 Bluepill, lakukan langkah berikut:

1. Konfigurasi wiring sesuai dengan wiring EtherCard 2. Ubah board menjadi Generic STM32F108C Series 3. Buka example bernama backSoon di

File-Examples-Serasidis_EtherCard_STM-backSoon 4. Pada kode backSoon, ubah #define STATIC 0 ke #define STATIC 1 

karena kita akan menggunakan IP Static.

IP di mikrokontroler : 192.168.1.200 IP Gateway : 192.168.1.1

5. Upload sketch ke mikrokontroler 6. Pada Windows, masuk ke Control Panel-Network and Internet-Network and

Sharing Center-Change Adapter Settings. 7. Pada bagian Ethernet, klik kanan dan pilih Properties. 8. Masuk ke pengaturan IPv4 dengan menekan Properties

Page 5: Modul 6 Komunikasi Ethernet...11.Buka browser (Mozilla Firefox, Google Chrome, dll.) dan masukkan alamat IP mikrokontroler, pada kasus ini 192.168.1.200 12.Jika muncul halaman seperti

9. Masukkan pengaturan sebagai berikut

● IP Address : 192.168.1.X (X = angka bebas dari 0-255 kecuali 200 dan 1, karena sudah dipakai untuk IP mikrokontroler &

gateway) ● Subnet Mask : 255.255.255.0 ● Default Gateway : 192.168.1.1

Page 6: Modul 6 Komunikasi Ethernet...11.Buka browser (Mozilla Firefox, Google Chrome, dll.) dan masukkan alamat IP mikrokontroler, pada kasus ini 192.168.1.200 12.Jika muncul halaman seperti

10.Reset koneksi kabel UTP pada komputer dengan mencabut dan

memasukannya lagi. 11.Buka browser (Mozilla Firefox, Google Chrome, dll.) dan masukkan alamat IP

mikrokontroler, pada kasus ini 192.168.1.200 12.Jika muncul halaman seperti ini pada browser, maka mikrokontroler dengan

modul ENC28J60 berhasil terkoneksi ke komputer.

Page 7: Modul 6 Komunikasi Ethernet...11.Buka browser (Mozilla Firefox, Google Chrome, dll.) dan masukkan alamat IP mikrokontroler, pada kasus ini 192.168.1.200 12.Jika muncul halaman seperti

Mikrokontroler Sebagai Server Kita akan membuat mikrokontroler menjadi server yang dapat menerima data untuk mematikan dan menyalakan LED menggunakan request HTTP GET. LED dipasang pada pin PC13 (Built-in LED). Sekarang alamat IP mikrokontroler adalah 192.168.1.203, dan IP gateway-nya adalah 192.168.1.1. Kode: Kode diambil dari example backSoon dan disesuaikan untuk menampilkan halaman pada web browser. Buka IP 192.168.1.203 pada web browser dan akan muncul 2 tombol untuk menyalakan dan mematikan LED. Klik tombol tersebut untuk mengubah kondisi LED dengan mengganti parameter GET pada URL (/?led=1 atau /?led=2). #include <EtherCard_STM.h> #include <SPI.h>  #define STATIC 1 // set to 1 to disable DHCP (adjust myip/gwip values below) #define led PC13 // led pin declaration  #if STATIC // ethernet interface ip address static byte myip[] = { 192,168,1,203 }; // gateway ip address static byte gwip[] = { 192,168,1,1 }; #endif  // ethernet mac address - must be unique on your network static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };  byte Ethernet::buffer[500]; // tcp/ip send and receive buffer  const char page[] PROGMEM = "HTTP/1.0 503 Service Unavailable\r\n" "Content-Type: text/html\r\n" "Retry-After: 600\r\n" "\r\n" "<html>"  "<head><title>"  "Service Temporarily Unavailable"  "</title></head>"  "<body>" 

Page 8: Modul 6 Komunikasi Ethernet...11.Buka browser (Mozilla Firefox, Google Chrome, dll.) dan masukkan alamat IP mikrokontroler, pada kasus ini 192.168.1.200 12.Jika muncul halaman seperti

"<h3>STM32 Test</h3>"  "<p><em>"  "Press these buttons to turn on and off the LED<br />"  "<a href='/?led=1'><button>ON</button></a>"  "<a href='/?led=0'><button>OFF</button></a>"  "</body>" "</html>" ;  void setup(){  Serial.begin(57600);  pinMode(PC13, OUTPUT);  delay(10);  Serial.println("\n[backSoon]");     if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)   Serial.println( "Failed to access Ethernet controller"); #if STATIC  ether.staticSetup(myip, gwip); #else  if (!ether.dhcpSetup())  Serial.println("DHCP failed"); #endif   ether.printIp("IP: ", ether.myip);  ether.printIp("GW: ", ether.gwip);    ether.printIp("DNS: ", ether.dnsip);   }  void loop(){  word len = ether.packetReceive();  word pos = ether.packetLoop(len);     if(pos) {  if(strstr((char*)Ethernet::buffer + pos, "GET /?led=1") != 0){  digitalWrite(led, HIGH);  }  else if (strstr((char*)Ethernet::buffer + pos, "GET /?led=0") != 0){  digitalWrite(led, LOW);  }     memcpy_P(ether.tcpOffset(), page, sizeof page);  ether.httpServerReply(sizeof page - 1);  } }

Page 9: Modul 6 Komunikasi Ethernet...11.Buka browser (Mozilla Firefox, Google Chrome, dll.) dan masukkan alamat IP mikrokontroler, pada kasus ini 192.168.1.200 12.Jika muncul halaman seperti

LED menyala: 192.168.1.203/?led=1 LED mati: 192.168.1.203/?led=0

Mikrokontroler Sebagai Client Untuk menjadikan mikrokontroler bekerja pada sisi client, kita akan menggunakan library UIPEthernet. Kita akan mengirimkan suatu angka acak ke server PHP yang terdapat pada PC/Laptop yang terhubung ke mikrokontroler dengan interface Ethernet. Tahapan:

1. Buka XAMPP Control Panel 2. Nyalakan server Apache 3. Buka URL localhost/phpmyadmin dalam browser dan buat database baru

bernama newdatabase dan tabel baru bernama newtable, isi kolom tabel dengan nama id(Auto-increment) dan test

4. Buat kode PHP sebagai berikut dan beri nama hello.php:

<?php  $servername = "localhost";  $username = "root";  $password = "";  $dbname = "newdatabase"; 

Page 10: Modul 6 Komunikasi Ethernet...11.Buka browser (Mozilla Firefox, Google Chrome, dll.) dan masukkan alamat IP mikrokontroler, pada kasus ini 192.168.1.200 12.Jika muncul halaman seperti

  $getData = $_GET["data"];   $conn = new mysqli($servername, $username, $password, $dbname);   $sql = "INSERT INTO newtable(id, test) VALUES ('', '$getData')";  $conn->query($sql);   $conn->close(); ?> 

 5. Install library UIPEthernet dan buka example di

File-Examples-Ethernet_STM-webClient 6. Buat kode di Arduino IDE seperti berikut:

/*  Kode ini akan menjadikan mikrokontroler sebagai web client dengan:   IP client 192.168.1.177   dan melakukan request GET sebanyak 1 kali ke:  IP server 192.168.1.30   dengan parameter berupa data=<nilai_random>. Pastikan server Apache dan database MySQL sudah berjalan di server.  Contoh URL yang akan dikirim: http://192.168.1.30?data=34  Format dalam Arduino: GET http://192.168.1.30?data=34 HTTP/1.1  */  #include <UIPEthernet.h> // dari <Ethernet_STM.h>, ganti menjadi ini #include <utility/logging.h> // tambahkan #include <SPI.h>  byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; 

Page 11: Modul 6 Komunikasi Ethernet...11.Buka browser (Mozilla Firefox, Google Chrome, dll.) dan masukkan alamat IP mikrokontroler, pada kasus ini 192.168.1.200 12.Jika muncul halaman seperti

IPAddress server(192, 168, 1, 30);  IPAddress ip(192,168,1,177);  EthernetClient client;  void setup() {  Serial.begin(9600);  randomSeed(analogRead(0));  Ethernet.begin(mac, ip); 

  delay(1000);  Serial.println(“Connecting...”);     if(client.connect(server, 80)){  Serial.println(“Connected!”);     //Make HTTP request  String req1 = “GET hello.php?data=”;  int req2 = random();  String req3 = “ HTTP/1.1”;  String finalReq = req1 + req2 + req3;   client.println(finalReq);  Serial.println(finalReq);  client.println(“Host: 192.168.1.30”);  client.println(Connection: close);  client.println();    } }  void loop(){  If(client.available()){  char c = client.read();   Serial.print(c);    }  if(!client != connected()){  Serial.println();  Serial.println(“Disconnecting...”);  client.stop();   // do nothing until restart  while(true);  } }  

7. Ubah IP komputer menjadi 192.168.1.30 dan gateway 192.168.1.1

Page 12: Modul 6 Komunikasi Ethernet...11.Buka browser (Mozilla Firefox, Google Chrome, dll.) dan masukkan alamat IP mikrokontroler, pada kasus ini 192.168.1.200 12.Jika muncul halaman seperti

8. Upload kode, dan lihat penambahan data pada database SQL phpmyadmin 9. Reset Bluepill untuk menambahkan data acak lagi ke dalam database

Referensi [1] https://searchnetworking.techtarget.com/definition/local-area-network-LAN, 18 Agustus 2018 09.53 [2] https://en.wikipedia.org/wiki/MAC_address ,19 Agustus 2018 11.33 [3] https://en.wikipedia.org/wiki/IP_address, 19 Agustus 2018 11.33 [4] http://forum.arduino.cc/index.php?topic=223329.0, 19 Agustus 2018 22.51 Daftar Library UIPEthernet https://github.com/UIPEthernet/UIPEthernet