Სარჩევი:

Zombie Detecting Smart Security Owl (ღრმა სწავლა): 10 ნაბიჯი (სურათებით)
Zombie Detecting Smart Security Owl (ღრმა სწავლა): 10 ნაბიჯი (სურათებით)

ვიდეო: Zombie Detecting Smart Security Owl (ღრმა სწავლა): 10 ნაბიჯი (სურათებით)

ვიდეო: Zombie Detecting Smart Security Owl (ღრმა სწავლა): 10 ნაბიჯი (სურათებით)
ვიდეო: Smart Security Owl - Halloween Special 2024, ივლისი
Anonim

გამარჯობა ყველას, მოგესალმებით T3chFlicks! ჰელოუინის ამ სახელმძღვანელოში ჩვენ გაჩვენებთ, თუ როგორ უნდა მოვახდინოთ სუპერ საშინელი ირონია მსოფლიო საოჯახო კლასიკაში: უსაფრთხოების კამერა.

Როგორ?! ჩვენ გავაკეთეთ ღამის ხედვის ბუ, რომელიც იყენებს სურათის დამუშავებას ადამიანების თვალყურის დევნისთვის. ოჰ, და ის ყვირის, ისევე როგორც ნამდვილი!

ჩვენ ძალიან აღფრთოვანებული ვიყავით ამ პროექტით და ველოდით ამის გაკეთებას მას შემდეგ, რაც ახალი Raspberry Pi 4 დაეცა. მას აქვს 4 გიგაბაიტიანი ოპერატიული მეხსიერება, რომელიც კარს უღებს უამრავ საინტერესო შესაძლებლობას, მათ შორის რეალურ დროში ღრმა სწავლის მოდელებით სურათების დამუშავების ჩათვლით.

თუ გსურთ თვალი ადევნოთ ჰელოუინზე ზომბების მოახლოებას, ან უბრალოდ შეამოწმოთ თქვენი ბაღი წლის დანარჩენ წლებში, ეს თქვენთვისაა. უსაფრთხოება არ უნდა იყოს მოსაწყენი რომ იყოს ეფექტური!

მარაგები

ამ მშენებლობისთვის დაგჭირდებათ:

  • ჟოლო Pi 4 (4 GB Ram) ამაზონი
  • ღამის ხედვის კამერა ამაზონი
  • მიკრო სერვო ამაზონი
  • ყალბი ბუ ამაზონი
  • წებო ამაზონი
  • ხატავს ამაზონს
  • ხრახნიან ამაზონს
  • USB სპიკერი ამაზონი
  • დიდი (5v+) პორტატული კვების წყარო ამაზონი
  • 3D პრინტერი ამაზონი

ნაბიჯი 1: ნაბიჯი 1: თავის მოწყვეტა

ნაბიჯი 1: თავი მოიკვეთეთ
ნაბიჯი 1: თავი მოიკვეთეთ
ნაბიჯი 1: თავი მოიკვეთეთ
ნაბიჯი 1: თავი მოიკვეთეთ
ნაბიჯი 1: თავი მოიკვეთეთ
ნაბიჯი 1: თავი მოიკვეთეთ

ა ამოიღეთ თავი ბუდან (ზოგჯერ უბრალოდ სასტიკი უნდა იყოთ) ძლიერად გაიწევთ მის თავზე, სადაც ის მიმაგრებულია ზამბარასთან.

ბ ბუ თავი აკავშირებს სხეულს ცილინდრით, რომელიც ზის დიდი ზამბარის თავზე. ამოიღეთ ეს ცილინდრი ხრახნის ამოღებით.

გ ცილინდრი, რომელიც თქვენ ამოიღეთ, შედგება ორი ნაწილისგან, პლასტმასის ჭიქისა და საკისრისგან, რომელიც ზის მის შიგნით. ამოიღეთ საყრდენი ცილინდრიდან ხრახნიანი (ან მსგავსი ხელსაწყოს) გამოყენებით.

დ ხრახნის გამოყენებით, რომელმაც ცილინდრი გაზაფხულთან დააკავშირა, მიამაგრეთ სერვერი ცილინდრზე.

ე ამოიღეთ ზამბარა სამი ხრახნის მოხსნით, რომელიც მას სხეულზე ამყარებს.

ვ ბუს სხეულის ზედა ნაწილში გააკეთეთ ხვრელი, რომელიც საკმარისად დიდია, რათა მოათავსოს ზოგიერთი მავთული და კამერის კაბელი. ამისათვის ჩვენ გამოვიყენეთ საბურღი და ხრახნიანი არალეგალური კომბინაცია.

ნაბიჯი 2: ნაბიჯი 2: დაამატეთ ჭკვიანი

ნაბიჯი 2: დაამატეთ ჭკვიანი
ნაბიჯი 2: დაამატეთ ჭკვიანი
ნაბიჯი 2: დაამატეთ ჭკვიანი
ნაბიჯი 2: დაამატეთ ჭკვიანი
ნაბიჯი 2: დაამატეთ ჭკვიანი
ნაბიჯი 2: დაამატეთ ჭკვიანი

ა 3D ბეჭდვა კამერის ქეისი და შეღებეთ იგი ბუის შესატყვისად - ჩვენ ვიყენეთ რამდენიმე იაფი აკრილის საღებავი. ფერწერა არ არის სასიცოცხლო ნაბიჯი, მაგრამ ის მკვეთრად აუმჯობესებს მთლიან სახეს!

ბ ბუ თავი თავდაყირა დაატრიალეთ კამერის კორპუსის თავში მისი შიდა ნაწილის შიგნით, სადაც წვერი გამოდის.

გ ჩადეთ კამერა ქეისში და შეაერთეთ კამერის კაბელი.

დ მიამაგრეთ სერვო გაზაფხულის ზედა პანელზე.

ე შეაერთეთ გრძელი მავთულები სერვო ქინძისთავებთან (5V, Gnd, სიგნალი)

ვ მიაწოდეთ კამერის კაბელი და მავთულები სერვოზე გაზაფხულის მეშვეობით და სხეულის ზედა ნაწილში გაკეთებული ხვრელის მეშვეობით, რათა ისინი ბუას ღრუ სხეულში შევიდნენ.

ნაბიჯი 3: ნაბიჯი 3: შეავსეთ იგი

ნაბიჯი 3: შეავსეთ იგი
ნაბიჯი 3: შეავსეთ იგი
ნაბიჯი 3: შეავსეთ იგი
ნაბიჯი 3: შეავსეთ იგი
ნაბიჯი 3: შეავსეთ იგი
ნაბიჯი 3: შეავსეთ იგი
ნაბიჯი 3: შეავსეთ იგი
ნაბიჯი 3: შეავსეთ იგი

ა ამოიღეთ დანამატი ბუდის ქვემოდან და გაზარდეთ ამ ხვრელის ზომა პლასტმასის მოჭრით. განაგრძეთ ზომების გაზრდა მანამ, სანამ Raspberry Pi და სპიკერი არ ჯდება ბუ სხეულში.

ბ მას შემდეგ, რაც ხვრელი საკმარისად დიდი იქნება იმისათვის, რომ ყველა კომპონენტი მოთავსდეს შიგნით, გაიყვანეთ კამერის კაბელი, რომელსაც ბუდის ზედა ნაწილიდან იკვებებდით და ამოაერთეთ იგი ჟოლოს პიში.

გ ანალოგიურად, გაიყვანეთ servo მავთულები და შეაერთეთ ისინი Raspberry Pi- ში:

  • +5v servo => +5V Pi- ზე
  • Gnd servo => gnd Pi
  • სიგნალი servo => pin 12 Pi

დ შეაერთეთ USB სპიკერი Pi- ში.

ე ჩადეთ SD ბარათი Pi- ში.

ვ Power Pi პორტატული დენის წყაროს გამოყენებით.

ზ ჩადეთ Pi, კვების ბლოკი და სპიკერი ბუში, ძირში არსებული ხვრელის მეშვეობით.

ნაბიჯი 4: ნაბიჯი 4: დააინსტალირეთ Pi

ნაბიჯი 4: დააინსტალირეთ Pi
ნაბიჯი 4: დააინსტალირეთ Pi

ყველა კოდი შეიძლება მოიძებნოს

ა ჩამოტვირთეთ Raspian და ატვირთეთ იგი თქვენს SD ბარათზე Balena Etcher გამოყენებით.

ბ დისტანციურად თქვენს პიზე წვდომა

  • დაამატეთ ფაილი სახელწოდებით ssh თქვენს ჩატვირთვის sd ბარათს
  • დაამატეთ ფაილი სახელწოდებით wpa_supplicant.conf და ჩაწერეთ თქვენი wifi სერთიფიკატები

    ctrl_interface = DIR =/var/run/wpa_supplicant GROUP = netdev update_config = 1

    ქსელი = {ssid = "MySSID" psk = "MyPassword"}

გ ჩადეთ SD ბარათი pi- ში და სცადეთ წვდომა ssh- ის საშუალებით.

ნაბიჯი 5: ნაბიჯი 5: თავის გადატანა

ნაბიჯი 5: თავის გადატანა
ნაბიჯი 5: თავის გადატანა

კოდის სახელმძღვანელო თავის გადასატანად (სერვოს კონტროლი ჟოლოს პიით)

სერვერის გასაკონტროლებლად Pi– ზე ჩვენ ვაპირებთ შევქმნათ სკრიპტი, რომელიც აკონტროლებს GPIO ქინძისთავებს, რომელთანაც დაკავშირებულია servo.

ა შეაერთეთ სერვო Pi- სთან:

  • +5v servo => +5V Pi- ზე
  • Gnd servo => gnd Pi
  • სიგნალი servo => pin 12 Pi- ზე

ბ თქვენ ჯერ უნდა დააყენოთ gpio ქინძისთავები, რომ გამოიყენოთ PWM სერვოს სიგნალის პინზე.

გ შემდეგ, ეს ისეთივე მარტივია, როგორც სიგნალის პინის მოვალეობის ციკლის შერჩევა (ახსნილია აქ), რათა გადავიყვანოთ სერვო 90 გრადუსიდან სამუშაო ციკლით 7.5 -დან 0 გრადუსამდე, როდესაც მოვალეობის ციკლი არის 2.5 და 180 გრადუსამდე მოვალეობის ციკლით 12.5

იმპორტი RPi. GPIO როგორც GPIO

იმპორტის დრო GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (false) GPIO.setup (12, GPIO. OUT) p = GPIO. PWM (12, 50) p.start (7.5) try: while True: p. ChangeDutyCycle (7.5) # 90 გრადუსი დრო. ძილი (1) გვ. ChangeDutyCycle (2.5) # 0 გრადუსი დრო. ძილი (1) გვ. ChangeDutyCycle (12.5) # 180 გრადუსი დრო. ძილი (1) კლავიატურის გარდა შეფერხება: p.stop () GPIO.cleanup ()

ნაბიჯი 6: ნაბიჯი 6: მიღების Hoot

ნაბიჯი 6: მიღების Hoot
ნაბიჯი 6: მიღების Hoot
ნაბიჯი 6: მიღების Hoot
ნაბიჯი 6: მიღების Hoot

კოდის სახელმძღვანელო ბუების ხუჭუჭის გასაკეთებლად (ჟოლოს პითან აუდიოს დაკვრა)

ა შეაერთეთ USB სპიკერი.

ბ ჩამოტვირთეთ ხმა - ჩვენ ავირჩიეთ საშინელი ხუმრობა.

გ გაუშვით ხმა ამ ბრძანების გაშვებით: omxplayer -o alsa: hw: 1, 0 owl_sound.mp3

[დ. თუ ეს არ მუშაობს, შეამოწმეთ რა გამომუშავებას იყენებს თქვენი Pi და რა მოცულობით ბრძანება alsamixer - თქვენ მიესალმებიან მიქსერის ეკრანს, სადაც შეგიძლიათ შეცვალოთ მოცულობა და შეარჩიოთ თქვენი მედია მოწყობილობა. თქვენი ხმის მოცულობის გასაზრდელად, შეასრულეთ ბრძანება, როგორც ეს omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500 ამ ბგერის პითონის გამოყენებით დასათვალიერებლად გადახედეთ ჩვენს სატესტო სკრიპტს.]

იმპორტის ქვეპროცესს

command = "omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500" player = subprocess. Popen (command.split (')), stdin = subprocess. PIPE, stdout = subprocess. PIPE, stderr = subprocess. მილები)

ნაბიჯი 7: ნაბიჯი 7: გაუშვით ვიდეო Pi- დან

ნაბიჯი 7: გაუშვით ვიდეო Pi- დან
ნაბიჯი 7: გაუშვით ვიდეო Pi- დან
ნაბიჯი 7: გაუშვით ვიდეო Pi- დან
ნაბიჯი 7: გაუშვით ვიდეო Pi- დან

კოდის სახელმძღვანელო ჟოლოს პი კამერის ნაკადის შესაქმნელად

ა გაუშვით python app.py და იხილეთ თქვენს ადგილობრივ ქსელში https://raspberrypi.local: 5000

ბ ეს კოდი აღებულია და ოდნავ ადაპტირებულია მიგელ გრინბერგისგან https://blog.miguelgrinberg.com/post/flask-video-… ის მშვენივრად განმარტავს, თუ როგორ კეთდება ეს და მისი გაკვეთილები შესანიშნავია-deffo შეამოწმეთ იგი! ძირითადი კონცეფცია ისაა, რომ ჩვენ ვიყენებთ ძაფს და გენერატორებს ნაკადის სიჩქარის გასაუმჯობესებლად.

ნაბიჯი 8: ნაბიჯი 8: სხეულის გამოვლენა

ნაბიჯი 8: სხეულის გამოვლენა
ნაბიჯი 8: სხეულის გამოვლენა

სხეულის გამოვლენის კოდი (ImageNetSSD ვიდეო ნაკადზე ჟოლოს პი)

ა ვინაიდან ჩვენ ვიყენებთ Raspberry Pi 4 -ს, ჩვენ ჩავთვალეთ, რომ უმჯობესია, შევეცადოთ მასზე ღრმა სწავლების მოდელები, ვიდრე ძირითადი HaarCascade მეთოდი, რომელიც აქამდე შემოვიფარგლეთ.

ბ ჩვენ შევხედეთ ზოგიერთ წინასწარ მომზადებულ მოდელს, როგორიცაა YOLOv3, რომელიც გამოიყურება ძალიან მაგარი. YOLOv3 მცირე წონა, რომელიც იდეალური იქნებოდა Pi- სთვის, მაგრამ ჩვენ ვერ შევძელით მისი გაშვება:(გ სამაგიეროდ, ჩვენ ავირჩიეთ MobileSSD მოდელი, რომლის გამოყენებაც შეგვიძლია openCVs DNN (ღრმა ნერვული ქსელის) მოდულის გამოყენებით, როგორც ეს გავიგეთ ამ კოდიდან: https://heartbeat.fritz.ai/real-time-object-detection-on-raspberry -pi-using-opencv-dnn-98827255fa60 და გამოსახულების დამუშავების გაკვეთილების გმირის, ადრიან როზებროკისგან: https://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and- opencv/

დ თუმცა, როდესაც ჩვენ ვცდილობთ ამ შინაარსის სტრიმინგს და მოდელების გაშვებას ყველა ჩარჩოზე, ეს იწვევს ჩამორჩენილ, ფრაგმენტულ ვიდეოს. ჩვენ კვლავ ვისწავლეთ ადრიან როზებროკიდან https://www.pyimagesearch.com/2017/10/16/raspberry-pi-deep-learning-object-detection-with-opencv/ და ვიყენეთ პითონის მრავალპროცესული მოდული ჩვენი სურათების რიგებში ჩასაყენებლად სადაც მათი დამუშავება შესაძლებელია კამერის ნაკადის ასე მძიმედ დაბლოკვის გარეშე.

ე სცადეთ თავად გაუშვათ კოდი:)

ნაბიჯი 9: ნაბიჯი 9: Zombie შეტყობინებების გაგზავნა

ნაბიჯი 9: Zombie შეტყობინებების გაგზავნა
ნაბიჯი 9: Zombie შეტყობინებების გაგზავნა
ნაბიჯი 9: Zombie შეტყობინებების გაგზავნა
ნაბიჯი 9: Zombie შეტყობინებების გაგზავნა

შეტყობინების გაგზავნის კოდი (პითონი ტელეფონზე)

ა ჩვენ გადავწყვიტეთ გამოვიყენოთ https://pushed.co შეტყობინების სერვისი.

ბ შეგიძლიათ მიიღოთ უფასო ანგარიში და ჩამოტვირთოთ აპლიკაცია და მართლაც სწრაფად დაინსტალირდეთ მობილური შეტყობინებების მიღებისას. ჩვენ შევქმენით შეტყობინებები პითონის სკრიპტის გამოყენებით.

იმპორტის მოთხოვნები

payload = {"app_key": "APP_KEY", "app_secret": "APP_SECRET", "target_type": "app", "content": "Owl- მა აღმოაჩინა ზომბი." } r = request.post ("https://api.pushed.co/1/push", მონაცემები = დატვირთვა)

ეს ძალიან მარტივია და თქვენ შეგიძლიათ დააკონფიგურიროთ თქვენი შეტყობინების სახელი!

ნაბიჯი 10: რა სიგიჟეა

რა ხუმრობაა!
რა ხუმრობაა!

ვიმედოვნებთ, რომ მოგეწონათ ჩვენი Smart Security Owl პროექტი! ეს იყო ძალიან სახალისო და მე ვგრძნობ თავს ბევრად უფრო უსაფრთხოდ ვიცოდი, რომ ჩემს სახლს ჩვენი სანდო ბუ იცავს.

თუ ფიქრობთ, რომ ეს იქნება ჰელოუინის ზღაპრული დამატება თქვენს ჭკვიან სახლში, გთხოვთ მოგვცეთ ხმა Instructables Halloween- ის კონკურსში და როგორც ყოველთვის, გახსოვდეთ მოგეწონებათ, დააკომენტარეთ და გამოიწერეთ!

დარეგისტრირდით ჩვენს საფოსტო სიაში!

გირჩევთ: