สารบัญ:
- ขั้นตอนที่ 1: อะไหล่
- ขั้นตอนที่ 2: ขั้นตอน
- ขั้นตอนที่ 3: การเขียนโปรแกรม
- ขั้นตอนที่ 4: การแก้ไขปัญหาและการแก้ไข
- ขั้นตอนที่ 5: ฮาร์ดแวร์
วีดีโอ: เครื่องตรวจจับอารมณ์สุนัข (Raspberry Pi): 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
คำแนะนำนี้ออกแบบมาเพื่อใช้เสียงที่สุนัขทำและพิจารณาว่าควรเข้าใกล้หรือไม่ด้วยไฟ 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 และยึดไว้กับปลอกคอในลักษณะที่สะดวกสำหรับสุนัข
เมื่อทุกอย่างเข้าที่แล้ว ให้ดำเนินการโปรแกรม ติดปลอกคอกับสุนัข เท่านี้ก็เรียบร้อย!
แนะนำ:
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
LED กะพริบด้วย Raspberry Pi - วิธีใช้พิน GPIO บน Raspberry Pi: 4 ขั้นตอน
LED กะพริบด้วย Raspberry Pi | วิธีใช้ GPIO Pins บน Raspberry Pi: สวัสดีทุกคนในคำแนะนำนี้เราจะเรียนรู้วิธีใช้ GPIO ของ Raspberry pi หากคุณเคยใช้ Arduino คุณอาจรู้ว่าเราสามารถเชื่อมต่อสวิตช์ LED ฯลฯ เข้ากับหมุดของมันและทำให้มันทำงานได้ ทำให้ไฟ LED กะพริบหรือรับอินพุตจากสวิตช์ดังนั้น
อินเทอร์เฟซ ADXL335 Sensor บน Raspberry Pi 4B ใน 4 ขั้นตอน: 4 ขั้นตอน
อินเทอร์เฟซ ADXL335 Sensor บน Raspberry Pi 4B ใน 4 ขั้นตอน: ในคำแนะนำนี้ เราจะเชื่อมต่อเซ็นเซอร์ ADXL335 (accelerometer) บน Raspberry Pi 4 กับ Shunya O/S
การติดตั้ง Raspbian Buster บน Raspberry Pi 3 - เริ่มต้นใช้งาน Raspbian Buster ด้วย Raspberry Pi 3b / 3b+: 4 ขั้นตอน
การติดตั้ง Raspbian Buster บน Raspberry Pi 3 | เริ่มต้นใช้งาน Raspbian Buster ด้วย Raspberry Pi 3b / 3b+: สวัสดี องค์กร Raspberry pi ที่เพิ่งเปิดตัว Raspbian OS ใหม่ที่เรียกว่า Raspbian Buster เป็นเวอร์ชันใหม่ของ Raspbian สำหรับ Raspberry pi ดังนั้นวันนี้ในคำแนะนำนี้ เราจะได้เรียนรู้วิธีติดตั้ง Raspbian Buster OS บน Raspberry pi 3 ของคุณ
การติดตั้ง Raspbian ใน Raspberry Pi 3 B โดยไม่ต้องใช้ HDMI - เริ่มต้นใช้งาน Raspberry Pi 3B - การตั้งค่า Raspberry Pi ของคุณ 3: 6 ขั้นตอน
การติดตั้ง Raspbian ใน Raspberry Pi 3 B โดยไม่ต้องใช้ HDMI | เริ่มต้นใช้งาน Raspberry Pi 3B | การตั้งค่า Raspberry Pi ของคุณ 3: อย่างที่พวกคุณบางคนรู้ว่าคอมพิวเตอร์ Raspberry Pi นั้นยอดเยี่ยมมากและคุณสามารถรับคอมพิวเตอร์ทั้งหมดได้บนบอร์ดเล็ก ๆ ตัวเดียว Raspberry Pi 3 Model B มี ARM Cortex A53 แบบ 64 บิตแบบ quad-core โอเวอร์คล็อกที่ 1.2 GHz ทำให้ Pi 3 ประมาณ 50