AI Assistant
Detail Karya Portofolio

Integrasi Endpoint dan Simulator Wokwi

Paujan Oleh: Paujan

Ringkasan Portofolio

Proyek ini bertujuan untuk menghubungkan simulator Wokwi dengan API eksternal yang memungkinkan pengambilan data dari perangkat keras virtual (misalnya, sensor) dan pengiriman perintah untuk mengontrol perangkat keras tersebut, seperti LED. Wokwi memungkinkan simulasi perangkat keras seperti mikrokontroler ESP32 dan sensor tanpa memerlukan perangkat fisik. Dengan mengintegrasikan endpoint API, proyek ini dapat mengontrol dan mengambil data dari perangkat yang disimulasikan.

Deskripsi & Detail Proyek

1. Deskripsi Proyek

Proyek ini bertujuan untuk menghubungkan simulator Wokwi dengan API eksternal yang memungkinkan pengambilan data dari perangkat keras virtual (misalnya, sensor) dan pengiriman perintah untuk mengontrol perangkat keras tersebut, seperti LED. Wokwi memungkinkan simulasi perangkat keras seperti mikrokontroler ESP32 dan sensor tanpa memerlukan perangkat fisik. Dengan mengintegrasikan endpoint API, proyek ini dapat mengontrol dan mengambil data dari perangkat yang disimulasikan.

2. Tujuan Proyek

  • Menghubungkan simulator Wokwi dengan API untuk mengendalikan perangkat keras virtual dan mengambil data dari sensor.
  • Menggunakan HTTP REST API untuk komunikasi antara simulator dan aplikasi eksternal.
  • Membuat endpoint API yang memungkinkan pengguna mengontrol perangkat keras seperti LED atau motor dan menerima data sensor seperti suhu.

3. Teknologi yang Digunakan

  • Wokwi Simulator: Platform untuk simulasi perangkat keras berbasis mikrokontroler.
  • ESP32: Mikrokontroler yang digunakan dalam simulator Wokwi.
  • Flask: Framework Python untuk membangun endpoint API.
  • HTTP/REST API: Digunakan untuk komunikasi data antara server API dan simulator Wokwi.
  • Arduino IDE: Untuk memprogram mikrokontroler ESP32 yang disimulasikan di Wokwi.

 

4. Langkah-langkah Implementasi

Langkah 1: Persiapan Lingkungan

  1. Buat Proyek di Wokwi:
  2. Skema Elektronik:
  • Masuk ke Wokwi.
  • Pilih ESP32 sebagai mikrokontroler.
  • Tambahkan perangkat seperti sensor DHT11 untuk mengukur suhu dan kelembapan, serta LED untuk indikasi status.
  • Sambungkan sensor DHT11 ke pin GPIO pada ESP32.
  • Sambungkan LED ke pin GPIO lainnya untuk indikasi.

Langkah 2: Membangun API dengan Flask

  1. Persiapkan Flask:
  • Install Flask terlebih dahulu:

pip install Flask

  1. Kode untuk Server API: Buat file Python app.py untuk server Flask yang akan mengelola endpoint untuk pengendalian dan pengambilan data dari perangkat Wokwi.

 

Penjelasan:

  • /sensor: Endpoint yang mengembalikan data sensor suhu dan kelembapan. Data ini akan diproses lebih lanjut di sisi server.
  • /control/led: Endpoint yang mengontrol LED berdasarkan status yang diberikan (on atau off).

Langkah 3: Program Mikrokontroler ESP32 di Wokwi

  1. Pengaturan Kode untuk ESP32: Gunakan Arduino IDE untuk memprogram ESP32. Berikut adalah kode yang digunakan untuk mengontrol LED dan mengirimkan data sensor ke server API.

#include <WiFi.h>

#include <DHT.h>

 

// Ganti dengan nama dan password Wi-Fi Anda

const char *ssid = "your-ssid";

const char *password = "your-password";

 

#define DHTPIN 4          // Pin DHT11

#define DHTTYPE DHT11     // Sensor DHT11

DHT dht(DHTPIN, DHTTYPE);

 

const char* server = "http://your-server-ip:5000"; // Ganti dengan IP server Flask Anda

 

WiFiClient client;

 

void setup() {

    Serial.begin(115200);

    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {

        delay(1000);

        Serial.println("Connecting to WiFi...");

    }

    Serial.println("Connected to WiFi");

 

    dht.begin();

}

 

void loop() {

    float temperature = dht.readTemperature();

    float humidity = dht.readHumidity();

   

    if (isnan(temperature) || isnan(humidity)) {

        Serial.println("Failed to read from DHT sensor");

        return;

    }

 

    // Kirim data sensor ke API

    String data = "temperature=" + String(temperature) + "&humidity=" + String(humidity);

    sendDataToAPI(data);

 

    delay(10000); // Delay 10 detik

}

 

void sendDataToAPI(String data) {

    if (client.connect(server, 80)) {

        client.print("POST /sensor HTTP/1.1\r\n");

        client.print("Host: " + String(server) + "\r\n");

        client.print("Content-Type: application/x-www-form-urlencoded\r\n");

        client.print("Content-Length: " + String(data.length()) + "\r\n");

        client.print("\r\n");

        client.print(data);

    }

}

Penjelasan:

  • Program ini menghubungkan ESP32 ke jaringan Wi-Fi, membaca data suhu dan kelembapan dari sensor DHT11, dan mengirimkannya ke server API yang dibangun dengan Flask.

Langkah 4: Uji Coba dan Verifikasi

  1. Jalankan Flask API:
  2. Simulasikan di Wokwi:
  3. Pengujian Kontrol LED:
  • Di terminal, jalankan Flask API:

python app.py

  • API akan berjalan di http://127.0.0.1:5000.
  • Buka proyek di Wokwi dan pastikan ESP32 terhubung ke Wi-Fi dengan benar.
  • Periksa data sensor yang dikirim ke API melalui log di server Flask.
  • Kirimkan POST request ke endpoint /control/led untuk mengontrol LED:

curl -X POST http://127.0.0.1:5000/control/led -H "Content-Type: application/json" -d '{"status":"on"}'

 

5. Hasil yang Dicapai

  • Komunikasi Berhasil: Data suhu dan kelembapan berhasil dikirim dari simulator Wokwi ke API Flask.
  • Kontrol LED Berfungsi: Perintah untuk menghidupkan dan mematikan LED dapat dijalankan melalui API.
  • Stabilitas Sistem: Sistem berfungsi stabil, dengan data sensor yang dikirim secara periodik dan perintah yang diterima dengan benar.

6. Kesimpulan

Proyek ini berhasil mengintegrasikan simulator Wokwi dengan server API menggunakan Flask, yang memungkinkan kontrol perangkat keras virtual dan pengambilan data sensor dari perangkat mikrokontroler ESP32. Solusi ini memungkinkan simulasi perangkat keras secara lebih fleksibel tanpa memerlukan perangkat fisik yang mahal.