Teknik Referans

Dokümantasyon

API referansı, firmware kılavuzu ve donanım entegrasyon rehberi.

DOCS

Genel Bakış

DPMV-1, Arduino Mega 2560 tabanlı sismik erken uyarı sistemidir. Sistem üç katmandan oluşur:

WEB KATMANI
depremvar.site — HTML/CSS/JS · Chart.js · REST API
API KÖPRÜSÜ
UART-HTTP Bridge · /api/v1/* · JSON Format
DONANIM KATMANI
Arduino Mega · SW-420 · MPU-6050 · I2C LCD

Hızlı Başlangıç

  1. Arduino Mega 2560'ı USB ile bilgisayara bağlayın.
  2. Firmware'i .dpmv dosyası olarak Dashboard > Firmware bölümünden yükleyin.
  3. UART bridge servisini başlatın: python3 bridge.py --port /dev/ttyUSB0
  4. http://localhost:5000 adresinden veya dashboard.html'den canlı veriye erişin.
# Bağlantı testi — API endpoint'ini doğrula curl -s http://depremvar.site/api/v1/data # Beklenen yanıt: { "val": 342, "alarm": false, "key": "UP" }

Donanım Kurulumu

PinBileşenBağlantıNot
A0SW-420Analog Giriş10k pull-down
SDA (20)MPU-6050I2C Data4.7k pull-up
SCL (21)MPU-6050I2C Clock4.7k pull-up
SDA (20)LCD PCF8574I2C DataAdres: 0x27
SCL (21)LCD PCF8574I2C ClockAdres: 0x27
5V / GNDTümüGüç500mA yeterli

GET /api/v1/data

Arduino'dan gelen anlık sismik veriyi döner. 10 Hz hızında güncellenir.

GET /api/v1/data
// Yanıt yapısı (JSON) { "val": 450, // ADC değeri (0–1023) "alarm": false, // Eşik aşıldı mı? "key": "UP" // Tuş durumu: "UP" | "ALT" | "---" }
AlanTipAçıklama
valintegerADC okuması, 0–1023 arası (10-bit)
alarmbooleanAlarm durumu — eşik aşıldığında true
keystringTuş modu: "UP" normal, "ALT" yüksek titreşim

POST /api/v1/command

Arduino'ya komut gönderir. Dashboard HMI butonları bu endpoint'i kullanır.

POST /api/v1/command
// İstek gövdesi { "command": "alarm", // "alarm" | "valve" | "reset" "ts": 1700000000000 // Unix timestamp (ms) } // Başarılı yanıt { "ok": true, "executed": "alarm" } // Hata yanıtı { "ok": false, "error": "UNKNOWN_COMMAND" }

GET /api/v1/status

{ "device": "Arduino Mega 2560", "firmware": "DPMV-FW-2.4.1", "uptime_s": 86400, "connected":true, "adc_hz": 10 }

Hata Kodları

HTTPKodAçıklama
200OKBaşarılı
503DEVICE_OFFLINEArduino bağlantısı yok
400UNKNOWN_COMMANDGeçersiz komut
429RATE_LIMITSaniyede max 20 istek

.dpmv Firmware Formatı

DPMV özel firmware dosya formatı. Dashboard > Firmware bölümünden yüklenebilir.

# .dpmv dosya yapısı (binary) Offset 0x00: DPMV magic bytes (4B) → 0x44 0x50 0x4D 0x56 Offset 0x04: Format version (1B) → 0x02 Offset 0x05: Target device ID (2B) → 0x0001 (ATmega2560) Offset 0x07: Firmware version (3B) → major.minor.patch Offset 0x0A: Build timestamp (4B) → Unix epoch Offset 0x0E: Binary size (bytes) (4B) Offset 0x12: CRC32 checksum (4B) Offset 0x16: AVR binary payload (N B)

Watchdog Timer

ATmega2560 donanım tabanlı Watchdog Timer, yazılım donmalarına karşı otomatik koruma sağlar.

// Firmware içinde Watchdog kurulumu (Arduino C++) #include <avr/wdt.h> void setup() { wdt_enable(WDTO_2S); // 2 saniye timeout } void loop() { wdt_reset(); // Her döngüde sıfırla readSensors(); sendUART(); }

SW-420 Titreşim Sensörü

ParametreDeğer
Çalışma voltajı3.3V – 5V DC
Çıkış tipiDijital (HIGH/LOW) + Analog
ADC çözünürlük10-bit (0–1023)
Eşik ayarıPotansiyometre + yazılım
Alarm eşiği (default)600 ADC

MPU-6050 IMU

ParametreDeğer
Eksen sayısı6 DOF (3 ivme + 3 jiro)
ProtokolI2C (SDA/SCL)
I2C Adresi0x68 (AD0=LOW)
Örnekleme hızı10 Hz (ayarlanabilir)
İvmemetre aralığı±2g / ±4g / ±8g / ±16g

I2C 20×4 LCD

HD44780 uyumlu 20 sütun × 4 satır LCD. PCF8574 I2C expander üzerinden bağlanır.

// LCD satır formatı (birebir web arayüzüyle senkron) Satır 1: "SISTEM:HAZIR HH:MM" (20 char) Satır 2: "VAL: 342 KEY:UP " (20 char) Satır 3: "ALARM:KAPALI " (20 char) Satır 4: "DEPREMVAR.SITE v2.4" (20 char)