Şimdi Ara

deneyap kart a1 v2 kameradan videoyu sd karta kaydetme

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4
Cevap
0
Favori
284
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Deneyap 1a v2 kartında kamera kullanarak elde ettiğimiz görüntüyü yine kart üzerinde bulunan sd kart yuvasındaki sd karta depolamasını istiyorum ,bunun kodu nasıl olmalı yardımcı olabilir misiniz?

    sd kartın example kodunu boş çalıştırdığımda (kamera vs.bağlamadan),kart okuma başarısız hatası alıyorum




  • #include "esp_camera.h"

    #include <SD.h>

    #include <SPI.h>


    #define SD_CS    11  // D18 (SDCS)

    #define SD_CLK   13  // D16 (SDCK)

    #define SD_MOSI  12  // D17 (SDMO)

    #define SD_MISO  14  // D19 (SDMI)


    SPIClass spiSD(FSPI);

    uint16_t photoNumber = 0;


    void cameraInit(void);

    void savePhotoToSD();

    uint16_t getLastPhotoNumber();


    void setup() {

      Serial.begin(115200);

      Serial.setDebugOutput(true);

      Serial.println();


      // Kamera başlat

      cameraInit();


      // SD kart başlat

      spiSD.begin(SD_CLK, SD_MISO, SD_MOSI, SD_CS);

      if (!SD.begin(SD_CS, spiSD)) {

        Serial.println("SD Kart bulunamadi veya baslatilamadi!");

        while (true); // Dur

      }

      Serial.println("SD Kart basariyla baslatildi!");


      // 'photos' klasörünü oluştur (yoksa)

      if (!SD.exists("/photos")) {

        SD.mkdir("/photos");

        Serial.println("'photos' klasoru olusturuldu.");

      } else {

        Serial.println("'photos' klasoru bulundu.");

      }


      // En son foto numarasını bul

      photoNumber = getLastPhotoNumber() + 1;

      Serial.printf("Son foto numarasi: %d -> Baslangic: %d\n", photoNumber - 1, photoNumber);

    }


    void loop() {

      // Her 5 saniyede bir foto kaydet

      savePhotoToSD();

      delay(5000);

    }


    void savePhotoToSD() {

      camera_fb_t* fb = esp_camera_fb_get();

      if (!fb) {

        Serial.println("Foto cekilemedi");

        return;

      }


      char filename[64];

      sprintf(filename, "/photos/photo_%05d.jpg", photoNumber);

      Serial.printf("Kaydediliyor: %s\n", filename);


      File file = SD.open(filename, FILE_WRITE);

      if (!file) {

        Serial.println("Dosya acilamadi");

        esp_camera_fb_return(fb);

        return;

      }


      file.write(fb->buf, fb->len);

      Serial.printf("Foto kaydedildi, boyut: %u byte\n", fb->len);


      file.close();

      esp_camera_fb_return(fb);

      photoNumber++;

    }


    void cameraInit(void) {

      camera_config_t config;

      config.ledc_channel = LEDC_CHANNEL_0;

      config.ledc_timer = LEDC_TIMER_0;

      config.pin_d0 = CAMD2;

      config.pin_d1 = CAMD3;

      config.pin_d2 = CAMD4;

      config.pin_d3 = CAMD5;

      config.pin_d4 = CAMD6;

      config.pin_d5 = CAMD7;

      config.pin_d6 = CAMD8;

      config.pin_d7 = CAMD9;

      config.pin_xclk = CAMXC;

      config.pin_pclk = CAMPC;

      config.pin_vsync = CAMV;

      config.pin_href = CAMH;

      config.pin_sscb_sda = CAMSD;

      config.pin_sscb_scl = CAMSC;

      config.pin_pwdn = -1;

      config.pin_reset = -1;

      config.xclk_freq_hz = 15000000;

      config.frame_size = FRAMESIZE_UXGA;       // TAM kalite

      config.pixel_format = PIXFORMAT_JPEG;     // JPEG formatında

      config.grab_mode = CAMERA_GRAB_LATEST;    // En yeni kareyi al

      config.fb_location = CAMERA_FB_IN_PSRAM;  // PSRAM kullan

      config.jpeg_quality = 10;                 // 10 kalite (yüksek)

      config.fb_count = 2;


      esp_err_t err = esp_camera_init(&config);

      if (err != ESP_OK) {

        Serial.printf("Camera init failed with error 0x%x", err);

        while (true); // Dur

      }


      sensor_t* s = esp_camera_sensor_get();

      s->set_framesize(s, FRAMESIZE_UXGA);  // 1600x1200

    }


    uint16_t getLastPhotoNumber() {

      File root = SD.open("/photos");

      if (!root || !root.isDirectory()) {

        Serial.println("Klasor acilamadi veya klasor degil!");

        return 0;

      }


      uint16_t maxNumber = 0;

      File file = root.openNextFile();

      while (file) {

        String name = String(file.name());

        Serial.printf("Bulundu: %s\n", name.c_str());


        if (name.indexOf("photo_") >= 0 && name.endsWith(".jpg")) {

          int idx1 = name.indexOf("photo_") + 6;

          int idx2 = name.indexOf(".jpg");

          if (idx2 > idx1) {

            String numStr = name.substring(idx1, idx2);

            int num = numStr.toInt();

            if (num > maxNumber) {

              maxNumber = num;

            }

          }

        }


        file = root.openNextFile();

      }


      Serial.printf("Bulunan en buyuk foto numarasi: %d\n", maxNumber);

      return maxNumber;

    }


    Deneyap kart 1a v2 nin detaylı pin özelliklerinde nerelere bağlı olduğuna bakarak sd karta her 5 saniyede en yüksek kalitede görsel kaydedecek bir kod hazırladım ama kodu yüklerken Partition Scheme'yı Huge app seçmeyi unutma





  • abdullahyilar0 kullanıcısına yanıt

    Forumda neden daha fazla aktif değilsiniz?

    Çok güzel fikri paylaşımlar, tartışmalar olurdu.

  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.