Daftar Isi:

Kamera Raspberry PI dan Kontrol Cahaya Death Star: 5 Langkah (dengan Gambar)
Kamera Raspberry PI dan Kontrol Cahaya Death Star: 5 Langkah (dengan Gambar)

Video: Kamera Raspberry PI dan Kontrol Cahaya Death Star: 5 Langkah (dengan Gambar)

Video: Kamera Raspberry PI dan Kontrol Cahaya Death Star: 5 Langkah (dengan Gambar)
Video: SULTAN MEDAN INDRAKENZ NAIK JET PRIBADI KE PULAU PRIBADI!! 2024, Juli
Anonim
Kamera Raspberry PI dan Kontrol Cahaya Death Star
Kamera Raspberry PI dan Kontrol Cahaya Death Star
Kamera Raspberry PI dan Kontrol Cahaya Death Star
Kamera Raspberry PI dan Kontrol Cahaya Death Star
Kamera Raspberry PI dan Kontrol Cahaya Death Star
Kamera Raspberry PI dan Kontrol Cahaya Death Star

Seperti biasa saya mencari untuk membangun perangkat yang berguna, bekerja dengan kuat dan bahkan sering kali merupakan peningkatan dibandingkan dengan solusi yang ada saat ini.

Ini adalah proyek hebat lainnya, awalnya bernama Shadow 0f Phoenix, perisai Raspberry PI bersama dengan deteksi gerakan dan kontrol cahaya berbasis Arduino.

Langkah 1: Keadaan Kamera IP Komersial

Keadaan Kamera IP Komersial
Keadaan Kamera IP Komersial
Keadaan Kamera IP Komersial
Keadaan Kamera IP Komersial
Keadaan Kamera IP Komersial
Keadaan Kamera IP Komersial

Selain itu membangun sistem kamera/pengawasan Anda sendiri lebih keren mari kita lihat mengapa ini merupakan peningkatan dari solusi yang sudah ada.

Saya akan membandingkannya dengan seri NEO COOLCAM Full HD 1080P Wireless IP Camera karena saya telah memiliki banyak dari berbagai model kamera neo coolcams (ONVIF) ini. Mereka datang dalam berbagai bentuk dan ukuran, di luar ruangan dan di dalam ruangan, kebanyakan dari mereka telah membangun dukungan wifi tetapi mari kita lihat peringatan mereka:

  • Pabrikan Cina yang menjual kamera ini hampir selalu berbohong tentang resolusi sensor gambar bawaan, ketika Anda membeli kamera 5MP/8MP di Ebay, Anda mungkin mendapatkan kamera 2MP murah dengan gambar buruk (berfungsi tetapi kualitasnya sampah). Ketika Anda membeli kamera 8MP Raspberry PI v2 dari pengecer asli, Anda akan mendapatkan apa yang Anda bayar dan sensor 8MP aktual dengan resolusi 3280 × 2464 piksel =>
  • Dari sudut pandang keamanan, kamera ini (bahkan Dlink yang lebih mahal dan model lainnya) sangat buruk, mereka menggunakan kata sandi default seperti 123456 atau pengguna bawaan seperti admin/operator/operator admin yang mungkin tidak dapat Anda ubah atau perubahan hilang setelah reboot. Lengkapi dengan banyak kamera telepon rumah ini (sambungkan ke server mereka di Cina, beberapa bahkan streaming kembali video/gambar tanpa meminta Anda hanya untuk membuatnya lebih mudah jika Anda memutuskan untuk menginstal aplikasi Android/Iphone mereka suatu hari nanti untuk memeriksa Anda rumah). Bahkan jika Anda meletakkan perangkat ini di belakang router, itu tidak cukup baik, yang terbaik adalah jika Anda tidak mengatur gateway default di dalamnya, firewall keluar atau masukkan ke VLAN untuk membuatnya tidak mungkin keluar Internet atau bahkan lebih baik: jangan gunakan sama sekali.
  • Apakah mereka lebih dapat diandalkan? tidak, banyak dari mereka bahkan DLINK yang lebih mahal memiliki opsi untuk me-reboot kamera setiap hari/mingguan dll. Opsi itu ada karena suatu alasan, karena setelah X hari mereka sering kehilangan konektivitas Wifi atau berperilaku tidak semestinya dengan cara lain. Anggap saja mereka sebagai kotak Win95 tua yang bagus yang perlu di-boot ulang lebih sering daripada tidak:) Saya tidak mengatakan bahwa perangkat keras berbasis Raspi sangat kokoh sehingga Anda dapat membangunnya menjadi pembangkit listrik tenaga nuklir kontrol tetapi dengan perangkat keras/lunak yang tepat konfigurasi, heatsink, kipas pendingin otomatis dan operasi RW yang diminimalkan pada SDCARD, mereka dapat dengan mudah mencapai waktu kerja 100+ hari tanpa masalah. Pada saat penulisan DeathStar saya berjalan sejak 34 hari, sudah lebih dari 100 tetapi kadang-kadang saya meretas feed di sumber daya yang memberi daya pada beberapa sirkuit saya sehingga harus mematikannya:(
  • Perangkat keras yang ditargetkan: mereka dibuat untuk 1 tujuan tertentu, sering kali datang dengan area nvram kecil dan busybox tetapi beberapa model membuat akses shell ini tidak mungkin juga sehingga Anda dapat menggunakannya untuk apa yang dimaksudkan untuk digunakan selama Anda bisa gunakan kamera berbasis Raspi Anda untuk tugas lain apa pun: server file, server tftp/dhcp, server web, server gempa … opsinya tidak terbatas.
  • Ruang penyimpanan: mereka tidak memilikinya atau mereka menggunakan kartu microsd dengan sistem file FAT32 VS pada raspberry pis Anda bahkan dapat memasang hard drive 2 TB jika Anda mau.
  • Mengontrol lampu: beberapa memang memiliki output ALARM di mana Anda mungkin dapat menghubungkan relai kecil untuk memicu lampu. Seperti yang akan saya tunjukkan dalam tutorial ini menggunakan kamera inframerah benar-benar membuang-buang waktu karena Anda tidak akan dapat mengidentifikasi siapa pun pada gambar IR karena kualitasnya yang buruk. Jika Anda perlu merekam video dalam gelap, cara terbaik untuk melakukannya adalah menyalakan lampu terlebih dahulu lalu merekam video.

Jadi Anda mungkin bertanya apakah ada PRO menggunakan kamera off the shelf? Ya untuk bisnis di mana jam kerja untuk mengaturnya akan lebih mahal daripada bermain-main dengan Raspberry pis (bukan untuk saya:)) dan ya ada kamera kelas atas (500$+ dengan resolusi lebih baik daripada kamera pi kursus). Sebagai keuntungan lain, saya dapat mengatakan bahwa kamera yang mengikuti standar ONVIF membuat penyediaan terpusat menjadi lebih mudah. Ini menyediakan antarmuka standar yang dapat digunakan untuk mengirim perintah ke kamera untuk mengatur IP/Network mask/Gateway dan hal lainnya. Untuk ini, Anda dapat mengunduh pengelola perangkat Onvif dari Sourceforge. Banyak dari perangkat ini datang dengan frontend web rusak yang buruk di mana misalnya tidak memungkinkan Anda untuk mengatur ip atau netmask dengan benar karena javascript yang memvalidasi bidang ini tidak berfungsi dan satu-satunya cara Anda untuk mengatur parameter ini dengan benar adalah melalui ONVIF.

Langkah 2: Rencana Bintang Kematian

Rencana Bintang Kematian
Rencana Bintang Kematian
Rencana Bintang Kematian
Rencana Bintang Kematian
Rencana Bintang Kematian
Rencana Bintang Kematian

Anda dapat membuat perangkat ini dengan Raspberry PI mana pun mulai dari 1 hingga 3B+. Bahkan nol memiliki port kamera, tetapi karena ada begitu banyak raspis bekas yang tersedia di pasaran, Anda mungkin bertanya-tanya mana yang paling ideal untuk build ini.

Jawabannya tergantung di mana Anda ingin memproses streaming video.

Ada dua pilihan:

1, Proses video secara lokal dengan gerakan dan teruskan aliran video ketika ada gerakan yang terdeteksi (catatan: gerakan meneruskan aliran konstan yang lambat ke server, apa pun yang terjadi, ini dapat bergantung pada resolusi dan kecepatan bingkai yang Anda gunakan mulai dari beberapa ratus megabyte hingga beberapa gigabyte sehari, hanya pengingat jika Anda ingin melakukan pengaturan pada koneksi terukur). Di sini CPU penting dan sayangnya gerakan (pada saat penulisan) tidak memanfaatkan banyak inti, namun OS akan mencoba sedikit menyeimbangkan beban. Anda akan selalu memiliki salah satu inti pada penggunaan 100%.

2, Memproses video di server pusat: di sini Anda cukup meneruskan streaming video mentah dari kamera ke server streaming eksternal (seperti iSpy yang berjalan di komputer x86 atau MotionEyeOS yang berjalan di komputer mini khusus lainnya). Karena tidak ada pemrosesan secara lokal, model PI yang Anda gunakan tidak masalah, PI1 akan mengirimkan aliran yang sama dengan PI3B+.

Dalam tutorial ini saya akan pergi dengan pilihan pertama.

Aturan praktis di sini adalah bahwa semakin cepat CPU yang Anda lemparkan, semakin baik hasil yang akan Anda dapatkan. Misalnya kamera berbasis Raspi 2 saya yang melihat koridor terkadang tidak menangkapnya ketika seseorang lewat dengan cepat dan ketika sedang merekam rekamannya lamban, menjatuhkan banyak bingkai dibandingkan dengan model 3. Model 3 juga memiliki 802.11 abgn wifi yang berguna untuk dapat melakukan streaming video berkualitas lebih tinggi, berfungsi di luar kotak dan cukup andal. Pada saat penulisan bahwa model 3B+ sudah keluar, saya hanya akan merekomendasikan Anda mendapatkannya dengan cpu Quad Core 1,4 Ghz.

Daftar bahan

  • DeathStar plastik 30 cm:)
  • Raspberry Pi 3 B+
  • PiCam v2 (8MP)
  • Arduino Pro Mikro 5.5v
  • 2x SIP-1A05 Reed Switch Reed
  • 1x PCS HC-SR501 IR Piroelektrik Inframerah IR PIR Sensor Gerak Detektor Modul
  • 1x resistor 10kohm untuk LDR
  • 1x LDR
  • Adaptor DC 1x12V 4A
  • 1xWarm White LED 5050 SMD Lampu Lampu Fleksibel Strip 12V DC
  • 1xBuck pengatur tegangan

Seperti yang Anda lihat pada skema proyek ini pada awalnya dirancang untuk mengontrol satu lampu dengan satu relai karena saya tidak berencana menambahkan pencahayaan internal (yang cukup keren) jadi saya hanya memasang relai kedua ke Arduino. Hal yang hebat tentang SIP-1A05 adalah ia memiliki dioda flyback internal dan konsumsi dalam mA jauh di bawah batasan daya per pin Arduino.

Alasan mengapa PIR ada di perisai pada gambar karena pada awalnya S0P direncanakan untuk dimasukkan ke dalam kotak plastik IP sederhana, bukan DeathStar. Seperti yang Anda duga, kamera berada langsung di pistol laser, PIR dan LDR membutuhkan lubang bor lain dan mereka menggunakan lem karena saya tidak berencana untuk melepasnya.

Sebuah lubang dibor di bagian bawah DeathStar tempat saya merekatkan baut besar dengan lem 2 komponen yang kuat. Ini dapat disekrup ke dudukan Neo Coolcams asli (bagaimanapun juga itu bagus untuk sesuatu:)). Untuk dukungan tambahan, saya menggunakan kabel tembaga keras untuk menahan bagian atas bintang.

Catatan penting tentang catu daya: karena catu daya yang sama akan memberi daya pada PI, Arduino, dan strip LED, ia harus cukup kuat untuk dapat menangani semuanya sehingga akan didasarkan pada strip LED yang Anda pilih untuk proyek tersebut. Strip LED 5050 12v 3meter komersial mengalirkan sekitar 2A, itu banyak. Untuk PI dan Arduino Anda harus menghitung dalam +2A (meskipun ini terlalu besar tidak ada salahnya). Menggunakan strip LED di atas bohlam halogen standar, neon, atau penerangan berdaya tinggi lainnya adalah Anda dapat menempatkan seluruh rangkaian ini pada baterai asam timbal 12V@10Ah yang bagus sebagai cadangan sehingga bahkan akan berfungsi jika terjadi pemadaman listrik.

Uang akan menurunkan tegangan dari 12-> 5V untuk memberi daya pada Arduino dan PI sementara umpan 12V langsung dihubungkan ke relai untuk menyalakan strip LED.

Langkah 3: Perangkat Lunak Arduino

Perangkat Lunak Arduino
Perangkat Lunak Arduino

Anda dapat menemukan kode sumber lengkap di bawah yang dikomentari dengan baik tetapi di sini adalah penjelasan singkat cara kerjanya: Pada awal setiap loop, fungsi xcomm() biasa dipanggil untuk melihat apakah ada perintah yang berasal dari Raspberry PI yang bisa LIGHT_ON/OFF untuk menyalakan lampu koridor atau DS_ON/OFF untuk menghidupkan/mematikan backlight DeathStar, saya telah menerapkan ini hanya demi kesempurnaan karena jika seseorang melewati PIR harus mengambilnya dan menyalakannya lampu tapi mungkin Anda ingin melihat tempat itu untuk beberapa alasan bahkan ketika tidak ada orang di sana.

Setelah ini nilai fotosel dibaca dan pin gerak diperiksa untuk gerak. Jika ada gerakan kode memeriksa apakah cukup gelap kemudian memeriksa apakah kita tidak ditahan. Jika semua ini berlalu maka itu hanya menyalakan lampu koridor dan mengirim kembali PHOENIX_MOTION_DETECTED ke Raspberry PI, jika tidak cukup gelap masih memberi sinyal kembali ke komputer tetapi tidak menyalakan lampu. Setelah gerakan terdeteksi, timer tahan 5 menit dimulai.

Tepat setelah ini, bagian kode berikutnya akan memeriksa untuk melihat apakah kita ditahan (yang seharusnya terjadi jika hanya ada peristiwa gerak, jadi mari kita asumsikan 5 menit berlalu sehingga pemeriksaan ini dapat mengonfirmasi). Kode memeriksa untuk melihat apakah ada gerakan lagi, jika tidak maka matikan lampu. Seperti yang Anda lihat jika tidak ada gerakan, fungsi ini akan berulang berulang kali terus mencoba mematikan lampu sehingga tidak ada umpan balik ke PC.

Kami memiliki pengatur waktu tahan lain untuk pencahayaan internal DeathStar yang murni bergantung pada photocellReading < dark_limit.

Meskipun 2 rutinitas tidak saling mengenal, mereka akan bekerja bersama dengan sempurna karena ketika lampu koridor menyala, itu memberikan banyak cahaya sehingga LDR akan berpikir itu siang hari lagi dan mematikan pencahayaan internal. Namun ada beberapa peringatan tentang proses ini yang dijelaskan dalam kode jika Anda tertarik, jika tidak maka ambil jawaban Nvidia bahwa "itu hanya berfungsi!".

Langkah 4: Perangkat Lunak Raspberry PI

Perangkat Lunak Raspberry PI
Perangkat Lunak Raspberry PI
Perangkat Lunak Raspberry PI
Perangkat Lunak Raspberry PI
Perangkat Lunak Raspberry PI
Perangkat Lunak Raspberry PI

Raspbian terbaru berfungsi untuk saya:

Raspbian GNU/Linux 9.4 (peregangan)

Linux Phoenix 4.9.35-v7+ #1014 SMP Jum 30 Jun 14:47:43 BST 2017 armv7l GNU/Linux ii motion 4.0-1 armhf V4L capture program mendukung deteksi gerakan

Meskipun Anda dapat menggunakan distro lain, jika Anda mengalami masalah dengan kamera, Anda hanya akan mendapatkan dukungan dari tim jika Anda menggunakan OS resmi mereka. Menghapus bloatware yang tidak diinginkan seperti systemd juga sangat dianjurkan.

Gerakan juga dapat dibangun dari sumber dengan mudah:

apt-get -y install autoconf automake pkgconf libtool libjpeg8-dev build-essential libzip-dev apt-get install libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libavdevice-dev

apt-get -y install libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libavdevice-dev apt-get -y install git git clone https://github.com/Motion-Project/motion cd motion/ autoreconf -fiv. /configure --prefix=/usr/motion make && make install /usr/motion/bin/motion -v

Saya merekomendasikan iSpy sebagai server perekam/pengumpul video. Sayangnya pada saat penulisan tidak ada alternatif yang baik untuk Linux. Kamera dapat ditambahkan dengan url MJPEG https://CAMERA_IP:8081 port default.

Pemrosesan gerakan dapat berguna misalnya Anda tidak harus terus melihat server iSpy Anda sepanjang hari, Anda dapat menerima email jika terjadi gerakan. Meskipun iSpy memiliki fungsi ini untuk memperingatkan dalam email jika terjadi gerakan, iSpy mengaktifkan perekaman sesekali untuk berbagai peristiwa seperti beberapa cahaya yang dipantulkan ke area tersebut. Dengan deteksi gerakan PIR, saya tidak pernah memiliki satu pun alarm palsu. Lansiran dapat diproses secara lokal:

Peristiwa gerakan Pir terdeteksi pada sensor > Peringatan Arduino > Raspberry pi diterima di konsol > Program pemrosesan C > Aplikasi email eksternal

Namun saya lebih suka memproses log dan video dari jarak jauh jadi dalam hal ini saya telah menambahkan bagian ke program kontrol C untuk sementara itu mencatat log secara lokal ke dalam file teks biasa, juga mencatatnya ke syslog dan itu diteruskan ke SIEM untuk proses lebih lanjut.

void logger(char *teks) {

FILE *f = fopen("phoenix.log", "a"); if (f == NULL) { printf("Kesalahan membuka file log!\n"); kembali; } fprintf(f, "%s => %s\n", cur_time(0), teks); ftutup(f); #ifdef SYSLOG char loggy[500]; sprintf(loggy, "%s => %s\n", cur_time(0), teks); setlogmask (LOG_UPTO (LOG_NOTICE)); openlog ("DeathStar", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER); //syslog(LOG_NOTICE, "Program dimulai oleh Pengguna %d", getuid()); syslog (LOG_NOTICE, loggy); tutup log(); #endif kembali; }

Di sisi penerima, syslog-ng dapat mendemux peristiwa ini dari aliran log utama:

filter f_phx{

pertandingan("Bintang Kematian"); }; tujuan d_phx { file("/var/log/phoenix/deathstar.log"); }; log { sumber(s_net); filter(f_phx); tujuan(d_phx); };

dan dapat diteruskan ke alat lain (motion.php lihat terlampir) untuk analisis dan peringatan.

Dalam skrip ini Anda cukup mengatur waktu biasa selama seminggu ketika Anda tidak di rumah:

$opt['alert_after']='09:00:00'; // Pagi$opt['alert_before']='17:00:00'; // Malam

Program php menggunakan utilitas logtail yang sangat baik untuk mengurai log.

$cmd = "logtail -o".$offsetfile.' '.$logfile.'>'.$logfile2;

Logtail melacak posisi dalam file offset sehingga program utama tidak perlu tahu kapan harus mulai melihat log, itu akan diberikan data terbaru yang belum diproses.

Motion.php dapat dijalankan dari crontab dengan trik kecil untuk akhir pekan, ketika akan melalui log, tetapi tidak melakukan pemrosesan lebih lanjut.

*/5 * * * 1-5 /usr/local/bin/php ~/motion.php &>/dev/null*/5 * * * 6-7 /usr/local/bin/php ~/motion.php akhir pekan &>/dev/null

Langkah 5: Masalah dan ToDo List

Masalah dan ToDo List
Masalah dan ToDo List
Masalah dan ToDo List
Masalah dan ToDo List

Jika Anda menggunakan Raspberry pi 3 atau yang lebih baru, Anda dapat melewati bagian ini, kemungkinan besar Anda tidak akan mengalami masalah ini lagi.

Selama bertahun-tahun saya memiliki beberapa masalah dengan papan berbasis Raspberry pi 2 yang mungkin menjalankan tumpukan perangkat lunak yang sama tetapi dibeli pada waktu yang berbeda dari tempat yang berbeda. Setelah jangka waktu tertentu yang bisa 2 hari atau 20 hari ketika SSHing di perangkat SSH hanya akan hang, sehingga baik daemon gerak dan kode C lokal yang berbicara dengan Arduino dimuat ke ram sehingga perangkat berfungsi tetapi tidak mungkin melakukan hal lain dengannya lagi dalam keadaan ini.

Setelah banyak pemecahan masalah, saya menemukan solusi:

homesync.sh

#!/bin/sh -e

### MULAI INFO INIT # Menyediakan: homesync # Required-Start: mountkernfs $local_fs # Required-Stop: camera phoenix # Default-Start: S # Default-Stop: 0 6 # Deskripsi Singkat: Sinkronisasi rumah # Deskripsi: Sinkronisasi rumah oleh NLD ### END INIT INFO NAME=home DESC="Ramdisk Home Synchronizer" RAM="/home/" DISK="/realhome/" set -e case "$1" di awal|seterusnya) echo -n "Mulai $ DESC: " rsync -az --numeric-ids --delete $DISK $RAM &> /dev/null echo "$NAME.";; stop|back) echo -n "Menghentikan $DESC: " rsync -az --numeric-ids --delete $RAM $DISK &> /dev/null echo "$NAME.";; *) echo "Penggunaan: $0 {start|stop}" exit 1;; esac keluar 0

Script berjalan bersama dengan modifikasi fstab:

tmpfs /home tmpfs rw, ukuran=80%, nosuid, nodev 0 0

Partisi rumah dipasang sebagai ramdisk yang akan menghasilkan sekitar 600MB ruang kosong pada Raspberry pi 2 yang lebih dari cukup untuk menyimpan beberapa binari dan file log kecil:

tmpfs 690M 8.6M 682M 2% /rumah

Ternyata PI hang dikaitkan dengan operasi penulisan pada kartu SD, meskipun saya telah mencoba kartu yang berbeda (Samsung EVO, Sandisk) yang dipindai untuk kesalahan beberapa kali sebelum dan sesudah dan mereka tidak memiliki masalah di laptop lain ini hanya akan datang. Saya tidak memiliki masalah yang sama (belum) dengan Raspberry PI 3s dan perangkat keras yang lebih tinggi sehingga itu juga mengapa saya merekomendasikannya dalam tutorial ini.

Meskipun gerakan saat ini pada Raspberry PI 3 cukup baik untuk saya, berikut adalah beberapa ide yang perlu ditelusuri:

  1. Jangan gunakan gerakan, tetapi gunakan aliran raspivid melalui jaringan dan biarkan server yang kuat melakukan deteksi gerakan dan penyandian video (misalnya iSpy). -> Masalah: pemogokan bandwidth jaringan yang konstan.
  2. Gunakan gerakan dan biarkan ffmpeg melakukan penyandian video. -> Masalah: CPU tidak dapat menangani resolusi yang lebih tinggi
  3. Gunakan gerakan, rekam video mentah dan biarkan server yang kuat melakukan penyandian. -> Penggunaan CPU pada RPi rendah dan bandwidth jaringan terbatas ketika ada gerakan aktual. Untuk skenario ini kita bisa menulis ke SD-card/ramdisk untuk throughput maksimal dan kemudian crontab menyalin video ke server lain.

Saya juga mencatat bahwa membangun proyek ini dimungkinkan untuk dibangun tanpa Arduino. Semua komponen (relay, LDR, PIR) dapat dihubungkan ke raspberry pi dengan beberapa cara, tetapi saya lebih suka mikrokontroler waktu nyata untuk berinteraksi dengan sensor dan perangkat keluaran. Dalam kasus di mana raspberry pi saya menggantung misalnya atau jatuh, kontrol lampu yang dijalankan oleh Arduino bekerja dengan baik.

Jika Anda menyukai instruksi ini, tetap ikuti perkembangannya karena saya akan melanjutkan seri dengan kamera 360 derajat outdoor raspberry pi zero dome tahun depan.

Direkomendasikan: