สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
จับตาดูบีบีที่คุณรักและเล่นดนตรีหรือบอกพวกเขาให้เงียบในขณะที่คุณไม่อยู่! บทช่วยสอนนี้จะแสดงวิธีใช้คอมพิวเตอร์ Raspberry Pi เพื่อตรวจสอบระดับเสียงในบ้านของคุณ (ผ่านระบบคลาวด์) เพื่อดูว่าสัตว์เลี้ยงของคุณอารมณ์เสียหรือไม่และเมื่อใด
ม้วนกลอง… ส่วนที่สนุกที่สุด: ถ้ามันดังเกินไป (เช่น Fido กำลังเห่าหรือทำเสียงแหบแห้ง) เราจะบอกให้พวกเขาเงียบหรือเล่นดนตรี!
พร้อมกับ Pi (และลำโพง) เราจะใช้บอร์ดแยกไมโครโฟน SparkFun MEMS เพื่อวัดระดับเสียงและเรียกเครื่องเล่นเสียง ข้อมูลถูกอัปโหลดไปยังบริการ CloudMQTT โดยใช้โปรโตคอลการสื่อสาร MQTT
เวลาในการอ่านทั้งหมด: ~ 8 นาที
เวลาสร้างทั้งหมด: 60 นาที (น้อยกว่า / มีประสบการณ์)
ขอบคุณมากสำหรับ SparkFun สำหรับการสนับสนุนโครงการนี้! ดูบทแนะนำที่นี่
ขั้นตอนที่ 1: การอ่านที่แนะนำ
ในการสร้างโปรเจ็กต์นี้ คุณจะต้องมีคอมพิวเตอร์ Raspberry Pi 3 ที่เชื่อมต่อ WiFi ที่กำหนดค่าไว้อย่างสมบูรณ์พร้อม Raspbian OS นอกจากนี้ยังเป็นประโยชน์ที่จะทราบการเขียนโปรแกรม Python บางอย่างรวมถึงสิ่งต่อไปนี้: (1) วิธีใช้และควบคุมพิน Raspberry Pi GPIO; (2) การสื่อสาร MQTT; และ (3) เซ็นเซอร์อนาล็อก หากมีสิ่งใดที่ไม่คุ้นเคย หรือหากคุณแค่สงสัย (อยากรู้อยากเห็น!) ลองดูบทแนะนำด้านล่างนี้!
Raspberry Pi 3
- คู่มือการเชื่อมต่อ Raspberry Pi 3 Starter Kit
- Raspberry Pi GPIO
- การสื่อสาร SPI กับ Raspberry Pi
โปรโตคอลการสื่อสาร MQTT
MQTT (Message Query Telemetry Transport) เป็นโปรโตคอลการสื่อสาร IoT ยอดนิยม เราจะใช้ไลบรารี Paho Client Python และบริการ MQTT ที่เรียกว่า CloudMQTT ต่อไปนี้คือข้อมูลเพิ่มเติมเกี่ยวกับ MQTT และวิธีใช้งาน:
- สำรวจโปรโตคอลการสื่อสารสำหรับ IoT
- เริ่มต้นใช้งาน CloudMQTT
- ภาพรวมของไลบรารีไคลเอนต์ Eclipse Paho MQTT Python
บอร์ดฝ่าวงล้อมไมโครโฟน MEMS
ไมโครโฟน MEMS เป็นไมโครโฟนแบบแอนะล็อก เราจึงต้องใช้ตัวแปลงอนาล็อกเป็นดิจิทัล ("ADC") เพื่ออ่านสัญญาณแอนะล็อกด้วยหมุด GPIO ดิจิทัลของ Raspberry Pi
- เริ่มต้นใช้งานบอร์ดฝ่าวงล้อมไมโครโฟน SparkFun MEMS
- เอกสารข้อมูลไมโครโฟน MEMS
- เอกสารข้อมูล ADC MCP3002
ขั้นตอนที่ 2: วัสดุ
- Raspberry Pi 3 รุ่น B
เราต้องการอุปกรณ์ต่อพ่วงต่อไปนี้ด้วย: เคส Raspberry Pi 3; การ์ด SD (ขั้นต่ำ 8 GB); สาย Raspberry Pi 3 GPIO; สายไฟ MicroUSB; สาย HDMI และจอภาพที่รองรับ HDMI; แป้นพิมพ์ USB; เมาส์ USB; ลำโพงพร้อมพอร์ตหูฟังขนาด 1/8"
- SparkFun MEMS Mic Breakout Board
- MCP3002 (ตัวแปลงอนาล็อกเป็นดิจิตอล)
- สายจัมเปอร์ Breadboard & M-to-M Breadboard
ขั้นตอนที่ 3: กำหนดค่า Raspberry Pi
ขั้นตอนที่ 1: ตรวจสอบและติดตั้งการอัปเดต การตรวจสอบและติดตั้งการอัปเดตเป็นวิธีที่ดีในการเริ่มต้นเสมอ รันคำสั่งต่อไปนี้ในหน้าต่างเทอร์มินัล:
sudo apt-get update
sudo apt-get อัพเกรด
sudo รีบูต
ขั้นตอนที่ 2: ตั้งค่าอินเทอร์เฟซ SPI สำหรับไมโครโฟน MEMS + MCP3002
ในการใช้ SPI (Serial Port Interface) เพื่ออ่านในไมโครโฟน MEMS ผ่าน MCP3002 เราจำเป็นต้องมี Python Dev Package:
sudo apt-get ติดตั้ง python-dev
เราต้องการอินเทอร์เฟซ SPI ด้วย (อาจต้องการสร้างโฟลเดอร์ย่อยเพื่อบันทึกสิ่งนี้):
git clone git://github.com/doceme/py-spidev
sudo python setup.py ติดตั้ง
นี่คือเอกสารประกอบ SPI-Dev หากคุณพบปัญหาใดๆ
ขั้นตอนที่ 3: เล่นเสียงด้วย OMXPlayer
OMXPlayer เป็นเครื่องเล่นเสียงและวิดีโอที่โหลดไว้ล่วงหน้าบน Raspbian OS ใช้งานได้กับไฟล์เสียงส่วนใหญ่ ได้แก่.wav,.mp3 และ.m4a นี่คือสิ่งที่เราจะใช้เล่นเสียงเมื่อ Fido ดังเกินไป ไลบรารี Python เพื่อควบคุม OMXPlayer รวมอยู่ใน Raspbian (woo!)
ในการทดสอบ OMXPlayer จากเทอร์มินัล ให้พิมพ์ดังต่อไปนี้:
omxplayer /home/…/SongFilePath/SongFileName.mp3
หากไม่ได้ผล ให้ลองบังคับผ่านอุปกรณ์สัญญาณเสียงออกในเครื่อง:
omxplayer -o local /home/…/SongFilePath/SongFileName.mp3
ขั้นตอนที่ 4: กำหนดค่าเซิร์ฟเวอร์ CloudMQTT
ตอนนี้เราตั้งค่าเซิร์ฟเวอร์ MQTT แล้ว! ในการดำเนินการนี้โดยใช้ CloudMQTT ให้ทำดังต่อไปนี้:
- ตั้งค่าบัญชี CloudMQTT (แผน "แมวน่ารัก" ฟรี)
- สร้างอินสแตนซ์ MyCloud ใหม่
- ในคอนโซล สร้างกฎ ACL ใหม่
- คุณสามารถตรวจสอบข้อความที่เผยแพร่ใน UI "Websocket"
สุดท้าย ติดตั้งไลบรารี MQTT Paho Client Python:
pip ติดตั้ง paho-mqtt
ขั้นตอนที่ 4: สร้างมัน! ฮาร์ดแวร์
ไดอะแกรม Pinout สำหรับ Raspberry Pi และ MCP3002 อยู่ในรูปภาพด้านบน
1. ใส่หมุด MCP3002 ลงในเขียงหั่นขนม (ดูแผนภาพ pinout ด้านบน)
MCP3002 ใช้ 4 SPI pins สำหรับการสื่อสาร: Serial Clock ("SCL"), Master Input Slave Output ("MISO"), Master Output Slave Input ("MOSI") และ Chip Select ("CS") หมุดเหล่านี้สอดคล้องกับ Raspberry Pi GPIO pin 11 (SCLK), GPIO pin 9 (MISO), GPIO Pin 10 (MOSI) และ GPIO Pin 8 (CE0)
ทำการเชื่อมต่อต่อไปนี้ด้วยหมุด MCP3002:
- เชื่อมต่อ Pin 1 กับ Raspberry Pi GPIO Pin 8 (CE0)
- เชื่อมต่อพิน 2 เข้ากับเอาต์พุตอนาล็อกของบอร์ดฝ่าวงล้อมไมโครโฟน MEMS
- เชื่อมต่อพิน 4 กับ GND
- เชื่อมต่อ Pin 5 กับ Raspberry Pi GPIO Pin 10 (MOSI)
- เชื่อมต่อ Pin 6 กับ Raspberry Pi GPIO pin 9 (MISO)
- เชื่อมต่อ Pin 7 กับ Raspberry Pi GPIO Pin 11 (SCLK)
- เชื่อมต่อพิน 8 กับ Raspberry Pi 3.3V ออก
2. บัดกรีสายไฟเข้ากับบอร์ดฝ่าวงล้อมไมโครโฟน MEMS เชื่อมต่อกับ MCP3002 และ Raspberry Pi
- เชื่อมต่อ Vcc กับ Raspberry Pi 3.3V
- เชื่อมต่อ GND กับ Raspberry Pi GND
- เชื่อมต่อ AUD กับ MCP3002 ขา 2
3. เสียบสายเคเบิลทั้งหมดสำหรับ Raspberry Pi แล้วเปิดทุกอย่าง
ขั้นตอนที่ 5: สร้างมัน! ซอฟต์แวร์
เป้าหมายของเรากับ Bark Back นั้นมี 2 ประการ: เรียกเสียงเล่นเมื่อสุนัขเห่า และส่งข้อมูลไปยังเซิร์ฟเวอร์ที่เราสามารถตรวจสอบได้
นี่คือโปรแกรม Python แบบโอเพ่นซอร์สสำหรับโครงการนี้ อย่าลังเลที่จะ (และโปรดทำ) ปรับและแก้ไขโค้ด
ในการเริ่มใช้งานโปรแกรม คุณต้องกรอกสองสิ่ง:
- songList: เขียนในเส้นทางของไฟล์และชื่อไฟล์สำหรับแต่ละเพลงที่คุณต้องการเล่น
- เครดิต: ป้อนข้อมูล CloudMQTT ของคุณในพจนานุกรมนี้
ขั้นตอนที่ 1: อ่านในบอร์ดแยกไมโครโฟน SparkFun MEMS
อ่านค่า ADC (ระหว่าง 0 ถึง 1023) จากบอร์ดเบรกเอาต์ไมโครโฟน MEMS (ผ่าน MCP3002) โดยใช้ไลบรารี SPI และคำนวณแอมพลิจูดของสัญญาณจากจุดสูงสุดถึงจุดสูงสุด
แมปแอมพลิจูดของสัญญาณพีคทูพีคไปยังวอลุ่มยูนิต รหัสปัจจุบันจะจับคู่ช่วง ADC ระหว่าง 0 ถึง 700 (ตามการทดลองอย่างรวดเร็ว) กับ Volume Unit ระหว่าง 0 ถึง 10 หากต้องการปรับความไวของไมโครโฟน ให้ปรับช่วงอินพุต ADC
สำหรับภาพรวมโดยละเอียดของไมโครโฟน MEMS โปรดดูบทช่วยสอนนี้
ขั้นตอนที่ 2: ทริกเกอร์เครื่องเล่นเสียง
อันดับแรก เราต้องการเพลงที่จะเล่น! คุณสามารถบันทึกเสียงได้อย่างรวดเร็วใน GarageBand (หรือบนสมาร์ทโฟนของคุณ) แล้วส่งไปที่ Raspberry Pi ใน Python ใช้ไลบรารีกระบวนการย่อยเพื่อเรียก omxplayer
ในโค้ด ให้ป้อนเส้นทางไฟล์ของเพลงที่คุณต้องการเล่นในตัวแปร *songList* (บรรทัดที่ 26) เกณฑ์ระดับเสียงปัจจุบันถูกตั้งค่าเป็น 7 ในฟังก์ชันหลัก
ขั้นตอนที่ 3: ส่งข้อมูลไปยัง CloudMQTT Server
ใช้ไลบรารี Paho Client Python เพื่อสื่อสารกับเซิร์ฟเวอร์ CloudMQTT เพื่อสรุปในวงกว้าง: ตั้งค่าเซิร์ฟเวอร์ไคลเอนต์ กำหนดโปรโตคอลการสื่อสาร เชื่อมต่อกับข้อมูลประจำตัวของเรา (aka creds); และสมัครและเผยแพร่ข้อมูลของเรา ส่วนใหญ่จะทำในฟังก์ชันหลัก (บรรทัด 129 - 149 และบรรทัด 169 - 174)
หากต้องการตรวจสอบข้อมูลที่ได้รับ ให้ไปที่แท็บ "Websocket UI" ในคอนโซล CloudMQTT
ขั้นตอนที่ 6: ทดสอบและติดตั้ง
เรียกใช้โปรแกรม BarkBack.py ใน Terminal หรือใน Python IDE (คุณยังสามารถใช้ SSH เพื่อเรียกใช้โปรแกรมได้หลังจากที่คุณออกไปแล้ว)
ตรวจสอบว่าคุณได้รับระดับเสียงในแท็บ Websocket UI
ทดสอบระบบโดยเปิดไมค์ (ปรบมือ ตะโกน เห่า ฯลฯ) เพื่อให้แน่ใจว่าลำโพงเล่นผ่านเสียงทั้งหมด
เมื่อทุกอย่างพร้อมใช้งาน ขอแนะนำให้ประสานส่วนประกอบกับ PCB (แผงวงจรพิมพ์) หากคุณต้องการติดตั้งระบบนานกว่าสองสามวัน
รองชนะเลิศการประกวดไมโครคอนโทรลเลอร์ 2017
รางวัลที่ 1 ในการประกวด Sensors Contest 2017