---
# System prepended metadata

title: SMART LAMP

---

TUBES-IOT "SMART LAMP"
![UNIVERSITAS TELKOM - LOGO VERTIKAL](https://hackmd.io/_uploads/S1c-u-B_a.png)

KELOMPOK HIKARI
FAZRI ARDHANA - 1103202187
RAIHAN ATHA - 1103202123
MUHAMMAD IKHWAN MAULANA - 1103203219
YASSER MARTIN - 1103201259
DEWA THEISYATTA ASHARO HEISENDA - 1103204125

PENGENALAN PROJEK
Projek kali ini yaitu membuat alat sederhana menggunakan wemos d1 mini, sensor ldr sebagai pendeteksi cahaya, relay untuk memutus daya, dan komponen yang lainnya. Jika sensor mendeteksi cahaya, nantinya lampu akan mati secara otomatis, dan juga sebaliknya jika sensor tidak mendeteksi cahaya, lampu akan menyala. Lampu juga bisa di atur dengan manual sesuai kehendak sendiri. Protokol jaringan menggunakan protokol MQTT dan broker mqtt yang digunakan adalah broker MQTT

KENDALA YANG DIALAMI 
Kami mengalami kendala yang cukup serius, yaitu alat tidak bisa dikendalikan secara otomatis. Pada saat percobaan menyambung ke broker MQTT berhasil, tetapi saat mencoba sensor tidak bisa. Sensor tidak bisa mengenali cahaya sehingga alat tidak bisa bekerja. Codingan yang dibuat juga sudah dicoba tetapi hasilnya nihil, tidak ada perubahan sama sekali.

LATAR BELAKANG
ALASAN MEMILIH TOPIK 
Penggunaan teknologi ini membantu mengoptimalkan penggunaan energi dengan mengatur pencahayaan secara otomatis, memberikan kenyamanan dengan kemampuan kontrol jarak jauh melalui perangkat pintar, dan memberikan fleksibilitas dalam menciptakan suasana ruangan yang diinginkan.

TUJUAN PROYEK 
Tujuan dari proyek ini adalah sebagai pemenuhan nilai tugas besar untuk mata kuliah IoT (Internet of Thing) dan memahami cara kerja IOT.

TEORI DASAR
Alat yang dibutuhkan
1. Relay
![download](https://hackmd.io/_uploads/H1EuuWSda.jpg)
Relay adalah sebuah komponen elektronik yang berfungsi sebagai sakelar elektrik yang dikendalikan oleh arus listrik. Relay digunakan untuk mengontrol satu sirkuit listrik dengan menggunakan sinyal atau tegangan dari sirkuit lainnya.
2. Breadboard
![download (1)](https://hackmd.io/_uploads/ryAFdWBuT.jpg)
Breadboard adalah perangkat atau papan percobaan yang digunakan dalam elektronika untuk merancang, menguji, dan menyusun prototipe rangkaian listrik tanpa harus melakukan soldering.
3. Wemos d1 mini
![download (2)](https://hackmd.io/_uploads/HyaiOZBda.jpg)
Wemos D1 Mini adalah sebuah papan pengembangan (development board) berbasis modul WiFi yang dirancang untuk pemrograman dan prototyping dalam konteks Internet of Things (IoT).
4. Sensor LDR
![download (3)](https://hackmd.io/_uploads/ByF6ObS_a.jpg)
LDR (Light-Dependent Resistor) atau resistor tergantung cahaya adalah sebuah komponen elektronik yang memiliki resistansi yang berubah-ubah tergantung pada intensitas cahaya yang diterimanya.
5. Kabel, fitting, dan stekker
![download (4)](https://hackmd.io/_uploads/H1pytZBup.jpg)
![download (5)](https://hackmd.io/_uploads/HyTJtbBOT.jpg)
![download (6)](https://hackmd.io/_uploads/S16ktbrOa.jpg)
Digunakan untuk menyalakan lampu
6. Kabel jumper
Kabel jumper adalah kabel pendek yang digunakan dalam elektronika dan prototyping untuk menghubungkan dua titik atau komponen dalam rangkaian listrik.
7. Lampu
![download (8)](https://hackmd.io/_uploads/B1UQF-Hdp.jpg)
Lampu adalah perangkat yang menghasilkan cahaya, baik sebagai sumber cahaya utama atau sebagai sumber cahaya tambahan.
8. Kable USB to micro USB
![download (9)](https://hackmd.io/_uploads/BJJBKWB_T.jpg)
Untuk menghubungkan laptop dengan wemos d1 mini

KONEKSI YANG DIGUNAKAN
WiFi - WiFi adalah teknologi nirkabel yang memungkinkan perangkat elektronik, seperti komputer, smartphone, tablet, dan perangkat lainnya, untuk terhubung ke jaringan internet atau jaringan lokal (LAN) tanpa menggunakan kabel fisik.
MQTT - MQTT (Message Queuing Telemetry Transport) adalah protokol komunikasi ringan yang dirancang untuk digunakan pada kondisi jaringan yang tidak stabil atau dengan bandwidth terbatas.

SOURCE CODE
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>

// WiFiaa
const char *ssid = "OPPOA92"; // Enter your WiFi name
const char *password = "12345678990";  // Enter WiFi password

// MQTT Broker
const char *mqtt_broker = "broker.emqx.io";
const char *topic = "hikari";
const char *mqtt_username = "hikari";
const char *mqtt_password = "hikari";
const int mqtt_port = 1883;
const int ldr = A0;
const int relayPin = D4;

WiFiClient espClient;
PubSubClient client(espClient);

void callback(char *topic, byte *payload, unsigned int length) {
 String string;
 Serial.print("Message arrived in topic: ");
 Serial.println(topic);
 Serial.print("Message:");
 for (int i = 0; i < length; i++) {
     Serial.print((char) payload[i]);
     string += ((char)payload[i]);
 }
 Serial.println(string);
  if ((char)payload[0] == '0')  {
    Serial.println("LAMPU MATI");
    digitalWrite(D4, LOW);

  }
  else if ((char)payload[0] == '1')  {
    Serial.println("LAMPU NYALA");
    digitalWrite(D4, HIGH);

    }
  Serial.println();
 Serial.println("-----------------------");
}

void setup() {
 // Set software serial baud to 115200;
 Serial.begin(115200);
 // connecting to a WiFi network
 pinMode(relayPin, OUTPUT);
 pinMode(relayPin, LOW);
 WiFi.begin(ssid, password);
 while (WiFi.status() != WL_CONNECTED) {
     delay(500);
     Serial.println("Connecting to WiFi..");
 }
 Serial.println("Connected to the WiFi network");
 //connecting to a mqtt broker
 client.setServer(mqtt_broker, mqtt_port);
 client.setCallback(callback);
 while (!client.connected()) {
     String client_id = "mqttx_1cf3c425";
     client_id += String(WiFi.macAddress());
     Serial.printf("The client %s connects to the public mqtt broker\n", client_id.c_str());
     if (client.connect(client_id.c_str(), mqtt_username, mqtt_password)) {
         Serial.println("Public emqx mqtt broker connected");
     } else {
         Serial.print("failed with state ");
         Serial.print(client.state());
         delay(2000);
     }
 }
 // publish and subscribe
 client.publish(topic, "Hi EMQX I'm esp ^^");
 client.subscribe(topic);
}

void loop() {
 client.loop();   
 int ldrValue = analogRead(ldr);
  if (ldrValue < 300) { 
    digitalWrite(relayPin, HIGH); // Nyalakan lampu
    client.publish(topic, "1");
  } else {
    digitalWrite(relayPin, LOW); // Matikan lampu
    client.publish(topic, "0");
  }
  delay(2000);
}

CARA KERJA ALAT
Sensor cahaya akan mendeteksi cahaya disekitarnya. Jika sensor mendeteksi cahaya yang terang, maka lampu akan otomatis mati. Jika sensor mendeteksi cahaya redup/tidak ada cahaya, maka lampu akan hidup otomatis. Selain itu, lampu bisa diatur manual dengan semacam aplikasi.

KESIMPULAN
Alat ini belum berhasil dibuat karena ada beberapa kesalahan yang belum bisa diselesaikan. Entah itu kesalahan dari codingan yang buat atau kesalahan dalam merangkai alat. Selanjutnya kami akan mencoba lagi agar alat ini bisa digunakan