GÖKTÜRK Metal Dedektörü

GÖKTÜRK Metal Dedektörü – Çalışma Mantığı

GÖKTÜRK, faz kayması prensibini kullanarak metal ayrımı yapan gelişmiş bir metal dedektörüdür.
Cihaz, bobine gönderilen sinyal ile geri dönen sinyal arasındaki farkı ölçerek metal türünü belirler.


Çalışma Aşamaları

1️⃣ Açılış ve Kalibrasyon

  • Cihaz açıldığında GÖKTÜRK logosu ve model bilgisi gösterilir.
  • Toprak ayarı otomatik veya manuel olarak yapılır.
  • Kazanç ve hassasiyet değerleri son kaydedilen ayarlarla yüklenir.

2️⃣ Bobin Sinyali Üretimi (Transmitter – TX)

  • Bobine 8kHz – 12kHz arasında PWM sinyali gönderilir.
  • Bu sinyal manyetik alan oluşturarak metal objelerin elektromanyetik özelliklerini değiştirir.

3️⃣ Geri Dönüş Sinyali ve Faz Kayması Ölçümü (Receiver – RX)

  • Bobine gönderilen sinyal ile geri dönen sinyal arasındaki faz farkı ölçülür.
  • Metal cinsine göre farklı faz kaymaları oluşur.
  • PIC18F452 üzerindeki ADC, bu sinyali okur ve işleme alır.

4️⃣ Metal Türü ve Derinlik Algılama

  • Ölçülen faz kaymasına göre metal türü belirlenir.
    🔹 Demir – Faz kayması küçük
    🔹 Altın – Faz kayması orta seviye
    🔹 Gümüş – Faz kayması büyük
  • Sinyal gücüne göre tahmini derinlik hesaplanır.

5️⃣ Kullanıcı Arayüzü ve Sesli/Görsel Uyarılar

  • Tespit edilen metal türü GLCD ekranında gösterilir.
  • LED’ler metal türüne göre yanar:
    🔴 Demir → Kırmızı LED
    🟢 Altın → Yeşil LED
    🔵 Gümüş → Mavi LED
  • Buzzer, metal tespit edildiğinde bip sesi verir.
  • Menü, 5 buton ile kontrol edilir.

6️⃣ Kablosuz Veri Gönderme (Bluetooth & Wi-Fi)

  • HC-05 Bluetooth ile telefon veya bilgisayara veri gönderilir.
  • ESP8266 Wi-Fi modülü ile metal tespit verisi sunucuya gönderilir.
  • Kullanıcı, cep telefonu veya bilgisayardan cihaza komut gönderebilir.

7️⃣ EEPROM ile Ayar Saklama

  • Toprak ayarı, kazanç seviyesi ve hassasiyet ayarları kaydedilir.
  • Cihaz her açıldığında son kullanılan ayarlar geri yüklenir.

GÖKTÜRK Metal Dedektörü – Çalışma Akışı

rKopyalaDüzenle
1. Cihaz Açılır → Açılış ekranı ve kalibrasyon yapılır.
2. Bobin Sinyali Üretilir → PWM ile manyetik alan oluşturulur.
3. Metal Algılanır → ADC ile faz kayması ölçülür.
4. Metal Türü Belirlenir → Demir, Altın veya Gümüş sınıflandırılır.
5. Derinlik Hesaplanır → Sinyal gücüne göre tahmini derinlik hesaplanır.
6. Kullanıcıya Bilgi Gönderilir → GLCD, LED, Buzzer ile uyarılar verilir.
7. Kablosuz Veri Gönderme → Bluetooth/Wi-Fi ile sunucuya veya telefona veri iletilir.
8. EEPROM’a Ayar Kaydedilir → Kullanıcının yaptığı ayarlar kaydedilir.

SONUÇ

GÖKTÜRK, faz kayması analizi ile metal ayrımı yapabilen, kablosuz bağlantılı ve kullanıcı dostu bir metal dedektörüdür.
Cihazın tüm donanımı ve yazılımı tam entegre edilmiştir.

(MikroC)

Bu kod temel frekans üretimi, buton okuma ve LCD’yi başlatma işlevlerini içerir.

1️⃣ Temel Ayarlar ve PWM Üretimi

cKopyalaDüzenle// PIC18F452 Metal Dedektörü (GÖKTÜRK Pulse 3)
// MikroC Pro

// Kütüphaneler
#include <built_in.h>
#include "GLCD.h" // Grafik LCD kütüphanesi (Winstar WG12864)

#define PWM_FREQ 8000 // 8 kHz PWM sinyali
#define ADC_CHANNEL 0 // Faz kayması ölçümü için ADC girişi

// Buton Tanımları
#define BTN_UP PORTB.F0
#define BTN_DOWN PORTB.F1
#define BTN_LEFT PORTB.F2
#define BTN_RIGHT PORTB.F3
#define BTN_ENTER PORTB.F4

// Değişkenler
unsigned int adcValue = 0;
char buffer[16];

// PWM ve Timer Ayarı
void InitPWM() {
TRISC.F2 = 0; // PWM çıkışı (CCP1)
CCP1CON = 0x0C; // PWM modu seçimi
PR2 = (_XTAL_FREQ / (PWM_FREQ * 4)) - 1;
T2CON = 0x04; // Timer2 başlatma
CCPR1L = PR2 / 2; // %50 Duty Cycle
}

// ADC ile Faz Kayması Ölçümü
unsigned int ReadADC() {
ADCON0 = (ADC_CHANNEL << 2) | 0x01; // ADC Kanal Seçimi ve Açma
Delay_us(20); // Stabilizasyon
GO_DONE_bit = 1;
while (GO_DONE_bit); // Ölçüm tamamlanana kadar bekle
return (ADRESH << 8) | ADRESL; // ADC sonucu
}

// LCD ve Menü Başlatma
void InitGLCD() {
Glcd_Init(); // LCD başlat
Glcd_Fill(0x00); // Ekranı temizle
Glcd_Write_Text("GÖKTÜRK Pulse 3", 20, 0, 1);
Delay_ms(1000);
}

// Ana Program
void main() {
TRISB = 0xFF; // Butonlar giriş
TRISA = 0xFF; // ADC giriş
TRISC.F2 = 0; // PWM çıkış

InitPWM();
InitGLCD();

while (1) {
adcValue = ReadADC();
IntToStr(adcValue, buffer);

Glcd_Write_Text("ADC:", 0, 2, 1);
Glcd_Write_Text(buffer, 30, 2, 1);

Delay_ms(200);
}
}

MikroC – PIC18F452

cKopyalaDüzenle// GÖKTÜRK Pulse 3 - Metal Dedektörü
// MikroC Pro - PIC18F452

#include <built_in.h>
#include "GLCD.h" // Winstar WG12864 Grafik LCD Kütüphanesi

// 📌 Sabitler ve Tanımlamalar
#define PWM_FREQ 8000 // PWM Frekansı (8kHz)
#define ADC_CHANNEL 0 // Faz kayması ölçümü için ADC kanalı
#define DIGIPOT_CS PORTC.F0 // Dijital Pot (Kazanç Ayarı) - Chip Select

// 📌 Buton Tanımları
#define BTN_UP PORTB.F0
#define BTN_DOWN PORTB.F1
#define BTN_LEFT PORTB.F2
#define BTN_RIGHT PORTB.F3
#define BTN_ENTER PORTB.F4

// 📌 Değişkenler
unsigned int adcValue = 0;
char buffer[16];
unsigned char gainLevel = 5; // Başlangıç kazanç seviyesi (1-10)

// 📌 PWM Başlatma (Bobin Sinyali Üretimi)
void InitPWM() {
TRISC.F2 = 0; // PWM Çıkışı (CCP1)
CCP1CON = 0x0C; // PWM Modu
PR2 = (_XTAL_FREQ / (PWM_FREQ * 4)) - 1;
T2CON = 0x04; // Timer2 Aç
CCPR1L = PR2 / 2; // %50 Duty Cycle
}

// 📌 ADC ile Faz Kayması Ölçümü
unsigned int ReadADC() {
ADCON0 = (ADC_CHANNEL << 2) | 0x01; // ADC Kanal Seçimi ve Açma
Delay_us(20); // Stabilizasyon Bekleme
GO_DONE_bit = 1;
while (GO_DONE_bit); // Ölçüm tamamlanana kadar bekle
return (ADRESH << 8) | ADRESL; // ADC Sonucu
}

// 📌 Dijital Potansiyometre (Kazanç Kontrolü)
void SetGain(unsigned char level) {
SPI1_Init(); // SPI Başlat
DIGIPOT_CS = 0; // CS Aktif
SPI1_Write(0x00); // Komut (Potansiyometre yazma modu)
SPI1_Write(level * 25); // Kazanç Seviyesi (0-255 arası ölçekleme)
DIGIPOT_CS = 1; // CS Kapalı
}

// 📌 Açılış Ekranı
void ShowStartupScreen() {
Glcd_Fill(0x00); // Ekranı temizle
Glcd_Write_Text("Türkiye SD", 20, 0, 1); // Üst Satır
Glcd_Write_Text("Model: DİKİCİ25", 10, 2, 1); // Alt Satır
Delay_ms(2000);
Glcd_Fill(0x00); // Temizle ve Menüye Geç
}

// 📌 Menü Ekranı
void ShowMenu() {
Glcd_Fill(0x00);
Glcd_Write_Text("Kazanç Ayarı:", 5, 0, 1);
IntToStr(gainLevel, buffer);
Glcd_Write_Text(buffer, 80, 0, 1);
Glcd_Write_Text("Toprak Ayari", 5, 2, 1);
Glcd_Write_Text("Metal Tespit", 5, 4, 1);
}

// 📌 Metal Türünü Belirleme
void DetectMetal() {
adcValue = ReadADC();

Glcd_Fill(0x00);
Glcd_Write_Text("Metal Tespit:", 5, 0, 1);

if (adcValue < 300) {
Glcd_Write_Text("Demir", 5, 2, 1);
} else if (adcValue < 600) {
Glcd_Write_Text("Altin", 5, 2, 1);
} else {
Glcd_Write_Text("Gumus", 5, 2, 1);
}

Delay_ms(2000);
ShowMenu();
}

// 📌 Ana Program
void main() {
TRISB = 0xFF; // Butonlar Giriş
TRISA = 0xFF; // ADC Giriş
TRISC.F2 = 0; // PWM Çıkış
TRISC.F0 = 0; // Dijital Pot CS Çıkış

InitPWM();
InitGLCD();
ShowStartupScreen();
ShowMenu();

while (1) {
// Kazanç Ayarı
if (BTN_UP) {
if (gainLevel < 10) gainLevel++;
SetGain(gainLevel);
ShowMenu();
Delay_ms(300);
}
if (BTN_DOWN) {
if (gainLevel > 1) gainLevel--;
SetGain(gainLevel);
ShowMenu();
Delay_ms(300);
}

// Metal Tespit
if (BTN_ENTER) {
DetectMetal();
}
}
}

MikroC Kodu (Faz Kayması Ölçümü Eklenmiş)

cKopyalaDüzenle// GÖKTÜRK Pulse 3 - Faz Kayması ile Metal Ayrımı
// MikroC Pro - PIC18F452

#include <built_in.h>
#include "GLCD.h" // Winstar WG12864 LCD Kütüphanesi

// 📌 Sabitler
#define PWM_FREQ 8000 // PWM Frekansı (8kHz)
#define ADC_CHANNEL 0 // ADC Kanalı (Faz ölçümü için)
#define PHASE_PIN PORTB.F5 // Faz sinyali girişi
#define BUZZER PORTC.F1 // Buzzer çıkışı
#define LED_RED PORTC.F2 // Kırmızı LED (Demir)
#define LED_GREEN PORTC.F3 // Yeşil LED (Altın)
#define LED_BLUE PORTC.F4 // Mavi LED (Gümüş)

// 📌 Değişkenler
unsigned int adcValue = 0;
unsigned int phaseDelay = 0;
char buffer[16];

// 📌 PWM Başlatma (Bobin Sinyali Üretimi)
void InitPWM() {
TRISC.F2 = 0; // PWM çıkışı (CCP1)
CCP1CON = 0x0C; // PWM modu seçimi
PR2 = (_XTAL_FREQ / (PWM_FREQ * 4)) - 1;
T2CON = 0x04; // Timer2 Başlat
CCPR1L = PR2 / 2; // %50 Duty Cycle
}

// 📌 ADC ile Faz Kayması Ölçümü
unsigned int ReadADC() {
ADCON0 = (ADC_CHANNEL << 2) | 0x01; // ADC Kanal Seçimi ve Açma
Delay_us(20);
GO_DONE_bit = 1;
while (GO_DONE_bit); // Ölçüm tamamlanana kadar bekle
return (ADRESH << 8) | ADRESL; // ADC sonucu
}

// 📌 Faz Gecikmesini Ölçme
unsigned int MeasurePhaseDelay() {
TMR1H = 0; TMR1L = 0; // Timer1 sıfırla
T1CON = 0x01; // Timer1 başlat

while (!PHASE_PIN); // Faz sinyalini bekle
T1CON = 0x00; // Timer1 durdur

return (TMR1H << 8) | TMR1L; // Timer süresini oku
}

// 📌 Metal Ayrımı
void DetectMetal() {
phaseDelay = MeasurePhaseDelay();

Glcd_Fill(0x00);
Glcd_Write_Text("Metal Tespit:", 5, 0, 1);

BUZZER = 0; LED_RED = 0; LED_GREEN = 0; LED_BLUE = 0;

if (phaseDelay < 500) {
Glcd_Write_Text("Demir", 5, 2, 1);
BUZZER = 1; LED_RED = 1;
} else if (phaseDelay < 1000) {
Glcd_Write_Text("Altin", 5, 2, 1);
BUZZER = 1; LED_GREEN = 1;
} else {
Glcd_Write_Text("Gumus", 5, 2, 1);
BUZZER = 1; LED_BLUE = 1;
}

Delay_ms(1000);
BUZZER = 0;
}

// 📌 Ana Program
void main() {
TRISB = 0xFF; // Butonlar ve Faz Sinyali Giriş
TRISA = 0xFF; // ADC Giriş
TRISC = 0x00; // LED ve Buzzer Çıkış

InitPWM();
InitGLCD();
ShowStartupScreen();
ShowMenu();

while (1) {
if (BTN_ENTER) {
DetectMetal();
}
}
}

MikroC Kodu (Toprak Ayarı Eklendi)

cKopyalaDüzenle// GÖKTÜRK Pulse 3 - Faz Kayması ve Toprak Ayarı ile Metal Ayrımı
// MikroC Pro - PIC18F452

#include <built_in.h>
#include "GLCD.h" // Winstar WG12864 LCD Kütüphanesi

// 📌 Sabitler
#define PWM_FREQ 8000 // PWM Frekansı (8kHz)
#define ADC_CHANNEL 0 // ADC Kanalı (Faz ölçümü için)
#define PHASE_PIN PORTB.F5 // Faz sinyali girişi
#define BUZZER PORTC.F1 // Buzzer çıkışı
#define LED_RED PORTC.F2 // Kırmızı LED (Demir)
#define LED_GREEN PORTC.F3 // Yeşil LED (Altın)
#define LED_BLUE PORTC.F4 // Mavi LED (Gümüş)

// 📌 Değişkenler
unsigned int adcValue = 0;
unsigned int phaseDelay = 0;
unsigned int groundLevel = 0; // Toprak Referansı
char buffer[16];

// 📌 PWM Başlatma (Bobin Sinyali Üretimi)
void InitPWM() {
TRISC.F2 = 0; // PWM çıkışı (CCP1)
CCP1CON = 0x0C; // PWM modu seçimi
PR2 = (_XTAL_FREQ / (PWM_FREQ * 4)) - 1;
T2CON = 0x04; // Timer2 Başlat
CCPR1L = PR2 / 2; // %50 Duty Cycle
}

// 📌 ADC ile Faz Kayması Ölçümü
unsigned int ReadADC() {
ADCON0 = (ADC_CHANNEL << 2) | 0x01; // ADC Kanal Seçimi ve Açma
Delay_us(20);
GO_DONE_bit = 1;
while (GO_DONE_bit); // Ölçüm tamamlanana kadar bekle
return (ADRESH << 8) | ADRESL; // ADC sonucu
}

// 📌 Faz Gecikmesini Ölçme
unsigned int MeasurePhaseDelay() {
TMR1H = 0; TMR1L = 0; // Timer1 sıfırla
T1CON = 0x01; // Timer1 başlat

while (!PHASE_PIN); // Faz sinyalini bekle
T1CON = 0x00; // Timer1 durdur

return (TMR1H << 8) | TMR1L; // Timer süresini oku
}

// 📌 Metal Ayrımı (Toprak Referansına Göre)
void DetectMetal() {
phaseDelay = MeasurePhaseDelay();

Glcd_Fill(0x00);
Glcd_Write_Text("Metal Tespit:", 5, 0, 1);

BUZZER = 0; LED_RED = 0; LED_GREEN = 0; LED_BLUE = 0;

// 📌 Toprak Referansını Kullanarak Metal Tespiti
if (phaseDelay < groundLevel + 500) {
Glcd_Write_Text("Demir", 5, 2, 1);
BUZZER = 1; LED_RED = 1;
} else if (phaseDelay < groundLevel + 1000) {
Glcd_Write_Text("Altin", 5, 2, 1);
BUZZER = 1; LED_GREEN = 1;
} else {
Glcd_Write_Text("Gumus", 5, 2, 1);
BUZZER = 1; LED_BLUE = 1;
}

Delay_ms(1000);
BUZZER = 0;
}

// 📌 Toprak Ayarı ve Kalibrasyon
void CalibrateGround() {
Glcd_Fill(0x00);
Glcd_Write_Text("Toprak Ayari...", 5, 0, 1);

groundLevel = MeasurePhaseDelay(); // Toprak sinyalini kaydet

Glcd_Write_Text("Tamamlandi", 5, 2, 1);
Delay_ms(1000);
}

// 📌 Ana Menü
void ShowMenu() {
Glcd_Fill(0x00);
Glcd_Write_Text("Kazanç Ayarı", 5, 0, 1);
Glcd_Write_Text("Toprak Ayarı", 5, 2, 1);
Glcd_Write_Text("Metal Tespit", 5, 4, 1);
}

// 📌 Ana Program
void main() {
TRISB = 0xFF; // Butonlar ve Faz Sinyali Giriş
TRISA = 0xFF; // ADC Giriş
TRISC = 0x00; // LED ve Buzzer Çıkış

InitPWM();
InitGLCD();
ShowMenu();

while (1) {
if (BTN_UP) {
CalibrateGround(); // Toprak Ayarı Yap
ShowMenu();
}
if (BTN_ENTER) {
DetectMetal(); // Metal Tespit Et
}
}
}

MikroC Kodu (EEPROM Kaydetme ve Yükleme)

cKopyalaDüzenle// GÖKTÜRK Pulse 3 - EEPROM ile Ayar Saklama
// MikroC Pro - PIC18F452

#include <built_in.h>
#include "GLCD.h" // Winstar WG12864 LCD Kütüphanesi

// 📌 Sabitler
#define PWM_FREQ 8000 // PWM Frekansı (8kHz)
#define ADC_CHANNEL 0 // ADC Kanalı (Faz ölçümü için)
#define PHASE_PIN PORTB.F5 // Faz sinyali girişi
#define BUZZER PORTC.F1 // Buzzer çıkışı
#define LED_RED PORTC.F2 // Kırmızı LED (Demir)
#define LED_GREEN PORTC.F3 // Yeşil LED (Altın)
#define LED_BLUE PORTC.F4 // Mavi LED (Gümüş)

// 📌 EEPROM Adresleri
#define EEPROM_GAIN 0x00 // Kazanç Seviyesi EEPROM Adresi
#define EEPROM_GROUND 0x02 // Toprak Referansı EEPROM Adresi

// 📌 Değişkenler
unsigned int adcValue = 0;
unsigned int phaseDelay = 0;
unsigned int groundLevel = 0; // Toprak Referansı
unsigned char gainLevel = 5; // Kazanç Seviyesi (1-10)
char buffer[16];

// 📌 EEPROM’dan Veri Okuma
unsigned int EEPROM_ReadInt(unsigned char address) {
unsigned int value = EEPROM_Read(address);
value |= ((unsigned int)EEPROM_Read(address + 1)) << 8;
return value;
}

// 📌 EEPROM’a Veri Yazma
void EEPROM_WriteInt(unsigned char address, unsigned int value) {
EEPROM_Write(address, value & 0xFF);
EEPROM_Write(address + 1, (value >> 8) & 0xFF);
Delay_ms(10); // EEPROM yazma gecikmesi
}

// 📌 EEPROM’dan Ayarları Geri Yükleme
void LoadSettings() {
gainLevel = EEPROM_Read(EEPROM_GAIN);
if (gainLevel < 1 || gainLevel > 10) gainLevel = 5; // Geçerli aralıkta değilse varsayılana dön

groundLevel = EEPROM_ReadInt(EEPROM_GROUND);
if (groundLevel == 0xFFFF) groundLevel = 0; // EEPROM boşsa sıfırla
}

// 📌 Kazanç Seviyesini Kaydetme
void SaveGainLevel() {
EEPROM_Write(EEPROM_GAIN, gainLevel);
}

// 📌 Toprak Ayarını Kaydetme
void SaveGroundLevel() {
EEPROM_WriteInt(EEPROM_GROUND, groundLevel);
}

// 📌 PWM Başlatma (Bobin Sinyali Üretimi)
void InitPWM() {
TRISC.F2 = 0; // PWM çıkışı (CCP1)
CCP1CON = 0x0C; // PWM modu seçimi
PR2 = (_XTAL_FREQ / (PWM_FREQ * 4)) - 1;
T2CON = 0x04; // Timer2 Başlat
CCPR1L = PR2 / 2; // %50 Duty Cycle
}

// 📌 ADC ile Faz Kayması Ölçümü
unsigned int ReadADC() {
ADCON0 = (ADC_CHANNEL << 2) | 0x01; // ADC Kanal Seçimi ve Açma
Delay_us(20);
GO_DONE_bit = 1;
while (GO_DONE_bit); // Ölçüm tamamlanana kadar bekle
return (ADRESH << 8) | ADRESL; // ADC sonucu
}

// 📌 Faz Gecikmesini Ölçme
unsigned int MeasurePhaseDelay() {
TMR1H = 0; TMR1L = 0; // Timer1 sıfırla
T1CON = 0x01; // Timer1 başlat

while (!PHASE_PIN); // Faz sinyalini bekle
T1CON = 0x00; // Timer1 durdur

return (TMR1H << 8) | TMR1L; // Timer süresini oku
}

// 📌 Metal Ayrımı (Toprak Referansına Göre)
void DetectMetal() {
phaseDelay = MeasurePhaseDelay();

Glcd_Fill(0x00);
Glcd_Write_Text("Metal Tespit:", 5, 0, 1);

BUZZER = 0; LED_RED = 0; LED_GREEN = 0; LED_BLUE = 0;

// 📌 Toprak Referansını Kullanarak Metal Tespiti
if (phaseDelay < groundLevel + 500) {
Glcd_Write_Text("Demir", 5, 2, 1);
BUZZER = 1; LED_RED = 1;
} else if (phaseDelay < groundLevel + 1000) {
Glcd_Write_Text("Altin", 5, 2, 1);
BUZZER = 1; LED_GREEN = 1;
} else {
Glcd_Write_Text("Gumus", 5, 2, 1);
BUZZER = 1; LED_BLUE = 1;
}

Delay_ms(1000);
BUZZER = 0;
}

// 📌 Toprak Ayarı ve Kalibrasyon
void CalibrateGround() {
Glcd_Fill(0x00);
Glcd_Write_Text("Toprak Ayari...", 5, 0, 1);

groundLevel = MeasurePhaseDelay(); // Toprak sinyalini kaydet
SaveGroundLevel(); // EEPROM'a kaydet

Glcd_Write_Text("Tamamlandi", 5, 2, 1);
Delay_ms(1000);
}

// 📌 Ana Menü
void ShowMenu() {
Glcd_Fill(0x00);
Glcd_Write_Text("Kazanç Ayarı", 5, 0, 1);
Glcd_Write_Text("Toprak Ayarı", 5, 2, 1);
Glcd_Write_Text("Metal Tespit", 5, 4, 1);
}

// 📌 Ana Program
void main() {
TRISB = 0xFF; // Butonlar ve Faz Sinyali Giriş
TRISA = 0xFF; // ADC Giriş
TRISC = 0x00; // LED ve Buzzer Çıkış

LoadSettings(); // EEPROM’dan ayarları yükle

InitPWM();
InitGLCD();
ShowMenu();

while (1) {
if (BTN_UP) {
CalibrateGround(); // Toprak Ayarı Yap
ShowMenu();
}
if (BTN_ENTER) {
DetectMetal(); // Metal Tespit Et
}
}
}

Menü Yapısı

rKopyalaDüzenle📌 1. KAZANÇ AYARI
📌 2. TOPRAK AYARI
📌 3. METAL TESPİTİ (Grafikli)
📌 4. DERİNLİK ÖLÇÜMÜ
📌 5. HASSASİYET MODU


MikroC Kodu (Gelişmiş Menü ve Grafik Eklendi)
c
Kopyala
Düzenle
// GÖKTÜRK Pulse 3- Gelişmiş Menü ve Grafikli Metal Tespiti
// MikroC Pro - PIC18F452

#include <built_in.h>
#include "GLCD.h" // Winstar WG12864 LCD Kütüphanesi

// 📌 Sabitler
#define PWM_FREQ 8000 // PWM Frekansı (8kHz)
#define ADC_CHANNEL 0 // ADC Kanalı (Faz ölçümü için)
#define PHASE_PIN PORTB.F5 // Faz sinyali girişi
#define BUZZER PORTC.F1 // Buzzer çıkışı
#define LED_RED PORTC.F2 // Kırmızı LED (Demir)
#define LED_GREEN PORTC.F3 // Yeşil LED (Altın)
#define LED_BLUE PORTC.F4 // Mavi LED (Gümüş)

// 📌 Menü Elemanları
#define MENU_COUNT 5
const char* menuItems[MENU_COUNT] = {"Kazanç Ayari", "Toprak Ayari", "Metal Tespit", "Derinlik Olcumu", "Hassasiyet Modu"};
unsigned char menuIndex = 0; // Şu an seçili menü
unsigned char sensitivityLevel = 5; // Hassasiyet Seviyesi (1-10)

// 📌 Değişkenler
unsigned int adcValue = 0;
unsigned int phaseDelay = 0;
unsigned int groundLevel = 0; // Toprak Referansı
unsigned char gainLevel = 5; // Kazanç Seviyesi (1-10)
char buffer[16];

// 📌 Menü Ekranını Güncelleme
void ShowMenu() {
Glcd_Fill(0x00); // Ekranı temizle
for (char i = 0; i < MENU_COUNT; i++) {
if (i == menuIndex) {
Glcd_Write_Text(">>", 0, i, 1); // Seçili menü öğesine ok işareti koy
}
Glcd_Write_Text(menuItems[i], 10, i, 1);
}
}

// 📌 Grafiksel Metal Algılama (Çubuk Grafik)
void ShowMetalStrengthBar(unsigned int strength) {
Glcd_Fill(0x00);
Glcd_Write_Text("Metal Tespit:", 5, 0, 1);

// Çubuk Grafik Çizimi (Max 10 birim)
unsigned char barLength = strength / 100;
if (barLength > 10) barLength = 10;

for (char i = 0; i < barLength; i++) {
Glcd_Box(10 + (i * 8), 20, 16 + (i * 8), 30, 1);
}
}

// 📌 Metal Ayrımı
void DetectMetal() {
phaseDelay = MeasurePhaseDelay();

BUZZER = 0; LED_RED = 0; LED_GREEN = 0; LED_BLUE = 0;

// 📌 Metalin Faz Gecikmesine Göre Türünü Belirleme
if (phaseDelay < groundLevel + 500) {
ShowMetalStrengthBar(300);
BUZZER = 1; LED_RED = 1;
} else if (phaseDelay < groundLevel + 1000) {
ShowMetalStrengthBar(700);
BUZZER = 1; LED_GREEN = 1;
} else {
ShowMetalStrengthBar(1000);
BUZZER = 1; LED_BLUE = 1;
}

Delay_ms(1000);
BUZZER = 0;
}

// 📌 Hassasiyet Ayarı
void SetSensitivity() {
Glcd_Fill(0x00);
Glcd_Write_Text("Hassasiyet:", 5, 0, 1);
IntToStr(sensitivityLevel, buffer);
Glcd_Write_Text(buffer, 80, 0, 1);
}

// 📌 Menü İşlemleri
void HandleMenuSelection() {
switch (menuIndex) {
case 0: // Kazanç Ayarı
gainLevel = (gainLevel < 10) ? gainLevel + 1 : 1;
SaveGainLevel();
break;
case 1: // Toprak Ayarı
CalibrateGround();
break;
case 2: // Metal Tespiti
DetectMetal();
break;
case 3: // Derinlik Ölçümü
ShowMetalStrengthBar(phaseDelay);
break;
case 4: // Hassasiyet Ayarı
sensitivityLevel = (sensitivityLevel < 10) ? sensitivityLevel + 1 : 1;
SetSensitivity();
break;
}
ShowMenu();
}

// 📌 Ana Program
void main() {
TRISB = 0xFF; // Butonlar ve Faz Sinyali Giriş
TRISA = 0xFF; // ADC Giriş
TRISC = 0x00; // LED ve Buzzer Çıkış

LoadSettings(); // EEPROM’dan ayarları yükle

InitPWM();
InitGLCD();
ShowMenu();

while (1) {
if (BTN_UP) {
menuIndex = (menuIndex > 0) ? menuIndex - 1 : MENU_COUNT - 1;
ShowMenu();
Delay_ms(300);
}
if (BTN_DOWN) {
menuIndex = (menuIndex < MENU_COUNT - 1) ? menuIndex + 1 : 0;
ShowMenu();
Delay_ms(300);
}
if (BTN_ENTER) {
HandleMenuSelection();
}
}
}

MikroC Kodu (Bluetooth HC-05 Desteği)
c
Kopyala
Düzenle
// GÖKTÜRK Pulse 3 - Bluetooth (HC-05) ile Kablosuz Veri Gönderme
// MikroC Pro - PIC18F452

#include <built_in.h>
#include "GLCD.h"

// 📌 Sabitler
#define PWM_FREQ 8000
#define ADC_CHANNEL 0
#define PHASE_PIN PORTB.F5
#define BUZZER PORTC.F1
#define LED_RED PORTC.F2
#define LED_GREEN PORTC.F3
#define LED_BLUE PORTC.F4

// 📌 Menü
#define MENU_COUNT 5
const char* menuItems[MENU_COUNT] = {"Kazanç Ayari", "Toprak Ayari", "Metal Tespit", "Derinlik Olcumu", "Hassasiyet Modu"};
unsigned char menuIndex = 0;

// 📌 Bluetooth HC-05 (UART) Ayarları
void InitBluetooth() {
UART1_Init(9600); // 9600 baud hızında başlat
Delay_ms(100);
}

// 📌 Bluetooth ile Bilgi Gönderme
void SendBluetoothData(char* data) {
UART1_Write_Text(data);
UART1_Write(13); // Satır sonu (Enter)
}

// 📌 Metal Ayrımı
void DetectMetal() {
unsigned int phaseDelay = MeasurePhaseDelay();

BUZZER = 0; LED_RED = 0; LED_GREEN = 0; LED_BLUE = 0;

if (phaseDelay < groundLevel + 500) {
SendBluetoothData("Metal: Demir");
BUZZER = 1; LED_RED = 1;
} else if (phaseDelay < groundLevel + 1000) {
SendBluetoothData("Metal: Altin");
BUZZER = 1; LED_GREEN = 1;
} else {
SendBluetoothData("Metal: Gumus");
BUZZER = 1; LED_BLUE = 1;
}

Delay_ms(1000);
BUZZER = 0;
}

// 📌 Bluetooth Komutlarını Okuma
void ReadBluetoothCommand() {
if (UART1_Data_Ready()) {
char command = UART1_Read();
if (command == 'M') DetectMetal(); // 'M' komutu alınırsa Metal Tespiti başlat
if (command == 'U') menuIndex = (menuIndex > 0) ? menuIndex - 1 : MENU_COUNT - 1; // Yukarı Menü
if (command == 'D') menuIndex = (menuIndex < MENU_COUNT - 1) ? menuIndex + 1 : 0; // Aşağı Menü
}
}

// 📌 Ana Program
void main() {
TRISB = 0xFF;
TRISA = 0xFF;
TRISC = 0x00;

InitBluetooth();
InitPWM();
InitGLCD();
ShowMenu();

while (1) {
ReadBluetoothCommand();

if (BTN_UP) {
menuIndex = (menuIndex > 0) ? menuIndex - 1 : MENU_COUNT - 1;
ShowMenu();
Delay_ms(300);
}
if (BTN_DOWN) {
menuIndex = (menuIndex < MENU_COUNT - 1) ? menuIndex + 1 : 0;
ShowMenu();
Delay_ms(300);
}
if (BTN_ENTER) {
HandleMenuSelection();
}
}
}

MikroC Kodu (ESP8266 Wi-Fi Desteği)

cKopyalaDüzenle// GÖKTÜRK Pulse 3 - ESP8266 Wi-Fi ile Uzaktan Kontrol
// MikroC Pro - PIC18F452

#include <built_in.h>
#include "GLCD.h"

// 📌 ESP8266 Wi-Fi Ayarları
#define WIFI_SSID "WiFi_Agina_Adi"
#define WIFI_PASS "WiFi_Sifreniz"
#define SERVER_IP "192.168.1.100" // Web sunucunuzun IP adresi
#define SERVER_PORT "80"

// 📌 Seri Haberleşme Başlatma
void InitWiFi() {
UART1_Init(9600);
Delay_ms(2000);

// 📡 ESP8266'yı Wi-Fi'ye bağlama
UART1_Write_Text("AT+RST\r\n"); // Modülü resetle
Delay_ms(2000);
UART1_Write_Text("AT+CWMODE=1\r\n"); // Wi-Fi istemci modunda çalıştır
Delay_ms(2000);

// 📶 Wi-Fi ağına bağlan
UART1_Write_Text("AT+CWJAP=\"" WIFI_SSID "\",\"" WIFI_PASS "\"\r\n");
Delay_ms(5000);
}

// 📌 Wi-Fi ile Metal Tespit Verisini Sunucuya Gönderme
void SendDataToServer(char* metalType) {
char command[100];

// 📡 Sunucuya bağlan
sprintf(command, "AT+CIPSTART=\"TCP\",\"%s\",%s\r\n", SERVER_IP, SERVER_PORT);
UART1_Write_Text(command);
Delay_ms(2000);

// 🌍 HTTP isteği oluştur
sprintf(command, "GET /metal_log.php?metal=%s HTTP/1.1\r\nHost: %s\r\n\r\n", metalType, SERVER_IP);

// 📩 Veriyi gönder
UART1_Write_Text("AT+CIPSEND=");
IntToStr(strlen(command), command);
UART1_Write_Text(command);
UART1_Write_Text("\r\n");
Delay_ms(1000);

UART1_Write_Text(command);
Delay_ms(2000);

// 🔌 Bağlantıyı kapat
UART1_Write_Text("AT+CIPCLOSE\r\n");
Delay_ms(1000);
}

// 📌 Metal Ayrımı ve Wi-Fi ile Veri Gönderme
void DetectMetal() {
unsigned int phaseDelay = MeasurePhaseDelay();

BUZZER = 0; LED_RED = 0; LED_GREEN = 0; LED_BLUE = 0;

if (phaseDelay < groundLevel + 500) {
Glcd_Write_Text("Metal: Demir", 5, 2, 1);
SendDataToServer("Demir");
BUZZER = 1; LED_RED = 1;
} else if (phaseDelay < groundLevel + 1000) {
Glcd_Write_Text("Metal: Altin", 5, 2, 1);
SendDataToServer("Altin");
BUZZER = 1; LED_GREEN = 1;
} else {
Glcd_Write_Text("Metal: Gumus", 5, 2, 1);
SendDataToServer("Gumus");
BUZZER = 1; LED_BLUE = 1;
}

Delay_ms(1000);
BUZZER = 0;
}

// 📌 Wi-Fi Üzerinden Komut Okuma
void ReadWiFiCommand() {
if (UART1_Data_Ready()) {
char command = UART1_Read();
if (command == 'M') DetectMetal(); // 'M' komutu alınırsa Metal Tespiti başlat
if (command == 'U') menuIndex = (menuIndex > 0) ? menuIndex - 1 : MENU_COUNT - 1; // Yukarı Menü
if (command == 'D') menuIndex = (menuIndex < MENU_COUNT - 1) ? menuIndex + 1 : 0; // Aşağı Menü
}
}

// 📌 Ana Program
void main() {
TRISB = 0xFF;
TRISA = 0xFF;
TRISC = 0x00;

InitWiFi();
InitPWM();
InitGLCD();
ShowMenu();

while (1) {
ReadWiFiCommand();

if (BTN_UP) {
menuIndex = (menuIndex > 0) ? menuIndex - 1 : MENU_COUNT - 1;
ShowMenu();
Delay_ms(300);
}
if (BTN_DOWN) {
menuIndex = (menuIndex < MENU_COUNT - 1) ? menuIndex + 1 : 0;
ShowMenu();
Delay_ms(300);
}
if (BTN_ENTER) {
HandleMenuSelection();
}
}
}

Web Arayüzü

💻 Cihazın verilerini bir web sayfasında görmek için bir PHP dosyası yazabiliriz.
Eğer “metal_log.php” gibi bir API dosyası yazmak istersen, aşağıdaki gibi olabilir:

phpKopyalaDüzenle<?php
$metal = $_GET['metal'];
file_put_contents("log.txt", date("Y-m-d H:i:s") . " - Metal: " . $metal . "\n", FILE_APPEND);
echo "OK";
?>

Bütünleşik MikroC Program Kodu

cKopyalaDüzenle// GÖKTÜRK Pulse 3 - PIC18F452 Tümleşik Program
// MikroC Pro for PIC

#include <built_in.h>
#include "GLCD.h"

// 📌 Sabit Tanımlar
#define PWM_FREQ 8000
#define ADC_CHANNEL 0
#define PHASE_PIN PORTB.F5
#define BUZZER PORTC.F1
#define LED_RED PORTC.F2
#define LED_GREEN PORTC.F3
#define LED_BLUE PORTC.F4

// 📌 Menü
#define MENU_COUNT 5
const char* menuItems[MENU_COUNT] = {"Kazanç Ayari", "Toprak Ayari", "Metal Tespit", "Derinlik Olcumu", "Hassasiyet Modu"};
unsigned char menuIndex = 0;

// 📌 EEPROM Adresleri
#define EEPROM_GAIN 0x00
#define EEPROM_GROUND 0x02

// 📌 Wi-Fi (ESP8266) Ayarları
#define WIFI_SSID "WiFi_Agina_Adi"
#define WIFI_PASS "WiFi_Sifreniz"
#define SERVER_IP "192.168.1.100"
#define SERVER_PORT "80"

// 📌 Değişkenler
unsigned int adcValue = 0;
unsigned int phaseDelay = 0;
unsigned int groundLevel = 0;
unsigned char gainLevel = 5;
char buffer[16];

// 📌 EEPROM Fonksiyonları
unsigned int EEPROM_ReadInt(unsigned char address) {
return EEPROM_Read(address) | ((unsigned int)EEPROM_Read(address + 1) << 8);
}
void EEPROM_WriteInt(unsigned char address, unsigned int value) {
EEPROM_Write(address, value & 0xFF);
EEPROM_Write(address + 1, (value >> 8) & 0xFF);
Delay_ms(10);
}
void LoadSettings() {
gainLevel = EEPROM_Read(EEPROM_GAIN);
if (gainLevel < 1 || gainLevel > 10) gainLevel = 5;
groundLevel = EEPROM_ReadInt(EEPROM_GROUND);
if (groundLevel == 0xFFFF) groundLevel = 0;
}

// 📌 Wi-Fi Başlatma
void InitWiFi() {
UART1_Init(9600);
Delay_ms(2000);
UART1_Write_Text("AT+RST\r\n");
Delay_ms(2000);
UART1_Write_Text("AT+CWMODE=1\r\n");
Delay_ms(2000);
UART1_Write_Text("AT+CWJAP=\"" WIFI_SSID "\",\"" WIFI_PASS "\"\r\n");
Delay_ms(5000);
}

// 📌 Wi-Fi ile Sunucuya Veri Gönderme
void SendDataToServer(char* metalType) {
char command[100];
sprintf(command, "AT+CIPSTART=\"TCP\",\"%s\",%s\r\n", SERVER_IP, SERVER_PORT);
UART1_Write_Text(command);
Delay_ms(2000);
sprintf(command, "GET /metal_log.php?metal=%s HTTP/1.1\r\nHost: %s\r\n\r\n", metalType, SERVER_IP);
UART1_Write_Text("AT+CIPSEND=");
IntToStr(strlen(command), command);
UART1_Write_Text(command);
UART1_Write_Text("\r\n");
Delay_ms(1000);
UART1_Write_Text(command);
Delay_ms(2000);
UART1_Write_Text("AT+CIPCLOSE\r\n");
Delay_ms(1000);
}

// 📌 Metal Tespiti ve Gönderimi
void DetectMetal() {
phaseDelay = MeasurePhaseDelay();
BUZZER = 0; LED_RED = 0; LED_GREEN = 0; LED_BLUE = 0;

if (phaseDelay < groundLevel + 500) {
Glcd_Write_Text("Metal: Demir", 5, 2, 1);
SendDataToServer("Demir");
BUZZER = 1; LED_RED = 1;
} else if (phaseDelay < groundLevel + 1000) {
Glcd_Write_Text("Metal: Altin", 5, 2, 1);
SendDataToServer("Altin");
BUZZER = 1; LED_GREEN = 1;
} else {
Glcd_Write_Text("Metal: Gumus", 5, 2, 1);
SendDataToServer("Gumus");
BUZZER = 1; LED_BLUE = 1;
}

Delay_ms(1000);
BUZZER = 0;
}

// 📌 Bluetooth ve Wi-Fi Komutları Okuma
void ReadWirelessCommand() {
if (UART1_Data_Ready()) {
char command = UART1_Read();
if (command == 'M') DetectMetal();
if (command == 'U') menuIndex = (menuIndex > 0) ? menuIndex - 1 : MENU_COUNT - 1;
if (command == 'D') menuIndex = (menuIndex < MENU_COUNT - 1) ? menuIndex + 1 : 0;
}
}

// 📌 Menü Gösterme
void ShowMenu() {
Glcd_Fill(0x00);
for (char i = 0; i < MENU_COUNT; i++) {
if (i == menuIndex) {
Glcd_Write_Text(">>", 0, i, 1);
}
Glcd_Write_Text(menuItems[i], 10, i, 1);
}
}

// 📌 Ana Program
void main() {
TRISB = 0xFF;
TRISA = 0xFF;
TRISC = 0x00;

LoadSettings();
InitWiFi();
InitGLCD();
ShowMenu();

while (1) {
ReadWirelessCommand();

if (BTN_UP) {
menuIndex = (menuIndex > 0) ? menuIndex - 1 : MENU_COUNT - 1;
ShowMenu();
Delay_ms(300);
}
if (BTN_DOWN) {
menuIndex = (menuIndex < MENU_COUNT - 1) ? menuIndex + 1 : 0;
ShowMenu();
Delay_ms(300);
}
if (BTN_ENTER) {
HandleMenuSelection();
}
}
}

Ekran açılışında şu metin gösterilecek:

mathematicaKopyalaDüzenle📢 Türkiye SD  
Model: DİKİCİ25
GÖKTÜRK Pulse 3
Başlatılıyor...


MikroC Kodu (Açılış Ekranı Eklendi)
c
Kopyala
Düzenle
// GÖKTÜRK Pulse 3 - PIC18F452 Tam Sürüm
// MikroC Pro for PIC

#include <built_in.h>
#include "GLCD.h"

// 📌 Açılış Ekranı Fonksiyonu
void ShowStartupScreen() {
Glcd_Fill(0x00); // Ekranı temizle
Glcd_Write_Text("Türkiye SD", 20, 0, 1);
Glcd_Write_Text("Model: DİKİCİ25", 10, 1, 1);
Glcd_Write_Text("GÖKTÜRK Pulse 3", 10, 3, 1);
Glcd_Write_Text("Baslatiliyor...", 10, 5, 1);
Delay_ms(3000); // 3 saniye bekle
}

// 📌 Ana Menü Fonksiyonu
void ShowMenu() {
Glcd_Fill(0x00);
for (char i = 0; i < MENU_COUNT; i++) {
if (i == menuIndex) {
Glcd_Write_Text(">>", 0, i, 1);
}
Glcd_Write_Text(menuItems[i], 10, i, 1);
}
}

// 📌 Ana Program
void main() {
TRISB = 0xFF;
TRISA = 0xFF;
TRISC = 0x00;

LoadSettings();
InitWiFi();
InitGLCD();

ShowStartupScreen(); // 📢 Açılış Ekranı Göster
ShowMenu(); // 📌 Ana Menüye Geç

while (1) {
ReadWirelessCommand();

if (BTN_UP) {
menuIndex = (menuIndex > 0) ? menuIndex - 1 : MENU_COUNT - 1;
ShowMenu();
Delay_ms(300);
}
if (BTN_DOWN) {
menuIndex = (menuIndex < MENU_COUNT - 1) ? menuIndex + 1 : 0;
ShowMenu();
Delay_ms(300);
}
if (BTN_ENTER) {
HandleMenuSelection();
}
}
}

MikroC Kodu (GÖKTÜRK Metal Dedektörü)

cKopyalaDüzenle// GÖKTÜRK Metal Dedektörü - PIC18F452 Tam Sürüm
// MikroC Pro for PIC

#include <built_in.h>
#include "GLCD.h"

// 📌 Açılış Ekranı Fonksiyonu
void ShowStartupScreen() {
    Glcd_Fill(0x00);  // Ekranı temizle
    Glcd_Write_Text("Türkiye SD", 20, 0, 1);
    Glcd_Write_Text("Model: GÖKTÜRK", 10, 1, 1);
    Glcd_Write_Text("Gelişmiş Metal Dedektörü", 5, 3, 1);
    Glcd_Write_Text("Baslatiliyor...", 10, 5, 1);
    Delay_ms(3000);  // 3 saniye bekle
}

// 📌 Ana Menü Fonksiyonu
void ShowMenu() {
    Glcd_Fill(0x00);
    for (char i = 0; i < MENU_COUNT; i++) {
        if (i == menuIndex) {
            Glcd_Write_Text(">>", 0, i, 1);
        }
        Glcd_Write_Text(menuItems[i], 10, i, 1);
    }
}

// 📌 Ana Program
void main() {
    TRISB = 0xFF;  
    TRISA = 0xFF;  
    TRISC = 0x00;  
    
    LoadSettings();  
    InitWiFi();
    InitGLCD();
    
    ShowStartupScreen();  // 📢 Açılış Ekranı Göster
    ShowMenu();  // 📌 Ana Menüye Geç
    
    while (1) {
        ReadWirelessCommand();
        
        if (BTN_UP) {
            menuIndex = (menuIndex > 0) ? menuIndex - 1 : MENU_COUNT - 1;
            ShowMenu();
            Delay_ms(300);
        }
        if (BTN_DOWN) {
            menuIndex = (menuIndex < MENU_COUNT - 1) ? menuIndex + 1 : 0;
            ShowMenu();
            Delay_ms(300);
        }
        if (BTN_ENTER) {
            HandleMenuSelection();
        }
    }
}

  • Gönderiler/Makaleler/Tezler

    Yapay Zeka Destekli Konteyner Kontrolü:

    UNODC CCP Modelinin Geliştirilmesinde Makine Öğrenmesi Yaklaşımlarının Rolü ÖzetKüresel ticaretin %90’ından fazlası denizyolu ile gerçekleştirilmektedir. Bu büyük hacimli tücaret trafiği, suç örgütleri tarafından yasa dışı malların (uyuşturucu, silah, sahte ürünler,…

    UNODC Container Control Programme (CCP): Küresel Ticaretin Güvenliği İçin Stratejik Bir Model

    Özet Uluslararası ticaretin önemli bir bölümünün konteyner taşımacılığıyla yürütülmesi, limanlar ve sınır kapılarını yasa dışı ticaret faaliyetleri açısından kritik noktalar haline getirmiştir. Bu bağlamda, Birleşmiş Milletler Uyuşturucu ve Suç Ofisi…

    Bir yanıt yazın

    E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

    Neler Kaçırdın?

    Yapay Zeka Destekli Konteyner Kontrolü:

    • By admin
    • Nisan 17, 2025
    • 13 views
    Yapay Zeka Destekli Konteyner Kontrolü:

    UNODC Container Control Programme (CCP): Küresel Ticaretin Güvenliği İçin Stratejik Bir Model

    • By admin
    • Nisan 17, 2025
    • 13 views
    UNODC Container Control Programme (CCP): Küresel Ticaretin Güvenliği İçin Stratejik Bir Model

    Uyuşturucu ve Silah Kaçakçılığı: Uluslararası Güvenlik Açısından Küresel Bir Tehdit

    • By admin
    • Nisan 17, 2025
    • 19 views
    Uyuşturucu ve Silah Kaçakçılığı: Uluslararası Güvenlik Açısından Küresel Bir Tehdit

    Trump: Amerika’nın Çöküşünü mü Tetikleyecek, Yoksa Onu Tekrar İstikrarlı Bir Güce mi Dönüştürecek?

    • By admin
    • Nisan 17, 2025
    • 24 views
    Trump: Amerika’nın Çöküşünü mü Tetikleyecek, Yoksa Onu Tekrar İstikrarlı Bir Güce mi Dönüştürecek?

    ÇİN / TAYVAN SORUNU

    • By admin
    • Nisan 17, 2025
    • 30 views
    ÇİN / TAYVAN SORUNU

    AMD Instinct MI300X: Yapay Zekâ ve HPC için Yeni Nesil Hızlandırıcı

    • By admin
    • Nisan 9, 2025
    • 72 views
    AMD Instinct MI300X: Yapay Zekâ ve HPC için Yeni Nesil Hızlandırıcı