Isi kandungan:

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

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

Video: Kamera Raspberry PI dan Death Star Death Star: 5 Langkah (dengan Gambar)
Video: Top 5 128gb Raspberry Pi Images - 7,500+ Games 2024, Julai
Anonim
Kamera Raspberry PI dan Death Star Death Star
Kamera Raspberry PI dan Death Star Death Star
Kamera Raspberry PI dan Death Star Death Star
Kamera Raspberry PI dan Death Star Death Star
Kamera Raspberry PI dan Death Star Death Star
Kamera Raspberry PI dan Death Star Death Star

Seperti biasa saya ingin membina peranti yang berguna, berfungsi dengan mantap dan sering juga merupakan penambahbaikan berbanding dengan penyelesaian semasa di luar rak.

Inilah satu lagi projek hebat, yang asalnya bernama Shadow 0f Phoenix, perisai Raspberry PI bersempena dengan pengesanan gerakan dan kawalan cahaya berasaskan Arduino.

Langkah 1: Keadaan Kamera IP Komersial

Kamera IP Negeri
Kamera IP Negeri
Kamera IP Negeri
Kamera IP Negeri
Kamera IP Negeri
Kamera IP Negeri

Selain itu, membina kamera / sistem pengawasan anda sendiri lebih keren mari kita lihat mengapa ini merupakan peningkatan daripada penyelesaian luar rak.

Saya akan membandingkannya dengan siri Kamera IP Tanpa Wayar NEO COOLCAM Full HD 1080P kerana saya memiliki banyak model kamera neo coolcams (ONVIF) ini. Mereka datang dalam pelbagai bentuk dan saiz, di luar dan di dalam rumah, kebanyakan dari mereka mempunyai sokongan wifi tetapi mari kita lihat peringatan mereka:

  • Pengilang China yang menjual kamera ini hampir selalu berbohong mengenai resolusi sensor imej yang ada, apabila anda membeli kamera 5MP / 8MP di Ebay, anda mungkin akan mempunyai kamera 2MP yang murah dengan gambar yang buruk (ia berfungsi tetapi kualitinya sampah). Apabila anda membeli kamera 8MP Raspberry PI v2 dari peruncit asal, anda akan mendapat apa yang anda bayar dan sensor 8MP sebenar dengan resolusi 3280 × 2464 piksel =>
  • Dari sudut keselamatan, kamera ini (walaupun Dlink yang lebih mahal dan model lain) mengerikan, mereka menggunakan kata laluan lalai seperti 123456 atau pengguna dalam seperti pengguna / pengendali pentadbir / pengendali yang mungkin anda tidak dapat ubah atau perubahan hilang selepas reboot. Selesaikan dengan banyak kamera rumah ini (sambungkan ke pelayan mereka di cina, ada juga yang mengalirkan semula video / gambar tanpa meminta anda hanya untuk mempermudah sekiranya anda memutuskan untuk memasang aplikasi Android / Iphone mereka suatu hari untuk memeriksa rumah). Walaupun anda meletakkan peranti ini di belakang router, itu tidak cukup baik, yang terbaik adalah jika anda tidak menetapkan gateway lalai di dalamnya, firewall atau letakkan ke dalam VLAN untuk menjadikannya mustahil untuk mereka keluar Internet atau lebih baik lagi: jangan gunakannya sama sekali.
  • Adakah mereka lebih dipercayai? tidak, banyak dari mereka bahkan DLINK yang lebih mahal mempunyai pilihan untuk menghidupkan semula kamera setiap hari / mingguan dan lain-lain. Pilihan itu ada kerana suatu sebab, kerana setelah X hari mereka sering kehilangan sambungan Wifi atau tidak berfungsi dengan cara lain. Anggap saja kotak Win95 lama yang baik yang perlu dihidupkan semula lebih kerap daripada tidak:) Saya tidak mengatakan bahawa perkakasan berasaskan Raspi sangat kukuh sehingga anda dapat membuatnya menjadi loji kuasa nuklear tetapi dengan perkakasan / perisian yang betul konfigurasi, heatsink, kipas penyejuk automatik dan operasi RW yang dikurangkan pada SDCARD, mereka dapat dengan mudah mencapai masa operasi 100+ hari tanpa masalah. Pada masa menulis DeathStar saya berjalan sejak 34 hari, sudah melebihi 100 tetapi kadang-kadang saya meretas suapan di sumber kuasa yang menghidupkan beberapa litar saya yang lain sehingga terpaksa mematikannya:(
  • Perkakasan yang disasarkan: ia dibuat untuk 1 tujuan tertentu, seringkali dilengkapi dengan kawasan nvram kecil dan kotak sibuk tetapi beberapa model menjadikan akses ke cengkerang ini juga tidak mungkin, jadi semua yang anda boleh gunakan adalah maksudnya untuk digunakan selagi anda boleh gunakan kamera berasaskan Raspi anda untuk apa sahaja tugas lain: pelayan fail, pelayan tftp / dhcp, pelayan web, pelayan gempa… pilihannya tidak terhad.
  • Ruang simpanan: mereka tidak mempunyai atau mereka menggunakan kad microsd dengan sistem fail FAT32 VS pada raspberry pis anda bahkan boleh memasang cakera keras 2 TB jika anda mahu.
  • Mengawal lampu: ada yang mempunyai output ALARM di mana anda mungkin dapat menyambungkan geganti kecil agar lampu terpicu. Seperti yang akan saya tunjukkan dalam tutorial ini menggunakan kamera inframerah adalah membuang masa sepenuhnya kerana anda tidak akan dapat mengenal pasti sesiapa di gambar IR kerana kualiti yang buruk. Sekiranya anda perlu merakam video dalam gelap cara terbaik untuk melakukannya adalah dengan menghidupkan cahaya terlebih dahulu kemudian rakam video.

Oleh itu, anda mungkin bertanya adakah PRO menggunakan kamera luar rak? Ya untuk perniagaan di mana waktu kerja untuk menyiapkannya akan lebih mahal daripada bermain-main dengan Raspberry pis (bukan untuk saya pula:)) dan ya ada kamera teratas (500 $ + dengan resolusi yang lebih baik daripada kamera pi kursus). Sebagai kelebihan lain, saya boleh mengatakan bahawa kamera yang mengikuti standard ONVIF menjadikan penyediaan berpusat lebih mudah. Ini menyediakan antara muka standard apa yang dapat digunakan untuk mengirim perintah ke kamera untuk menetapkannya IP / Network mask / Gateway dan lain-lain. Untuk ini, anda boleh memuat turun pengurus peranti Onvif dari Sourceforge. Sebilangan besar peranti ini dilengkapi dengan frontend web yang rusak dan tidak membenarkan anda menetapkan ip atau netmask dengan betul kerana javascript yang mengesahkan bidang ini tidak berfungsi dan satu-satunya cara anda untuk menetapkan parameter ini dengan betul adalah melalui ONVIF.

Langkah 2: Pelan Bintang Mati

Pelan Bintang Kematian
Pelan Bintang Kematian
Pelan Bintang Kematian
Pelan Bintang Kematian
Pelan Bintang Kematian
Pelan Bintang Kematian

Anda boleh membina peranti ini dengan mana-mana Raspberry PI bermula dari 1 hingga 3B +. Walaupun sifar mempunyai port kamera, tetapi kerana terdapat begitu banyak raspis terpakai yang ada di pasaran, anda mungkin tertanya-tanya mana yang paling sesuai untuk pembuatan ini.

Jawapannya bergantung pada di mana anda mahu memproses aliran video di.

Terdapat dua pilihan:

1, Memproses video secara tempatan dengan gerakan dan meneruskan aliran video apabila terdapat gerakan yang dikesan (nota: gerakan meneruskan aliran tetap perlahan ke pelayan tidak kira apa, ini boleh bergantung pada resolusi dan kadar bingkai yang anda gunakan bermula dari beberapa ratus megabait hingga beberapa gigabait sehari, hanya peringatan jika anda ingin melakukan persediaan pada sambungan meter). Di sini CPU penting dan malangnya gerakan (pada masa penulisan) tidak memanfaatkan beberapa teras, namun OS akan cuba mengimbangkan beban sedikit. Anda akan selalu menggunakan salah satu inti pada penggunaan 100%.

2, Memproses video di pelayan pusat: di sini anda hanya meneruskan aliran video mentah dari kamera ke pemutus aliran luaran (seperti iSpy yang berjalan di komputer x86 atau MotionEyeOS yang berjalan di komputer kecil lain). Oleh kerana tidak ada pemprosesan secara tempatan model PI yang anda gunakan tidak menjadi masalah, PI1 akan menghantar aliran yang sama dengan PI3B +.

Dalam tutorial ini saya akan memilih pilihan pertama.

Peraturan praktis di sini adalah bahawa semakin cepat CPU yang anda lontarkan bergerak, hasil yang lebih baik akan anda perolehi. Sebagai contoh, kamera berasaskan Raspi 2 saya yang melihat koridor kadang-kadang tidak mengambilnya ketika seseorang berjalan pantas dan ketika rakaman rakaman perlahan, menjatuhkan banyak bingkai berbanding dengan model 3. Model 3 juga mempunyai 802.11 wgn wifi yang sangat berguna untuk menstrim video berkualiti tinggi, ia berfungsi di luar kotak dan cukup dipercayai. Pada masa menulis bahawa model 3B + sudah habis, saya hanya mengesyorkan agar anda mendapatkannya dengan 1.4 Ghz Quad Core cpu.

Senarai bahan

  • DeathStar plastik 30 cm:)
  • Raspberry Pi 3 B +
  • PiCam v2 (8MP)
  • Arduino Pro Micro 5.5v
  • Relay Suis Reed 2x SIP-1A05
  • 1x PCS HC-SR501 IR Pyroelectric Infrared IR PIR Motion Sensor Detector Module
  • 1x 10kohm perintang untuk LDR
  • 1x LDR
  • Penyesuai DC 1x12V 4A
  • 1xWarm White LED 5050 SMD Flexible Light Strip Strip 12V DC
  • Pengatur voltan 1xBuck

Seperti yang anda lihat pada skema, projek ini pada asalnya dirancang untuk mengawal satu lampu tunggal dengan satu geganti kerana saya tidak merancang untuk menambahkan pencahayaan dalaman (yang cukup sejuk) jadi saya hanya memasang kabel relay kedua ke Arduino. Perkara yang hebat mengenai SIP-1A05 ialah ia mempunyai diod flyback dalaman dan penggunaan dalam mA berada di bawah had kuasa per pin Arduino.

Sebab mengapa PIR berada di perisai pada gambar kerana pada awalnya S0P dirancang untuk dimasukkan ke dalam kotak plastik IP sederhana dan bukannya DeathStar. Seperti yang anda duga, kamera langsung ada di senapang laser, PIR dan LDR memerlukan lubang yang digerudi lagi dan mereka dilekatkan dengan gam kerana saya tidak merancang untuk membuangnya.

Lubang digerudi di bahagian bawah DeathStar di mana saya menempelkan bolt besar dengan gam 2 komponen yang kuat. Ini boleh dimasukkan ke dudukan Neo Coolcams yang asli (ia bagus untuk sesuatu:)). Untuk sokongan tambahan saya menggunakan wayar tembaga keras untuk memegang bahagian atas bintang.

Nota penting mengenai bekalan kuasa: kerana bekalan yang sama akan memberi kuasa pada PI, Arduino dan jalur LED, ia harus cukup kuat untuk dapat mengendalikan semuanya sehingga ia akan berdasarkan pada jalur LED yang anda pilih untuk projek tersebut. Jalur LED 5050 12v 3meter komersial mengalirkan sekitar 2A, itu banyak. Untuk PI dan Arduino, anda perlu mengira dalam + 2A (walaupun ini terlalu besar, ia tidak akan menyakitkan). Menggunakan jalur LED di atas mentol halogen standard, neon atau pencahayaan berkuasa tinggi yang lain ialah anda boleh meletakkan keseluruhan litar ini pada bateri asid plumbum 12V @ 10Ah yang baik sebagai sandaran sehingga ia akan berfungsi sekiranya berlaku gangguan kuasa.

Buck akan menurunkan voltan dari 12-> 5V untuk menghidupkan Arduino dan PI sementara suapan 12V langsung disambungkan pada relay untuk menghidupkan jalur LED.

Langkah 3: Perisian Arduino

Perisian Arduino
Perisian Arduino

Anda boleh mendapatkan kod sumber penuh di bawah yang dikomen dengan baik tetapi berikut adalah penjelasan ringkas bagaimana ia berfungsi: Pada awal setiap gelung, fungsi xcomm () biasa dipanggil untuk melihat apakah ada arahan yang berasal dari Raspberry PI yang boleh LIGHT_ON / OFF untuk menghidupkan lampu koridor atau DS_ON / OFF untuk menghidupkan / mematikan lampu latar DeathStar, saya telah melaksanakannya hanya demi kesempurnaan kerana jika seseorang melewati PIR harus mengambilnya dan menyalakannya lampu tetapi mungkin anda ingin melihat tempat itu dengan alasan tertentu walaupun tidak ada orang di sana.

Selepas ini nilai photocell dibaca dan pin gerakan diperiksa untuk bergerak. Sekiranya terdapat gerakan, kod akan memeriksa sama ada cukup gelap maka ia memeriksa sama ada kita tidak ditahan. Sekiranya semua ini berlalu maka ia hanya akan menyalakan lampu koridor dan menghantar kembali PHOENIX_MOTION_DETECTED ke Raspberry PI, jika tidak cukup gelap, ia masih memberi isyarat kembali ke komputer tetapi tidak menyalakan lampu. Setelah gerakan dikesan, pemasa tahan 5 minit dimulakan.

Tepat selepas ini bahagian kod seterusnya akan memeriksa untuk melihat apakah kita ditangguhkan (yang seharusnya berlaku jika hanya ada acara gerakan, jadi mari kita anggap 5 minit berlalu sehingga pemeriksaan ini dapat mengesahkan). Kod 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 berusaha mematikan lampu sehingga tidak ada maklum balas ke PC.

Kami mempunyai pemasa penahan lain untuk pencahayaan dalaman DeathStar yang sepenuhnya bergantung pada photocellReading <dark_limit.

Walaupun kedua-dua rutin itu tidak saling mengenali, mereka akan berfungsi dengan sempurna kerana ketika lampu koridor menyala ia memberikan begitu banyak cahaya sehingga LDR akan menganggapnya siang hari lagi dan ia mematikan pencahayaan dalaman. Namun terdapat beberapa peringatan mengenai proses ini yang dijelaskan dalam kod tersebut jika anda berminat, jika tidak, maka jawablah jawapan Nvidia bahawa "ia hanya berfungsi!".

Langkah 4: Perisian Raspberry PI

Perisian Raspberry PI
Perisian Raspberry PI
Perisian Raspberry PI
Perisian Raspberry PI
Perisian Raspberry PI
Perisian Raspberry PI

Raspbian terkini berfungsi untuk saya:

Raspbian GNU / Linux 9.4 (regangan)

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 yang menyokong pengesanan gerakan

Walaupun anda boleh menggunakan distro lain, jika anda menghadapi masalah dengan kamera, anda hanya akan mendapat sokongan daripada pasukan jika anda menggunakan OS rasmi mereka. Membuang bloatware yang tidak diingini seperti systemd juga sangat digalakkan.

Gerakan juga boleh dibina 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 mengesyorkan iSpy sebagai pelayan rakaman / pemungut video. Malangnya pada masa penulisan tidak ada alternatif yang baik untuk Linux. Kamera boleh ditambah dengan url MJPEG https:// CAMERA_IP: 8081 port lalai.

Pemprosesan gerakan boleh berguna misalnya anda tidak perlu terus melihat pelayan iSpy anda sepanjang hari, anda boleh menerima e-mel sekiranya bergerak. Walaupun iSpy mempunyai fungsi ini untuk memberi amaran dalam e-mel sekiranya berlaku gerakan, ia akan menghidupkan rakaman sekali sekala untuk kejadian lain-lain seperti cahaya dipantulkan ke kawasan tersebut. Dengan pengesanan gerakan PIR, saya tidak pernah mempunyai satu penggera palsu. Makluman boleh diproses secara tempatan:

Acara gerakan Pir dikesan pada sensor> Amaran Arduino> Raspberry pi diterima di konsol> program pemprosesan C> Aplikasi mel luaran

Saya lebih suka memproses log dan video dari jarak jauh sehingga dalam hal ini saya telah menambahkan bahagian ke program kawalan C sementara ia log log secara tempatan ke dalam fail teks biasa, juga memasukkannya ke syslog dan yang diteruskan ke SIEM untuk pemprosesan selanjutnya.

pembalut tidak sah (char * text) {

FILE * f = fopen ("phoenix.log", "a"); if (f == NULL) {printf ("Ralat semasa membuka fail log! / n"); kembali; } fprintf (f, "% s =>% s / n", cur_time (0), teks); fclose (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 dimulakan oleh Pengguna% d", getuid ()); syslog (LOG_NOTICE, loggy); penutup (); #endif kembali; }

Pada akhir penerimaan, syslog-ng dapat menurunkan peristiwa ini dari aliran log utama:

tapis f_phx {

perlawanan ("DeathStar"); }; destinasi d_phx {file ("/ var / log / phoenix / deathstar.log"); }; log {sumber (s_net); penapis (f_phx); destinasi (d_phx); };

dan ia boleh dihantar ke alat lain (gerak.php lihat terlampir) untuk analisis dan makluman.

Dalam skrip ini, anda boleh menetapkan waktu biasa pada minggu ketika anda tidak berada di rumah:

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

Program php menggunakan utiliti logtail yang sangat baik untuk menguraikan log.

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

Logtail mengesan kedudukan dalam fail offset sehingga program utama tidak perlu tahu dari saat mana untuk mula melihat log, ia akan diberikan data terbaru yang belum diproses.

Motion.php dapat dijalankan dari crontab dengan tipu muslihat kecil untuk hujung minggu, ketika akan melalui log, tetapi tidak perlu diproses lagi.

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

Langkah 5: Isu dan Senarai ToDo

Isu dan Senarai ToDo
Isu dan Senarai ToDo
Isu dan Senarai ToDo
Isu dan Senarai ToDo

Sekiranya anda menggunakan Raspberry pi 3 atau yang lebih baru, anda boleh melangkau bahagian ini, kemungkinan besar anda tidak akan menghadapi masalah ini lagi.

Selama bertahun-tahun saya menghadapi beberapa masalah dengan papan berasaskan Raspberry pi 2 yang mungkin menjalankan tumpukan perisian yang sama tetapi dibeli pada masa yang berlainan dari tempat yang berbeza. Setelah jangka waktu tertentu yang dapat menjadi 2 hari atau 20 hari ketika SSH masuk pada perangkat, SSH akan tergantung, jadi daemon gerakan dan kod C tempatan yang bercakap dengan Arduino dimuat ke dalam ram sehingga perangkat berfungsi tetapi mustahil untuk melakukan perkara lain dengannya dalam keadaan ini.

Setelah menyelesaikan banyak masalah, saya telah menemui jalan penyelesaian:

homesync.sh

#! / bin / sh -e

### BEGIN INIT INFO # Menyediakan: homesync # Required-Start: mountkernfs $ local_fs # Required-Stop: camera phoenix # Default-Start: S # Default-Stop: 0 6 # Short-Description: Home synchronizer # Description: Home synchronizer oleh NLD ### NAMA INFO INIT TAMAT = home DESC = "Ramdisk Home Synchronizer" RAM = "/ home /" DISK = "/ realhome /" set -e case "$ 1" pada permulaan | seterusnya) echo -n "Mulai $ DESC: "rsync -az --numeric-ids - hapus $ DISK $ RAM &> / dev / null echo" $ NAME. ";; berhenti | kembali) echo -n "Menghentikan $ DESC:" rsync -az --numeric-ids - hapus $ RAM $ DISK &> / dev / null echo "$ NAME.";; *) gema "Penggunaan: $ 0 {start | stop}" keluar 1;; esac keluar 0

Skrip ini disatukan dengan pengubahsuaian fstab:

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

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

tmpfs 690M 8.6M 682M 2% / rumah

Ternyata hang PI dikaitkan dengan operasi menulis pada SDcard, walaupun saya telah mencuba kad yang berbeza (Samsung EVO, Sandisk) yang diimbas untuk kesilapan berkali-kali sebelum dan sesudahnya dan mereka tidak mempunyai masalah di komputer riba lain, ini hanya akan datang. Saya tidak mempunyai masalah yang sama (belum) dengan Raspberry PI 3s dan perkakasan yang lebih tinggi, jadi itulah sebabnya saya mengesyorkan mereka dalam tutorial ini.

Walaupun gerakan semasa pada Raspberry PI 3 cukup baik untuk saya, berikut adalah beberapa idea yang patut diterokai:

  1. Jangan gunakan gerakan, tetapi gunakan aliran raspivid melalui rangkaian dan biarkan pelayan yang kuat melakukan pengesanan gerakan dan pengekodan video (mis. ISpy). -> Masalah: penyambungan jalur lebar rangkaian tetap.
  2. Gunakan gerakan dan biarkan ffmpeg melakukan pengekodan video. -> Masalah: CPU tidak dapat menangani resolusi yang lebih tinggi
  3. Gunakan gerakan, rakam video mentah dan biarkan pelayan yang kuat melakukan pengekodan. -> Penggunaan CPU pada RPi rendah dan rangkaian rangkaian terhad pada saat ada gerakan sebenarnya. Untuk senario ini, kita dapat menulis ke kad SD / ramdisk untuk throughput maksimum dan kemudian menyalin salinan video ke pelayan lain.

Saya juga perhatikan bahawa membina projek ini mungkin dapat dibina tanpa Arduino. Semua komponen (relay, LDR, PIR) dapat disambungkan ke raspberry pi dengan cara tertentu tetapi saya lebih suka mikrokontroler masa nyata untuk berinteraksi dengan sensor dan peranti output. Dalam kes di mana pi raspberry saya tergantung atau rosak, kawalan cahaya yang dijalankan oleh Arduino berfungsi dengan baik.

Sekiranya anda menyukai arahan ini, saya akan teruskan siri ini dengan kamera 360 darjah raspberry pi zero kubah saya tahun depan.

Disyorkan: