Სარჩევი:

კოლიბრის დეტექტორი/სურათის მიმღები: 12 ნაბიჯი (სურათებით)
კოლიბრის დეტექტორი/სურათის მიმღები: 12 ნაბიჯი (სურათებით)

ვიდეო: კოლიბრის დეტექტორი/სურათის მიმღები: 12 ნაბიჯი (სურათებით)

ვიდეო: კოლიბრის დეტექტორი/სურათის მიმღები: 12 ნაბიჯი (სურათებით)
ვიდეო: Эффект колибри / Hummingbird (2012) / Джейсон Стэйтем в остросюжетном криминальном экшне 2024, ივლისი
Anonim
კოლიბრის დეტექტორი/სურათის მიმღები
კოლიბრის დეტექტორი/სურათის მიმღები

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

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

ნაბიჯი 1: მიკროკონტროლის არჩევა

მიკროკონტროლის არჩევა
მიკროკონტროლის არჩევა

მიკროკონტროლერი, რომელიც მე ავირჩიე, იყო PJRC Teensy. Teensy იყენებს ARM მიკროკონტროლერს, კერძოდ, ARM Cortex M4. Cortex M4 შეიცავს აპარატურას FFT (სწრაფი ფურიეს ტრანსფორმაციის) შესასრულებლად, რომელიც გამოავლენს. PJRC ასევე ყიდის აუდიო დაფას, რომელიც საშუალებას გაძლევთ გამოიყენოთ Teensy მუსიკის დასაკრავად, ასევე აუდიოს ჩაწერა გარე შეყვანის საშუალებით, ან, პატარა მიკროფონი, რომელიც შეგიძლიათ დაამატოთ დაფაზე. ჩემი გეგმა იყო, რომ მოზარდმა მიკროფონიდან აუდიოზე შეასრულოს FFT.

ნაბიჯი 2: FFT?

FFT?
FFT?

FFT არის მათემატიკური ფორმულა/ალგორითმი, რომელიც გარდაქმნის სიგნალს დროის დომენიდან სიხშირის დომენზე. ეს იმას ნიშნავს, რომ ის იღებს მიკროფონიდან დროში აღებულ აუდიოს და გადააქცევს სიხშირეების სიდიდეებს, რომლებიც თავდაპირველ ტალღაშია. ხედავთ, ნებისმიერი თვითნებური, უწყვეტი ტალღა შეიძლება აგებული იყოს სინუსური ან კოსინუსური ტალღების სერიიდან, რომლებიც არის მთელი სიდიდის ჯერადი ზოგიერთი ფუძის სიხშირისა. FFT აკეთებს საპირისპიროდ: იღებს თვითნებურ ტალღას და აქცევს მას ტალღების სიდიადებად, რომლებიც თუ შეჯამდება ერთად შექმნის თავდაპირველ თვითნებურ ტალღას. ამის თქმის კიდევ უფრო მარტივი გზა არის ის, რომ მე ვგეგმავ გამოვიყენო მოზარდებში პროგრამული უზრუნველყოფა და FFT აპარატურა, რათა დადგინდეს ის „ისმენს“კოლიბრის ფრთებს იმ სიხშირით, რომლითაც ხდება ფრთები. თუ ის კოლიბრის "ისმენს", მე გამოგიგზავნით კამერას სურათის გადასაღებად.

იმუშავა! მაშ, როგორ გავაკეთე ეს, როგორ შეძელი და როგორ შეგიძლია კიდევ უკეთესი გახადო?

ნაბიჯი 3: რას ჰგავს მფრინავი კოლიბრის ხმა?

რას ჰგავს მფრინავი კოლიბრი?
რას ჰგავს მფრინავი კოლიბრი?

უპირველეს ყოვლისა, მე უნდა გაერკვია, რა სიხშირით მოვისმენდი კოლიბრის ფრთებს. ამის დასადგენად, მე გამოვიყენე ჩემი iPhone. მე დავამატე iPhone სამფეხაზე და ჩავწერე ის ნელი მოძრაობის ვიდეო პირდაპირ კოლიბრის მიმწოდებლის წინ ჩვენს გემბანზე. გარკვეული პერიოდის შემდეგ მე ამოვიღე კამერა და გადმოვწერე ვიდეო. შემდეგ ვუყურე ვიდეოს, რომელიც ეძებდა კოლიბრს მიმწოდებლის წინ. როდესაც ვიპოვე კარგი თანმიმდევრობა, დავთვალე ცალკეული ჩარჩოების რაოდენობა, რომელიც დასჭირდა კოლიბრს ფრთების დასაწევად ერთი პოზიციიდან იმავე პოზიციამდე. ნელი მოძრაობა iPhone– ზე არის 240 კადრი წამში. მე დავინახე კოლიბრი, რომელიც მიდიოდა მიმწოდებლის წინ და მე ჩავთვალე 5 ჩარჩო იმისათვის, რომ ფრთები გადაეტანა წინ მდგომი პოზიციიდან უკანა პოზიციაზე და შემდეგ დაბრუნებულიყო წინ. ეს არის 5 ჩარჩო 240 -დან. გახსოვდეთ, ჩვენ გვესმის ხმა კოლიბრის ფრთის ფრთების თითოეულ დარტყმაზე (ერთი წინ და მეორე უკანა დარტყმაზე). ციკლის ან პერიოდის 5 ჩარჩოსთვის, ჩვენ შეგვიძლია გამოვთვალოთ სიხშირე, როგორც გაყოფილი პერიოდზე, ანუ 1 / (5/240) ან 48 ჰერცზე. ეს ნიშნავს, რომ როდესაც ეს კოლიბრი ფრიალებს, ხმა, რომელსაც ჩვენ გვესმის, უნდა იყოს ორჯერ მეტი ან დაახლოებით 96 ჰც. სიხშირე ალბათ უფრო მაღალია, როდესაც ისინი დაფრინავენ და არ დაფრინავენ. მას ასევე შეუძლია გავლენა იქონიოს მათმა მასამ, მაგრამ მე ვფიქრობ, რომ შეგვიძლია ვივარაუდოთ, რომ ერთი და იმავე სახეობის ფრინველთა უმეტესობას დაახლოებით ერთი და იგივე მასა აქვს.

ნაბიჯი 4: ფურიეს სერია და მოზარდი

ფურიეს სერია და მოზარდი
ფურიეს სერია და მოზარდი

Teensy (მე Teensy 3.2 გამოვიყენე) დამზადებულია PJRC– ს მიერ (www.pjrc.com). FFT გამოითვლება ხმის ნიმუშზე. ხმის მოსაპოვებლად PJRC ყიდის აუდიო ადაპტერის დაფას Teensy– სთვის (TEENSY3_AUDIO - $ 14.25). ისინი ასევე ყიდიან პატარა მიკროფონს, რომლის შეკვრა შესაძლებელია აუდიო ადაპტერის დაფაზე (MICROPHONE - $ 1.25). აუდიო ადაპტერის დაფა იყენებს ჩიპს (SGTL5000), რომელთანაც მოზარდს შეუძლია დაელაპარაკოს სერიული ავტობუსით (I2S). Teensy იყენებს SGTL5000 მიკროფონიდან აუდიოს ასამოწმებლად და მისი დიგიტალიზაციისთვის, ანუ ქმნის რიცხვების ერთობლიობას, რომელიც წარმოადგენს ხმას, რომელსაც მიკროფონი ისმენს.

FFT არის მხოლოდ სწრაფი ვერსია იმისა, რასაც ჰქვია დისკრეტული ფურიეს ტრანსფორმაცია (DFT). DFT შეიძლება შესრულდეს ნიმუშების თვითნებურ რაოდენობაზე, თუმცა FFT– ს უნდა ჰქონდეს ნიმუშები შენახული კომპლექტში, რომლებიც ორობითი ჯერადია. Teensy ტექნიკას შეუძლია შეასრულოს FFT 1024 ნიმუშის ნაკრებზე (1024 = 2^10), ასე რომ ჩვენ გამოვიყენებთ.

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

Teensy აუდიო დაფა აღწერს აუდიოს 44, 100 ჰც სიხშირით. ამრიგად, ამ სიხშირის 1024 ნიმუში წარმოადგენს დროის ინტერვალს 1024/44100 ან დაახლოებით 23.2 მილიწამი. ამ შემთხვევაში, FFT გამოიმუშავებს გამომავალს, სიდიდეებს, რომლებიც 43 ჰც -იანი პერიოდის მთელი ჯერადია (ისევ 1/0.0232 უდრის დაახლოებით 43 ჰერცს). ჩვენ გვსურს ვეძებოთ სიდიდეები, რომლებიც დაახლოებით ორჯერ მეტია ამ სიხშირეზე: 86 ჰც. ეს არ არის ზუსტად ჩვენი გამოთვლილი კოლიბრის ფრთების სიხშირე, მაგრამ ის საკმაოდ ახლოს არის, როგორც ვნახავთ.

ნაბიჯი 5: ფურიეს მონაცემების გამოყენება

ფურიეს მონაცემების გამოყენება
ფურიეს მონაცემების გამოყენება

ბიბლიოთეკები PJRC უზრუნველყოფს Teensy დაამუშავებს ნიმუშებს და დააბრუნებს მასივის მნიშვნელობების მასივს. ჩვენ დავუბრუნდებით თითოეულ სიდიდეს დაბრუნებულ მასივში როგორც ყუთი. პირველი ურნა (ნულოვანი ოფსეტური მონაცემების მასივში ჩვენ ვიღებთ უკან) არის DC ტალღის ოფსეტური. ჩვენ შეგვიძლია უსაფრთხოდ უგულებელვყოთ ეს მნიშვნელობა. მეორე ურნა (ოფსეტში 1) წარმოადგენს 43 ჰც კომპონენტის სიდიდეს. ეს არის ჩვენი ძირითადი პერიოდი. მომდევნო ურნა (ოფსეტში 2) წარმოადგენს 86 ჰც კომპონენტის სიდიდეს და ასე შემდეგ. ყოველი მომდევნო ყუთი არის ძირითადი პერიოდის მთელი რიცხვი (43 ჰერცი).

ახლა ეს არის იქ, სადაც ცოტა უცნაური ხდება. თუ ჩვენ გამოვიყენებთ FFT სრულყოფილ 43 ჰერც ბგერას გასაანალიზებლად, მაშინ FFT დააბრუნებს პირველ ურნას დიდი სიდიდით და ყველა დანარჩენი ურნები ნულის ტოლი იქნება (ისევ სრულყოფილ სამყაროში). თუ ხმა, რომელსაც ჩვენ ვიღებდით და ვაანალიზებდით, იყო 86 ჰერცი, მაშინ ერთის გადატანისას ნაგავი იქნება ნული, ხოლო 2 -ის გადატანაში (მეორე ჰარმონიული) იქნება რაღაც დიდი სიდიდის და დანარჩენი ურნები იქნება ნულის ტოლი და ასე შემდეგ. მაგრამ თუ ჩვენ ვიღებთ კოლიბრის ბგერას და ის იყო 96 ჰერცი (როგორც გავზომე ჩემს ერთ ფრინველზე), მაშინ 2 ოფსეტური ბინ @ 86 ჰც სიდიდით ოდნავ დაბალი იქნება (ვიდრე სრულყოფილი 86 ჰც ტალღა) და მის ირგვლივ მდებარე ურნებს (ერთი ქვედა და რამდენიმე უფრო მაღალი) თითოეულს ექნება კლებადი ნულოვანი მნიშვნელობა.

თუ ჩვენი FFT- ის ნიმუშის ზომა აღემატებოდა 1024 -ს ან თუ ჩვენი აუდიო შერჩევის სიხშირე უფრო დაბალი იყო, ჩვენ შეგვიძლია გავაუმჯობესოთ ჩვენი ყუთების გარჩევადობა (ანუ უფრო მცირე). მაგრამ მაშინაც კი, თუ ჩვენ შევცვლით ამ ნივთებს, რომ ჩვენი FFT ურნები 1 ჰერცამდე გახადოს საბაზო პერიოდის ჯერადი, ჩვენ მაინც უნდა გავუმკლავდეთ ამ ურნის "დაღვრას". ეს იმიტომ ხდება, რომ ჩვენ არასოდეს ვიღებდით ფრთების სიხშირეს, რომელიც დაეშვა, ყოველთვის და ზუსტად, ერთ ურნაზე. ეს ნიშნავს, რომ ჩვენ არ შეგვიძლია მხოლოდ კოლიბრის გამოვლენა დავამყაროთ ოფსეტური 2 ურნის ღირებულებით და დანარჩენის იგნორირება გავაკეთოთ. ჩვენ გვჭირდება გზა, რომ გავაანალიზოთ მონაცემები რამდენიმე ყუთში, რათა შევეცადოთ და მივცეთ აზრი. ამის შესახებ მოგვიანებით.

ნაბიჯი 6: დაიწყეთ მშენებლობა

დაიწყეთ მშენებლობა
დაიწყეთ მშენებლობა
დაიწყეთ მშენებლობა
დაიწყეთ მშენებლობა

ჩემი პროტოტიპის კოლიბრის დეტექტორისთვის გამოვიყენე თინეიჯერებში ზედმეტად გრძელი მამაკაცი-მამაკაცი ქინძისთავები. მე ასე მოვიქეცი, რომ შემეძლო მოზარდი შემეერთებინა პატარა გასაპრიალებელ დაფაზე. მე ეს გავაკეთე იმიტომ, რომ ვივარაუდე, რომ მე ბევრ ცვლილებას შევიტანდი პროტოტიპში და პურის დაფაზე შემეძლო შემეცვალა ეს და უბრალოდ გამხდარიყო მავთულები, სადაც დამჭირდებოდა. მე შევაერთე ქალთა ზოლები აუდიო დაფის ქვედა მხარეს, რაც მას საშუალებას აძლევს იყოს შეკრული მოზარდის თავზე. მიკროფონი არის მიმაგრებული აუდიო დაფის ზედა მხარეს (იხ. სურათები). შეკრების შესახებ უფრო დეტალური ინფორმაცია შეგიძლიათ ნახოთ PJRC საიტზე:

(https://www.pjrc.com/store/teensy3_audio.html).

ნაბიჯი 7: აპარატურა სურათის გადასაღებად

აპარატურა სურათის გადასაღებად
აპარატურა სურათის გადასაღებად
აპარატურა სურათის გადასაღებად
აპარატურა სურათის გადასაღებად

მე მყავს (ჩემს მეუღლეს) აქვს Canon Rebel ციფრული კამერა. კამერაზე არის ჯეკი, რომელიც საშუალებას გაძლევთ დააკავშიროთ ხელით დისტანციური ჩამკეტის კონტროლი. შევიძინე ხელით დისტანციური მართვის სისტემა B&H Photo– დან. კაბელს აქვს სწორი ბუდე, რომელიც კამერას ერთ ბოლოზე უთავსებს და დაახლოებით 6 ფუტის სიგრძისაა. ბოლოს გავთიშე კაბელი ღილაკის მართვის ყუთთან ახლოს და მე გადავიღე მავთულები და გავამაგრე ისინი სამ სათაურზე, რომლის შეკვრაც შევძელი პურის დაფაზე. არის შიშველი მავთული, რომელიც დაფქულია და ორი სხვა სიგნალი: წვერი არის გამომწვევი (ვარდისფერი) და ბეჭედი (თეთრი) ფოკუსირებულია (იხ. სურათები). წვერი და/ან ბეჭედი მიწაზე აკრავს ჩამკეტს და ფოკუსირებას კამერაზე.

ჯუმბერის მავთულის გამოყენებით მე თინეიჯერიდან გამოვედი იმ ადგილას, სადაც შემეძლო მისი გამოყენება პურის დაფაზე. მე ასევე დავუკავშირე LED- ის ანოდი Teensy- ზე pin 2-ს და LED- ის კათოდს რეზისტორთან (100-220 ohms) მიწასთან. მე ასევე დავუკავშირე Teensy- ს პინი 2 10K რეზისტორს და რეზისტორის მეორე მხარე მე დავუკავშირე NPN ტრანზისტორის ბაზას (2N3904 ნაპოვნია ყველგან). მე ტრანზისტორის გამცემი მიწას დავუკავშირე და კოლექტორი დავუკავშირე თეთრ და ვარდისფერ მავთულხლართებს კაბელიდან წასული კაბელიდან. შიშველი მავთული ისევ მიწასთან იყო დაკავშირებული. როდესაც LED- ი ჩართულია Teensy– ს მიერ, NPN ტრანზისტორიც ჩაირთვება და ის გამოიწვევს კამერას (და ფოკუსს). იხილეთ სქემატური.

ნაბიჯი 8: სისტემის დიზაინი

სისტემის დიზაინი
სისტემის დიზაინი

ვინაიდან კოლიბრის ფრთების ფრიალის სიხშირეები არ აღემატება რამდენიმე ასეულ ჰერცს, მაშინ ჩვენ ნამდვილად არ გვჭირდება ხმის სიხშირეების ჩაწერა ზემოთ, ვთქვათ, რამდენიმე ასეულ ჰერცზე. ჩვენ გვჭირდება გზა გავფილტროთ მხოლოდ ის სიხშირეები, რაც გვსურს. Bandpass ან თუნდაც lowpass ფილტრი იქნება დიდი. ტრადიციულად ჩვენ განვახორციელებთ ფილტრს აპარატურაში OpAmps ან გადართული კონდენსატორის ფილტრების გამოყენებით. მაგრამ ციფრული სიგნალის დამუშავებისა და Teensy's პროგრამული ბიბლიოთეკების წყალობით, ჩვენ შეგვიძლია გამოვიყენოთ ციფრული ფილტრი (არ არის საჭირო შედუღება … მხოლოდ პროგრამული უზრუნველყოფა).

PJRC– ს აქვს შესანიშნავი GUI, რომელიც საშუალებას გაძლევთ გადაიტანოთ და ჩამოაგდოთ თქვენი აუდიო სისტემა Teensy და აუდიო დაფისთვის. თქვენ შეგიძლიათ იპოვოთ აქ:

www.pjrc.com/teensy/gui/

მე გადავწყვიტე გამოვიყენო PJRC- ის მიერ მოწოდებული ორკვალიანი კასკადური ფილტრი მიკროფონიდან (ფილტრიდან) ხმის სიხშირეების შეზღუდვის მიზნით. მე შევასხი სამი ასეთი ფილტრი და დავაყენე ისინი 100 Hz სიჩქარით. ეს ფილტრი საშუალებას მისცემს სისტემის სიხშირეებს ოდნავ ზემოთ და ოდნავ ქვემოთ იმ სიხშირეზე, რომელიც ჩვენ გვაინტერესებს.

ბლოკ დიაგრამაში (იხ. სურათი) i2s1 არის აუდიო შეყვანა აუდიო დაფაზე. ორივე აუდიო არხი მიქსერს და შემდეგ ფილტრებს დავუკავშირე (მიკროფონი მხოლოდ ერთი არხია, მაგრამ მე ორივე ავურიე ისე, რომ არ გამეგო რომელი არხი იყო … ზარმაცი დამირეკე). მე ვაწარმოებ ფილტრის გამომავალს აუდიო გამომავალზე (ასე რომ, მსურს აუდიოს მოსმენა). მე ასევე დავუკავშირე აუდიო ფილტრებიდან FFT ბლოკს. ბლოკის დიაგრამაში sgtl5000_1 წარწერით ბლოკი არის აუდიო კონტროლერის ჩიპი. მას არ სჭირდება რაიმე კავშირი დიაგრამაში.

ბლოკის მშენებლობის დასრულების შემდეგ დააჭირეთ ექსპორტს. ეს აჩვენებს დიალოგურ ფანჯარას, სადაც შეგიძლიათ დააკოპიროთ კოდი, რომელიც წარმოიშვა ბლოკ დიაგრამადან და ჩასვით თქვენს Teensy პროგრამაში. თუ გადახედავთ კოდს, ხედავთ, რომ ეს არის თითოეული კონტროლის ინსტალაცია კომპონენტებს შორის „კავშირებთან“ერთად.

ნაბიჯი 9: კოდი

კოდი
კოდი

ამ ინსტრუქციებში ძალიან ბევრი ადგილი დასჭირდება პროგრამული უზრუნველყოფის დეტალური შესწავლას. რასაც მე შევეცდები გავაკეთო არის გამოვყო კოდის ზოგიერთი ძირითადი ნაწილი. მაგრამ ეს არ არის ძალიან დიდი პროგრამა მაინც. PJRC– ს აქვს შესანიშნავი ვიდეო გაკვეთილი Teensy– ს და აუდიო ბიბლიოთეკების/ინსტრუმენტების გამოყენების შესახებ (https://www.youtube.com/embed/wqt55OAabVs).

მე დავიწყე PJRC– ს ზოგიერთი FFT მაგალითი კოდით. კოდის ზედა ნაწილში ჩავწერე ის, რაც მივიღე აუდიო სისტემის დიზაინის ხელსაწყოდან. თუ თქვენ გადახედავთ კოდს ამის შემდეგ დაინახავთ გარკვეულ ინიციალიზაციას და შემდეგ სისტემა იწყებს მიკროფონიდან აუდიოს ციფრულ ციფრულ გაფორმებას. პროგრამული უზრუნველყოფა შემოდის "სამუდამოდ" მარყუჟში () და ელოდება FFT მონაცემების ხელმისაწვდომობას fft1024_1.available () ფუნქციის ზარის გამოყენებით. როდესაც FFT მონაცემები ხელმისაწვდომია, მე ვიღებ მონაცემების ასლს და ვამუშავებ მას. გაითვალისწინეთ, რომ მე ვიღებ მონაცემებს მხოლოდ იმ შემთხვევაში, თუ ურნის უდიდესი სიდიდე აღემატება მითითებულ მნიშვნელობას. ეს მნიშვნელობა არის ის, თუ როგორ დავაყენე სისტემის მგრძნობელობა. თუ ყუთები დადგენილ მნიშვნელობას აღემატება, მაშინ მე ნორმალიზებას ვანიჭებ ტალღას და გადავცემ დროებითი მასივის დასამუშავებლად, წინააღმდეგ შემთხვევაში მე მას ვაიგნორებ და ველოდები სხვა FFT- ს. უნდა აღვნიშნო, რომ მე ასევე ვიყენებ მიკროფონის მომატების კონტროლის ფუნქციას მიკროსქემის მგრძნობელობის შესაცვლელად (sgtl5000_1.micGain (50)).

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

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

სხვა ალგორითმი იყენებს მნიშვნელობების მუდმივ მასივს, რომელიც წარმოადგენს ნორმალიზებულ FFT- ს. ეს მონაცემები არის ნამდვილი (ოპტიმალური) კოლიბრის ხელმოწერის შედეგები. მე ამას ჰეჯეს ვუწოდებ. მე ვადარებ ჰეჯირების მონაცემებს ნორმალიზებულ FFT მონაცემებთან, რათა დაინახოს, არის თუ არა შესაბამისი ურნები ერთმანეთის 20% -ის ფარგლებში. მე ავირჩიე 20% მაგრამ, ეს მნიშვნელობა ადვილად მორგებული იყო.

მე ასევე ვითვლი რამდენჯერ ინდივიდუალური ალგორითმები ფიქრობენ, რომ მათ აქვთ შესატყვისი, რაც ნიშნავს, რომ მათ ესმით კოლიბრის მოსმენა. მე ვიყენებ ამ რიცხვს, როგორც კოლიბრის განსაზღვრის ნაწილს, რადგან ცრუ გამომწვევი შეიძლება მოხდეს. მაგალითად, როდესაც რაიმე ხმა არის ხმამაღალი ან შეიცავს ფრინველთა ფრთა სიხშირეს, მაგალითად ხელების ტაში, შეიძლება მიიღოთ გამომწვევი. მაგრამ თუ რიცხვი აღემატება გარკვეულ რაოდენობას (რიცხვს მე ვირჩევ) მე ვამბობ, რომ ეს არის კოლიბრი. როდესაც ეს მოხდება, მე ვანთებ LED- ს იმის მითითებას, რომ ჩვენ გვაქვს დარტყმა და ეს იგივე სქემა იწვევს კამერას NPN ტრანზისტორის საშუალებით. პროგრამულ უზრუნველყოფაში მე დავაყენე კამერის გამშვები დრო 2 წამი (დრო, როდესაც LED და ტრანზისტორი ჩართულია).

ნაბიჯი 10: მონტაჟი

სამონტაჟო
სამონტაჟო

თქვენ შეგიძლიათ ნახოთ სურათზე, თუ როგორ (უცერემონიოდ) დავაყენე ელექტრონიკა. მე მქონდა Teensy ჩართული breadboard რომელიც იყო გამყარებული გადამზიდავი დაფაზე ერთად სხვა (გამოუყენებელი) Arduino თავსებადი (Arduino Zero ვფიქრობ). მე მავთულხლართებით დავამაგრე ეს ყველაფერი ჩემს გემბანზე მდებარე ლითონის ჩარდახის ბოძზე (მე ასევე დავამატე დაძაბულობის შემსუბუქება კაბელზე გამავალი კაბელისთვის). ბოძი კოლიბრის მიმწოდებლის გვერდით იყო. ელექტრონიკა დავამუშავე პატარა LiPo დენის აგურით, რომელიც შეგიძლიათ გამოიყენოთ მკვდარი მობილური ტელეფონის დასატენად. დენის აგურს ჰქონდა USB კონექტორი, რომელზეც ვიყენებდი ენერგიას მოზარდებისთვის. მე დისტანციური გამშვები კაბელი გადავიღე კამერაზე და შევაერთე იგი. მე მზად ვიყავი ფრინველებისთვის!

ნაბიჯი 11: შედეგები

შედეგები
შედეგები

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

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

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

ნაბიჯი 12: საბოლოო აზრები

დასკვნითი ფიქრები
დასკვნითი ფიქრები

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

მე მითხრეს, რომ არსებობს ღია კოდის მანქანათმცოდნეობის კოდი … იქნებ სისტემა იყოს „გაწვრთნილი“კოლიბრის იდენტიფიცირებისთვის! დარწმუნებული არ ვარ, რომ ვცდი ამას, მაგრამ, შეიძლება.

კიდევ რა შეიძლება დაემატოს ამ პროექტს? თუ კამერას ჰქონდა თარიღი/დრო შტამპი, თქვენ შეგიძლიათ დაამატოთ ეს ინფორმაცია სურათებს. კიდევ ერთი რამ, რისი გაკეთებაც შეგიძლიათ, არის აუდიოს ჩაწერა და შენახვა uSD ბარათზე (PJRC აუდიო დაფას აქვს ერთი სლოტი). შენახული აუდიო შეიძლება გამოყენებულ იქნას სასწავლო ალგორითმის მომზადებისთვის.

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

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

Მადლობა წაკითხვისთვის!

ჩემს მიერ გამოქვეყნებული კოდის გამოსაყენებლად დაგჭირდებათ Arduino IDE (https://www.arduino.cc/en/Main/Software). თქვენ ასევე დაგჭირდებათ Teensyduino კოდი PJRC– დან (https://www.pjrc.com/teensy/td_download.html).

გირჩევთ: