สารบัญ:

เครื่องตรวจจับอารมณ์สุนัข (Raspberry Pi): 5 ขั้นตอน
เครื่องตรวจจับอารมณ์สุนัข (Raspberry Pi): 5 ขั้นตอน

วีดีโอ: เครื่องตรวจจับอารมณ์สุนัข (Raspberry Pi): 5 ขั้นตอน

วีดีโอ: เครื่องตรวจจับอารมณ์สุนัข (Raspberry Pi): 5 ขั้นตอน
วีดีโอ: โปรแกรมสแกนตรวจจับวัตถุระเบิดด้วยกล้อง Bomb image processing 2024, อาจ
Anonim
เครื่องตรวจจับอารมณ์สุนัข (Raspberry Pi)
เครื่องตรวจจับอารมณ์สุนัข (Raspberry Pi)

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

ขั้นตอนที่ 1: อะไหล่

อะไหล่
อะไหล่
อะไหล่
อะไหล่
อะไหล่
อะไหล่

คุณจะต้องการ:

  • ราสเบอร์รี่ปี่
  • ไฟ LED สีแดง/สีเขียว (X2)
  • เฝ้าสังเกต
  • คีย์บอร์ด/เมาส์พร้อม USB
  • WiFi Dongle
  • ไมโครโฟน USB ภายนอก
  • ตัวต้านทาน 330 โอห์ม (X2)

อะไหล่เสริม

  • แหล่งจ่ายไฟ Raspberry Pi ภายนอก
  • ปลอกคอสุนัข

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

ขั้นตอน
ขั้นตอน

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

ขั้นตอนที่ 3: การเขียนโปรแกรม

การเขียนโปรแกรม
การเขียนโปรแกรม

ด้านล่างนี้คือโปรแกรม Python ที่ฉันใช้สำหรับสุนัขของฉัน ในขั้นตอนต่อไป ผมจะอธิบายวิธีปรับเปลี่ยนโปรแกรมสำหรับพฤติกรรมสุนัขของคุณ อย่าเพิ่งรันโปรแกรมเพราะมันจะไม่ทำงานจนกว่าคุณจะทำขั้นตอนต่อไป

#!/usr/bin/pythonimport pyaudio นำเข้า sys เธรดการนำเข้าจากเวลานำเข้าสลีปจากการนำเข้าอาร์เรย์นำเข้าอาร์เรย์นำเข้า RPi. GPIO เป็น GPIO

เปลือก=0

หอน=False Hold=0 barkLength=5 ล่าช้า=0 รอ = 2 ธง = 0 สีแดง = 7 สีเขียว=5 exitFlag = False

def toggleLightRed(c):

GPIO.setmode(GPIO. BOARD) GPIO.setup(red, GPIO. OUT) GPIO.output(c, True) sleep(10) GPIO.output(c, False) print("Red toggled")

def toggleLightGreen(c):

GPIO.setmode(GPIO. BOARD) GPIO.setup(green, GPIO. OUT) GPIO.output(c, True) sleep(10) GPIO.output(c, False) พิมพ์ ("สลับสีเขียว")

def หลัก ():

global bark global howl global hold global barkLength global delay global flag global red global สีเขียว

ก้อน = 8192

FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 threshold = 3000 max_value = 0 p = pyaudio. PyAudio() สตรีม = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, output=True, frames_per_buffer=chunk) GPIO.setmode(GPIO. BOARD) GPIO.setup(red, GPIO. OUT) GPIO.setup(green, GPIO. OUT) ลอง: พิมพ์ "การตรวจจับเริ่มต้น" ในขณะที่ True: ลอง: data = stream.read(ก้อน) ยกเว้น IOError เช่น: ถ้า ex[1] != pyaudio.paInputOverflowed: ยกข้อมูล = '\x00' * ก้อน as_ints = array('h', data) max_value = max(as_ints) ในขณะที่ max_value>threshold: delay= 0 hold=hold+1 try: data = stream.read(chunk) ยกเว้น IOError เช่น: if ex[1] != pyaudio.paInputOverflowed: Raise data = '\x00' * chunk as_ints = array('h', data) max_value = max(as_ints) if hold>=barkLength: howl=True print "HOWL DETECTED" toggleLightGreen(green) GPIO.cleanup() elif hold>0 และกดค้างไว้

ถ้า _name_ == '_main_':

หลัก()

ขั้นตอนที่ 4: การแก้ไขปัญหาและการแก้ไข

การแก้ไขปัญหาและการปรับเปลี่ยน
การแก้ไขปัญหาและการปรับเปลี่ยน
การแก้ไขปัญหาและการปรับเปลี่ยน
การแก้ไขปัญหาและการปรับเปลี่ยน
การแก้ไขปัญหาและการแก้ไข
การแก้ไขปัญหาและการแก้ไข

ติดตั้ง

ก่อนที่คุณจะรันโปรแกรม คุณจะต้องพิมพ์ข้อความต่อไปนี้ใน Terminal เพื่อติดตั้ง PyAudio:

sudo apt-get intall python-pyaudio

หลังจากนี้ คุณสามารถทดสอบรันโปรแกรมเพื่อให้แน่ใจว่าทำงานได้อย่างถูกต้อง

การแก้ไขปัญหา

คุณอาจพบข้อผิดพลาดต่อไปนี้:

IOError: [อินพุต Errno ล้น] -9981

ในการแก้ไขปัญหานี้ ให้เพิ่มจำนวนที่กำหนดให้กับกลุ่มตัวแปรจนกว่าข้อผิดพลาดจะไม่ปรากฏขึ้นอีก

การปรับเปลี่ยน

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

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

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

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

ตัวแปรธรณีประตูสามารถลดลงได้หากเสียงเห่าไม่ดังมากหรือเพิ่มขึ้นหากมีเสียงพื้นหลังที่สามารถตีความได้ว่าเป็นเสียงที่เล็ดลอดออกมาจากสุนัข

ขั้นตอนที่ 5: ฮาร์ดแวร์

ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์

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

เครื่องเขียน

สิ่งที่ง่ายที่สุดที่จะทำคือทิ้งทุกอย่างไว้บนเขียงหั่นขนมเพราะจะไม่มีการเคลื่อนไหวใดที่สามารถถอดสายไฟได้ เชื่อมต่อแคโทดของไฟ LED สีแดงกับพินกราวด์บน Raspberry Pi และแอโนดผ่านตัวต้านทาน 330 โอห์มหรือเสียบตรงเข้ากับพิน 7 ของ Raspberry Pi ทำเช่นเดียวกันกับไฟ LED สีเขียว แต่เชื่อมต่อ Anodes กับพิน 5 เรียกใช้โปรแกรมและคุณควรมีโครงการที่เสร็จสมบูรณ์เมื่อคุณแก้ไขรหัสตามความต้องการของคุณแล้ว

ไม่ใช่เครื่องเขียน

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

ติดไฟ LED เข้ากับปลอกคอเพื่อให้ทั้งคู่อยู่ในตำแหน่งที่สบายและผู้อื่นสามารถมองเห็นได้ขณะเข้าใกล้

ถัดไป เชื่อมต่อแหล่งจ่ายไฟภายนอกของคุณ เช่น ที่เห็นที่นี่ กับ raspberry pi และยึดไว้กับปลอกคอในลักษณะที่สะดวกสำหรับสุนัข

เมื่อทุกอย่างเข้าที่แล้ว ให้ดำเนินการโปรแกรม ติดปลอกคอกับสุนัข เท่านี้ก็เรียบร้อย!

แนะนำ: