สารบัญ:

เครื่องตรวจจับ/ถ่ายภาพนกฮัมมิงเบิร์ด: 12 ขั้นตอน (พร้อมรูปภาพ)
เครื่องตรวจจับ/ถ่ายภาพนกฮัมมิงเบิร์ด: 12 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เครื่องตรวจจับ/ถ่ายภาพนกฮัมมิงเบิร์ด: 12 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เครื่องตรวจจับ/ถ่ายภาพนกฮัมมิงเบิร์ด: 12 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: เปิดคลิป วินาทีก่อนจับตาย “จ่าคลั่ง” 2024, กรกฎาคม
Anonim
ตัวตรวจจับ/ถ่ายภาพนกฮัมมิงเบิร์ด
ตัวตรวจจับ/ถ่ายภาพนกฮัมมิงเบิร์ด

เรามีเครื่องให้อาหารนกฮัมมิงเบิร์ดบนดาดฟ้าของเรา และในช่วงสองสามปีที่ผ่านมาฉันได้ถ่ายรูปพวกมัน นกฮัมมิงเบิร์ดเป็นสัตว์ตัวเล็กที่น่าทึ่ง มีอาณาเขตมาก และการต่อสู้ของพวกมันสามารถทั้งเฮฮาและน่าทึ่ง แต่ฉันเบื่อที่จะยืนเหมือนรูปปั้นหลังบ้านเพื่อถ่ายรูปพวกเขา ฉันต้องการวิธีถ่ายภาพโดยไม่ต้องยืนรอหลังบ้านเป็นเวลานาน ฉันรู้ว่าฉันสามารถใช้ชัตเตอร์ควบคุมจากระยะไกลได้ แต่ฉันต้องการให้ถ่ายภาพโดยอัตโนมัติโดยที่ฉันไม่ต้องอยู่ที่นั่น ดังนั้นฉันจึงตัดสินใจสร้างอุปกรณ์ตรวจจับนกฮัมมิ่งเบิร์ดและถ่ายภาพโดยอัตโนมัติ

ฉันตั้งใจจะใช้ไมโครคอนโทรลเลอร์เพื่อทำสิ่งนี้เสมอ ไมโครคอนโทรลเลอร์จะสามารถขับชัตเตอร์ของกล้องได้ภายใต้การควบคุมซอฟต์แวร์ แต่เซ็นเซอร์ตรวจจับนกฮัมมิงเบิร์ดตัวเล็กเป็นอีกสิ่งหนึ่ง ฉันสามารถใช้เซ็นเซอร์ตรวจจับความเคลื่อนไหว แต่ฉันต้องการลองสิ่งที่ไม่เหมือนใคร ฉันตัดสินใจใช้เสียงเป็นตัวกระตุ้น

ขั้นตอนที่ 1: การเลือกไมโครคอนโทรลเลอร์

การเลือกไมโครคอนโทรลเลอร์
การเลือกไมโครคอนโทรลเลอร์

ไมโครคอนโทรลเลอร์ที่ฉันเลือกคือ PJRC Teensy Teensy ใช้ไมโครคอนโทรลเลอร์ ARM โดยเฉพาะ ARM Cortex M4 Cortex M4 มีฮาร์ดแวร์สำหรับทำ FFT (Fast Fourier Transform) ที่จะทำการตรวจจับ PJRC ยังจำหน่ายบอร์ดเสียงที่ช่วยให้คุณใช้ Teensy เพื่อเล่นเพลงและบันทึกเสียงด้วยอินพุตภายนอก หรือไมโครโฟนขนาดเล็กที่คุณสามารถเพิ่มลงในบอร์ดได้ แผนของฉันคือการให้ Teensy ทำ FFT ด้วยเสียงจากไมโครโฟน

ขั้นตอนที่ 2: FFT?

เอฟเอฟที?
เอฟเอฟที?

FFT คือสูตร/อัลกอริทึมทางคณิตศาสตร์ที่แปลงสัญญาณจากโดเมนเวลาเป็นโดเมนความถี่ สิ่งนี้หมายความว่าจะใช้เสียงที่สุ่มตัวอย่างตามเวลาจากไมโครโฟนและเปลี่ยนให้เป็นขนาดของความถี่ที่มีอยู่ในคลื่นเดิม คุณเห็นไหมว่าคลื่นต่อเนื่องตามอำเภอใจใดๆ สามารถสร้างได้จากชุดของคลื่นไซน์หรือโคไซน์ที่เป็นทวีคูณจำนวนเต็มของความถี่ฐานบางตัว FFT ทำสิ่งที่ตรงกันข้าม: ใช้คลื่นตามอำเภอใจและเปลี่ยนเป็นขนาดของคลื่นที่หากรวมเข้าด้วยกันจะทำให้เกิดคลื่นตามอำเภอใจดั้งเดิม วิธีพูดที่ง่ายกว่านี้ก็คือ ฉันวางแผนที่จะใช้ซอฟต์แวร์และฮาร์ดแวร์ FFT ใน Teensy เพื่อตรวจสอบว่า 'ได้ยิน' การกระพือปีกของนกฮัมมิงเบิร์ดที่ความถี่ที่ปีกนกเกิดขึ้นหรือไม่ ถ้ามัน 'ได้ยิน' นกฮัมมิงเบิร์ด ฉันจะส่งคำสั่งให้กล้องถ่ายภาพ

มันได้ผล! แล้วฉันทำมันได้อย่างไร คุณทำมันได้อย่างไร และคุณจะทำให้ดียิ่งขึ้นไปอีกได้อย่างไร?

ขั้นตอนที่ 3: เสียงนกฮัมมิงเบิร์ดที่บินโฉบเป็นอย่างไร

เสียงนกฮัมมิงเบิร์ดที่บินโฉบเป็นอย่างไร?
เสียงนกฮัมมิงเบิร์ดที่บินโฉบเป็นอย่างไร?

อย่างแรกเลย ฉันต้องคิดก่อนว่าฉันจะได้ยินเสียงกระพือปีกของนกฮัมมิงเบิร์ดความถี่เท่าใด เพื่อตรวจสอบสิ่งนี้ ฉันใช้ iPhone ของฉัน ฉันติด iPhone เข้ากับขาตั้งกล้องและให้เครื่องบันทึกวิดีโอสโลว์โมชั่นโดยตรงที่หน้าเครื่องป้อนนกฮัมมิงเบิร์ดบนดาดฟ้าของเรา หลังจากผ่านไประยะหนึ่ง ผมก็ถอดกล้องออกและดาวน์โหลดวิดีโอ จากนั้นฉันก็ดูวิดีโอเพื่อค้นหานกฮัมมิงเบิร์ดที่อยู่หน้าเครื่องป้อน เมื่อฉันพบซีเควนซ์ที่ดี ฉันนับจำนวนเฟรมแต่ละตัวที่นกฮัมมิงเบิร์ดใช้ในการกระพือปีกจากตำแหน่งหนึ่งไปจนถึงตำแหน่งเดียวกันนั้น สโลว์โมชั่นบน iPhone ประมาณ 240 เฟรมต่อวินาที ฉันสังเกตเห็นนกฮัมมิงเบิร์ดบินโฉบอยู่หน้าตัวป้อนและนับ 5 เฟรมเพื่อให้มันขยับปีกจากตำแหน่งไปข้างหน้าไปยังตำแหน่งด้านหลังแล้วกลับไปที่ตำแหน่งไปข้างหน้า นี่คือ 5 เฟรมจาก 240 เฟรม จำไว้ว่าเราได้ยินเสียงในแต่ละจังหวะของปีกนกฮัมมิงเบิร์ด สำหรับ 5 เฟรมสำหรับรอบหรือรอบระยะเวลา เราสามารถคำนวณความถี่เป็นเฟรมเดียวหารด้วยคาบเช่น 1 / (5/240) หรือ 48 Hz ซึ่งหมายความว่าเมื่อนกฮัมมิงเบิร์ดบินโฉบ เสียงที่เราได้ยินต้องเป็นสองเท่าหรือประมาณ 96 เฮิรตซ์ ความถี่อาจสูงขึ้นเมื่อบินและไม่โฉบ มันอาจได้รับผลกระทบจากมวลของพวกมันด้วย แต่ฉันคิดว่าเราสามารถสรุปได้ว่านกในสายพันธุ์เดียวกันส่วนใหญ่มีมวลเท่ากัน

ขั้นตอนที่ 4: Fourier Series และ Teensy

Fourier Series และ Teensy
Fourier Series และ Teensy

Teensy (ฉันใช้ Teensy 3.2) สร้างโดย PJRC (www.pjrc.com) FFT จะคำนวณจากตัวอย่างเสียง เพื่อให้ได้เสียง PJRC ขายบอร์ดอะแดปเตอร์เสียงสำหรับ Teensy (TEENSY3_AUDIO - 14.25 ดอลลาร์) พวกเขายังขายไมโครโฟนขนาดเล็กที่สามารถบัดกรีกับบอร์ดอะแดปเตอร์เสียง (MICROPHONE - $1.25) บอร์ดอะแดปเตอร์เสียงใช้ชิป (SGTL5000) ที่ Teensy สามารถพูดคุยผ่านบัสอนุกรม (I2S) Teensy ใช้ SGTL5000 เพื่อสุ่มตัวอย่างเสียงจากไมโครโฟนและแปลงเป็นดิจิทัล นั่นคือสร้างชุดตัวเลขที่แสดงถึงเสียงที่ไมโครโฟนได้ยิน

FFT เป็นเพียงเวอร์ชันที่รวดเร็วของสิ่งที่เรียกว่า Discrete Fourier Transform (DFT) DFT สามารถดำเนินการกับตัวอย่างจำนวนเท่าใดก็ได้ อย่างไรก็ตาม FFT จำเป็นต้องมีตัวอย่างที่จัดเก็บไว้ในชุดที่เป็นทวีคูณไบนารี ฮาร์ดแวร์ Teensy สามารถทำ FFT กับชุดตัวอย่าง 1024 ตัวอย่าง (1024=2^10) นั่นคือสิ่งที่เราจะใช้

FFT มักจะสร้างขนาดและความสัมพันธ์ของเฟสระหว่างคลื่นต่างๆ ที่แสดงแทน สำหรับแอปพลิเคชันนี้ เราไม่เกี่ยวข้องกับความสัมพันธ์ของเฟส แต่เราสนใจในขนาดและความถี่

บอร์ดเสียง Teensy สุ่มตัวอย่างเสียงที่ความถี่ 44, 100 Hz ดังนั้น 1024 ตัวอย่างที่ความถี่นี้แสดงถึงช่วงเวลา 1024/44100 หรือประมาณ 23.2 มิลลิวินาที ในกรณีนี้ FFT จะสร้างเป็นเอาต์พุต ขนาดที่เป็นทวีคูณของจำนวนเต็มของช่วงตัวอย่างที่ 43 Hz (อีกครั้ง 1/0.0232 เท่ากับประมาณ 43 Hz) เราต้องการหาขนาดที่ประมาณสองเท่าของความถี่นี้: 86 Hz มันไม่ใช่ความถี่ของปีกนกฮัมมิงเบิร์ดที่คำนวณได้อย่างแน่นอน แต่ก็ใกล้เคียงพออย่างที่เราจะได้เห็น

ขั้นตอนที่ 5: การใช้ข้อมูลฟูริเยร์

การใช้ข้อมูลฟูริเยร์
การใช้ข้อมูลฟูริเยร์

ห้องสมุดที่ PJRC จัดเตรียมไว้สำหรับ Teensy จะประมวลผลตัวอย่างและคืนค่าอาร์เรย์ของค่าขนาด เราจะอ้างถึงแต่ละขนาดในอาร์เรย์ที่ส่งคืนเป็น bin ถังแรก (ที่ออฟเซ็ตศูนย์ในอาร์เรย์ของข้อมูลที่เราได้รับกลับมา) คือ DC offset ของคลื่น เราสามารถละเว้นค่านี้ได้อย่างปลอดภัย ถังที่สอง (ที่ออฟเซ็ต 1) จะแสดงขนาดของส่วนประกอบ 43 Hz นี่คือช่วงเวลาพื้นฐานของเรา ถังถัดไป (ที่ออฟเซ็ต 2) จะแสดงขนาดของส่วนประกอบ 86 Hz เป็นต้น แต่ละถังที่ตามมาคือผลคูณของจำนวนเต็มของคาบฐาน (43 Hz)

ตอนนี้ที่นี่เป็นที่ที่ได้รับแปลกเล็กน้อย หากเราใช้ FFT เพื่อวิเคราะห์เสียง 43 Hz ที่สมบูรณ์แบบ FFT จะคืนค่าถังแรกในขนาดที่ใหญ่ และถังขยะที่เหลือทั้งหมดจะเท่ากับศูนย์ (อีกครั้งในโลกที่สมบูรณ์แบบ) หากเสียงที่เราจับและวิเคราะห์คือ 86 เฮิรตซ์ ถังขยะที่ออฟเซ็ตหนึ่งจะเป็นศูนย์ และถังขยะที่ออฟเซ็ต 2 (ฮาร์มอนิกที่สอง) จะเป็นขนาดที่ใหญ่ และส่วนที่เหลือของถังขยะจะเป็นศูนย์ เป็นต้น แต่ถ้าเราจับเสียงของนกฮัมมิงเบิร์ดและมันคือ 96 Hz (ตามที่ฉันวัดจากนกตัวหนึ่งของฉัน) ดังนั้นค่าชดเชย 2 bin @ 86 Hz จะมีค่าที่ต่ำกว่าเล็กน้อย (มากกว่าคลื่น 86 Hz ที่สมบูรณ์แบบ) และ ถังขยะรอบๆ (หนึ่งอันที่ต่ำกว่าและอีกสองสามอัน) แต่ละอันจะมีค่าที่ไม่เป็นศูนย์ที่ลดลง

หากขนาดตัวอย่างสำหรับ FFT ของเรามากกว่า 1024 หรือหากความถี่ในการสุ่มตัวอย่างเสียงของเราต่ำกว่า เราสามารถทำให้ความละเอียดของถังขยะของเราดีขึ้น (กล่าวคือ เล็กกว่า) แต่ถึงแม้ว่าเราจะเปลี่ยนสิ่งเหล่านี้เพื่อทำให้ FFT bins 1 Hz ทวีคูณของช่วงเวลาฐาน เราก็ยังคงต้องจัดการกับ 'การรั่วไหล' ของถังขยะนี้ นี่เป็นเพราะว่าเราไม่เคยได้รับความถี่ปีกที่ลงจอดเสมอและแน่นอนในถังขยะเดียว ซึ่งหมายความว่าเราไม่สามารถเพียงแค่ตรวจจับนกฮัมมิงเบิร์ดของเราตามค่าในถังขยะ 2 ถังขยะและละเว้นส่วนที่เหลือ เราต้องการวิธีวิเคราะห์ข้อมูลในถังขยะสองสามถังเพื่อพยายามทำความเข้าใจ เพิ่มเติมเกี่ยวกับเรื่องนี้ในภายหลัง

ขั้นตอนที่ 6: เริ่มการก่อสร้าง

เริ่มก่อสร้าง
เริ่มก่อสร้าง
เริ่มก่อสร้าง
เริ่มก่อสร้าง

สำหรับเครื่องตรวจจับนกฮัมมิงเบิร์ดต้นแบบของฉัน ฉันใช้หมุดตัวผู้-ตัวผู้ที่ยาวเป็นพิเศษที่บัดกรีกับหมุดใน Teensy ฉันทำสิ่งนี้เพื่อที่ฉันจะได้เสียบ Teensy เข้ากับเขียงหั่นขนมขนาดเล็กที่ไม่มีบัดกรี ฉันทำสิ่งนี้เพราะฉันคิดว่าจะต้องทำการเปลี่ยนแปลงหลายอย่างในต้นแบบ และด้วยเขียงหั่นขนม ฉันสามารถเปลี่ยนสิ่งนี้และเพียงแค่สายจัมเปอร์ทุกที่ที่ฉันต้องการ ฉันบัดกรีแถบตัวเมียที่ด้านล่างของบอร์ดเสียงซึ่งช่วยให้เสียบที่ด้านบนของ Teensy ได้ ไมโครโฟนถูกบัดกรีที่ด้านบนของบอร์ดเสียง (ดูรูป) รายละเอียดเพิ่มเติมเกี่ยวกับการประกอบสามารถพบได้ในเว็บไซต์ PJRC:

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

ขั้นตอนที่ 7: ฮาร์ดแวร์เพื่อถ่ายภาพ

ฮาร์ดแวร์สำหรับถ่ายภาพ
ฮาร์ดแวร์สำหรับถ่ายภาพ
ฮาร์ดแวร์สำหรับถ่ายภาพ
ฮาร์ดแวร์สำหรับถ่ายภาพ

ฉันมี (ภรรยาของฉันมี) กล้องดิจิตอล Canon Rebel มีแจ็คบนกล้องที่ให้คุณเชื่อมต่อการควบคุมชัตเตอร์ระยะไกลแบบแมนนวล ฉันซื้อรีโมตคอนโทรลแบบแมนนวลจาก B&H Photo สายเคเบิลมีแจ็คที่ถูกต้องเพื่อให้พอดีกับกล้องที่ปลายด้านหนึ่งและยาวประมาณ 6 ฟุต ฉันตัดสายเคเบิลที่ส่วนท้ายใกล้กับกล่องควบคุมปุ่ม และถอดสายไฟกลับและบัดกรีให้เป็นหมุดส่วนหัวสามตัวที่ฉันสามารถเสียบเข้ากับเขียงหั่นขนมได้ มีสายเปลือยที่ต่อกราวด์และอีกสองสัญญาณ: ปลายเป็นทริกเกอร์ (สีชมพู) และวงแหวน (สีขาว) คือโฟกัส (ดูภาพ) การย่อส่วนปลายและ/หรือวงแหวนลงไปที่พื้นจะเป็นการสั่งงานชัตเตอร์และโฟกัสที่กล้อง

การใช้สายจัมเปอร์ ฉันวิ่งบนพื้นทั่วไปจาก Teensy ไปยังพื้นที่ที่ฉันสามารถใช้มันบนเขียงหั่นขนม ฉันยังเชื่อมต่อขั้วบวกของ LED เพื่อพิน 2 บน Teensy และแคโทดของ LED กับตัวต้านทาน (100-220 โอห์ม) กับกราวด์ ฉันยังเชื่อมต่อพิน 2 ของ Teensy กับตัวต้านทาน 10K และอีกด้านหนึ่งของตัวต้านทานที่ฉันเชื่อมต่อกับฐานของทรานซิสเตอร์ NPN (พบ 2N3904 ทุกที่) ฉันเชื่อมต่ออีซีแอลของทรานซิสเตอร์กับกราวด์และตัวสะสมที่ฉันเชื่อมต่อกับสายสีขาวและสีชมพูจากสายเคเบิลที่ไปที่กล้อง ลวดเปล่าเชื่อมต่อกับกราวด์อีกครั้ง เมื่อใดก็ตามที่ Teensy เปิด LED ทรานซิสเตอร์ NPN จะเปิดขึ้นและจะทริกเกอร์กล้อง (และโฟกัส) ดูแผนผัง

ขั้นตอนที่ 8: การออกแบบระบบ

การออกแบบระบบ
การออกแบบระบบ

เนื่องจากความถี่การกระพือปีกของนกฮัมมิงเบิร์ดไม่น่าจะเกินสองสามร้อยเฮิรตซ์ เราจึงไม่จำเป็นต้องบันทึกความถี่เสียงด้านบน พูดสองสามร้อยเฮิรตซ์จริงๆ สิ่งที่เราต้องการคือวิธีการกรองเฉพาะความถี่ที่เราต้องการ แบนด์พาสหรือฟิลเตอร์โลว์พาสจะดีมาก ตามเนื้อผ้า เราจะใช้ตัวกรองในฮาร์ดแวร์โดยใช้ OpAmps หรือตัวกรองแบบสวิตช์ตัวเก็บประจุ แต่ต้องขอบคุณการประมวลผลสัญญาณดิจิทัลและไลบรารีซอฟต์แวร์ของ Teensy เราจึงสามารถใช้ตัวกรองดิจิทัลได้ (ไม่จำเป็นต้องบัดกรี…แค่ซอฟต์แวร์)

PJRC มี GUI ที่ยอดเยี่ยมที่ให้คุณลากและวางระบบเสียงสำหรับ Teensy และบอร์ดเสียง คุณสามารถหาได้ที่นี่:

www.pjrc.com/teensy/gui/

ฉันตัดสินใจใช้ตัวกรองแบบเรียงซ้อนแบบ biquadratic ที่ PJRC จัดหาให้เพื่อจำกัดความถี่เสียงจากไมโครโฟน (ตัวกรอง) ฉันเรียงตัวกรองดังกล่าวสามตัวและตั้งค่าสำหรับการทำงานของแบนด์พาสที่ 100 Hz ตัวกรองนี้จะอนุญาตให้ใช้ความถี่ของระบบสูงกว่าเล็กน้อยและต่ำกว่าความถี่ที่เราสนใจเล็กน้อย

ในแผนภาพบล็อก (ดูรูป) i2s1 คืออินพุตเสียงไปยังบอร์ดเสียง ฉันเชื่อมต่อช่องสัญญาณเสียงทั้งสองช่องเข้ากับมิกเซอร์แล้วจึงต่อกับฟิลเตอร์ (ไมโครโฟนมีเพียงช่องเดียว แต่ฉันมิกซ์ทั้งสองช่อง ดังนั้นฉันจึงไม่ต้องคิดว่าเป็นช่องใด…เรียกฉันว่าขี้เกียจก็ได้) ฉันเรียกใช้เอาต์พุตของตัวกรองไปยังเอาต์พุตเสียง (เพื่อให้ได้ยินเสียงได้หากต้องการ) ฉันยังเชื่อมต่อเสียงจากตัวกรองกับบล็อก FFT ในแผนภาพบล็อก บล็อกที่ระบุว่า sgtl5000_1 เป็นชิปควบคุมเสียง ไม่ต้องการการเชื่อมต่อใด ๆ ในไดอะแกรม

หลังจากที่คุณสร้างบล็อกทั้งหมดนี้แล้ว คุณคลิกส่งออก ซึ่งจะแสดงกล่องโต้ตอบซึ่งคุณสามารถคัดลอกโค้ดที่สร้างจากไดอะแกรมบล็อกแล้ววางลงในแอปพลิเคชัน Teensy ของคุณ หากคุณดูโค้ด คุณจะเห็นว่ามันเป็นอินสแตนซ์ของการควบคุมแต่ละรายการพร้อมกับ 'การเชื่อมต่อ' ระหว่างส่วนประกอบต่างๆ

ขั้นตอนที่ 9: รหัส

รหัส
รหัส

จะใช้พื้นที่มากเกินไปในคำแนะนำนี้เพื่อดูรายละเอียดซอฟต์แวร์ สิ่งที่ฉันจะพยายามทำคือเน้นส่วนสำคัญของโค้ดบางส่วน แต่นี่ไม่ใช่แอปพลิเคชั่นที่ใหญ่มากอยู่ดี PJRC มีวิดีโอสอนการใช้งาน Teensy และไลบรารี/เครื่องมือเสียงที่ยอดเยี่ยม (https://www.youtube.com/embed/wqt55OAabVs)

ฉันเริ่มต้นด้วยโค้ดตัวอย่าง FFT จาก PJRC ฉันวางสิ่งที่ฉันได้รับจากเครื่องมือออกแบบระบบเสียงลงในโค้ดด้านบน หากคุณดูรหัสหลังจากนี้ คุณจะเห็นการเริ่มต้นบางอย่าง จากนั้นระบบจะเริ่มแปลงเสียงเป็นดิจิทัลจากไมโครโฟน ซอฟต์แวร์เข้าสู่ 'forever' loop() และรอให้ข้อมูล FFT พร้อมใช้งานโดยใช้การเรียกใช้ฟังก์ชัน fft1024_1.available() เมื่อมีข้อมูล FFT ฉันจะคัดลอกข้อมูลและประมวลผล โปรดทราบว่า ฉันจะดึงข้อมูลก็ต่อเมื่อขนาดถังที่ใหญ่ที่สุดอยู่เหนือค่าที่ตั้งไว้ ค่านี้คือวิธีที่ฉันตั้งค่าความไวของระบบ หากถังขยะอยู่เหนือค่าที่ตั้งไว้ ฉันจะปรับคลื่นให้เป็นมาตรฐานและโอนไปยังอาร์เรย์ชั่วคราวสำหรับการประมวลผล มิฉะนั้น ฉันจะเพิกเฉยและรอ FFT อื่นต่อไป ฉันควรพูดถึงว่าฉันยังใช้ฟังก์ชันควบคุมอัตราขยายของไมโครโฟนเพื่อปรับความไวของวงจร (sgtl5000_1.micGain(50))

การปรับคลื่นให้เป็นมาตรฐานหมายความว่าฉันปรับถังขยะทั้งหมดเพื่อให้ถังที่มีค่ามากที่สุดถูกตั้งค่าเป็นหนึ่ง ถังขยะอื่นๆ ทั้งหมดจะถูกปรับขนาดตามสัดส่วนที่เท่ากัน ทำให้วิเคราะห์ข้อมูลได้ง่ายขึ้น

ฉันใช้อัลกอริธึมหลายอย่างในการวิเคราะห์ข้อมูล แต่ฉันตัดสินใจใช้เพียงสองขั้นตอน อัลกอริทึมหนึ่งคำนวณพื้นที่ใต้เส้นโค้งที่เกิดจากถังขยะ นี่คือการคำนวณง่ายๆ ที่เพียงแค่เพิ่มค่าของถังขยะทั่วภูมิภาคที่สนใจ ฉันเปรียบเทียบพื้นที่นี้เพื่อพิจารณาว่าอยู่เหนือเกณฑ์หรือไม่

อัลกอริทึมอื่นใช้อาร์เรย์ค่าคงที่ซึ่งแสดงถึง FFT ที่ทำให้เป็นมาตรฐาน ข้อมูลนี้เป็นผลลัพธ์ของลายเซ็นของนกฮัมมิงเบิร์ดที่แท้จริง (เหมาะสมที่สุด) ฉันเรียกสิ่งนี้ว่าการป้องกันความเสี่ยง ฉันเปรียบเทียบข้อมูลการป้องกันความเสี่ยงกับข้อมูล FFT ที่ปรับให้เป็นมาตรฐาน เพื่อดูว่าถังขยะที่ตรงกันนั้นอยู่ห่างกันไม่เกิน 20% หรือไม่ ฉันเลือก 20% แต่ค่านี้สามารถปรับได้อย่างง่ายดาย

ฉันยังนับด้วยว่าอัลกอริธึมแต่ละอันคิดว่าตรงกันกี่ครั้ง หมายความว่าคิดว่าได้ยินเสียงนกฮัมมิงเบิร์ด ฉันใช้การนับนี้เป็นส่วนหนึ่งของการพิจารณาของนกฮัมมิงเบิร์ดเพราะการเรียกที่ผิดพลาดอาจเกิดขึ้นได้ ตัวอย่างเช่น เมื่อเสียงดังหรือมีความถี่ของปีกนก เช่น การปรบมือ คุณอาจได้รับการกระตุ้น แต่ถ้าการนับมากกว่าจำนวนที่กำหนด (ตัวเลขที่ฉันเลือก) ฉันว่ามันคือนกฮัมมิงเบิร์ด เมื่อสิ่งนี้เกิดขึ้น ฉันจะเปิดไฟ LED เพื่อระบุว่าเรามีการชน และวงจรเดียวกันนี้จะทริกเกอร์กล้องผ่านทรานซิสเตอร์ NPN ในซอฟต์แวร์ ฉันตั้งเวลาทริกเกอร์กล้องเป็น 2 วินาที (เวลาที่ LED และทรานซิสเตอร์เปิดอยู่)

ขั้นตอนที่ 10: การติดตั้ง

การติดตั้ง
การติดตั้ง

คุณสามารถเห็นในภาพว่าฉัน (อย่างไม่เป็นทางการ) ติดตั้งอุปกรณ์อิเล็กทรอนิกส์อย่างไร ฉันมี Teensy เสียบเข้ากับเขียงหั่นขนมซึ่งติดอยู่กับบอร์ดผู้ให้บริการพร้อมกับ Arduino (ไม่ได้ใช้) ตัวอื่นที่เข้ากันได้ (ฉันคิดว่า Arduino Zero) ฉันผูกสายไฟทั้งหมดเข้ากับเสากันสาดโลหะบนดาดฟ้า เสานั้นอยู่ติดกับเครื่องให้อาหารนกฮัมมิงเบิร์ด ฉันขับเคลื่อนอุปกรณ์อิเล็กทรอนิกส์ด้วยอิฐพลังงาน LiPo ขนาดเล็กที่คุณอาจใช้เพื่อชาร์จโทรศัพท์มือถือที่ตายแล้ว ก้อนพลังงานมีขั้วต่อ USB ซึ่งฉันเคยส่งพลังงานไปยัง Teensy ฉันวิ่งสายรีโมทไปที่กล้องแล้วเสียบเข้าไป ฉันพร้อมแล้วสำหรับการกระทำของนก!

ขั้นตอนที่ 11: ผลลัพธ์

ผลลัพธ์
ผลลัพธ์

ฉันตั้งกล้องไว้บนขาตั้งกล้องใกล้กับตัวป้อน ฉันให้กล้องโฟกัสที่ขอบด้านหน้าสุดของตัวป้อน และตั้งค่าเป็นโหมดกีฬา ซึ่งจะถ่ายภาพอย่างรวดเร็วหลายภาพเมื่อกดชัตเตอร์ ด้วยเวลาชัตเตอร์ลง 2 วินาที ฉันจับภาพได้ประมาณ 5 ภาพต่อเหตุการณ์ทริกเกอร์

ฉันใช้เวลาสองสามชั่วโมงในการเล่นซอกับซอฟต์แวร์ในครั้งแรกที่ฉันลองทำเช่นนี้ ฉันต้องปรับความไวและจำนวนอัลกอริธึมที่ต่อเนื่องกัน ในที่สุดฉันก็ได้รับการปรับแต่งและฉันก็พร้อม

ภาพแรกที่ถ่ายคือนกที่บินเข้าไปในกรอบราวกับว่ากำลังเลี้ยวด้วยความเร็วสูงราวกับเครื่องบินขับไล่ไอพ่น (ดูด้านบน) ฉันไม่สามารถบอกคุณได้ว่าฉันตื่นเต้นแค่ไหน ฉันนั่งเงียบ ๆ ที่อีกด้านหนึ่งของเด็คสักครู่แล้วปล่อยให้ระบบทำงาน ฉันสามารถบันทึกภาพได้มากมาย แต่ฉันก็ทิ้งไปบ้าง ปรากฎว่าบางครั้งคุณเพิ่งได้หัวนกหรือหาง นอกจากนี้ ฉันยังได้รับทริกเกอร์ที่ผิดพลาด ซึ่งอาจเกิดขึ้นได้ โดยรวมแล้วฉันคิดว่าฉันเก็บภาพไว้ 39 รูป ฝูงนกต้องเดินทางไปที่ตัวป้อน 2-3 ครั้งเพื่อให้ชินกับเสียงชัตเตอร์จากกล้อง แต่ดูเหมือนพวกมันจะไม่สนใจในท้ายที่สุด

ขั้นตอนที่ 12: ความคิดสุดท้าย

ความคิดสุดท้าย
ความคิดสุดท้าย

นี่เป็นโครงการที่สนุกและได้ผล แต่เช่นเดียวกับหลายๆ อย่าง ยังมีพื้นที่ให้ปรับปรุงอีกมาก ตัวกรองอาจแตกต่างออกไปอย่างแน่นอน (เช่น ตัวกรองความถี่ต่ำหรือการเปลี่ยนแปลงการจัดเรียงและ/หรือพารามิเตอร์) และอาจทำให้ตัวกรองทำงานได้ดีขึ้น ฉันแน่ใจด้วยว่ามีอัลกอริธึมที่ดีกว่าให้ลองใช้ ฉันจะพยายามบางอย่างในฤดูร้อนนี้

ฉันได้รับแจ้งว่ามีรหัสการเรียนรู้ของเครื่องโอเพ่นซอร์สอยู่ที่นั่น…บางทีระบบอาจ 'ฝึก' เพื่อระบุนกฮัมมิงเบิร์ดได้! ฉันไม่แน่ใจว่าฉันจะลองสิ่งนี้ แต่บางที

โครงการนี้มีอะไรเพิ่มเติมอีกบ้าง? หากกล้องมีตัวประทับวันที่/เวลา คุณสามารถเพิ่มข้อมูลนั้นลงในรูปภาพได้ อีกสิ่งหนึ่งที่คุณสามารถทำได้คือบันทึกเสียงและบันทึกลงในการ์ด uSD (บอร์ดเสียง PJRC มีช่องสำหรับหนึ่งช่อง) เสียงที่บันทึกไว้อาจใช้เพื่อฝึกอัลกอริทึมการเรียนรู้ได้

บางทีโรงเรียนวิทยาวิทยาบางแห่งสามารถใช้อุปกรณ์แบบนี้ได้? พวกเขาอาจสามารถรวบรวมข้อมูลต่างๆ เช่น เวลาให้อาหาร ความถี่ในการให้อาหาร และด้วยรูปภาพ คุณอาจระบุนกเฉพาะที่กลับมาหาอาหารได้

ความหวังของฉันคือการที่มีคนอื่นขยายโครงการนี้และแชร์สิ่งที่พวกเขาทำกับผู้อื่น มีคนบอกฉันว่างานนี้ที่ฉันทำควรจะเปลี่ยนเป็นผลิตภัณฑ์ ฉันไม่แน่ใจ แต่ฉันอยากจะเห็นว่ามันเป็นแพลตฟอร์มการเรียนรู้และวิทยาศาสตร์

ขอบคุณที่อ่าน!

หากต้องการใช้รหัสที่ฉันโพสต์ คุณจะต้องมี Arduino IDE (https://www.arduino.cc/en/Main/Software) คุณจะต้องใช้รหัส Teensyduino จาก PJRC (https://www.pjrc.com/teensy/td_download.html)

แนะนำ: