Saffron POC - Edge Cihaz Bağlantı Kılavuzu
1. Genel Bakış
Bu kılavuz, Saffron POC sistemindeki tüm edge cihazların (sensörler, aktüatörler, kamera) nasıl bağlanacağını, yapılandırılacağını ve Kubernetes cluster'ına veri göndereceğini açıklar.
1.1 Cihaz Envanteri
| Kategori | Cihaz | Adet | Protokol | Kontrol Ünitesi |
|---|---|---|---|---|
| MCU | ESP32-S3-DevKitC-1 | 1 | WiFi/MQTT | Ana kontrolcü |
| SBC | Raspberry Pi 4 (4GB) | 1 | Ethernet/WiFi | Edge AI + Bridge |
| Sensör | SHT31-D (Sıcaklık/Nem) | 2 | I2C | ESP32 |
| Sensör | DS18B20 (Toprak Sıcaklık) | 4 | OneWire | ESP32 |
| Sensör | Capacitive Soil Moisture | 4 | Analog | ESP32 |
| Sensör | SCD41 (CO₂) | 1 | I2C | ESP32 |
| Sensör | TSL2591 (Işık/Lux) | 1 | I2C | ESP32 |
| Sensör | AS7341 (Spektrum) | 1 | I2C | ESP32 |
| Sensör | HC-SR04 (Su Seviyesi) | 1 | Digital | ESP32 |
| Aktüatör | LED Grow Light 200W | 1 | PWM (0-10V) | ESP32 |
| Aktüatör | PTC Heater 100W | 1 | SSR | ESP32 |
| Aktüatör | Peltier Cooler 60W | 1 | SSR | ESP32 |
| Aktüatör | Circulation Fan 80mm | 2 | PWM | ESP32 |
| Aktüatör | Exhaust Fan 120mm | 1 | PWM | ESP32 |
| Aktüatör | Peristaltic Pump | 1 | Relay | ESP32 |
| Kamera | USB Webcam 720p | 1 | USB | Raspberry Pi |
2. ESP32-S3 Pin Haritası
2.1 Fonksiyonel Pin Atamaları
| GPIO | Fonksiyon | Cihaz | Protokol | Notlar |
|---|---|---|---|---|
| I2C Bus | ||||
| GPIO15 | I2C SDA | SHT31, SCD41, TSL2591, AS7341 | I2C | 4.7kΩ pull-up gerekli |
| GPIO16 | I2C SCL | SHT31, SCD41, TSL2591, AS7341 | I2C | 4.7kΩ pull-up gerekli |
| OneWire Bus | ||||
| GPIO4 | OneWire Data | DS18B20 x4 | OneWire | 4.7kΩ pull-up gerekli |
| Analog Girişler (ADC) | ||||
| GPIO5 | ADC1_CH4 | Soil Moisture Sensor 1 | Analog | 0-3.3V |
| GPIO6 | ADC1_CH5 | Soil Moisture Sensor 2 | Analog | 0-3.3V |
| GPIO7 | ADC1_CH6 | Soil Moisture Sensor 3 | Analog | 0-3.3V |
| GPIO17 | ADC1_CH7 | Soil Moisture Sensor 4 | Analog | 0-3.3V |
| Dijital Girişler | ||||
| GPIO18 | Echo | HC-SR04 Ultrasonic | Digital | Voltage divider gerekli |
| Dijital Çıkışlar | ||||
| GPIO8 | Trigger | HC-SR04 Ultrasonic | Digital | 3.3V output |
| GPIO9 | SSR Control | Heater SSR | Digital | Active HIGH |
| GPIO10 | SSR Control | Cooler SSR | Digital | Active HIGH |
| GPIO11 | Relay Control | Water Pump | Digital | Active HIGH |
| PWM Çıkışlar | ||||
| GPIO12 | PWM CH0 | LED Grow Light (0-10V) | LEDC | 1kHz |
| GPIO13 | PWM CH1 | Circulation Fan 1 | LEDC | 25kHz |
| GPIO14 | PWM CH2 | Circulation Fan 2 | LEDC | 25kHz |
| GPIO21 | PWM CH3 | Exhaust Fan | LEDC | 25kHz |
2.2 I2C Adres Haritası
| Cihaz | I2C Adresi | Alternatif | Bağlantı |
|---|---|---|---|
| SHT31 #1 (Üst) | 0x44 | - | ADDR → GND |
| SHT31 #2 (Alt) | 0x45 | - | ADDR → VCC |
| SCD41 (CO₂) | 0x62 | - | Sabit |
| TSL2591 (Işık) | 0x29 | - | Sabit |
| AS7341 (Spektrum) | 0x39 | - | Sabit |
3. Sensör Bağlantıları
3.1 SHT31-D (Hava Sıcaklık/Nem)
Özellikler:
- Sıcaklık: -40°C to +125°C, ±0.3°C accuracy
- Nem: 0-100% RH, ±2% accuracy
- Interface: I2C (up to 1MHz)
- Besleme: 2.4V - 5.5V
ESPHome Konfigürasyonu:
sensor:
- platform: sht3xd
address: 0x44
temperature:
name: "Air Temperature Upper"
id: air_temp_upper
accuracy_decimals: 2
filters:
- offset: 0.0 # Kalibrasyon offset'i
humidity:
name: "Air Humidity Upper"
id: air_humidity_upper
update_interval: 10s
3.2 DS18B20 (Toprak Sıcaklık)
Özellikler:
- Range: -55°C to +125°C
- Accuracy: ±0.5°C (-10°C to +85°C)
- Interface: OneWire
- Besleme: 3.0V - 5.5V
ESPHome Konfigürasyonu:
one_wire:
- pin: GPIO4
sensor:
- platform: dallas_temp
address: 0x28FF1234567890A1
name: "Soil Temperature 1"
resolution: 12
update_interval: 30s
3.3 Capacitive Soil Moisture Sensor
Kalibrasyon:
- Kuru (havada): ~2.75V → 0%
- Islak (suda): ~1.35V → 100%
ESPHome Konfigürasyonu:
sensor:
- platform: adc
pin: GPIO5
name: "Soil Moisture 1"
unit_of_measurement: "%"
attenuation: 11db
filters:
- calibrate_linear:
- 2.75 -> 0
- 1.35 -> 100
- clamp:
min_value: 0
max_value: 100
3.4 SCD41 (CO₂ Sensör)
Özellikler:
- CO₂ Range: 400 - 5000 ppm
- Accuracy: ±(40ppm + 5%)
ESPHome Konfigürasyonu:
sensor:
- platform: scd4x
co2:
name: "CO2 Level"
temperature:
name: "SCD41 Temperature"
humidity:
name: "SCD41 Humidity"
automatic_self_calibration: true
update_interval: 30s
3.5 TSL2591 (Işık Sensör)
PPFD Hesaplama: PPFD = Lux × 0.018 (Full Spectrum LED için)
ESPHome Konfigürasyonu:
sensor:
- platform: tsl2591
calculated_lux:
name: "Illuminance"
id: illuminance
gain: auto
integration_time: 200ms
- platform: template
name: "PPFD Estimated"
lambda: 'return id(illuminance).state * 0.018;'
3.6 HC-SR04 (Su Seviyesi)
Dikkat: Echo pini 5V çıkış verir, voltage divider gerekli!
Echo ──┬──[1kΩ]──┬── GPIO18
│ │
└──[2kΩ]──┴── GND
4. Aktüatör Bağlantıları
4.1 LED Grow Light (200W, PWM)
Kontrol: ESP32 PWM → PWM-to-0-10V Converter → LED Driver
ESPHome:
output:
- platform: ledc
pin: GPIO12
id: led_pwm
frequency: 1000Hz
light:
- platform: monochromatic
name: "Grow Light"
output: led_pwm
gamma_correct: 1.0
4.2 Heater/Cooler (SSR Kontrol)
Bağlantı: GPIO → SSR DC Input → AC Load
ESPHome:
switch:
- platform: gpio
pin: GPIO9
name: "Heater"
id: heater_switch
4.3 PWM Fanlar
4-wire fan: 25kHz PWM gerekli
ESPHome:
output:
- platform: ledc
pin: GPIO13
id: fan_pwm
frequency: 25000Hz
fan:
- platform: speed
name: "Circulation Fan"
output: fan_pwm
speed_count: 100
4.4 Peristaltic Pump
Kalibrasyon: 1ml ≈ 633ms (pompaya göre değişir)
ESPHome:
script:
- id: dispense_water
parameters:
ml: int
then:
- switch.turn_on: water_pump
- delay: !lambda 'return ml * 633;'
- switch.turn_off: water_pump
5. MQTT Protokolü
5.1 Topic Yapısı
saffron/
├── sensors/
│ ├── temperature/air/upper
│ ├── temperature/soil/1-4
│ ├── humidity/air/upper
│ ├── humidity/soil/1-4
│ ├── co2
│ ├── light/lux
│ └── water/level
├── actuators/
│ ├── led/brightness
│ ├── heater/state
│ ├── cooler/state
│ ├── fan/circulation
│ └── pump/state
├── command/
│ ├── led/brightness
│ ├── heater/state
│ └── pump/dispense
└── status/
├── online
├── heartbeat
└── error
5.2 QoS ve Retention
| Topic | QoS | Retain |
|---|---|---|
| sensors/# | 0 | false |
| actuators/# | 1 | true |
| command/# | 1 | false |
| status/online | 1 | true |
6. Güç Dağıtımı
6.1 Güç Tüketimi Tablosu
| Cihaz | Voltaj | Güç (Max) |
|---|---|---|
| LED Grow Light | 24V DC | 200W |
| PTC Heater | 220V AC | 100W |
| Peltier Cooler | 12V DC | 60W |
| Fans (x3) | 12V DC | 22W |
| Water Pump | 12V DC | 6W |
| ESP32 + RPi | 5V DC | 18W |
| TOPLAM | - | ~407W |
6.2 Güç Kaynakları
- AC→24V: Mean Well LRS-150-24 (LED)
- AC→12V: Mean Well LRS-75-12 (Fanlar, Pompa, Peltier)
- AC→5V: USB-C PD 65W (ESP32, RPi)
7. Kalibrasyon Prosedürleri
7.1 Sıcaklık Sensörleri
- Referans termometre ile karşılaştır
- 15 dakika termal denge bekle
- Offset hesapla ve ESPHome'a ekle
7.2 Toprak Nem Sensörleri
- Kuru nokta: Sensörü havada tut → ADC değerini kaydet
- Islak nokta: Sensörü suya daldır → ADC değerini kaydet
- calibrate_linear filter'a ekle
7.3 CO₂ Sensör
- Otomatik: ASC aktif (haftalık)
- Manuel: Dış ortamda forced calibration (420ppm)
7.4 Pompa Kalibrasyonu
- Pompayı 60 saniye çalıştır
- Toplanan suyu ölç
- ms/ml hesapla: 1000 / (ml/sn)
8. Sorun Giderme
8.1 Bağlantı Sorunları
| Sorun | Kontrol | Çözüm |
|---|---|---|
| WiFi bağlanmıyor | SSID/şifre, 2.4GHz mi? | Fallback AP kullan |
| MQTT bağlanmıyor | Port 1883 açık mı? | Broker'ı kontrol et |
| I2C cihaz yok | Pull-up var mı? | 4.7kΩ ekle |
8.2 Sensör Sorunları
| Sorun | Olası Neden | Çözüm |
|---|---|---|
| SHT31 NaN | I2C hatası | Heater'ı aktifle |
| DS18B20 -127°C | Pull-up yok | 4.7kΩ ekle |
| DS18B20 85°C | İlk okuma | Tekrar oku |
| Soil sensor kararsız | Parazit | Ferrit boncuk |
8.3 Hata Kodları
| Kod | Açıklama | Aksiyon |
|---|---|---|
| E001 | Sıcaklık >35°C | Isıtıcı kapat |
| E002 | Sıcaklık <5°C | Soğutucu kapat |
| E003 | Sıcaklık sapması | PID ayarla |
| E004 | Nem >80% | Fan aç |
| E007 | Su tankı düşük | Doldur |
| E008 | Sensör hatası | Bağlantı kontrol |
9. Güvenlik
Kontrol Listesi
- AC bağlantıları izoleli ve topraklı
- SSR'ler heatsink ile monte
- Sigorta değerleri doğru
- Kablolar uygun kesitte
- Acil durdurma butonu erişilebilir
- Topraklama sağlam