IoT Pet Monitor!: 6 ขั้นตอน (พร้อมรูปภาพ)
IoT Pet Monitor!: 6 ขั้นตอน (พร้อมรูปภาพ)
Anonim
Image
Image
แนะนำให้อ่าน
แนะนำให้อ่าน

จับตาดูบีบีที่คุณรักและเล่นดนตรีหรือบอกพวกเขาให้เงียบในขณะที่คุณไม่อยู่! บทช่วยสอนนี้จะแสดงวิธีใช้คอมพิวเตอร์ 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

  1. คู่มือการเชื่อมต่อ Raspberry Pi 3 Starter Kit
  2. Raspberry Pi GPIO
  3. การสื่อสาร SPI กับ Raspberry Pi

โปรโตคอลการสื่อสาร MQTT

MQTT (Message Query Telemetry Transport) เป็นโปรโตคอลการสื่อสาร IoT ยอดนิยม เราจะใช้ไลบรารี Paho Client Python และบริการ MQTT ที่เรียกว่า CloudMQTT ต่อไปนี้คือข้อมูลเพิ่มเติมเกี่ยวกับ MQTT และวิธีใช้งาน:

  1. สำรวจโปรโตคอลการสื่อสารสำหรับ IoT
  2. เริ่มต้นใช้งาน CloudMQTT
  3. ภาพรวมของไลบรารีไคลเอนต์ Eclipse Paho MQTT Python

บอร์ดฝ่าวงล้อมไมโครโฟน MEMS

ไมโครโฟน MEMS เป็นไมโครโฟนแบบแอนะล็อก เราจึงต้องใช้ตัวแปลงอนาล็อกเป็นดิจิทัล ("ADC") เพื่ออ่านสัญญาณแอนะล็อกด้วยหมุด GPIO ดิจิทัลของ Raspberry Pi

  1. เริ่มต้นใช้งานบอร์ดฝ่าวงล้อมไมโครโฟน SparkFun MEMS
  2. เอกสารข้อมูลไมโครโฟน MEMS
  3. เอกสารข้อมูล 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

กำหนดค่า Raspberry Pi
กำหนดค่า Raspberry Pi
กำหนดค่า Raspberry Pi
กำหนดค่า Raspberry Pi
กำหนดค่า Raspberry Pi
กำหนดค่า Raspberry Pi
กำหนดค่า Raspberry Pi
กำหนดค่า 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 ให้ทำดังต่อไปนี้:

  1. ตั้งค่าบัญชี CloudMQTT (แผน "แมวน่ารัก" ฟรี)
  2. สร้างอินสแตนซ์ MyCloud ใหม่
  3. ในคอนโซล สร้างกฎ ACL ใหม่
  4. คุณสามารถตรวจสอบข้อความที่เผยแพร่ใน 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
การประกวดไมโครคอนโทรลเลอร์ 2017
การประกวดไมโครคอนโทรลเลอร์ 2017
การประกวดไมโครคอนโทรลเลอร์ 2017

รองชนะเลิศการประกวดไมโครคอนโทรลเลอร์ 2017

การประกวดเซนเซอร์ 2017
การประกวดเซนเซอร์ 2017
การประกวดเซนเซอร์ 2017
การประกวดเซนเซอร์ 2017

รางวัลที่ 1 ในการประกวด Sensors Contest 2017