Nothing Special   »   [go: up one dir, main page]

LAPORAN HARI KE-1 TUGAS 1 Dan 2 PRAKTIKUM INTERNET OF THINGS

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 10

LAPORAN TUGAS PRAKTIKUM INTERNET OF THINGS (IoT)

Anggota :
Arjuna Ayomi (20/464184/SV/18503)
Benaya Yedija Elvianto (20/464187/SV/18506)
Dimas Pramudya W (20/464189/SV/18508)

TEKNIK PENGELOLAAN DAN PERAWATAN ALAT BERAT


DEPARTEMEN TEKNIK MESIN
SEKOLAH VOKASI
UNIVERSITAS GADJAH MADA
2022/2023
Tugas 1

Simulasi dengan Wokwi :

Kendali Esp32 4 buah LED dengan Oled Display Menu dan Button

//Arjuna Ayomi
//Benaya Yedija Elvianto
//Dimas Pramudya

#include <U8g2lib.h>
#include <Bounce2.h>
#define LED1 4
#define LED2 16
#define LED3 2
#define LED4 5

byte button_pins[] = {14, 13, 12}; // button pins, 4,5 = up/down, 6 = select
#define NUMBUTTONS sizeof(button_pins)
Bounce * buttons = new Bounce[NUMBUTTONS];

U8X8_SSD1306_128X64_NONAME_HW_I2C display(U8X8_PIN_NONE);

#define MENU_SIZE 5
char *menu[MENU_SIZE] = { "LED 1", "LED 2", "LED 3", "LED 4", "LED Off" };
int cursor=0;

void setup() {
  Serial.begin(9600);
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);

  // Make input & enable pull-up resistors on switch pins


  for (int i=0; i<NUMBUTTONS; i++) {
    buttons[i].attach( button_pins[i], INPUT_PULLUP); // setup the bounce
instance for the current button
    buttons[i].interval(25); // interval in ms

  display.begin();
  display.setPowerSave(0);
  display.setFont(u8x8_font_pxplusibmcgathin_f);

  showMenu();
}

void loop() {
  // process button press:
  for (int i = 0; i<NUMBUTTONS; i++) {
    buttons[i].update(); // Update the Bounce instance
    if ( buttons[i].fell() ) { // If it fell
      if (i==2) { // select
         display.clearLine(7);
         display.setCursor(0,7);
         display.print(">>");
         display.print(menu[cursor]);
         executeChoice(cursor);
      }
      else {
        // erase previous cursor:
        display.setCursor(0,cursor);
        display.print(' ');
        if (i==0) { // up
          cursor++;
          if (cursor>(MENU_SIZE-1)) cursor=0;
        }
        else { // down
          cursor--;
          if (cursor<0) cursor=(MENU_SIZE-1);
        }
        // show cursor at new line:
        display.setCursor(0,cursor);
        display.print('>');
      }
    } // end if button fell...
  } // end for-loop of button check
}

void showMenu() {
  cursor=0;
  display.clearDisplay();
  // show menu items:
  for (int i = 0; i<MENU_SIZE; i++) {
    display.drawString(2,i,menu[i]);
  }
  display.setCursor(0,0);
  display.print('>');
}

void executeChoice(int choice) {


  switch(choice) {
      case 0 :
                Serial.print("Execute choice "); Serial.print(choice);
Serial.print(" - "); Serial.println(menu[choice]);
                digitalWrite(LED1, HIGH);
                digitalWrite(LED2, LOW);
                digitalWrite(LED3, LOW);
                digitalWrite(LED4, LOW);
                break;
      case 1 :
                Serial.print("Execute choice "); Serial.print(choice);
Serial.print(" - "); Serial.println(menu[choice]);
                digitalWrite(LED1, LOW);
                digitalWrite(LED2, HIGH);
                digitalWrite(LED3, LOW);
                digitalWrite(LED4, LOW);
                break;
      case 2 :
                Serial.print("Execute choice "); Serial.print(choice);
Serial.print(" - "); Serial.println(menu[choice]);
                digitalWrite(LED1, LOW);
                digitalWrite(LED2, LOW);
                digitalWrite(LED3, HIGH);
                digitalWrite(LED4, LOW);
                break;
      case 3 :
                Serial.print("Execute choice "); Serial.print(choice);
Serial.print(" - "); Serial.println(menu[choice]);
                digitalWrite(LED1, LOW);
                digitalWrite(LED2, LOW);
                digitalWrite(LED3, LOW);
                digitalWrite(LED4, HIGH);
                break;
      case 4 :
                Serial.print("Execute choice "); Serial.print(choice);
Serial.print(" - "); Serial.println(menu[choice]);
                digitalWrite(LED1, LOW);
                digitalWrite(LED2, LOW);
                digitalWrite(LED3, LOW);
                digitalWrite(LED4, LOW);
                break;
      default :
                Serial.print("Execute choice "); Serial.print(choice);
Serial.print(" - "); Serial.println(menu[choice]);
                break;
  }
 
}

Penjelasan :
Pemasangan 4 buah lampu LED pada Esp32 dengan 3 button sabagai kontrolnya.
Penambahan display Oled untuk mengetahui menu ketika button di tekan. Button merah
digunakan sebagai switch up. Button biru digunakan sebagai switch down. Sedangkan button
hijau sebagai start pada menu yang dipilih (terlihat pada display). LED 1 (hijau)
disambungkan pada D4, LED 2 (merah) disambungkan pada D16, LED 3 (kuning)
disambungkan pada D2, dan LED 4 (biru) disambungkan pada D5. Untuk ketiga button (satu
kaki) disambungkan pada ground dan display oled. Satu kaki lain disambungkan pada D13
untuk button biru, D14 untuk button merah dan D12 untuk button hijau.
Kesimpulan :
Dari praktikum yang sudah dilakukan kita mengetahui bahwa lampu LED dapat di
control melalui button dan tentunya sudah menggunakan codingan yang sesuai dengan
program.
Menjalankan simulasi dari program
 Ketika pushbutton dalam keadaan LED 1 (hijau)

 Ketika pushbutton dalam keadaan LED 2 (merah)

 Ketika pushbutton dalam keadaan LED 3 (kuning)


 Ketika pushbutton dalam keadaan LED 4 (biru)

 Ketika pushbutton dalam keadaan LED off (mati)


Tugas 2
Kendali Esp32 led MQTT + MQTT Dashboard Android Apps
//Arjuna Ayomi
//Benaya Yedija Elvianto
//Dimas Pramudya W

#include "WiFi.h"
#include "PubSubClient.h"

int led_pin = 5;
char clientId[50];

WiFiClient espClient;
PubSubClient client(espClient);

void setup()
{
  Serial.begin(115200);
  pinMode(led_pin, OUTPUT);

  WiFi.mode(WIFI_STA);
  WiFi.begin("Wokwi-GUEST", "");

  client.setServer("broker.mqttdashboard.com", 1883);
  client.setCallback(callback);
  mqttReconnect();
}

void mqttReconnect()
{
  while (!client.connected())
  {
    Serial.print("Attempting MQTT connection...");
    if (client.connect(clientId))
    {
      Serial.println("Connected");
      client.subscribe("enam");
    }
    else
    {
      Serial.println("Connection failed try again in 5 seconds");
      delay(5000);
    }
  }
}

void callback(char* topic, byte* message, unsigned int length)


{
  String stMessage;
  for (int i = 0; i < length; i++)
  {
    stMessage += (char)message[i];
  }
  if (stMessage == "off")
  {
    digitalWrite(led_pin, LOW);
    Serial.print("LIGHT OFF!!");
  }
  else if (stMessage == "on")
  {
    digitalWrite(led_pin, HIGH);
    Serial.print("LIGHT ON!!");
  }
  else
  {
    Serial.print("INVALID COMMAND!!");
  }
}

void loop()
{
  if (!client.connected())
  {
    delay(10000);
    mqttReconnect();
  }
  client.loop();
}

Penjelasan :
Pada tugas 2 ini kami masih menggunakan web yang Bernama Wokwi sebagai
simulasi ardunino yang berbasis online. Kali ini kami mempelajari kendali Esp32 led MQTT
+ MQTT Dashboard Android Apps. LED pada esp32 dikendalikan jarak jauh menggunakan
aplikasi MQTT yang berada di smartphone android. Aplikasi ini memungkinkan kita untuk
mengontrol sebuah sensor dari jarak jauh dengan menggunakan server address yang dengan
codingan yang digunakan sehingga simulasi arduninio serta MQTT dapat terintegrasi. Lampu
LED disambungkan pada D5. Salah satu kaki pada button disambungkan pada ground dan
satunya pada terminal 3V3. Pada aplikasi MQTT terdapat dua tombol yang dibuat secara
manual dengan “topic” serta “payload” yang sudah ada di dalam codingan arduino

Kesimpulan :
Pada praktikum kali ini kita dapat mengetahui bahwa sebuah sistem dapat kita
kendalikan dari jarak jauh melalui aplikasi yang disambungkan dengan pemrograman Esp32

You might also like