Arduino ile ChatGPT Entegrasyonu: Fiziksel Asistan Yapımı
Arduino ile ChatGPT Entegrasyonu: Fiziksel Asistan Yapımı
Merhaba sevgili Arduino severler!
Bu yazımızda, hepimizin merakla takip ettiği ChatGPT yapay zeka modelini Arduino'ya entegre ederek kendi fiziksel asistanımızı nasıl yapabileceğimizi adım adım inceleyeceğiz. Bu proje ile Arduino'nuzu sesli komutlarla kontrol edebilir, ChatGPT'nin sunduğu sonsuz bilgi ve yeteneklerden faydalanabilirsiniz. Projemiz, OpenAI API'si üzerinden HTTP istekleri göndererek, bir mikrofon aracılığıyla aldığımız sesli komutları ChatGPT'ye iletip, hoparlör aracılığıyla yanıtları dinlememizi sağlayacak.
Gerekli Malzemeler
Bu projeyi gerçekleştirmek için aşağıdaki malzemelere ihtiyacımız olacak:
- Arduino Uno (veya benzeri bir Arduino kartı)
- ESP8266 WiFi Modülü (veya ESP32, WiFi bağlantısı için)
- Mikrofon Modülü (Örneğin MAX9814 veya benzeri bir analog mikrofon)
- Hoparlör (veya amplifikatörlü bir hoparlör)
- Jumper kablolar
- Breadboard (isteğe bağlı)
Donanım Bağlantıları
Şimdi, donanım bağlantılarını nasıl yapacağımıza bakalım:
- ESP8266/ESP32 ve Arduino Bağlantıları:
- ESP8266 VCC -> Arduino 3.3V
- ESP8266 GND -> Arduino GND
- ESP8266 TX -> Arduino Dijital Pin 2 (RX)
- ESP8266 RX -> Arduino Dijital Pin 3 (TX)
- Mikrofon Bağlantıları:
- Mikrofon VCC -> Arduino 3.3V veya 5V (mikrofonun çalışma voltajına bağlı)
- Mikrofon GND -> Arduino GND
- Mikrofon OUT -> Arduino Analog Giriş A0
- Hoparlör Bağlantıları:
- Hoparlör direkt olarak Arduino'ya bağlanmamalıdır. Arduino pinlerinden bir PWM pini (örn. 9,10,11) aracılığıyla bir amplifikatör modülüne bağlayınız. Amplifikatör modülünden ise hoparlöre bağlantı yapınız.
Önemli Not: ESP8266/ESP32 modüllerinin bazılarında voltaj seviyesi farklılıkları olabileceğinden, Arduino ile ESP8266/ESP32 arasındaki bağlantılarda voltaj bölücü dirençler kullanmanız önerilir. Bu, Arduino'nun 5V sinyallerinin ESP8266/ESP32'ye zarar vermesini önleyecektir.
Yazılım Geliştirme
Şimdi gelelim yazılım kısmına. Aşağıdaki Arduino kodunu kullanarak projemizi hayata geçireceğiz.
Dikkat: Bu kod örneği, ChatGPT API'sine istek gönderme ve yanıt alma mantığını göstermektedir. Ses işleme (mikrofondan veri okuma ve işleme) ve metin-konuşma dönüştürme (ChatGPT yanıtını hoparlörden çalma) kısımları için ek kütüphaneler ve algoritmalar kullanmanız gerekecektir.
#include
#include // Arduino IDE'den kurmanız gereklidir.
#include // Arduino IDE'den kurmanız gereklidir.
// WiFi Bilgileri
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
// OpenAI API Anahtarı
const char* apiKey = "YOUR_OPENAI_API_KEY";
// SoftwareSerial Tanımlama (ESP8266 için)
SoftwareSerial espSerial(2, 3); // RX, TX
// Mikrofon Pini
const int microphonePin = A0;
// Hoparlör Pini (PWM)
const int speakerPin = 9;
void setup() {
Serial.begin(115200);
espSerial.begin(115200);
// WiFi'ye bağlan
connectWiFi();
// Mikrofon ve hoparlör kurulumu (gerekli ise)
pinMode(speakerPin, OUTPUT);
}
void loop() {
// Sesli komutu al (basit bir örnek)
String command = getVoiceCommand();
// ChatGPT'ye gönder ve yanıtı al
String response = getChatGPTResponse(command);
// Yanıtı oynat (gerekli kütüphanelerle sesli hale getirilebilir)
Serial.println("ChatGPT Yanıtı: " + response);
// playResponse(response); // Sesli hale getirme fonksiyonu (yazılması gerekiyor)
delay(5000); // 5 saniye bekle
}
// WiFi'ye bağlanma fonksiyonu
void connectWiFi() {
Serial.print("WiFi'ye bağlanılıyor...");
espSerial.println("AT+CWMODE=1"); // İstasyon Modu
delay(1000);
espSerial.print("AT+CWJAP=\"");
espSerial.print(ssid);
espSerial.print("\",\"");
espSerial.print(password);
espSerial.println("\"");
delay(5000);
if (espSerial.find("WIFI GOT IP")) {
Serial.println("WiFi'ye bağlandı!");
} else {
Serial.println("WiFi'ye bağlanılamadı!");
while (true); // Sonsuz döngü
}
}
// Sesli komutu alma fonksiyonu (çok basit bir örnek)
String getVoiceCommand() {
Serial.println("Sesli komut bekleniyor...");
// Gerçek bir ses işleme için ek kütüphaneler kullanılmalıdır.
// Bu örnek sadece analog değer okur ve basitleştirilmiş bir komut oluşturur.
int sensorValue = analogRead(microphonePin);
if (sensorValue > 500) {
Serial.println("Komut algılandı!");
return "Merhaba ChatGPT, nasılsın?"; // Örnek komut
} else {
return "";
}
}
// ChatGPT'den yanıt alma fonksiyonu
String getChatGPTResponse(String prompt) {
if (prompt == "") {
return "Komut algılanamadı.";
}
WiFiClient client;
HTTPClient http;
String serverPath = "https://api.openai.com/v1/completions";
http.begin(client, serverPath);
http.addHeader("Content-Type", "application/json");
http.addHeader("Authorization", "Bearer " + String(apiKey));
String requestBody = "{\"model\": \"text-davinci-003\", \"prompt\": \"" + prompt + "\", \"max_tokens\": 150}";
int httpResponseCode = http.POST(requestBody);
String response = "";
if (httpResponseCode > 0) {
Serial.print("HTTP Yanıt Kodu: ");
Serial.println(httpResponseCode);
response = http.getString();
Serial.println(response);
// JSON ayrıştırma
DynamicJsonDocument doc(2048);
deserializeJson(doc, response);
// ChatGPT yanıtını al
response = doc["choices"][0]["text"].as();
} else {
Serial.print("HTTP İstek Hatası: ");
Serial.println(httpResponseCode);
response = "Bir hata oluştu. Lütfen bağlantınızı kontrol edin.";
}
http.end();
return response;
}
// Yanıtı oynatma fonksiyonu (basit bir örnek)
void playResponse(String response) {
// Gerçek bir metin-konuşma dönüştürme için ek kütüphaneler kullanılmalıdır.
// Bu örnek sadece yanıtın uzunluğuna göre bir ton üretir.
for (int i = 0; i < response.length(); i++) {
tone(speakerPin, 500 + i * 10);
delay(50);
noTone(speakerPin);
delay(10);
}
}
Kod Açıklamaları:
- Kütüphaneler:
SoftwareSerial,HTTPClientveArduinoJsonkütüphanelerini Arduino IDE'den kurmanız gerekmektedir. - WiFi Bilgileri:
ssidvepassworddeğişkenlerine kendi WiFi ağınızın bilgilerini girin. - OpenAI API Anahtarı:
apiKeydeğişkenine OpenAI API anahtarınızı girin. OpenAI API'sine kayıt olarak bir anahtar alabilirsiniz. - ESP8266 Bağlantısı: ESP8266 ile Arduino arasındaki seri iletişim için
SoftwareSerialkullanılır. - Sesli Komut:
getVoiceCommand()fonksiyonu, mikrofondan alınan analog veriyi okuyarak basit bir komut algılar. Gerçek bir ses işleme için ek kütüphaneler ve algoritmalar kullanmanız gerekecektir. - ChatGPT İstek:
getChatGPTResponse()fonksiyonu, ChatGPT API'sine HTTP POST isteği göndererek yanıtı alır. - JSON Ayrıştırma: ChatGPT'den gelen JSON formatındaki yanıtı ayrıştırmak için
ArduinoJsonkütüphanesi kullanılır. - Yanıtı Oynatma:
playResponse()fonksiyonu, ChatGPT'den alınan yanıtı hoparlörden çalmak için kullanılır. Bu örnek sadece basit bir ton üretir. Gerçek bir metin-konuşma dönüştürme için ek kütüphaneler ve algoritmalar kullanmanız gerekecektir.
Ek Bilgiler ve İpuçları
- Ses İşleme: Mikrofon sinyalini daha doğru bir şekilde işlemek için FFT (Fast Fourier Transform) gibi algoritmalar kullanabilirsiniz.
- Metin-Konuşma Dönüştürme: ChatGPT yanıtını sesli hale getirmek için Google Text-to-Speech API'si veya ESP32'nin dahili ses sentezleme özelliklerini kullanabilirsiniz.
- Güç Kaynağı: Arduino ve ESP8266/ESP32 için yeterli güç sağlayan bir güç kaynağı kullanmanız önemlidir.
- Hata Ayıklama: Seri monitörü kullanarak kodunuzdaki hataları tespit edebilir ve düzeltebilirsiniz.
Sonuç
Bu yazımızda, Arduino ile ChatGPT'yi entegre ederek kendi fiziksel asistanımızı nasıl yapabileceğimizi öğrendik. Bu proje, yapay zeka ve donanım dünyasını bir araya getirerek yaratıcılığınızı konuşturabileceğiniz harika bir fırsat sunuyor. Umarız bu yazı, kendi projelerinizi geliştirmeniz için size ilham vermiştir. İyi eğlenceler!
Etiketler: Arduino, ChatGPT, OpenAI API, Fiziksel Asistan, Yapay Zeka, IoT, ESP8266, HTTP İstekleri, Mikrofon, Hoparlör
```.png)







0 yorum: