Başlangıç
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ıç
- Arduino Mega 2560'ı USB ile bilgisayara bağlayın.
- Firmware'i
.dpmvdosyası olarak Dashboard > Firmware bölümünden yükleyin. - UART bridge servisini başlatın:
python3 bridge.py --port /dev/ttyUSB0 http://localhost:5000adresinden 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" | "---"
}
| Alan | Tip | Açıklama |
|---|---|---|
val | integer | ADC okuması, 0–1023 arası (10-bit) |
alarm | boolean | Alarm durumu — eşik aşıldığında true |
key | string | Tuş 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ı
| HTTP | Kod | Açıklama |
|---|---|---|
| 200 | OK | Başarılı |
| 503 | DEVICE_OFFLINE | Arduino bağlantısı yok |
| 400 | UNKNOWN_COMMAND | Geçersiz komut |
| 429 | RATE_LIMIT | Saniyede 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ü
| Parametre | Değer |
|---|---|
| Çalışma voltajı | 3.3V – 5V DC |
| Çıkış tipi | Dijital (HIGH/LOW) + Analog |
| ADC çözünürlük | 10-bit (0–1023) |
| Eşik ayarı | Potansiyometre + yazılım |
| Alarm eşiği (default) | 600 ADC |
MPU-6050 IMU
| Parametre | Değer |
|---|---|
| Eksen sayısı | 6 DOF (3 ivme + 3 jiro) |
| Protokol | I2C (SDA/SCL) |
| I2C Adresi | 0x68 (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)