“Mugunghwa kkoci pieot seumnida” Squid Game versi NodeMCU ESP8266

Indobot Update

Mugunghwa kkoci pieot seumnida Squid Game versi NodeMCU
Membuat Game Mugunghwa kkoci pieot seumnida Squid Game versi NodeMCU ESP8266

Mugunghwa kkoci pieot seumnida (bunga Mugung telah mekar) atau Permainan lampu merah lampu hijau adalah permainan di mana ada satu pemain sebagai penjaga dan pemain lainnya menjadi pemain yang berusaha mencapai finish. Penjaga akan menunggu di garis finish sambil menutup mata dan menghadap ke pohon. Penjaga harus sambil mengucapkan “Mugunghwa kkoci pieot seumnida” entah dipanjangkan atau dipercepat dan setelah selesai, penjaga akan berbalik menghadap ke peserta. Saat penjaga menghadap pohon, pemain harus berlari menuju finish. Namun jika penjaga sudah menyelesaikan kalimatnya dan berbalik, maka pemain harus diam tanpa gerakan. Jika bergerak, maka akan dianggap kalah.

Permainan ini adalah salah satu permainan yang ada di film “Squid Game”, namun dalam film Squid Game, permainan menjadi lebih mengerikan. Di mana mereka yang bergerak ketika penjaga berbalik, maka mereka akan ditembak. Teman-teman sudah nonton?

(Sumber gambar: www.goodnewsfromindonesia.id)

Nah lalu bagaimana yang versi NodeMCU?

Teman-teman sudah tau NodeMCU ESP8266 kan?

NodeMCU ESP8266 merupakan jenis mikrokontroler yang sudah memiliki fasilitas Wifi. Fasilitas inilah yang akan kita gunakan untuk permainan lampu merah lampu hijau.

Wifi pada nodeMCU dapat diatur sebagai client server. Dalam permainan ini, Server digunakan sebagai Penjaga. Di mana server bisa menentukan siapa yang menang dan siapa yang kalah. Sedangkan untuk NodeMCU bagian Client merupakan pemainnya, di mana setiap dari mereka memiliki satu Sensor Ultrasonik untuk mengetahui gerakan dari NodeMCU Client.

Bagaimana cara membuatnya? yuk kita simak.

“Mugunghwa kkoci pieot seumnida” Squid Game versi NodeMCU ESP8266

Alat dan Bahan

Alat dan bahan untuk project ini adalah sebagai berikut.

  1. Software Arduino ID
  2. NodeMCU ESP8266 3
  3. Sensor Ultrasonik 2
  4. LED 2
  5. Resistor 2
  6. LCD 20×4 1
  7. Projectboard 3
  8. Kabel jumper Secukupnya

 

Belajar Elektronika, Arduino, dan juga IoT step by step dengan bantuan tangga belajar? Daftar sekarang dan dapatkan PROMO

Rangkaian

Susun device di atas menjadi rangkaian seperti berikut. Pastikan semua terhubung dengan baik.

baca juga: Bermain dengan Arduino : Don’t Touch Me!

Program

Tahap selanjutnya adalah penulisan program pada Arduino IDE. Buatlah program seperti berikut. Perhatikan keterangan (comment) untuk memahami program dengan baik. Jangan lupa untuk menambahkan beberapa library untuk mendukung program, seperti library HCSR04 dan Liquid Crystal I2C.

program berikut adalah program untuk penjaga (dengan LCD 20X4)

 


program berikut adalah program untuk penjaga (dengan LCD 20X4)
//program server client oleh indobot.co.id
#include <ESP8266WiFi.h> //library wifi
#include <LiquidCrystal_I2C.h>
#include <TimeLib.h>

#define button D3
#define LEDmerah D4
#define LEDhijau D5
int menit;
int detik;
int lama = 3;
String pemain1;
String pemain2;
String nilai1;
String nilai2;
WiFiServer server(80);
IPAddress IP(111,111,1,11); //ip address (bebas tapi format sama)
IPAddress mask = (255, 255, 255, 0);

LiquidCrystal_I2C lcd(0x27,20,4);

void setup() 
{
 Serial.begin(9600);
 lcd.init();
 lcd.backlight();
 pinMode(button, INPUT_PULLUP);
 pinMode(LEDmerah, OUTPUT);
  pinMode(LEDhijau, OUTPUT);
 WiFi.mode(WIFI_AP);
 WiFi.softAP("nodemcuserver", "indobot"); //ssid dan password (bebas tanpa spasi)
 WiFi.softAPConfig(IP, IP, mask);
 server.begin();
 Serial.println();
 Serial.println("SERVER NODEMCU ESP8266");
 Serial.println("Server dimulai.");
 Serial.print("IP: "); Serial.println(WiFi.softAPIP());
 Serial.print("MAC:"); Serial.println(WiFi.softAPmacAddress());
 setTime(0,0,0,0,0,0); //jam,menit,detik,tanggal,bulan,tahun
    lcd.setCursor(0,0);
    lcd.print("SQUID GAME");
    lcd.setCursor(0,1);
    lcd.print("Waktu Anda");
    lcd.setCursor(0,2);
    lcd.print("3 Menit");
    delay(5000);
    lcd.clear();
}

void loop() 
{
 WiFiClient client = server.available();
 if (!client) 
   {
      return;
    }

 String request = client.readStringUntil('\r');
 Serial.println("********************************");
 Serial.println("Client Mengirim: " + request); //request untuk kiriman client
 client.flush();
 lcd.setCursor(0,0);
 lcd.print("SQUID GAME");
 lcd.setCursor(0,1);
 lcd.print((String) minute()+":"+second());
 
 String hasil = request;
 if (hasil.indexOf ("Jarak1") > -1) { //untuk tau hasil bacaan dari pemain 1
    nilai1 = request;
 }
 if (hasil.indexOf ("Jarak2") > -1) { //untuk tau hasil bacaan dari pemain 2
    nilai2 = request;
 }


 if (button == LOW) {
    digitalWrite(LEDmerah,HIGH);
    digitalWrite(LEDhijau,LOW);
    lcd.clear();
    lcd.setCursor(0,2);
    lcd.print("      STOP");
    setTime(0,menit,detik,0,0,0); //jam,menit,detik,tanggal,bulan,tahun
    if (pemain1 != nilai1){
      lcd.setCursor(0,3);
      lcd.print("P1 KALAH");
    }
    if (pemain2 != nilai2){
      lcd.setCursor(0,3);
      lcd.print("P2 KALAH");      
    }
    else 
    {
      lcd.setCursor(0,3);
      lcd.print("--------");
    }
  }

 else {
    digitalWrite(LEDmerah,LOW);
    digitalWrite(LEDhijau,HIGH);
    lcd.setCursor(0,2);
    lcd.print(nilai1);
    lcd.setCursor(0,3);
    lcd.print(nilai2);
    pemain1 = nilai1;
    pemain2 = nilai2;
    menit = minute();
    detik = second();
 }
 if (minute() == lama) {
  lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Permainan");
    lcd.setCursor(0,0);
    lcd.print("Selesai");
 }
}

Isi pada bagian ip adress, dan WiFi.softAP(“namawifi”,”passworwifi”); pada bagian ini tidak diisi wifi internet anda. Tapi wifi NodeMCU ESP8266 anda. Tidak perlu menggunakan spasi ya. Intinya diisi saja sesuai dengan keinginan kalian. IP Address juga diisi sesuai keinginan anda, asal tetap ada 4 angka yang dipisahkan dengan tanda koma dan harus angka. Jangan menggunakan huruf.

program berikut adalah program untuk pemain 1 (yang ada Sensor Ultrasonik)

 

#include <ESP8266WiFi.h>
#include <HCSR04.h>

char ssid[] = "nodemcuserver";           // samakan dengan server
char pass[] = "indobot";         // samakan dengan server
IPAddress server(111,111,1,11);     // ini juga samakan dengan server
WiFiClient client;

HCSR04 hc(D1,D2);

void setup() {
  Serial.begin(9600);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, pass);           // terhubung dengan server
  Serial.println();
  Serial.println("Terhubung dengan Server?");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  
  Serial.println();
  Serial.println("terhubung");
  Serial.println("CLIENT NODEMCU ESP8266");
  Serial.print("LocalIP:"); Serial.println(WiFi.localIP());
  Serial.println("MAC:" + WiFi.macAddress());
  Serial.print("Gateway:"); Serial.println(WiFi.gatewayIP());
  Serial.print("AP MAC:"); Serial.println(WiFi.BSSIDstr());
}

void loop() {
  float jarak = hc.dist();
  Serial.print("Jarak: ");
  Serial.print(jarak);
  Serial.println(" cm ");
  client.connect(server, 80);
  Serial.println("********************************");
  Serial.print("Jumlah Byte yang dikirim: ");
  client.print((String) "Jarak1 =" + jarak + "cm\r"); //Mengirim ke server
  String answer = client.readStringUntil('\r');
  client.flush();
  client.stop();
delay(100);
}

baca juga: Tutorial Membuat Remote Kontrol Mobil-Mobilan Menggunakan IoT Blynk

Program berikut adalah program untuk pemain 2 (yang ada Sensor Ultrasonik)

 

#include <ESP8266WiFi.h>
#include <HCSR04.h>

char ssid[] = "nodemcuserver";           // samakan dengan server
char pass[] = "indobot";         // samakan dengan server
IPAddress server(111,111,1,11);     // ini juga samakan dengan server
WiFiClient client;

HCSR04 hc(D1,D2);

void setup() {
  Serial.begin(9600);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, pass);           // terhubung dengan server
  Serial.println();
  Serial.println("Terhubung dengan Server?");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  
  Serial.println();
  Serial.println("terhubung");
  Serial.println("CLIENT NODEMCU ESP8266");
  Serial.print("LocalIP:"); Serial.println(WiFi.localIP());
  Serial.println("MAC:" + WiFi.macAddress());
  Serial.print("Gateway:"); Serial.println(WiFi.gatewayIP());
  Serial.print("AP MAC:"); Serial.println(WiFi.BSSIDstr());
}

void loop() {
  float jarak = hc.dist();
  Serial.print("Jarak: ");
  Serial.print(jarak);
  Serial.println(" cm ");
  client.connect(server, 80);
  Serial.println("********************************");
  Serial.print("Jumlah Byte yang dikirim: ");
  client.print((String) "Jarak2 =" + t + "*cm\r"); //Mengirim ke server
  String answer = client.readStringUntil('\r');
  client.flush();
  client.stop();
 delay(100);
}

baca juga: Penghitung Skor Permainan Bola Basket Game Center di Mall

2 program di atas (pemain 1 dan pemain 2) memiliki jenis program yang hampir sama. Perbedaannya hanya ada pada client.print. di mana kalimat pengiriman harus dibedakan. Agar server (penjaga) dapat mengetahui  mana yang  mengirimkan data. Jangan lupa untuk menyamakan password dan ip address yang sama dengan server.

Upload program sesuai dengan device masing-masing.

Hasil dari project ini adalah ada 3 orang yang dapat bermain. 1 sebagai penjaga, dan 2 lainnya sebagai pemain. Penjaga berada di NodeMCU Server untuk memencet button sebagai tanda stop (bisa ditambahkan dengan kalimat “Mugunghwa kkoci pieot seumnida” untuk aba-aba pemain). Pemain akan menggerakkan breadboard yang di atasnya sudah terpasang sensor ultrasonik ke arah finish (jangan lupa menambahkan tembok atau papan di garis finish untuk memantulkan gelombang). Jika tombol ditekan, maka pemain harus berhenti. Jika tidak maka akan ada tulisan pemain kalah di LCD.

Selamat bermain!

 

*Note: Jika ada kendala dalam pengoperasian project di atas, silakan hubungi Minbot agar dapat segera kami perbaiki. Terima kasih.

Mau belajar elektronika dasar? Arduino? atau bahkan Internet of Things? Ikuti kursus online Indobot Academy!

Ingin Tahu Program Kami Lebih Lanjut?

Silahkan isi Formulir Dibawah Ini untuk Diskusi dengan Tim Indobot Academy.

Baca Juga

Bagikan:

Tags

Tinggalkan komentar

whatsapp whatsapp