Arkadaşlar merhaba, bu yazımızda Esp32 cam ve blynk ile akıllı kapı sistemi uygulaması yapacağız. Bu uygulama sayesinde zile basıldığı zaman  fotoğraf çekecek ve telefonunuzdaki blynk uygulamasına bu fotoğrafı gönderecektir.

ESP32 Cam

ESP32 CAM, ESP32 WİFİ Bluetooth geliştirme kartı ve OV2640 kamera modülünü bir arada kullanabileceğiniz bir modüldür. Akıllı ev otomasyonu, yüz tanıma projeleri ve kameraya ihtiyaç duyduğunuz çoğu uygulamada kullanabileceğiniz bu modül, üzerinde bulunan MicroSD kart girişi sayesinde çekilen görüntüleri kaydedebilir.

Blynk Uygulaması

Blynk Nesnelerin İnterneti için tasarlanmış, donanımı uzaktan kontrol edebilen, sensör verilerini görüntüleyebilen, veri depolayabilen bir uygulamadır. Uygulamanın kurulumu ve daha detaylı anlatım için “NodeMCU Blynk projesi nedir?” yazımızı okumanızı tavsiye ederiz.

Proje için Blynk Uygulaması Ayarları

  • New Project dedikten sonra ESP32 Dev Board’ı seçiyoruz.
  • Projemize ımage galery ve buton seçeneklerini ekliyoruz
  • Image galery V1 e ve Buton’umuzu gpio 14  pinine ayarlıyoruz.
  • Auth Tokens kodunu kopyalayarak yada email yoluyla alıp, projemizdeki kodumuza ekliyoruz.

ESP32Cam Devre Şeması

ESP32Cam devre semasi
ESP32Cam devre semasi

Devre ile ilgili detaylara videodan ulaşabilirsiniz.

Akıllı Kapı Sistemi Kodlar

ZİP dosyasını indirerek kodlara ve eklentilere ulaşabilirsiniz. “ESP32CAM_Blynk_TakePhoto_v1.1

//While Uploading Code on ESP32 Board 1, comment the lines number: 17,36 and Uncomment lines: 16,35
#include "esp_camera.h"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h >
// Select camera model
#define CAMERA_MODEL_AI_THINKER // Has PSRAM
#include "camera_pins.h"
#define PHOTO 14 //ESP32 CAM 1
#define LED 4
#define buzzer 2
const char* ssid = "…….."; //wifi name
const char* password = "……"; //password
char auth[] = "OeEX1CmnGKDP-ddspBqy_3u-IbWZ5a2L"; //Auth Code sent by Blynk
String local_IP;
int count = 0;
void startCameraServer();
void takePhoto()
{
digitalWrite(LED, HIGH);
delay(200);
uint32_t randomNum = random(50000);
Serial.println("http://"+local_IP+"/capture?_cb="+ (String)randomNum);
Blynk.setProperty(V1, "urls", "http://"+local_IP+"/capture?_cb="+(String)randomNum); //ESP32 CAM 1
digitalWrite(LED, LOW);
delay(1000);
}
void buzzerFunction(int toneCode)
{
if(toneCode==1)
{
digitalWrite(buzzer,HIGH);
delay(50);
digitalWrite(buzzer,LOW);
delay(100);
digitalWrite(buzzer,HIGH);
delay(50);
digitalWrite(buzzer,LOW);
}
else if(toneCode==2)
{
digitalWrite(buzzer,HIGH);
delay(200);
digitalWrite(buzzer,LOW);
delay(100);
digitalWrite(buzzer,HIGH);
delay(200);
digitalWrite(buzzer,LOW);
delay(100);
digitalWrite(buzzer,HIGH);
delay(200);
digitalWrite(buzzer,LOW);
}
}
void setup() {
Serial.begin(115200);
pinMode(LED,OUTPUT);
pinMode(buzzer,OUTPUT);
Serial.setDebugOutput(true);
Serial.println();
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
// if PSRAM IC present, init with UXGA resolution and higher JPEG quality
// for larger pre-allocated frame buffer.
if(psramFound()){
config.frame_size = FRAMESIZE_UXGA;
config.jpeg_quality = 10;
config.fb_count = 2;
} else {
config.frame_size = FRAMESIZE_SVGA;
config.jpeg_quality = 12;
config.fb_count = 1;
}
// camera init
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x", err);
return;
}
sensor_t * s = esp_camera_sensor_get();
// initial sensors are flipped vertically and colors are a bit saturated
if (s->id.PID == OV3660_PID) {
s->set_vflip(s, 1); // flip it back
s->set_brightness(s, 1); // up the brightness just a bit
s->set_saturation(s, –2); // lower the saturation
}
// drop down frame size for higher initial frame rate
s->set_framesize(s, FRAMESIZE_QVGA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
startCameraServer();
Serial.print("Camera Ready! Use 'http://");
Serial.print(WiFi.localIP());
local_IP = WiFi.localIP().toString();
Serial.println("' to connect");
Blynk.begin(auth, ssid, password);
buzzerFunction(1);
}
void loop() {
// put your main code here, to run repeatedly:
Blynk.run();
if(digitalRead(PHOTO) == HIGH){
takePhoto();
buzzerFunction(2);
}
}

4 YORUMLAR

    • muhtemelen arduino ya bağlamadan yapmaya çalışmışsın bu yüzdeb seri port ekranından ip adresi gelmiyordur kartı arduino’ya bağlayıp bir daha bakmanı öneririm

  1. Hocam merhaba. Daha önce blynk uygulaması kullanarak akıllı kapı zili yapmıştınız. Şimdi blynk uygulaması güncellendiği için çok değişiklikler oldu. Acaba yeni blynk uygulaması kullanarak akıllı kapı zili yapa bilir misiniz? Ve ya bana bu konuda yardımcı olursanız sevinirim

  2.  Hocam iyi akşamlar, ESP 32 CAM ile proje yapıyorum ama verdiği IP adresine girdiğimde yüz tanıma yapmıyor. seri port ekranında 
    E (22188) ledc: ledc_set_duty(720): LEDC is not initialized hatası veriyor. Verdiği İP adresinde face detection yapamıyorum. Bu konuda yardımcı olabilir misiniz?

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz