Editor Kode — Kolom yang Bisa Disalin
Tambahkan kolom kode, edit, lalu klik "Salin" untuk menyalin isi kolom ke clipboard.
➕ Tambah Kolom
Export Semua (JSON)
Deteksi Manusia (YOLOv8)
from ultralytics import YOLO import cv2 import time def main(): url = "http://192.168.1.99:4747/video" print("🔄 Memuat model YOLOv8...") model = YOLO("yolov8n.pt") cap = cv2.VideoCapture(url) if not cap.isOpened(): print("❌ Gagal membuka stream CCTV.") return while True: ret, frame = cap.read() if not ret: break results = model(frame, stream=True, verbose=False) for r in results: for box in r.boxes: cls = int(box.cls[0]) label = model.names[cls] if label == "person": x1, y1, x2, y2 = map(int, box.xyxy[0]) conf = float(box.conf[0]) cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) cv2.putText(frame, f"Person {conf:.2f}", (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2) cv2.imshow("Deteksi Manusia - YOLOv8", frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
Salin
Persiapan
python --version pip install ultralytics pip install opencv-python pip install opencv-contrib-python pip install numpy pip install pillow
Salin
Arduino
CH340 / CH341 Driver CP2102 Driver arduino 1.8.19
Salin
Setting node mcu
https://drive.google.com/file/d/19LBPniXlN6RFvQ1zDN05bzXApYG6Zu_m/view?usp=drive_link
Salin
foto computer vision
https://drive.google.com/file/d/1QN0KBMJpG2EmvpEkiC5EOtTeOb4Yr1eW/view?usp=sharing
Salin
Projek iot
#define BLYNK_TEMPLATE_ID "TMPL6QWTeymBz" #define BLYNK_TEMPLATE_NAME "Salon Sofie" #define BLYNK_AUTH_TOKEN "KSx2mKACw-gD8V9z8YD1aQtsZaFAsEnl" #include
#include
#include
#include
#include
// Library untuk waktu #include
// Library RTC untuk Blynk // Blynk Auth Token char auth[] = BLYNK_AUTH_TOKEN; // WiFi credentials char ssid[] = "sofiesalon"; char pass[] = "salonsofie890098"; #define FLAME_SENSOR_PIN D1 #define DHT_PIN D2 #define BUZZER_PIN D3 #define LED_PIN D4 #define SMOKE_SENSOR_PIN A0 #define PIR_SENSOR_PIN D5 // Pin untuk sensor PIR #define DHT_TYPE DHT11 #define FLAME_THRESHOLD LOW #define SMOKE_THRESHOLD 1000 DHT dht(DHT_PIN, DHT_TYPE); WidgetRTC rtc; // Widget RTC untuk sinkronisasi waktu bool isAlarmActive = false; bool isDeviceOn = false; void setup() { Serial.begin(115200); Blynk.begin(auth, ssid, pass); pinMode(FLAME_SENSOR_PIN, INPUT); pinMode(SMOKE_SENSOR_PIN, INPUT); pinMode(BUZZER_PIN, OUTPUT); pinMode(LED_PIN, OUTPUT); pinMode(PIR_SENSOR_PIN, INPUT); // Inisialisasi pin PIR digitalWrite(BUZZER_PIN, LOW); digitalWrite(LED_PIN, LOW); dht.begin(); rtc.begin(); // Inisialisasi RTC } void loop() { Blynk.run(); if (isDeviceOn) { int currentHour = hour(); // Mendapatkan jam saat ini bool isPirActive = (currentHour >= 18 || currentHour < 6); // PIR aktif antara 18:00 - 06:00 int pirValue = LOW; // Default PIR tidak mendeteksi gerakan if (isPirActive) { pirValue = digitalRead(PIR_SENSOR_PIN); // Membaca PIR hanya jika aktif Blynk.virtualWrite(V5, pirValue); // Kirim data PIR ke Blynk } else { Blynk.virtualWrite(V5, 0); // Jika tidak aktif, set PIR ke 0 } // Logika untuk mengaktifkan atau menonaktifkan alarm berdasarkan PIR if (pirValue == HIGH) { Blynk.virtualWrite(V1, 1); //V1 danger = 1 Blynk.virtualWrite(V2, 0); //V2 SAfE = 0 Blynk.logEvent("Bahaya"); activateAlarm(); // Aktifkan alarm jika ada gerakan delay(1000); // Delay 1 detik } else if (pirValue == LOW && isAlarmActive) { Blynk.virtualWrite(V1, 0); //V1 danger = 1 Blynk.virtualWrite(V2, 1); //V2 SAfE = 0 delay(1000); // Delay 1 detik deactivateAlarm(); // Nonaktifkan alarm jika tidak ada gerakan } // Logika lainnya (flame sensor, smoke sensor, dll.) int flameValue = digitalRead(FLAME_SENSOR_PIN); int smokeValue = analogRead(SMOKE_SENSOR_PIN); float temperature = dht.readTemperature(); Blynk.virtualWrite(V3, smokeValue); Blynk.virtualWrite(V4, temperature); if (flameValue == FLAME_THRESHOLD || smokeValue >= SMOKE_THRESHOLD || temperature >= 35.0) { Serial.println("Danger Detected"); Blynk.logEvent("Bahaya"); Blynk.virtualWrite(V1, 1); //V1 danger = 1 Blynk.virtualWrite(V2, 0); //V2 SAfE = 0 activateAlarm(); delay(1000); } else { Blynk.virtualWrite(V1, 0); //V1 danger = 1 Blynk.virtualWrite(V2, 1); //V2 SAfE = 0 deactivateAlarm(); delay(1000); } } } void activateAlarm() { if (!isAlarmActive) { // Aktifkan alarm hanya jika belum aktif digitalWrite(BUZZER_PIN, HIGH); digitalWrite(LED_PIN, HIGH); isAlarmActive = true; Serial.println("Alarm Activated"); } } void deactivateAlarm() { if (isAlarmActive) { // Matikan alarm hanya jika sedang aktif digitalWrite(BUZZER_PIN, LOW); digitalWrite(LED_PIN, LOW); isAlarmActive = false; Serial.println("Alarm Deactivated"); } } void activateDevice() { isDeviceOn = true; } void deactivateDevice() { isDeviceOn = false; deactivateAlarm(); } BLYNK_WRITE(V0) { int pinValue = param.asInt(); if (pinValue == 1 && !isDeviceOn) { activateDevice(); } else if (pinValue == 0 && isDeviceOn) { deactivateDevice(); } }
Salin
Link IoT WEB
https://drive.google.com/file/d/15D2z7h7_0EQKkq4NwwNbbhxXtKKyo3O-/view?usp=sharing
Salin
Kosong 1
Salin
Kosong 2
Salin