Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Bark Back: Monitor IoT Hewan Peliharaan untuk Manajemen Suara Cerdas

Dapatkan wawasan real-time tentang perilaku hewan peliharaan Anda dari mana saja. Sistem Bark Back menggunakan Internet of Things untuk merekam tingkat kebisingan lingkungan di rumah Anda, mengunggah data ke cloud, dan secara otomatis memutar berkas audio kustom ketika suara melebihi ambang yang ditentukan oleh pengguna.

Dibangun pada Raspberry Pi, proyek ini membaca mikrofon MEMS SparkFun melalui MCP3002 ADC, mengalirkan data volume ke CloudMQTT menggunakan MQTT, dan memicu instance OMXPlayer untuk memutar klip “bark-back” yang telah dipilih sebelumnya.

Apa yang Akan Anda Pelajari

Prasyarat

Untuk mengikuti tutorial ini Anda memerlukan Raspberry Pi 3 (atau yang lebih baru) dengan OS Raspbian, konektivitas Wi-Fi, dan pengetahuan Python dasar. Kemudian dengan GPIO, MQTT, dan konversi sinyal analog bermanfaat tetapi tidak diperlukan.

Protokol Komunikasi MQTT

MQTT (Message Queuing Telemetry Transport) adalah protokol pesan IoT ringan. Panduan ini menggunakan klien Python Eclipse Paho dan CloudMQTT sebagai broker.

  1. Memahami protokol komunikasi IoT.
  2. Menyiapkan akun CloudMQTT (rencana gratis “Cute Cat” cukup).
  3. Menginstal dan menggunakan perpustakaan Python Paho MQTT.

Breakout Mikrofon MEMS

Mikrofon MEMS SparkFun adalah sensor analog; MCP3002 ADC mengubah outputnya menjadi sinyal digital yang dapat dibaca oleh Raspberry Pi.

  1. Memulai dengan Breakout Mikrofon MEMS SparkFun.
  2. Meninjau datasheet mikrofon MEMS.
  3. Memeriksa datasheet ADC MCP3002.

Bahan-Bahan

Berikut adalah daftar lengkap komponen yang diperlukan untuk proyek. Semua item tersedia dari SparkFun dan penjual lain.

Periferal tambahan:

Penyaluran Hardware

Menghubungkan Pi ke mikrofon dan ADC. Klik pada diagram penyaluran untuk melihat lebih dekat.

Lihat diagram pinout Raspberry Pi 2/3 Model B untuk referensi.

1. Sambungkan MCP3002 ke Raspberry Pi.

MCP3002 menggunakan empat pin SPI: SCLK, MISO, MOSI, dan CS. Ini memetakan ke pin GPIO Pi 11 (SCLK), 9 (MISO), 10 (MOSI), dan 8 (CE0).

Koneksi pin:

2. Sambungkan breakout board mikrofon MEMS.

Konfigurasi Pi

Pastikan Raspberry Pi Anda sepenuhnya diperbarui dan antarmuka SPI diaktifkan.

Langkah 1: Periksa & Instal Pembaruan

sudo apt-get update sudo apt-get upgrade sudo reboot 

Langkah 2: Aktifkan SPI dan Instal Dependensi

sudo apt-get install python-dev mkdir py-spidev cd py-spidev git clone https://github.com/doceme/py-spidev sudo python setup.py install 

Langkah 3: Uji OMXPlayer

OMXPlayer sudah terinstal pada Raspbian. Verifikasi pemutaran:

omxplayer /home/pi/…/SongFilePath/SongFileName.mp3 # Jika diperlukan, paksa output lokal: omxplayer -o local /home/pi/…/SongFilePath/SongFileName.mp3 

Langkah 4: Konfigurasikan CloudMQTT

  1. Buat akun CloudMQTT (rencana gratis “Cute Cat”).
  2. Buat instance MyCloud baru.
  3. Di konsol, tambahkan aturan ACL untuk mengizinkan publish/subscribe.
  4. Gunakan UI WebSocket untuk memantau pesan.
  5. Instal klien Paho MQTT:
    pip install paho-mqtt 

Setup Perangkat Lunak

Sistem Bark Back memiliki dua fungsi inti: (1) memicu berkas audio ketika anjing menggongg, dan (2) mengirim data volume ke cloud.

Sebelum coding, rekam atau dapatkan klip audio “bark-back” Anda dan tempatkan di direktori yang dapat diakses (misalnya, Desktop). Skrip Python berikut siap digunakan; Anda juga dapat mengkloning repositori lengkap dari GitHub.

# Bark Back: Monitor & Interact with Pets! # ----------------------------------------------------- # Author: jenfoxbot <[email protected]> # License: Coffee/Beer‑ware – keep this header if you use it. # Libraries import spidev from threading import Thread import subprocess import paho.mqtt.client as paho import random, time, os, urlparse # Configurable lists and credentials songList = ["/home/pi/Desktop/SongFile1.mp3", "/home/pi/Desktop/SongFile2.mp3", "/home/pi/Desktop/SongFile3.mp3", "/home/pi/Desktop/SongFile4.mp3"] creds = { 'CloudMQTT URL': 'https://m10.cloudmqtt.com', 'user': 'INSERT_CLOUDMQTT_USERNAME', 'password': 'INSERT_CLOUDMQTT_PASSWORD', 'host': 'INSERT_CLOUDMQTT_SERVER', 'port': 'INSERT_CLOUDMQTT_PORT', 'topic': 'INSERT_ACL_TOPIC' } # --- SPI / MEMS Microphone ---------------------------------------- spi = spidev.SpiDev() spi.open(0,0) # CE0 def read_spi(channel): spidata = spi.xfer2([96,0]) data = ((spidata[0] & 3) << 8) + spidata[1] return data def PTPAmp(): sampleTime = 0.05 startTime = time.time() PTPAmp = 0 maxAmp = 0 minAmp = 1023 while(time.time() - startTime < sampleTime): micOut = read_spi(0) if micOut < 1023: if micOut > maxAmp: maxAmp = micOut elif micOut < minAmp: minAmp = micOut PTPAmp = maxAmp - minAmp return PTPAmp def VolumeUnit(data, fromLow, fromHigh, toLow, toHigh): return (data - fromLow) * (toHigh - toLow) / (fromHigh - fromLow) + toLow # --- OMXPlayer wrapper --------------------------------------------- class OMXPlayer: def __init__(self, file_path): self.file_path = file_path self.is_running = False self.play_song() def call_omxplayer(self): print(f"Playing {self.file_path}\n") subprocess.Popen(["omxplayer", "-o", "local", self.file_path], stderr=subprocess.PIPE, stdout=subprocess.PIPE) self.is_running = False def play_song(self): if not self.is_running: self.song_thread = Thread(target=self.call_omxplayer) self.song_thread.start() self.is_running = True def pickRandom(songList): return random.choice(songList) # --- MQTT callbacks ----------------------------------------------- def on_connect(mosq, obj, rc): print(f"rc: {rc}") def on_message(mosq, obj, msg): print(f"{msg.topic} {msg.qos} {msg.payload}") def on_publish(mosq, obj, mid): print(f"mid: {mid}") def on_subscribe(mosq, obj, mid, granted_qos): print(f"Subscribed: {mid} {granted_qos}") def on_log(mosq, obj, level, string): print(string) # --- Main loop ---------------------------------------------------- def main(): mqttc = paho.Client() mqttc.on_message = on_message mqttc.on_connect = on_connect mqttc.on_publish = on_publish mqttc.on_subscribe = on_subscribe # mqttc.on_log = on_log # enable for debugging url_str = os.environ.get(creds['CloudMQTT URL'], 'mqtt://localhost:1883') url = urlparse.urlparse(url_str) mqttc.username_pw_set(creds['user'], creds['password']) mqttc.connect(creds['host'], creds['port']) mqttc.subscribe(creds['topic'], 0) while True: PTPamp = PTPAmp() PTPampV = round(((PTPamp * 3.3) / 1024), 2) VolUnit = VolumeUnit(PTPamp, 0, 700, 0, 10) print(PTPamp, VolUnit) if VolUnit > 7: playBack = pickRandom(songList) OMXPlayer(playBack) time.sleep(0.1) mqttc.publish("Volume", str(VolUnit)) rc = True while rc: rc = mqttc.loop() time.sleep(0.1) print(f"rc: {rc}") try: while True: pass except KeyboardInterrupt: pass if __name__ == '__main__': main() 

Pastikan Anda mengganti nilai placeholder dalam songList dan creds dengan jalur berkas dan kredensial CloudMQTT sebenarnya Anda.

Rasa bebas untuk menyesuaikan skrip – misalnya, sesuaikan ambang volume, tambahkan logging, atau integrasikan sensor tambahan.

Langkah Selanjutnya

Jelajahi peningkatan lebih lanjut seperti:

Untuk sumber daya tambahan, konsultasikan datasheet mikrofon MEMS SparkFun, datasheet ADC MCP3002, dan dokumentasi klien MQTT Eclipse Paho.

Selamat hacking dan semoga anjing Anda menikmati lingkungan yang lebih tenang dan lebih bahagia!

Proses manufaktur

  1. Membangun Stasiun Udara & Cuaca Raspberry Pi dengan InfluxDB & Grafana
  2. Pemantau Suhu dan Kelembaban Jaringan Raspberry Pi – Panduan Pengaturan DIY
  3. Pemantau Suhu dan Kelembaban Rumah dengan Raspberry Pi & Dasbor Web
  4. Pemantauan Suhu Raspberry Pi Profesional dengan DS18B20
  5. Membangun Stasiun Cuaca Luar Ruangan dengan Raspberry Pi 2 dan ADS-WS1
  6. Pemantauan Suhu Akurat di Lemari Server dengan Raspberry Pi
  7. Pelacakan Bola Tenis Meja Tingkat Lanjut dengan Raspberry Pi dan OpenCV
  8. Membangun Remote Universal Raspberry Pi Profesional dengan LIRC
  9. Mengontrol LED dengan Sensor Gerak PIR pada Raspberry Pi
  10. Mengonversi RF ke DC dengan Raspberry Pi: Membangun dan Memecahkan Masalah Detektor Envelop