Smart Door Bell

by jansennathanael03 in Circuits > Cameras

250 Views, 1 Favorites, 0 Comments

Smart Door Bell

IMG_20230626_194731_361.jpg

Sekarang keamanan merupakan suatu hal yang sangat penting tentunya. jadi kelompok kami ingin membuat sebuah alat yaitu smart door lock. alat ini bisa digunakan untuk mencegah hal hal yang tidak diinginkan terjadi. Jika ada yang menekan bel rumah, kita bisa melihat siapa yang ada didepan pintu menggunakan aplikasi di smartphone kita. Selain itu, alat ini bisa merekam dan menyimpannya. Jadi ketika terjadi hal yang tidak diinginkan kita bisa melihat rekaman ulang tersebut. selain itu alat kami juga bisa membuka pintu menggunakan smartphone jadi ini dapat membantu tentunya.


Arkannabil pratama 2501986832

Jansen nathanael 2501960114

Jonathan suhalim 2501974782

Supplies

ESP32-CAM

IC 7805

Relay module 5V DC

Solenoid lock 12V

adapter 12V

button

kabel jumper

breadboard

Siapkan Alat Dan Bahan

siapkan semua alat dan bahan yang diperlukan.

Rancang Rangkaian

schematik.jpg

Rancang rangkaian untuk device yang ingin dibuat di easyEDA.

Implementasikan Rangkaian Di Breadboard

sesudah merancang rangkaian, implementasikan rangkaian tersebut ke breadboard.

Upload Code Ke ESP32-cAM

Setelah merangkai rangkaian di breadboard kita bisa mengetest rangkaian tersebut dengan mengupload code yang sudah kita buat lalu kita build dan upload ke esp32-cam.

Test Rangkaian

untuk mengetest rangkaian yang kita punya, sesudah kita mengupload code ke ESP32_CAM kita harus menyambungkan power supply 12V. Kita menggunakan power supply 12V karena Solenoid lock yang kita gunakan memerlukan power sebesar 12 volt. setelah kita menyambungkan power supply yang kita gunakan, kita harus mengetest apakah semua rangkaian nya sudah berjalan dengan benar. jika sudah berjalan dengan benar kita bisa lanjut ke step berikut nya.

Setup Firebase

Screenshot 2023-06-27 225129.jpg
  1. Masuk ke dalam link berikut “ https://firebase.google.com/ “ sign in menggunakan akun google
  2. Kliklah “Get Started” dan lanjut ke “Add Project” dan langsung selanjutnya ke “Create Project” (opsi “Analytics” tidak perlu untuk di accept). Lanjut sampai memasuki “Project Overview”


Project Firebase telah dibuat, selanjutnya kita harus membuat fitur Authentication, untuk membuat fitur Authentication, ikutilah tahap - tahap berikut:

  1. Bukalah sidebar di kiri dan klik “Authentication” dan langsung klik “Get Started”.
  2. Kliklah opsi “Email/Password” dan memastikan kalau opsi tersebut telah dalam mode on, selanjutnya klik “save”
  3. Selanjutnya dalam tab menu “Authentication”, di dalam page “Users”, klik “Add User” dan input Email dan Password sesuai user. Setelah di input, lanjut dengan “Add User”, user tersebut akan masuk ke dalam user yang telah registerasi.


Fitur Authentication telah di setup, selanjutnya kita harus membuat storage bucket untuk file yang kita upload, untuk membuat fitur Storage Bucket, ikutilah tahap - tahap berikut:

  1. Bukalah sidebar di kiri dan klik “Storage” dan langsung klik “Get Started”.
  2. Klik “Start in test mode” dan “next”
  3. Pilih lokasi storage tersebut dan klik “done”


Fitur Storage Bucket telah di setup, selanjutnya kita harus membuat Realtime Database, untuk membuat Realtime Database, ikutilah tahap - tahap berikut:

  1. Bukalah sidebar di kiri dan klik “Database” dan langsung klik “Get Started”.
  2. Klik “Start in test mode” dan “next”
  3. Pilih lokasi database tersebut dan klik “done”
  4. Di dalam “Database List”, klik “Realtime Database”
  5. Realtime Database sudah di setup, Jangan lupa untuk menyimpan “Secret Key” dan “Project Name” anda yang ada di tab “Data”


Setelah semua telah di setup, Klik tombol “Setting” yang berbentuk gear di bawah logo Firebase dan klik “project Setting. Simpanlah Web API Key anda yang ada di tab General.



Test Alat

IMG_20230626_194731_361.jpg

setelah sudah melakukan semua step diatas kita bisa mengetes apakah alat kita sudah tersambung ke firebase dan juga sudah berfungsi dengan baik.

CODE

void setup(): Dipanggil sekali ketika ESP-32CAM dinyalakan atau direset. Fungsi ini menginisialisasi berbagai komponen dan layanan, seperti mengatur mode pin, menginisialisasi WiFi, SPIFFS (SPI Flash File System), kamera, Firebase, dan SMTP. Ini juga melakukan inisialisasi yang terkait dengan otentikasi Firebase dan mengonfigurasi fungsi callback untuk proses pembuatan token.


void loop(): Dijalankan berulang kali setelah fungsi setup(). Berisi logika utama program dan bertanggung jawab untuk mengambil foto, memeriksa penekanan tombol, mengirim email, dan berinteraksi dengan Firebase. Ini terus-menerus memeriksa status tombol, mengambil foto saat tombol ditekan, menyimpan foto ke sistem file SPIFFS, mengirim pemberitahuan email dengan foto sebagai lampiran, dan mengupload foto ke Firebase Storage. Fungsi ini juga mengambil status kunci dari Firebase Realtime Database dan mengontrol lock eksternal berdasarkan status yang diterima.


void capturePhotoSaveSpiffs(): Mengambil foto menggunakan modul kamera OV2640 dan menyimpannya ke sistem file SPIFFS. Fungsi ini mengambil gambar dari kamera, menulis data gambar ke file bernama "photo.jpg" di SPIFFS, dan memeriksa apakah file tersebut berhasil disimpan.


void notification(): Mengirimkan notifikasi email menggunakan SMTP. Fungsi ini mengonfigurasi sesi SMTP, mengatur informasi pengirim dan penerima, dan mengirimkan pesan HTML yang berisi tautan ke foto yang diambil dan disimpan di Penyimpanan Firebase.


void initWiFi(): Menginisialisasi koneksi WiFi dengan menyambungkan ke jaringan yang ditentukan menggunakan kredensial yang disediakan (SSID dan kata sandi).


void initSPIFFS(): Menginisialisasi sistem berkas SPIFFS. Fungsi ini memasang SPIFFS dan memeriksa apakah operasi pemasangan berhasil.


void initCamera(): Mengaktifkan modul kamera (OV2640) dengan mengonfigurasi pin, resolusi, kualitas JPEG, dan pengaturan lainnya.


bool checkPhoto(fs::FS &fs): Mengecek apakah foto berhasil diambil dengan membuka file "photo.jpg" di SPIFFS dan memverifikasi ukurannya.


void smtpCallback(status SMTP_Status): Berfungsi sebagai callback untuk status SMTP. Fungsi ini dipanggil dengan status operasi pengiriman email, sehingga memungkinkan untuk melakukan tindakan lebih lanjut berdasarkan hasilnya.

Link Video Demo Produk Dan Link Code

TR IOT JONATHAN JANSEN ARKAN

https://github.com/Jansennath/TR-IoT/tree/main/src