สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: ตั้งค่า RPI. ของคุณ
- ขั้นตอนที่ 2: แนบกล้องกับ RPI
- ขั้นตอนที่ 3: ตั้งค่าและทดสอบเสียง
- ขั้นตอนที่ 4: ตั้งค่าการตรวจจับการเคลื่อนไหวเพื่อเล่นไฟล์เสียง
- ขั้นตอนที่ 5: ความคิดเห็นเพิ่มเติม
วีดีโอ: พูดถึงซานตาโบลโมลด์: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-31 10:25
โครงงานนี้อธิบายวิธีการตกแต่งที่เล่นไฟล์เสียงเมื่อมีคนเดินผ่าน สามารถทำได้ง่ายด้วยคอมพิวเตอร์ที่สามารถเรียกใช้โปรแกรม Motion และกล้องบางชนิดได้ ในกรณีนี้ ฉันใช้โบลโมลด์ซานตาคลอสสูง 20 นิ้ว ฉันติดตั้ง Raspeberry PI กับโมดูลกล้องในหน้าต่างโรงรถของฉัน และชี้ไปที่โบลโมลด์ซานต้า ฉันซ่อนลำโพงกลางแจ้งที่ขับเคลื่อนด้วยไฟไว้ในโบลว์โมลด์ และฉันใช้สาย aux ขนาด 25 ฟุต จัดอันดับสำหรับการใช้งานกลางแจ้งจาก PI ไปยังลำโพงนี้ ฉันตั้งค่าโปรแกรม Motion บน Pi เพื่อเล่นไฟล์เสียง Ho Ho Ho ที่ส่งเสียงโดยซานต้าทุกครั้งที่ตรวจพบการเคลื่อนไหวโดยใช้กล้อง ทำได้ค่อนข้างง่ายและสนุกดี
ในการซื้อวัสดุเฉพาะที่ฉันใช้ที่นี่อาจมีราคาประมาณ 100 เหรียญพร้อมค่าจัดส่ง ฉันจะไม่ใช้เงินนั้นในการทำสิ่งนี้ถ้าฉันไม่มีวัสดุเหล่านี้ทั้งหมดที่ไม่ได้ใช้งาน การทำงานนี้สามารถใช้ได้กับคอมพิวเตอร์ทุกเครื่อง กล้อง และลำโพงใดๆ ก็ได้ ดังนั้นราคาถูกกว่ามากหากต้องการซื้อสิ่งเหล่านี้
เสบียง
-
คอมพิวเตอร์ที่ติดตั้งโปรแกรม Motion
ฉันใช้ Raspberry PI (RPI) 3 รุ่น B
-
กล้องติดคอมพิวเตอร์หรือกล้องเครือข่าย
- กล้องอะไรก็ได้ที่โปรแกรม Motion ใช้ได้
- กล้อง USB
- กล้องเครือข่าย
- ฉันใช้โมดูลกล้องนี้ที่ติดเข้ากับ RPI. โดยตรง
-
ลำโพงกลางแจ้ง
- เชื่อมต่อผ่านพอร์ต aux
- ยูเอสบี
- ฉันใช้ Sony SRS-XB01. เครื่องนี้
-
ของประดับตกแต่ง เช่น แม่พิมพ์เป่า อะไรก็ได้จริงๆ
ฉันใช้โบลเวอร์ซานตาคลอสคล้ายกับอันนี้มาก
ขั้นตอนที่ 1: ตั้งค่า RPI. ของคุณ
ขั้นตอนนี้มีไว้สำหรับผู้เริ่มต้นใช้งานเป็นส่วนใหญ่ วิดีโอนี้อธิบายวิธีตั้งค่า Raspberry PI (RPI) ได้ดีกว่าที่ฉันทำได้ ฉันยังจะแนะนำเช่นเดียวกับในวิดีโอ การเชื่อมต่อ USB ไร้สาย แป้นพิมพ์ + เมาส์ และจอภาพภายนอกสำหรับการตั้งค่า เมื่อตั้งค่าแล้ว ฉันเรียกใช้เหมืองในโรงรถของฉันโดยไม่ต้องใช้แป้นพิมพ์ + เมาส์และจอภาพภายนอก แต่ฉันปล่อยไว้ในดองเกิล WIFi เพื่อให้สามารถ ssh เข้าไปและรีบูตและ/หรือทำการเปลี่ยนแปลงได้
ขั้นตอนที่ 2: แนบกล้องกับ RPI
ทำตามคำแนะนำเพื่อตั้งค่ากล้องสำหรับ RPI ฉันใช้โมดูลกล้องจาก Adafruit Industries
- เสียบและยึดสายแพจากโมดูลกล้องเข้ากับพอร์ตกล้องระหว่างพอร์ตอีเทอร์เน็ตและพอร์ต HDMI โดยให้หน้าสัมผัสเศษไม้หันไปทางพอร์ต HDMI และเทปสีน้ำเงินหันเข้าหาพอร์ตอีเทอร์เน็ต
-
หากคุณมีจอภาพแนบอยู่และกำลังเรียกใช้ UI (Xserver) ให้เรียกใช้เครื่องมือการกำหนดค่า Raspberry Pi
หาก SSH ระยะไกลเข้าสู่ rpi จากคอมพิวเตอร์เครื่องอื่น ให้เรียกใช้ rasp-config ในเทอร์มินัลของคุณ ซึ่งจะเริ่ม UI ของเทอร์มินัล
- ใน Raspberry Config ใต้แท็บ Interfaces ให้เปิดใช้งาน Camera
- บันทึกและรีบูต RPI
- เมื่อรีบูตให้รันคำสั่งด้านล่างในเทอร์มินัล ทั้งที่ตรวจพบและเปิดใช้งานควรกลับมาเป็น = 1
vgencmode get_camera
โมดูล PI Camera ของคุณควรใช้งานได้แล้ว
คำแนะนำออนไลน์
ขั้นตอนที่ 3: ตั้งค่าและทดสอบเสียง
ในขั้นต้นสำหรับโครงการนี้ ฉันเพียงแค่เรียกใช้สาย aux จาก PI ไปยังลำโพงขนาดเล็กที่ใช้พลังงานจากแบตเตอรี่ ที่เกิดขึ้นมีไฟฟ้าสถิตจำนวนมากและแบตเตอรี่หมดอย่างรวดเร็ว แต่ฉันเสียบอุปกรณ์ USB ที่ขยายเสียงและวิ่งสาย aux จากพอร์ตเอาท์พุต aux ไปที่ลำโพงกลางแจ้งที่ทนฝนและแดด สิ่งนี้ลบไฟฟ้าสถิตย์และดังขึ้นและไม่ต้องกังวลกับแบตเตอรี่ RPI ของฉันรู้จักอุปกรณ์ USB โดยอัตโนมัติโดยไม่จำเป็นต้องติดตั้งไดรเวอร์
PI OS มาพร้อมกับโปรแกรมที่เรียกว่า aplay แต่ฉันชอบโปรแกรมเล่นของซอฟต์แวร์ Sox มากกว่า ดังนั้นคำแนะนำเหล่านี้จะติดตั้ง Sox และใช้คำสั่ง play
ติดตั้ง Sox
ในเทอร์มินัลบน RPI ให้รันคำตอบต่อไปนี้ว่าใช่สำหรับข้อความแจ้งใด ๆ
sudo apt-get ติดตั้ง sox
ทดสอบเสียง
ดาวน์โหลดไฟล์เสียงที่เข้ากันได้ที่มีขนาดเล็กและบันทึกลงในคอมพิวเตอร์ของคุณ ฉันใช้ santaho3.mp3 ที่บันทึกไว้ในโฮมไดเร็กทอรี pi ของฉัน ในการทดสอบเสียงให้เชื่อมต่อลำโพงของคุณกับ RPI และเรียกใช้คำสั่งนี้:
เล่น santaho3.mp3
- หากคุณได้ยินไฟล์เสียงที่กำลังเล่นอยู่ในลำโพง แสดงว่าเสียงของคุณกำลังทำงานอยู่
-
คุณอาจต้องเปลี่ยนเสียงภายในจาก HDMI เป็นอนาล็อก
คำแนะนำที่นี่
-
หากใช้อุปกรณ์เสียง USB ให้สร้างไฟล์ในโฮมไดเร็กตอรี่ชื่อ.asoundrc
- ใส่เนื้อหาด้านล่างแล้วรีบูต เริ่มการทดสอบเสียง
-
pcm.!default {
พิมพ์ hw card 1 } ctl.!default { พิมพ์ hw card 1 }
ขั้นตอนที่ 4: ตั้งค่าการตรวจจับการเคลื่อนไหวเพื่อเล่นไฟล์เสียง
ซอฟต์แวร์ที่เรียกว่า Motion ช่วยให้สามารถติดตั้งกล้องได้ตั้งแต่หนึ่งตัวขึ้นไปเพื่อเรียกใช้คำสั่งเมื่อตรวจพบการเคลื่อนไหวในมุมมองกล้อง ติดตั้งง่ายและใช้งานได้ค่อนข้างดี นอกจากนี้ยังสามารถบันทึกไฟล์เมื่อตรวจจับการเคลื่อนไหว อนุญาตให้กำหนดค่าเว็บไซต์สำหรับกล้องแต่ละตัวหรือเว็บไซต์เดียวสำหรับกล้องทั้งหมด และเซิร์ฟเวอร์สตรีมมิงเพื่อดูสตรีมสดของกล้อง โปรเจ็กต์นี้ต้องการเพียงความสามารถในการตรวจจับและเรียกใช้คำสั่ง แต่ฉันได้ตั้งค่าเซิร์ฟเวอร์การสตรีมเพื่อให้สามารถรับชมสตรีมแบบสดได้เช่นกัน
ติดตั้ง Motion
ในเทอร์มินัลบน RPI ให้เรียกใช้คำสั่งด้านล่างโดยตอบใช่สำหรับข้อความแจ้งใดๆ รอให้เสร็จสิ้น
sudo apt-get ติดตั้งการเคลื่อนไหว
ใช้เวลาในการเพิ่มผู้ใช้การเคลื่อนไหวที่เพิ่มใหม่ในกลุ่มเสียงเพื่อให้ได้รับอนุญาตให้เล่นเสียงโดยป้อนคำสั่งต่อไปนี้
usermod -a -G เสียงเคลื่อนไหว
กำหนดค่าการเคลื่อนไหวสำหรับการตรวจจับ
เราจะแก้ไขไฟล์การกำหนดค่าการเคลื่อนไหวเพื่อเล่นไฟล์เสียงที่เราดาวน์โหลดในขั้นตอนการตั้งค่าเสียงเมื่อตรวจพบการเคลื่อนไหวในกล้องและเริ่มการเคลื่อนไหวในฐานะบริการ ดังนั้นจะยังดำเนินการต่อไปเมื่อรีบูต RPI
ในเทอร์มินัลให้แก้ไขไฟล์ /etc/motion/motion.conf เป็นผู้ใช้ขั้นสูง
sudo nano /etc/default/motion
ในเทอร์มินัลให้แก้ไขไฟล์ /etc/motion/motion.conf เป็นผู้ใช้ขั้นสูง
sudo nano /etc/motion/motion.conf
ทำและบันทึกการแก้ไขต่อไปนี้ ส่วนใหญ่เป็นค่าเริ่มต้น ฉันไม่คิดว่าในกรณีของฉัน รายการ mmal_xxx จะมีผลกระทบใดๆ แต่ฉันปล่อยไว้ในกรณีที่มีคนต้องการ - พวกเขาก็ไม่เป็นอันตรายเช่นกัน การกำหนดค่านี้จะตรวจจับการเคลื่อนไหวของกล้องในช่วงเวลา 40 วินาที ไม่บันทึกภาพหรือวิดีโอ และตั้งค่าเว็บเซิร์ฟเวอร์และเซิร์ฟเวอร์การสตรีมสำหรับกล้องที่ได้รับการปกป้องด้วยการตรวจสอบสิทธิ์พื้นฐานโดยใช้ชื่อผู้ใช้และรหัสผ่าน
ภูตบน
process_id_file /var/run/motion/motion.pid
setup_mode ปิด logfile /var/log/motion/motion.log log_level 6 log_type all videodevice /dev/video0 v4l2_palette 17 อินพุต -1 ปกติ 0 ความถี่ 0 power_line_frequency -1 หมุน 0 flip_axis ไม่มีความกว้าง 320 ความสูง 240 เฟรมเรต 2 ขั้นต่ำ_frame_time 0 netcam_keepalive ปิด netcam_tolerant_check off rtsp_uses_tcp บน mmalcam_name vc.ril.camera auto_brightness ปิดความสว่าง 0 ความคมชัด 0 ความอิ่มตัว 0 เฉดสี 0 roundrobin_frames 1 roundrobin_skip 1 สวิตช์ตัวกรองปิดเกณฑ์ 500 threshold_tune ปิด noise_level 22 noise_tune เมื่อ despeckle_filter EedDl smart_mask_capture ต่ำสุด_capture 0 เหตุการณ์ 0 เหตุการณ์ output_pictures off output_debug_pictures ปิดคุณภาพ 75 picture_type jpeg ffmpeg_output_movies ปิด ffmpeg_output_debug_movies ปิด ffmpeg_bps 400000 ffmpeg_variable_bitrate 0 ffmpeg_video_codec mp4 ffmpeg_duplicate_framesext ไทม์ไทม์ off_interval_coden_pefps apshot_interval 0location_motion_mode ปิดlocation_motion_style กล่อง text_right %Y-%m-%d\n%T-%q text_changes ปิด text_event %Y%m%d%H%M%S text_double off target_dir /var/lib/motion snapshot_filename %v- %Y%m%d%H%M%S-snapshot picture_filename %v-%Y%m%d%H%M%S-%q movie_filename %v-%Y%m%d%H%M%S timelapse_filename %Y%m%d-timelapse ipv6_enabled off stream_port 8481 stream_quality 80 stream_motion ปิด stream_maxrate 1 stream_localhost ปิด stream_limit 0 stream_auth_method 1 stream_authentication: webcontrol_port 8480 webcontrol_localhost off webcontrol_html_output on webcontrol_authentication track_auto track_step_angle เงียบบน on_event_start /usr/bin/play -q --multi-threaded /var/lib/motion/notify`shuf -i 1-5 -n 1`.mp3 2>/dev/null
คัดลอกไฟล์เสียงไปยังไฟล์เสียงไปยังไดเร็กทอรีโฮมของการเคลื่อนไหวและเปลี่ยนการอนุญาตในไฟล์เพื่อให้ Motion เป็นเจ้าของ แต่ทุกคนสามารถอ่านได้
sudo cp /home/pi/santaho.mp3 /var/lib/motion/mtn_dtct_ntfy.mp3
sudo chown โมชั่น /var/lib/motion/mtn_dtct_ntfy.mp3
sudo chmod a+r /var/lib/motion/mtn_dtct_ntfy.mp3
รีบูตอุปกรณ์ RPI เมื่อบูตแล้วให้เรียกใช้
sudo systemctl สถานะ motion.service
ผลลัพธ์ควรมีบรรทัดที่ระบุว่า:
ใช้งานอยู่: ใช้งานอยู่ (ทำงาน) ตั้งแต่
หากคุณเห็นการเคลื่อนไหวนี้กำลังทำงานอยู่ หากไม่ตรวจสอบ /var/log/motion เพื่อดูรายละเอียด ลองวิ่ง:
sudo systemctl start motion.service
ทดสอบการตรวจจับการเคลื่อนไหวและการเล่นเสียง
เกือบเสร็จแล้ว. เพียงแค่ต้องตรวจสอบว่ามีการตรวจพบการเคลื่อนไหวหรือไม่และเสียงจะเล่นเมื่อเป็นเช่นนั้น
ในเทอร์มินัล ให้ทำดังต่อไปนี้เพื่อดูข้อความต่อท้ายไฟล์บันทึก
หาง -f /var/log/motion
ตอนนี้:
- โบกอะไรบางอย่างหน้ากล้องช้าๆ
- ไฟล์บันทึกควรส่งออกที่ตรวจพบการเคลื่อนไหว
- หวังว่าไฟล์เสียงจะเล่นผ่านลำโพง
- หากเป็นเช่นนั้น ให้วาง RIP ไว้ในหน้าต่างโดยให้เลนส์กล้องหันไปทางตำแหน่งที่จะตรวจจับการเคลื่อนไหว
- วางลำโพงกลางแจ้งในหรือใกล้การตกแต่ง
- เมื่อคนเดินผ่านมาจะทักทาย
การแก้ไขปัญหา
หากสิ่งต่าง ๆ ไม่ทำงาน
-
ตรวจสอบอีกครั้งว่ากล้องทำงานโดยดำเนินการ:
- raspistill -o test.jpg
- ls -l test-j.webp" />
-
ตรวจสอบอีกครั้งว่าเสียงทำงานโดยดำเนินการ
- เล่น /var/lib/motion/ mtn_dtct_ntfy.mp3
-
ถ้าไม่ได้ยินไฟล์เสียง
- ตรวจสอบว่าอุปกรณ์ส่งออกเป็นการตั้งค่าลำโพงของคุณ (อนาล็อกหรือ USB)
- ตรวจสอบระดับเสียง
- ตรวจสอบสิทธิ์ในไฟล์เสียงว่ามี 3 'r's ในสตริงการอนุญาต (เช่น rw*rw*rw*)
-
หากสิ่งอื่นล้มเหลว แสดงว่าการเคลื่อนไหวอาจไม่ได้รับการตั้งค่าอย่างถูกต้อง
หากเป็นกรณีนี้การค้นหาออนไลน์บางอย่างน่าจะช่วยได้เพราะมีความช่วยเหลือมากมาย
ขั้นตอนที่ 5: ความคิดเห็นเพิ่มเติม
เล่นไฟล์เสียงสุ่ม
เบื่อกับเสียงเดิมๆ ซ้ำแล้วซ้ำเล่า มิกซ์มันซะ!
-
บันทึกไฟล์เสียงหลายไฟล์ที่มีชื่อเดียวกันแต่ต่อท้ายตัวเลขตามลำดับ:
soundFile1.mp3, soundFile2.mp3, soundFile3.mp3, soundFile4.mp3, soundFile5.mp3,
-
เปลี่ยนรายการ /etc/motion/motion.conf on_event_start ดังนี้
on_event_start play -q --multi-threaded soundFile`shuf -i 1-5 -n 1`.mp3 2>/dev/null
- ออกและบันทึกไฟล์
-
เริ่มบริการการเคลื่อนไหวใหม่
sudo systemctl รีสตาร์ท motion.service
- ส่วน `shuf -i 1-5 -n 1' (เหล่านี้คือเครื่องหมายย้อนกลับ) จะแทรกตัวเลขสุ่มตั้งแต่ 1 ถึง 5 ลงในชื่อไฟล์ที่กำลังเล่น
- ดังนั้นเมื่อตรวจพบการเคลื่อนไหว ไฟล์เสียงใดไฟล์หนึ่งจาก 5 ไฟล์จะเล่น
พูดแทนการเล่น
ความสนุกอีกอย่างหนึ่งคือการตั้งค่า Text-to-Speech และให้คอมพิวเตอร์พูดประโยคกับคนที่เดินผ่านไปมา ฉันชอบใช้ MaryTTS เป็นเครื่องยนต์ ตั้งค่าและเริ่มเซิร์ฟเวอร์ Mary TTS และเปลี่ยนบรรทัด on_event_start ที่กล่าวถึงข้างต้นเพื่อส่งสิ่งที่จะพูดกับเซิร์ฟเวอร์ married tts (เช่น marytts/bin/marytts-submit-text "สวัสดีเพื่อน")
การใช้กล้องเครือข่าย IP (ไร้สายหรืออย่างอื่น)
โปรแกรมเคลื่อนไหวสามารถรองรับกล้อง IP เครือข่ายได้อย่างง่ายดายโดยใช้ netcam_url และการตั้งค่า netcam_xxx อื่นๆ การค้นหาออนไลน์อย่างง่ายควรให้ข้อมูลที่จำเป็น
บลูทู ธ
หาก RPI ของคุณมีบลูทูธในตัวหรือคุณติดตั้งอุปกรณ์บลูทูธ USB แล้ว คุณสามารถเชื่อมต่อลำโพงผ่านบลูทูธและกำจัดสายได้
จำกัดการจับภาพเคลื่อนไหวให้อยู่ในพื้นที่ที่เล็กลง
ปัญหาหนึ่งที่ฉันมีกับการตั้งค่านี้คือพุ่มไม้และต้นไม้พัด รวมถึงไฟในรถที่กระตุ้นการเคลื่อนไหวง่ายเกินไป โปรแกรมการเคลื่อนไหวมีการตั้งค่าสำหรับจำนวนเฟรมที่ต้องเปลี่ยนก่อนที่จะทริกเกอร์การเคลื่อนไหวและพิจารณาสัญญาณรบกวนและการใช้สิ่งเหล่านี้ช่วยได้ ฉันยังไม่ได้ลอง แต่ฉันคิดว่าฉันจะต้องมีการตั้งค่าที่อนุญาตให้กำหนดพื้นที่เฉพาะของมุมมองของกล้องสำหรับการตรวจจับการเคลื่อนไหว สิ่งนี้ควรอนุญาตให้กำหนดพื้นที่ใกล้กับการตกแต่งเพื่อกระตุ้นการเล่นไฟล์เสียง
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง