Jumat, 21 Februari 2025

pemanas

Baik! Saya akan membuat kode Arduino untuk mengontrol pemanas atau pemantik korek api listrik (Igniter) menggunakan relay atau MOSFET.

https://youtu.be/_QLrNtDA2IY?si=wKlw7-l4has7iRXb


Komponen yang Dibutuhkan:

  1. Arduino Uno
  2. Relay 5V atau MOSFET IRF540N
  3. Elemen pemanas / pemantik listrik (nichrome wire, igniter)
  4. Sensor suhu DS18B20 (opsional jika ingin kontrol otomatis)
  5. Resistor 4.7kΩ (jika menggunakan DS18B20)
  6. Power Supply (sesuai kebutuhan pemanas/igniter)
  7. Kabel jumper dan breadboard

Skema Rangkaian:

Menggunakan Relay (lebih mudah untuk pemula)

  • Relay Module:
    • VCC → 5V Arduino
    • GND → GND Arduino
    • IN → Pin D7 Arduino
    • NO & COMMenghubungkan sumber daya ke pemanas/igniter

Jika menggunakan MOSFET (lebih efisien):

  • Drain → Terhubung ke negatif pemanas
  • SourceGND Arduino
  • GatePin D7 Arduino (dengan resistor 220Ω)
  • Positif pemanas → Langsung ke sumber daya eksternal

Kode Program Arduino (Pemanas / Igniter dengan Relay)

#define RELAY_PIN 7  // Pin untuk mengontrol relay

void setup() {
    pinMode(RELAY_PIN, OUTPUT);
    digitalWrite(RELAY_PIN, LOW); // Awalnya relay mati
}

void loop() {
    digitalWrite(RELAY_PIN, HIGH); // Nyalakan pemanas/igniter
    delay(3000);                   // Nyalakan selama 3 detik
    digitalWrite(RELAY_PIN, LOW);  // Matikan pemanas
    delay(5000);                   // Tunggu 5 detik sebelum menyala lagi
}

Kode dengan Sensor Suhu DS18B20 (Otomatis Nyala/Mati)

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2  // Pin sensor DS18B20
#define RELAY_PIN 7      // Pin relay

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

float setpoint = 50.0; // Suhu target dalam derajat Celcius

void setup() {
    Serial.begin(9600);
    sensors.begin();
    pinMode(RELAY_PIN, OUTPUT);
    digitalWrite(RELAY_PIN, LOW); // Awalnya relay mati
}

void loop() {
    sensors.requestTemperatures(); 
    float temperatureC = sensors.getTempCByIndex(0);
    
    Serial.print("Suhu: ");
    Serial.print(temperatureC);
    Serial.println(" °C");

    if (temperatureC < setpoint) {
        digitalWrite(RELAY_PIN, HIGH); // Nyalakan pemanas
        Serial.println("Pemanas ON");
    } else {
        digitalWrite(RELAY_PIN, LOW); // Matikan pemanas
        Serial.println("Pemanas OFF");
    }

    delay(1000);
}

Cara Kerja:

  1. Kode pertama menyalakan pemanas atau igniter selama 3 detik, lalu mati 5 detik secara berulang.
  2. Kode kedua menggunakan sensor DS18B20 untuk menyalakan pemanas jika suhu di bawah 50°C, dan mati jika sudah mencapai suhu tersebut.

Catatan:

  • Gunakan relay jika ingin lebih aman untuk pemanas berdaya tinggi.
  • MOSFET lebih efisien, tetapi pastikan menggunakan MOSFET yang mendukung arus besar.
  • Sumber daya eksternal harus sesuai dengan kebutuhan igniter/pemanas.

Apakah perlu tambahan fitur, seperti pengaturan suhu dengan tombol atau tampilan LCD?

opsi.

Tidak bisa langsung. Arduino tidak mampu memberikan arus yang cukup untuk menyalakan pemanas atau pemantik listrik secara langsung.



---


Kenapa Arduino Tidak Bisa Langsung Menyalakan Pemanas?


1. Arduino hanya bisa mengeluarkan arus sekitar 20-40mA per pin, sedangkan pemanas/igniter biasanya butuh ratusan miliampere hingga beberapa ampere.



2. Tegangan Arduino (5V atau 3.3V) tidak cukup untuk banyak jenis pemanas.





---


Solusi: Gunakan Transistor atau MOSFET (Tanpa Relay!)


Alih-alih relay, gunakan transistor NPN (2N2222, TIP120) atau MOSFET (IRLZ34N, IRF540N, dll.) untuk mengontrol pemanas.



---


Pilihan Transistor/MOSFET Sesuai Beban Pemanas


Jika pemanas di atas 10A, sebaiknya gunakan MOSFET dengan heatsink agar tidak panas berlebih.



---


Skema Rangkaian Arduino ke Pemanas Tanpa Relay


Menggunakan Transistor NPN (2N2222 atau TIP120)


1. Pin D7 Arduino → Resistor 1kΩ → Basis Transistor



2. Emitor Transistor → GND Arduino & Baterai



3. Kolektor Transistor → Salah satu kaki pemanas



4. Kaki pemanas lainnya → Positif baterai (3V, 12V, sesuai kebutuhan)




Tambahkan dioda flyback (1N4007) jika pemanas berupa coil atau induktif untuk mencegah lonjakan arus yang merusak transistor.



---


Kode Arduino (Menyalakan Pemanas dengan Transistor)


#define HEATER_PIN 7 // Pin untuk mengontrol pemanas


void setup() {

    pinMode(HEATER_PIN, OUTPUT);

    digitalWrite(HEATER_PIN, LOW); // Awalnya mati

}


void loop() {

    digitalWrite(HEATER_PIN, HIGH); // Nyalakan pemanas

    delay(3000); // Nyalakan selama 3 detik

    digitalWrite(HEATER_PIN, LOW); // Matikan pemanas

    delay(5000); // Tunggu 5 detik sebelum menyala lagi

}



---


Kesimpulan


✅ Bisa menyalakan pemanas tanpa relay, tetapi harus pakai transistor atau MOSFET.

✅ Gunakan MOSFET untuk daya besar (di atas 2A) agar lebih efisien.

⚠ Jangan langsung dari Arduino ke pemanas, karena tidak cukup kuat.


Apakah pemanas yang digunakan daya rendah (misaln

ya, di bawah 500mA) atau daya tinggi?

finish

Berikut contoh bagaimana mengendalikan vape coil sebagai elemen pemanas dengan menggunakan Arduino dan MOSFET logic-level (misalnya IRLZ44N). Karena vape coil memiliki resistansi yang rendah dan arus yang besar, sangat penting untuk menggunakan komponen yang mampu menanganinya dan memastikan semua sambungan aman.



---


Komponen yang Dibutuhkan:


1. Arduino Uno



2. MOSFET Logic-Level (contoh: IRLZ44N)



3. Resistor 220Ω (untuk pembatas arus ke gate MOSFET)



4. Vape Coil (pastikan spesifikasi dan nilai resistansi diketahui)



5. Sumber Daya (Baterai 3V, atau sumber lain yang sesuai dengan kebutuhan arus dan tegangan vape coil)



6. Kabel jumper dan breadboard




> Catatan Penting:

Menggunakan vape coil sebagai pemanas memerlukan perhatian khusus terkait arus dan keselamatan. Pastikan semua komponen sudah sesuai dengan spesifikasi dan perhatikan perlindungan seperti sekering bila diperlukan.





---


Skema Rangkaian:


1. Sumber Daya Positif (misalnya baterai 3V) → Terhubung ke salah satu ujung vape coil.



2. Ujung vape coil lainnya → Terhubung ke Drain MOSFET.



3. Source MOSFET → Terhubung ke GND (ground) dari sumber daya.



4. Gate MOSFET → Terhubung ke Pin D7 Arduino melalui resistor 220Ω.



5. Pastikan ground Arduino terhubung ke ground sumber daya agar referensi tegangan sama.




Skema secara garis besar:


+3V (Baterai)

              │

            Vape Coil

              │

           Drain MOSFET

           ┌────────┐

Gate <—220Ω│ │

           │ MOSFET│

Source ─────┴────────┘───── GND



---


Kode Program Arduino:


Kode berikut menyalakan vape coil (pemanas) selama 3 detik, kemudian mematikannya selama 5 detik secara berulang. Anda bisa sesuaikan delay dan logika kontrol sesuai kebutuhan aplikasi.


#define HEATER_PIN 7 // Pin untuk mengendalikan MOSFET


void setup() {

    pinMode(HEATER_PIN, OUTPUT);

    digitalWrite(HEATER_PIN, LOW); // Pastikan awalnya dalam keadaan mati

}


void loop() {

    digitalWrite(HEATER_PIN, HIGH); // Aktifkan MOSFET → menyambungkan vape coil ke ground (pemanas menyala)

    delay(3000); // Pemanas menyala selama 3 detik

    digitalWrite(HEATER_PIN, LOW); // Matikan MOSFET → pemanas mati

    delay(5000); // Tunggu 5 detik sebelum siklus berikutnya

}



---


Penjelasan:


MOSFET sebagai Saklar:

MOSFET logic-level dipilih karena dapat diaktifkan langsung dari tegangan output Arduino (5V atau 3.3V, tergantung board) dan mampu mengalirkan arus tinggi yang dibutuhkan vape coil.


Resistor 220Ω:

Berfungsi membatasi arus ke gate MOSFET dan melindungi pin Arduino.


Koneksi Ground:

Pastikan ground Arduino terhubung dengan ground dari sumber daya (baterai) agar sinyal kontrol berfungsi dengan baik.




---


Peringatan Keselamatan:


Arus Tinggi:

Vape coil biasanya memiliki resistansi rendah, sehingga arus yang mengalir bisa sangat besar. Pastikan MOSFET dan kabel yang digunakan memiliki rating yang memadai.


Pemanasan:

Pastikan penggunaan pemanas ini sesuai dengan aplikasi dan dioperasikan di lingkungan yang aman, mengingat risiko kebakaran atau komponen yang terlalu panas.


Uji Coba Terlebih Dahulu:

Lakukan uji coba dengan beban yang lebih kecil atau menggunakan resistor dummy untuk memastikan rangkaian bekerja dengan benar sebelum menghubungkannya ke vape coil.



Dengan rangkaian dan kode di atas, Anda dapat mengendalikan vape coil sebagai elemen pemanas secara berkala menggunakan Arduino tanpa menggunakan relay. Pastikan untuk menyesuaikan komponen dan parameter sesuai denga

n spesifikasi nyata dari vape coil dan sumber daya yang digunakan.



Minggu, 09 Februari 2025

chatboot untuk pkl

Membuat sistem absen online untuk siswa dengan menggunakan RFID (Radio Frequency Identification) adalah proyek yang sangat baik untuk mengintegrasikan teknologi dengan pembelajaran. RFID memungkinkan sistem untuk melakukan pencatatan absensi secara otomatis dan akurat hanya dengan pemindaian kartu RFID yang dimiliki oleh masing-masing siswa.

Langkah-langkah dalam Membuat Proyek Absen Online dengan RFID

1. Alat dan Bahan yang Diperlukan:

  • Perangkat keras (Hardware):

    • Modul RFID (RC522): Untuk membaca ID kartu RFID siswa.
    • Kartu RFID: Kartu yang diberikan kepada siswa untuk dipindai.
    • Mikrokontroler (Arduino, Raspberry Pi): Untuk mengontrol sistem dan menghubungkan modul RFID dengan sistem.
    • Komputer/Server: Untuk menyimpan data absen online dan mengelola data siswa.
    • Layar (opsional): Untuk menampilkan status absensi.
    • Internet (opsional): Untuk mengirimkan data absensi secara online (menggunakan API atau database cloud).
  • Perangkat lunak (Software):

    • Arduino IDE: Untuk memprogram mikrokontroler (misalnya Arduino Uno atau Raspberry Pi).
    • PHP, Python, atau Node.js: Untuk backend yang menghubungkan sistem absen dengan server/database online.
    • Database: MySQL atau SQLite untuk menyimpan data absensi.
    • Frontend (Web App): HTML, CSS, dan JavaScript untuk membuat aplikasi web di mana guru atau admin dapat memeriksa absensi siswa.

2. Rancangan Sistem:

  1. Siswa memindai kartu RFID:

    • Setiap siswa akan diberikan kartu RFID yang memiliki ID unik.
    • Ketika siswa datang ke kelas, mereka akan memindai kartu RFID mereka menggunakan pembaca RFID yang terhubung dengan mikrokontroler (Arduino atau Raspberry Pi).
  2. Mikrokontroler membaca ID kartu RFID:

    • Pembaca RFID akan membaca ID unik dari kartu RFID siswa.
    • Mikrokontroler (Arduino/Raspberry Pi) akan menerima data dari pembaca RFID.
  3. Koneksi ke Server atau Database Online:

    • Setelah ID siswa terbaca, mikrokontroler akan mengirimkan data ID tersebut ke server/database (bisa menggunakan koneksi Wi-Fi atau Ethernet).
    • Server akan mencatat waktu absensi dan ID siswa, lalu menyimpan data ke dalam database online (misalnya MySQL).
  4. Frontend untuk Melihat Data Absensi:

    • Guru atau admin dapat memantau absensi siswa melalui aplikasi web yang menampilkan status absen siswa secara real-time.
    • Aplikasi web ini dapat menampilkan data seperti nama siswa, waktu kedatangan, dan status absensi.

3. Langkah-langkah Pembuatannya:

Langkah 1: Persiapkan Perangkat Keras
  • Arduino Uno + Modul RFID RC522:
    • Sambungkan pembaca RFID ke Arduino menggunakan kabel jumper.
    • Modul RFID (RC522) biasanya memiliki beberapa pin: VCC, GND, RST, SDA, MISO, MOSI, SCK.
    • Kode untuk pembaca RFID akan dibutuhkan untuk memprogram Arduino, yang akan membaca data dari kartu RFID.
Langkah 2: Program Mikrokontroler (Arduino)
  • Install Arduino IDE dan pastikan library MFRC522 (untuk RFID) terinstall.
  • Berikut adalah contoh kode Arduino untuk membaca ID kartu RFID:
#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9

MFRC522 mfrc522(SS_PIN, RST_PIN);  // Instance of the class

void setup() {
  Serial.begin(9600);  // Initialize serial communication
  SPI.begin();         // Initiate SPI bus
  mfrc522.PCD_Init();  // Initialize MFRC522 RFID reader
  Serial.println("Place your RFID card near the reader");
}

void loop() {
  if (mfrc522.PICC_IsNewCardPresent()) {
    if (mfrc522.PICC_ReadCardSerial()) {
      String rfidID = "";
      for (byte i = 0; i < mfrc522.uid.size; i++) {
        rfidID += String(mfrc522.uid.uidByte[i], HEX);
      }
      Serial.print("RFID ID: ");
      Serial.println(rfidID);
      // Kirim ID ke server atau simpan ke database di sini
    }
  }
}
Langkah 3: Program Backend untuk Menghubungkan ke Database
  • Gunakan Python atau PHP untuk membuat backend yang akan menerima data dari Arduino dan menyimpannya ke database.
  • Berikut adalah contoh sederhana menggunakan PHP dan MySQL untuk menyimpan data absen siswa:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "absensi";

// Membuat koneksi
$conn = new mysqli($servername, $username, $password, $dbname);

// Mengecek koneksi
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

if(isset($_POST['rfid'])) {
    $rfid = $_POST['rfid'];
    $timestamp = date("Y-m-d H:i:s");

    // Query untuk menyimpan data absensi
    $sql = "INSERT INTO absensi (rfid, waktu) VALUES ('$rfid', '$timestamp')";

    if ($conn->query($sql) === TRUE) {
        echo "Data absen berhasil disimpan.";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}

$conn->close();
?>
  • Anda juga perlu membuat database dengan tabel absensi yang memiliki kolom rfid dan waktu.
Langkah 4: Frontend untuk Menampilkan Data Absensi
  • Buat aplikasi web sederhana untuk menampilkan data absen siswa yang disimpan di database.
  • Gunakan HTML dan JavaScript untuk menampilkan data absensi dalam bentuk tabel.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Data Absensi Siswa</title>
</head>
<body>
    <h1>Absensi Siswa</h1>
    <table border="1">
        <tr>
            <th>ID Siswa (RFID)</th>
            <th>Waktu Absensi</th>
        </tr>
        <?php
        $conn = new mysqli("localhost", "root", "", "absensi");
        $result = $conn->query("SELECT * FROM absensi");
        while($row = $result->fetch_assoc()) {
            echo "<tr><td>" . $row['rfid'] . "</td><td>" . $row['waktu'] . "</td></tr>";
        }
        ?>
    </table>
</body>
</html>

4. Estimasi Biaya untuk Proyek Ini


5. Potensi Pengembangan Lanjutan:

  • Integrasi dengan Aplikasi Mobile: Anda bisa mengembangkan aplikasi mobile untuk melihat absensi secara langsung.
  • Penggunaan API untuk Notifikasi: Sistem dapat mengirimkan notifikasi ke guru atau orang tua mengenai kehadiran siswa.
  • Fitur Laporan Statistik: Menampilkan statistik absen seperti persentase kehadiran siswa per kelas atau per bulan.

Dengan RFID dan sistem absen online, Anda dapat membuat proses absensi menjadi lebih efisien, otomatis, dan terintegrasi dengan teknologi yang mudah digunakan oleh siswa, guru, dan administrator.

chat boot untuk alumni

Membuat chatbot untuk alumni dapat menjadi solusi yang efektif untuk mengelola hubungan antara sekolah atau universitas dengan alumni mereka. Chatbot ini dapat membantu alumni untuk mendapatkan informasi tentang kegiatan sekolah/universitas, acara reuni, beasiswa, peluang kerja, atau bahkan untuk memberikan umpan balik tentang pengalaman mereka.

Berikut adalah langkah-langkah untuk membuat chatbot untuk alumni.

1. Fitur Chatbot untuk Alumni

Fitur utama dari chatbot alumni antara lain:

Informasi Acara/Reuni: Memberikan informasi tentang acara reuni alumni, seminar, atau kegiatan yang diselenggarakan oleh sekolah/universitas.

Peluang Kerja: Menyediakan informasi tentang lowongan pekerjaan atau kesempatan magang yang relevan bagi alumni.

Donasi dan Beasiswa: Memberikan informasi tentang kesempatan untuk mendonasikan dana atau aplikasi beasiswa yang tersedia.

Pendaftaran untuk Acara: Memungkinkan alumni untuk mendaftar untuk acara yang akan datang.

Update Kontak: Memungkinkan alumni untuk memperbarui informasi kontak mereka di database alumni.

Umpan Balik dan Testimoni: Menerima umpan balik atau testimoni dari alumni mengenai pengalaman mereka.


2. Teknologi yang Diperlukan

Bahasa Pemrograman: Python atau Node.js

Framework Chatbot: ChatterBot (Python), Botpress (Node.js), Dialogflow (Google)

Database: MySQL, SQLite, atau Firebase untuk menyimpan data alumni dan acara

Platform Chat: Telegram, WhatsApp, atau Web Chat

Pengingat dan Notifikasi: Integrasi dengan Google Calendar untuk pengingat acara dan penggunaan Twilio API untuk SMS atau notifikasi WhatsApp.


3. Rancangan Sistem Chatbot untuk Alumni

1. Pengguna (Alumni) Memulai Percakapan:

Alumni mengirimkan pesan pertama kali, misalnya "Reuni Alumni", "Lowongan Kerja", atau "Donasi Beasiswa".



2. Chatbot Menanggapi:

Chatbot memberikan pilihan menu atau langsung merespon pertanyaan berdasarkan data yang ada, misalnya memberikan daftar acara reuni yang akan datang atau menawarkan lowongan pekerjaan.



3. Integrasi dengan Database:

Chatbot akan mengakses database untuk memberikan informasi terkini mengenai acara atau peluang kerja.



4. Pendaftaran dan Pembaruan Informasi:

Chatbot dapat membantu alumni untuk mendaftar acara, memperbarui informasi kontak mereka, atau mengonfirmasi keikutsertaan dalam kegiatan.




4. Implementasi Chatbot dengan Python dan Flask

Berikut adalah contoh implementasi chatbot untuk alumni menggunakan Python, Flask, dan ChatterBot untuk menangani percakapan.

Langkah 1: Instalasi Library yang Dibutuhkan

pip install chatterbot
pip install chatterbot_corpus
pip install flask
pip install mysql-connector

Langkah 2: Menyiapkan Database

Tabel alumni (untuk menyimpan data alumni): | ID | Nama Alumni | Tahun Lulus | Email | Nomor Telepon | Status Alumni | |-----|--------------|-------------|--------------------|---------------|---------------| | 1 | Ahmad | 2020 | ahmad@email.com | 08123456789 | Aktif | | 2 | Siti | 2019 | siti@email.com | 08234567890 | Tidak Aktif |

Tabel acara_reuni (untuk menyimpan informasi acara reuni): | ID | Nama Acara | Tanggal | Deskripsi Acara | |-----|-----------------|---------------|--------------------------------| | 1 | Reuni Angkatan 2020 | 2025-04-10 | Reuni tahunan alumni 2020 | | 2 | Seminar Karir | 2025-03-25 | Seminar tentang peluang karir |

Langkah 3: Membuat Backend Chatbot dengan Flask

from flask import Flask, request, jsonify
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
import mysql.connector

# Inisialisasi chatbot
chatbot = ChatBot('AlumniBot')
trainer = ChatterBotCorpusTrainer(chatbot)
trainer.train('chatterbot.corpus.indonesia')

# Setup Flask
app = Flask(__name__)

# Koneksi ke database MySQL
def get_alumni_info(id_alumni):
    conn = mysql.connector.connect(user='root', password='password', host='localhost', database='sekolah')
    cursor = conn.cursor()
    cursor.execute(f"SELECT * FROM alumni WHERE ID = {id_alumni}")
    alumni = cursor.fetchone()
    conn.close()
    return alumni

def get_acara_reuni():
    conn = mysql.connector.connect(user='root', password='password', host='localhost', database='sekolah')
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM acara_reuni ORDER BY Tanggal DESC LIMIT 5")
    acara_reuni = cursor.fetchall()
    conn.close()
    return acara_reuni

# API untuk chatbot
@app.route('/chat', methods=['POST'])
def chat():
    user_input = request.json.get('message')
    user_id = request.json.get('user_id')

    # Logika untuk menampilkan acara reuni
    if "reuni" in user_input.lower():
        acara_reuni = get_acara_reuni()
        response = "Acara Reuni Terbaru:\n"
        for acara in acara_reuni:
            response += f"{acara[1]}: {acara[2]} (Deskripsi: {acara[3]})\n"
        return jsonify({"response": response})

    # Logika untuk melihat informasi alumni
    elif "informasi alumni" in user_input.lower():
        alumni = get_alumni_info(user_id)
        if alumni:
            return jsonify({"response": f"Nama: {alumni[1]}\nTahun Lulus: {alumni[2]}\nEmail: {alumni[3]}\nStatus: {alumni[5]}"})
        else:
            return jsonify({"response": "Data alumni tidak ditemukan."})

    # Default response dari chatbot
    response = chatbot.get_response(user_input)
    return jsonify({"response": str(response)})

if __name__ == "__main__":
    app.run(debug=True)

Langkah 4: Membuat Frontend untuk Web Chat

Berikut adalah contoh frontend sederhana untuk berinteraksi dengan chatbot menggunakan HTML dan JavaScript:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Chatbot Alumni</title>
    <style>
        #chat-container {
            width: 300px;
            height: 400px;
            border: 1px solid #ccc;
            padding: 10px;
            overflow-y: scroll;
            font-family: Arial, sans-serif;
        }
        #user-input {
            width: 100%;
            padding: 10px;
        }
    </style>
</head>
<body>

<div id="chat-container"></div>
<input type="text" id="user-input" placeholder="Tanya saya sesuatu...">

<script>
    const chatContainer = document.getElementById('chat-container');
    const userInput = document.getElementById('user-input');

    userInput.addEventListener('keypress', function (e) {
        if (e.key === 'Enter') {
            const userMessage = userInput.value;
            chatContainer.innerHTML += `<p><strong>Anda:</strong> ${userMessage}</p>`;
            userInput.value = '';
            
            fetch('http://127.0.0.1:5000/chat', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify({ message: userMessage, user_id: 1 })
            })
            .then(response => response.json())
            .then(data => {
                chatContainer.innerHTML += `<p><strong>Bot:</strong> ${data.response}</p>`;
                chatContainer.scrollTop = chatContainer.scrollHeight; // Auto scroll to bottom
            });
        }
    });
</script>

</body>
</html>

5. Potensi Pengembangan Lanjutan:

Pendaftaran untuk Acara Reuni: Chatbot dapat mengarahkan alumni untuk mendaftar acara reuni langsung melalui percakapan.

Notifikasi Acara: Chatbot dapat mengirimkan pengingat kepada alumni tentang acara yang akan datang melalui SMS atau WhatsApp menggunakan Twilio API.

Update Informasi Kontak: Alumni dapat mengupdate nomor telepon atau email mereka dengan chatbot.

Lowongan Kerja: Menyediakan informasi tentang lowongan pekerjaan yang relevan bagi alumni berdasarkan jurusan atau minat mereka.

Penerimaan Donasi: Alumni dapat diberikan informasi tentang cara berdonasi untuk kegiatan atau beasiswa di sekolah/universitas.


6. Estimasi Biaya:


---

Dengan chatbot untuk alumni ini, sekolah/universitas dapat memelihara hubungan yang lebih baik dengan alumni dan mempermudah komunikasi serta koordinasi dalam berbagai kegiatan. Chatbot ini


chat boot untuk guru

Membuat chatbot untuk keperluan guru dapat membantu mereka dalam mengelola jadwal, memberikan informasi kepada siswa, serta menangani berbagai pertanyaan administratif secara otomatis. Berikut adalah langkah-langkah untuk membuat chatbot untuk guru yang bisa melayani berbagai keperluan, seperti mengelola jadwal mengajar, mengingatkan tentang tugas atau ujian, dan memberikan informasi administratif lainnya.

1. Fitur Chatbot untuk Guru

Fitur utama yang dapat dimiliki oleh chatbot untuk guru adalah sebagai berikut:

Jadwal Mengajar: Menyediakan informasi mengenai jadwal mengajar guru.

Pengumuman: Memberikan informasi atau pengumuman terkait kegiatan sekolah, ujian, rapat, dll.

Peringatan Tugas/Ujian: Mengingatkan guru tentang tugas atau ujian yang akan datang.

Laporan Absensi: Mengakses data absensi siswa dalam kelas yang diajarnya.

Pertanyaan Umum: Menjawab pertanyaan umum terkait materi ajar atau kegiatan sekolah.


2. Teknologi yang Diperlukan:

Bahasa Pemrograman: Python atau Node.js

Framework untuk Chatbot: ChatterBot (Python), Botpress (Node.js), Dialogflow (Google)

Database: MySQL atau SQLite untuk menyimpan jadwal, pengumuman, dan data lainnya

Platform Chat: Telegram, WhatsApp, atau Web Chat

API untuk Pengingat Jadwal dan Tugas: Bisa menggunakan API seperti Google Calendar API atau sistem reminder.


3. Rancangan Sistem Chatbot Guru

1. Pengguna (Guru) Memulai Percakapan:

Guru mengirimkan pesan untuk memulai percakapan, misalnya "Jadwal mengajar hari ini", "Tugas yang harus diajarkan minggu ini", atau "Absensi siswa".



2. Chatbot Menanggapi:

Chatbot memberikan pilihan menu atau langsung merespon pertanyaan berdasarkan data yang ada.



3. Integrasi dengan Database:

Chatbot akan terhubung ke database untuk memberikan data jadwal, absensi, atau pengumuman yang relevan dengan percakapan.



4. Pengingat Tugas/Ujian:

Chatbot dapat mengingatkan guru tentang tugas yang perlu disiapkan atau ujian yang akan datang.




4. Implementasi Chatbot dengan Python dan Flask

Berikut adalah contoh implementasi chatbot untuk guru dengan menggunakan Python dan Flask, serta ChatterBot untuk menangani percakapan.

Langkah 1: Instalasi Library yang Dibutuhkan

pip install chatterbot
pip install chatterbot_corpus
pip install flask
pip install mysql-connector

Langkah 2: Menyiapkan Database

Tabel guru (untuk menyimpan informasi tentang guru): | ID | Nama Guru | Mata Pelajaran | Jadwal Mengajar | |-----|-----------|----------------|---------------------| | 1 | Budi | Matematika | Senin, 08:00 - 10:00| | 2 | Sari | Bahasa Inggris | Selasa, 09:00 - 11:00|

Tabel pengumuman (untuk menyimpan pengumuman penting): | ID | Judul Pengumuman | Isi Pengumuman | Tanggal | |-----|----------------------|----------------------------------------------|---------------| | 1 | Ujian Matematika | Ujian Matematika akan diadakan pada 15 Mar | 2025-03-01 | | 2 | Rapat Guru | Rapat guru diadakan pada 20 Mar, pukul 14:00 | 2025-03-10 |

Langkah 3: Membuat Backend Chatbot dengan Flask

from flask import Flask, request, jsonify
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
import mysql.connector

# Inisialisasi chatbot
chatbot = ChatBot('GuruBot')
trainer = ChatterBotCorpusTrainer(chatbot)
trainer.train('chatterbot.corpus.indonesia')

# Setup Flask
app = Flask(__name__)

# Koneksi ke database MySQL
def get_guru_jadwal(id_guru):
    conn = mysql.connector.connect(user='root', password='password', host='localhost', database='sekolah')
    cursor = conn.cursor()
    cursor.execute(f"SELECT * FROM guru WHERE ID = {id_guru}")
    guru = cursor.fetchone()
    conn.close()
    return guru

def get_pengumuman():
    conn = mysql.connector.connect(user='root', password='password', host='localhost', database='sekolah')
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM pengumuman ORDER BY Tanggal DESC LIMIT 5")
    pengumuman = cursor.fetchall()
    conn.close()
    return pengumuman

# API untuk chatbot
@app.route('/chat', methods=['POST'])
def chat():
    user_input = request.json.get('message')
    user_id = request.json.get('user_id')

    # Logika untuk cek jadwal mengajar
    if "jadwal mengajar" in user_input.lower():
        guru = get_guru_jadwal(user_id)
        if guru:
            jadwal = guru[3] # Jadwal Mengajar
            return jsonify({"response": f"Jadwal mengajar Anda: {jadwal}"})
        else:
            return jsonify({"response": "Data guru tidak ditemukan."})

    # Logika untuk menampilkan pengumuman terbaru
    elif "pengumuman" in user_input.lower():
        pengumuman = get_pengumuman()
        response = "Pengumuman Terbaru:\n"
        for p in pengumuman:
            response += f"{p[1]}: {p[2]} (Tanggal: {p[3]})\n"
        return jsonify({"response": response})

    # Default response dari chatbot
    response = chatbot.get_response(user_input)
    return jsonify({"response": str(response)})

if __name__ == "__main__":
    app.run(debug=True)

Langkah 4: Membuat Frontend untuk Web Chat

Berikut adalah contoh frontend sederhana untuk berinteraksi dengan chatbot menggunakan HTML dan JavaScript:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Chatbot Guru</title>
    <style>
        #chat-container {
            width: 300px;
            height: 400px;
            border: 1px solid #ccc;
            padding: 10px;
            overflow-y: scroll;
            font-family: Arial, sans-serif;
        }
        #user-input {
            width: 100%;
            padding: 10px;
        }
    </style>
</head>
<body>

<div id="chat-container"></div>
<input type="text" id="user-input" placeholder="Tanya saya sesuatu...">

<script>
    const chatContainer = document.getElementById('chat-container');
    const userInput = document.getElementById('user-input');

    userInput.addEventListener('keypress', function (e) {
        if (e.key === 'Enter') {
            const userMessage = userInput.value;
            chatContainer.innerHTML += `<p><strong>Guru:</strong> ${userMessage}</p>`;
            userInput.value = '';
            
            fetch('http://127.0.0.1:5000/chat', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify({ message: userMessage, user_id: 1 })
            })
            .then(response => response.json())
            .then(data => {
                chatContainer.innerHTML += `<p><strong>Bot:</strong> ${data.response}</p>`;
                chatContainer.scrollTop = chatContainer.scrollHeight; // Auto scroll to bottom
            });
        }
    });
</script>

</body>
</html>

5. Potensi Pengembangan Lanjutan:

Pengingat Jadwal Mengajar: Chatbot dapat mengirimkan pengingat otomatis untuk guru sebelum jadwal mengajar dimulai.

Peringatan Tugas atau Ujian: Chatbot dapat memberikan notifikasi kepada guru mengenai tugas atau ujian yang perlu disiapkan.

Absensi Siswa: Chatbot dapat memberikan laporan absensi siswa dalam kelas yang diajarkan oleh guru.

Laporan Kelas: Chatbot dapat menyediakan laporan tentang perkembangan siswa di kelas, misalnya nilai, kehadiran, dsb.

Integrasi dengan Google Calendar API: Untuk mengelola jadwal mengajar atau kegiatan sekolah lainnya.


6. Estimasi Biaya:


---

Dengan menggunakan chatbot untuk guru, banyak waktu yang dapat dihemat dan guru bisa lebih fokus dalam mengajar dan mengelola kelas. Chatbot ini dapat diakses secara online, memberikan kemudahan bagi guru dalam memantau jadwal, pengumuman, dan berbagai kebutuhan administrasi lainnya.


chat boot otomatis

Membuat sistem absen online untuk siswa dengan menggunakan RFID (Radio Frequency Identification) adalah proyek yang sangat baik untuk mengintegrasikan teknologi dengan pembelajaran. RFID memungkinkan sistem untuk melakukan pencatatan absensi secara otomatis dan akurat hanya dengan pemindaian kartu RFID yang dimiliki oleh masing-masing siswa.

Langkah-langkah dalam Membuat Proyek Absen Online dengan RFID

1. Alat dan Bahan yang Diperlukan:

  • Perangkat keras (Hardware):

    • Modul RFID (RC522): Untuk membaca ID kartu RFID siswa.
    • Kartu RFID: Kartu yang diberikan kepada siswa untuk dipindai.
    • Mikrokontroler (Arduino, Raspberry Pi): Untuk mengontrol sistem dan menghubungkan modul RFID dengan sistem.
    • Komputer/Server: Untuk menyimpan data absen online dan mengelola data siswa.
    • Layar (opsional): Untuk menampilkan status absensi.
    • Internet (opsional): Untuk mengirimkan data absensi secara online (menggunakan API atau database cloud).
  • Perangkat lunak (Software):

    • Arduino IDE: Untuk memprogram mikrokontroler (misalnya Arduino Uno atau Raspberry Pi).
    • PHP, Python, atau Node.js: Untuk backend yang menghubungkan sistem absen dengan server/database online.
    • Database: MySQL atau SQLite untuk menyimpan data absensi.
    • Frontend (Web App): HTML, CSS, dan JavaScript untuk membuat aplikasi web di mana guru atau admin dapat memeriksa absensi siswa.

2. Rancangan Sistem:

  1. Siswa memindai kartu RFID:

    • Setiap siswa akan diberikan kartu RFID yang memiliki ID unik.
    • Ketika siswa datang ke kelas, mereka akan memindai kartu RFID mereka menggunakan pembaca RFID yang terhubung dengan mikrokontroler (Arduino atau Raspberry Pi).
  2. Mikrokontroler membaca ID kartu RFID:

    • Pembaca RFID akan membaca ID unik dari kartu RFID siswa.
    • Mikrokontroler (Arduino/Raspberry Pi) akan menerima data dari pembaca RFID.
  3. Koneksi ke Server atau Database Online:

    • Setelah ID siswa terbaca, mikrokontroler akan mengirimkan data ID tersebut ke server/database (bisa menggunakan koneksi Wi-Fi atau Ethernet).
    • Server akan mencatat waktu absensi dan ID siswa, lalu menyimpan data ke dalam database online (misalnya MySQL).
  4. Frontend untuk Melihat Data Absensi:

    • Guru atau admin dapat memantau absensi siswa melalui aplikasi web yang menampilkan status absen siswa secara real-time.
    • Aplikasi web ini dapat menampilkan data seperti nama siswa, waktu kedatangan, dan status absensi.

3. Langkah-langkah Pembuatannya:

Langkah 1: Persiapkan Perangkat Keras
  • Arduino Uno + Modul RFID RC522:
    • Sambungkan pembaca RFID ke Arduino menggunakan kabel jumper.
    • Modul RFID (RC522) biasanya memiliki beberapa pin: VCC, GND, RST, SDA, MISO, MOSI, SCK.
    • Kode untuk pembaca RFID akan dibutuhkan untuk memprogram Arduino, yang akan membaca data dari kartu RFID.
Langkah 2: Program Mikrokontroler (Arduino)
  • Install Arduino IDE dan pastikan library MFRC522 (untuk RFID) terinstall.
  • Berikut adalah contoh kode Arduino untuk membaca ID kartu RFID:
#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9

MFRC522 mfrc522(SS_PIN, RST_PIN);  // Instance of the class

void setup() {
  Serial.begin(9600);  // Initialize serial communication
  SPI.begin();         // Initiate SPI bus
  mfrc522.PCD_Init();  // Initialize MFRC522 RFID reader
  Serial.println("Place your RFID card near the reader");
}

void loop() {
  if (mfrc522.PICC_IsNewCardPresent()) {
    if (mfrc522.PICC_ReadCardSerial()) {
      String rfidID = "";
      for (byte i = 0; i < mfrc522.uid.size; i++) {
        rfidID += String(mfrc522.uid.uidByte[i], HEX);
      }
      Serial.print("RFID ID: ");
      Serial.println(rfidID);
      // Kirim ID ke server atau simpan ke database di sini
    }
  }
}
Langkah 3: Program Backend untuk Menghubungkan ke Database
  • Gunakan Python atau PHP untuk membuat backend yang akan menerima data dari Arduino dan menyimpannya ke database.
  • Berikut adalah contoh sederhana menggunakan PHP dan MySQL untuk menyimpan data absen siswa:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "absensi";

// Membuat koneksi
$conn = new mysqli($servername, $username, $password, $dbname);

// Mengecek koneksi
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

if(isset($_POST['rfid'])) {
    $rfid = $_POST['rfid'];
    $timestamp = date("Y-m-d H:i:s");

    // Query untuk menyimpan data absensi
    $sql = "INSERT INTO absensi (rfid, waktu) VALUES ('$rfid', '$timestamp')";

    if ($conn->query($sql) === TRUE) {
        echo "Data absen berhasil disimpan.";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}

$conn->close();
?>
  • Anda juga perlu membuat database dengan tabel absensi yang memiliki kolom rfid dan waktu.
Langkah 4: Frontend untuk Menampilkan Data Absensi
  • Buat aplikasi web sederhana untuk menampilkan data absen siswa yang disimpan di database.
  • Gunakan HTML dan JavaScript untuk menampilkan data absensi dalam bentuk tabel.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Data Absensi Siswa</title>
</head>
<body>
    <h1>Absensi Siswa</h1>
    <table border="1">
        <tr>
            <th>ID Siswa (RFID)</th>
            <th>Waktu Absensi</th>
        </tr>
        <?php
        $conn = new mysqli("localhost", "root", "", "absensi");
        $result = $conn->query("SELECT * FROM absensi");
        while($row = $result->fetch_assoc()) {
            echo "<tr><td>" . $row['rfid'] . "</td><td>" . $row['waktu'] . "</td></tr>";
        }
        ?>
    </table>
</body>
</html>

4. Estimasi Biaya untuk Proyek Ini


5. Potensi Pengembangan Lanjutan:

  • Integrasi dengan Aplikasi Mobile: Anda bisa mengembangkan aplikasi mobile untuk melihat absensi secara langsung.
  • Penggunaan API untuk Notifikasi: Sistem dapat mengirimkan notifikasi ke guru atau orang tua mengenai kehadiran siswa.
  • Fitur Laporan Statistik: Menampilkan statistik absen seperti persentase kehadiran siswa per kelas atau per bulan.

Dengan RFID dan sistem absen online, Anda dapat membuat proses absensi menjadi lebih efisien, otomatis, dan terintegrasi dengan teknologi yang mudah digunakan oleh siswa, guru, dan administrator.

pembayaran chat boot

Membuat sistem absen online untuk siswa dengan menggunakan RFID (Radio Frequency Identification) adalah proyek yang sangat baik untuk mengintegrasikan teknologi dengan pembelajaran. RFID memungkinkan sistem untuk melakukan pencatatan absensi secara otomatis dan akurat hanya dengan pemindaian kartu RFID yang dimiliki oleh masing-masing siswa.

Langkah-langkah dalam Membuat Proyek Absen Online dengan RFID

1. Alat dan Bahan yang Diperlukan:

  • Perangkat keras (Hardware):

    • Modul RFID (RC522): Untuk membaca ID kartu RFID siswa.
    • Kartu RFID: Kartu yang diberikan kepada siswa untuk dipindai.
    • Mikrokontroler (Arduino, Raspberry Pi): Untuk mengontrol sistem dan menghubungkan modul RFID dengan sistem.
    • Komputer/Server: Untuk menyimpan data absen online dan mengelola data siswa.
    • Layar (opsional): Untuk menampilkan status absensi.
    • Internet (opsional): Untuk mengirimkan data absensi secara online (menggunakan API atau database cloud).
  • Perangkat lunak (Software):

    • Arduino IDE: Untuk memprogram mikrokontroler (misalnya Arduino Uno atau Raspberry Pi).
    • PHP, Python, atau Node.js: Untuk backend yang menghubungkan sistem absen dengan server/database online.
    • Database: MySQL atau SQLite untuk menyimpan data absensi.
    • Frontend (Web App): HTML, CSS, dan JavaScript untuk membuat aplikasi web di mana guru atau admin dapat memeriksa absensi siswa.

2. Rancangan Sistem:

  1. Siswa memindai kartu RFID:

    • Setiap siswa akan diberikan kartu RFID yang memiliki ID unik.
    • Ketika siswa datang ke kelas, mereka akan memindai kartu RFID mereka menggunakan pembaca RFID yang terhubung dengan mikrokontroler (Arduino atau Raspberry Pi).
  2. Mikrokontroler membaca ID kartu RFID:

    • Pembaca RFID akan membaca ID unik dari kartu RFID siswa.
    • Mikrokontroler (Arduino/Raspberry Pi) akan menerima data dari pembaca RFID.
  3. Koneksi ke Server atau Database Online:

    • Setelah ID siswa terbaca, mikrokontroler akan mengirimkan data ID tersebut ke server/database (bisa menggunakan koneksi Wi-Fi atau Ethernet).
    • Server akan mencatat waktu absensi dan ID siswa, lalu menyimpan data ke dalam database online (misalnya MySQL).
  4. Frontend untuk Melihat Data Absensi:

    • Guru atau admin dapat memantau absensi siswa melalui aplikasi web yang menampilkan status absen siswa secara real-time.
    • Aplikasi web ini dapat menampilkan data seperti nama siswa, waktu kedatangan, dan status absensi.

3. Langkah-langkah Pembuatannya:

Langkah 1: Persiapkan Perangkat Keras
  • Arduino Uno + Modul RFID RC522:
    • Sambungkan pembaca RFID ke Arduino menggunakan kabel jumper.
    • Modul RFID (RC522) biasanya memiliki beberapa pin: VCC, GND, RST, SDA, MISO, MOSI, SCK.
    • Kode untuk pembaca RFID akan dibutuhkan untuk memprogram Arduino, yang akan membaca data dari kartu RFID.
Langkah 2: Program Mikrokontroler (Arduino)
  • Install Arduino IDE dan pastikan library MFRC522 (untuk RFID) terinstall.
  • Berikut adalah contoh kode Arduino untuk membaca ID kartu RFID:
#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9

MFRC522 mfrc522(SS_PIN, RST_PIN);  // Instance of the class

void setup() {
  Serial.begin(9600);  // Initialize serial communication
  SPI.begin();         // Initiate SPI bus
  mfrc522.PCD_Init();  // Initialize MFRC522 RFID reader
  Serial.println("Place your RFID card near the reader");
}

void loop() {
  if (mfrc522.PICC_IsNewCardPresent()) {
    if (mfrc522.PICC_ReadCardSerial()) {
      String rfidID = "";
      for (byte i = 0; i < mfrc522.uid.size; i++) {
        rfidID += String(mfrc522.uid.uidByte[i], HEX);
      }
      Serial.print("RFID ID: ");
      Serial.println(rfidID);
      // Kirim ID ke server atau simpan ke database di sini
    }
  }
}
Langkah 3: Program Backend untuk Menghubungkan ke Database
  • Gunakan Python atau PHP untuk membuat backend yang akan menerima data dari Arduino dan menyimpannya ke database.
  • Berikut adalah contoh sederhana menggunakan PHP dan MySQL untuk menyimpan data absen siswa:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "absensi";

// Membuat koneksi
$conn = new mysqli($servername, $username, $password, $dbname);

// Mengecek koneksi
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

if(isset($_POST['rfid'])) {
    $rfid = $_POST['rfid'];
    $timestamp = date("Y-m-d H:i:s");

    // Query untuk menyimpan data absensi
    $sql = "INSERT INTO absensi (rfid, waktu) VALUES ('$rfid', '$timestamp')";

    if ($conn->query($sql) === TRUE) {
        echo "Data absen berhasil disimpan.";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}

$conn->close();
?>
  • Anda juga perlu membuat database dengan tabel absensi yang memiliki kolom rfid dan waktu.
Langkah 4: Frontend untuk Menampilkan Data Absensi
  • Buat aplikasi web sederhana untuk menampilkan data absen siswa yang disimpan di database.
  • Gunakan HTML dan JavaScript untuk menampilkan data absensi dalam bentuk tabel.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Data Absensi Siswa</title>
</head>
<body>
    <h1>Absensi Siswa</h1>
    <table border="1">
        <tr>
            <th>ID Siswa (RFID)</th>
            <th>Waktu Absensi</th>
        </tr>
        <?php
        $conn = new mysqli("localhost", "root", "", "absensi");
        $result = $conn->query("SELECT * FROM absensi");
        while($row = $result->fetch_assoc()) {
            echo "<tr><td>" . $row['rfid'] . "</td><td>" . $row['waktu'] . "</td></tr>";
        }
        ?>
    </table>
</body>
</html>

4. Estimasi Biaya untuk Proyek Ini


5. Potensi Pengembangan Lanjutan:

  • Integrasi dengan Aplikasi Mobile: Anda bisa mengembangkan aplikasi mobile untuk melihat absensi secara langsung.
  • Penggunaan API untuk Notifikasi: Sistem dapat mengirimkan notifikasi ke guru atau orang tua mengenai kehadiran siswa.
  • Fitur Laporan Statistik: Menampilkan statistik absen seperti persentase kehadiran siswa per kelas atau per bulan.

Dengan RFID dan sistem absen online, Anda dapat membuat proses absensi menjadi lebih efisien, otomatis, dan terintegrasi dengan teknologi yang mudah digunakan oleh siswa, guru, dan administrator.

arm robot

Tentu bisa. Untuk tingkat SMK, saya sarankan membuat versi sederhana terlebih dahulu dengan konsep yang sama seperti saat lomba. Proyek: Rob...