#include <WiFi.h>
#include <ArduinoHttpClient.h>
// Konfigurasi WiFi (Wokwi-GUEST)
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// Konfigurasi Gemini API
const char* apiKey = "AIzaSyCU5qiBIW2WQVUfXWXBLOghT4IVEkobhvc"; // Ganti dengan API Key Gemini Anda
const char* serverAddress = "api.generativelanguage.googleapis.com";
// Inisialisasi WiFi client
WiFiClient client;
HttpClient http(client, serverAddress, 443);
void setup() {
Serial.begin(115200);
// Koneksi ke WiFi (gunakan WiFi Wokwi)
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("\nWiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
// Baca input dari Serial Monitor
if (Serial.available() > 0) {
String userInput = Serial.readStringUntil('\n');
userInput.trim(); // Menghilangkan spasi di awal dan akhir
// Kirim request ke Gemini API
String geminiResponse = getGeminiResponse(userInput);
// Tampilkan respon di Serial Monitor
Serial.print("Gemini: ");
Serial.println(geminiResponse);
}
}
// Fungsi untuk mengirim request ke Gemini API
String getGeminiResponse(String prompt) {
// Buat request body
String requestBody = "{";
requestBody += "\"prompt\": {";
requestBody += "\"text\": \"" + prompt + "\"";
requestBody += "}";
requestBody += "}";
// Kirim request
http.beginRequest();
http.post("/v1beta2/models/gemini-pro:generateText");
http.sendHeader("Content-Type", "application/json");
http.sendHeader("Authorization", "Bearer " + String(apiKey));
http.print(requestBody); // Menggunakan print() untuk mengirim request body
// Baca respon
int statusCode = http.responseStatusCode();
Serial.print("Status code: ");
Serial.println(statusCode);
if (statusCode == 200) {
String response = http.responseBody();
// Parsing JSON untuk mendapatkan balasan dari Gemini
// (Anda perlu menambahkan kode untuk parsing JSON di sini)
// Contoh parsing sederhana (mungkin perlu disesuaikan)
int start = response.indexOf("\"output\": \"") + 10;
int end = response.indexOf("\"", start);
String reply = response.substring(start, end);
return reply;
} else {
Serial.print("Error code: ");
Serial.println(statusCode);
return "Error: " + String(statusCode);
}
}