Abdüssamet
80+
- Katılım
- 26 Mart 2020
- Mesajlar
- 296
Dahası
- Reaksiyon skoru
- 70
- İsim
- Abdüssamet Karataş
Youtube'da bunun yapılabildiğini gördüm fakat benim yapmak istediğim, akıllı telefon üzerinden evin sıcaklığını görebileceğim, istediğim dereceye ayarladığımda evin sıcaklığı ayarladığım sıcaklıktan düşükse devreye girecek, o sıcaklığa geldiğinde devreden çıkacak bir sistem olmalı. İstediğim sıcaklığı da her seferinde kodlarda değişiklik yaparak değil de uygulama üzerinden ok tuşları veya slider gibi bir şeyle kontrol edebilmeliyim.
Bu istediklerimi ChatGPT'ye, Gemini'a ve birkaç yapay zekaya daha sordum. Hepsinden bunu yapabileceğim sonucunu aldım. Fakat söyle bir sorun var, kodlama hakkında hiçbir fikrim yok. Onun için de yapay zekadan yardım aldım ve bana aşağıya yazdığım kodu verdi. Size sorum bu kod çalışır mı, hata var mı, ya da bu sistem hakkında önerebileceğiniz herhangi bir şey var mı?
Bu arada neden kendin deneyip görmüyorsun derseniz, elimde şu anda ESP32 yok, buradan alacağım yanıtlara göre sipariş vereceğim.
#include "SPI.h"
#include "BLEDevice.h"
#include "BLEScan.h"
#include "BLEAdvertisedDevice.h"
#include "WiFi.h"
#include "BlynkSimpleEsp32.h"
#define RELAY_PIN 5
#define LED_PIN 2
#define SCAN_TIME 10 // BLE tarama süresi (saniye)
char auth[] = "BLYNK_AUTH_TOKEN"; // Blynk kimlik doğrulama anahtarını buraya gir
char ssid[] = "WiFi_ADI"; // WiFi ağ adı
char pass[] = "WiFi_SIFRE"; // WiFi şifresi
BLEScan *pBLEScan;
float current_temp = -100;
float set_temp = 24.0; // Varsayılan sıcaklık ayarı (telefon üzerinden değiştirilebilir)
BLYNK_WRITE(V0) {
set_temp = param.asFloat(); // Blynk uygulamasından gelen sıcaklık değeri
}
class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks {
void onResult(BLEAdvertisedDevice advertisedDevice) {
if (advertisedDevice.haveName() && advertisedDevice.haveServiceData() && advertisedDevice.getName() == "ATC_XXXXXX") {
std::string data = advertisedDevice.getServiceData();
uint8_t *rawData = (uint8_t *)data.data();
if (data.length() >= 6) {
int temp_raw = (rawData[2] << 8) | rawData[1];
current_temp = temp_raw / 10.0;
Serial.printf("Okunan Sıcaklık: %.1f°C\n", current_temp);
}
}
}
};
void setup() {
Serial.begin(115200);
pinMode(RELAY_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("WiFi bağlanıyor...");
}
Serial.println("WiFi bağlantısı başarılı!");
Blynk.begin(auth, ssid, pass);
BLEDevice::init("");
pBLEScan = BLEDevice::getScan();
pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
pBLEScan->setActiveScan(true);
pBLEScan->setInterval(100);
pBLEScan->setWindow(99);
}
void loop() {
Serial.println("BLE taraması başlatılıyor...");
pBLEScan->start(SCAN_TIME);
Serial.printf("Mevcut sıcaklık: %.1f°C | Ayarlanan sıcaklık: %.1f°C\n", current_temp, set_temp);
if (current_temp < set_temp) {
digitalWrite(RELAY_PIN, LOW);
Serial.println("Röle Açık (Kombi Açık)");
} else {
digitalWrite(RELAY_PIN, HIGH);
Serial.println("Röle Kapalı (Kombi Kapalı)");
}
Blynk.run();
delay(5000);
}
Bu istediklerimi ChatGPT'ye, Gemini'a ve birkaç yapay zekaya daha sordum. Hepsinden bunu yapabileceğim sonucunu aldım. Fakat söyle bir sorun var, kodlama hakkında hiçbir fikrim yok. Onun için de yapay zekadan yardım aldım ve bana aşağıya yazdığım kodu verdi. Size sorum bu kod çalışır mı, hata var mı, ya da bu sistem hakkında önerebileceğiniz herhangi bir şey var mı?
Bu arada neden kendin deneyip görmüyorsun derseniz, elimde şu anda ESP32 yok, buradan alacağım yanıtlara göre sipariş vereceğim.
#include "SPI.h"
#include "BLEDevice.h"
#include "BLEScan.h"
#include "BLEAdvertisedDevice.h"
#include "WiFi.h"
#include "BlynkSimpleEsp32.h"
#define RELAY_PIN 5
#define LED_PIN 2
#define SCAN_TIME 10 // BLE tarama süresi (saniye)
char auth[] = "BLYNK_AUTH_TOKEN"; // Blynk kimlik doğrulama anahtarını buraya gir
char ssid[] = "WiFi_ADI"; // WiFi ağ adı
char pass[] = "WiFi_SIFRE"; // WiFi şifresi
BLEScan *pBLEScan;
float current_temp = -100;
float set_temp = 24.0; // Varsayılan sıcaklık ayarı (telefon üzerinden değiştirilebilir)
BLYNK_WRITE(V0) {
set_temp = param.asFloat(); // Blynk uygulamasından gelen sıcaklık değeri
}
class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks {
void onResult(BLEAdvertisedDevice advertisedDevice) {
if (advertisedDevice.haveName() && advertisedDevice.haveServiceData() && advertisedDevice.getName() == "ATC_XXXXXX") {
std::string data = advertisedDevice.getServiceData();
uint8_t *rawData = (uint8_t *)data.data();
if (data.length() >= 6) {
int temp_raw = (rawData[2] << 8) | rawData[1];
current_temp = temp_raw / 10.0;
Serial.printf("Okunan Sıcaklık: %.1f°C\n", current_temp);
}
}
}
};
void setup() {
Serial.begin(115200);
pinMode(RELAY_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("WiFi bağlanıyor...");
}
Serial.println("WiFi bağlantısı başarılı!");
Blynk.begin(auth, ssid, pass);
BLEDevice::init("");
pBLEScan = BLEDevice::getScan();
pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
pBLEScan->setActiveScan(true);
pBLEScan->setInterval(100);
pBLEScan->setWindow(99);
}
void loop() {
Serial.println("BLE taraması başlatılıyor...");
pBLEScan->start(SCAN_TIME);
Serial.printf("Mevcut sıcaklık: %.1f°C | Ayarlanan sıcaklık: %.1f°C\n", current_temp, set_temp);
if (current_temp < set_temp) {
digitalWrite(RELAY_PIN, LOW);
Serial.println("Röle Açık (Kombi Açık)");
} else {
digitalWrite(RELAY_PIN, HIGH);
Serial.println("Röle Kapalı (Kombi Kapalı)");
}
Blynk.run();
delay(5000);
}