Inhaltsverzeichnis:

IoT Pet Monitor! - Gunook
IoT Pet Monitor! - Gunook

Video: IoT Pet Monitor! - Gunook

Video: IoT Pet Monitor! - Gunook
Video: Arduino and Raspberry Pi Powered Pet Monitoring Robot 2024, November
Anonim
Image
Image
Vorgeschlagene Literatur
Vorgeschlagene Literatur

Behalten Sie Ihre geliebten Babys im Auge und spielen Sie Musik oder sagen Sie ihnen, dass sie leise sein sollen, während Sie weg sind! Dieses Tutorial zeigt, wie Sie mit einem Raspberry Pi-Computer die Lautstärke in Ihrem Zuhause (über die Cloud) überwachen, um zu sehen, ob und wann Ihr Haustier verärgert ist.

Trommelwirbel… der lustigste Teil: Wenn es zu laut wird (wie Fido bellt oder etwas anderes lärmt), können Sie ihnen sagen, dass sie leise sein sollen oder Musik machen!

Zusammen mit dem Pi (und den Lautsprechern) verwenden wir das SparkFun MEMS-Mikrofon-Breakout-Board, um die Lautstärke zu messen und den Audioplayer auszulösen. Die Daten werden über das MQTT-Kommunikationsprotokoll in den CloudMQTT-Dienst hochgeladen.

Gesamtlesezeit: ~ 8 min

Gesamtbauzeit: 60 min (weniger mit Erfahrung)

Ein riesiges DANKESCHÖN an SparkFun für die Unterstützung dieses Projekts! Sehen Sie sich das Tutorial hier an.

Schritt 1: Empfohlene Lektüre

Um dieses Projekt zu erstellen, benötigen Sie einen vollständig konfigurierten, über WLAN verbundenen Raspberry Pi 3-Computer mit Raspbian OS. Es ist auch hilfreich, einige Python-Programmierung sowie die folgenden Dinge zu kennen: (1) wie man die Raspberry Pi GPIO-Pins verwendet und steuert; (2) MQTT-Kommunikation; und (3) analoge Sensoren. Wenn Ihnen etwas davon unbekannt ist oder Sie einfach nur neugierig sind (sei neugierig!), sehen Sie sich die folgenden Tutorials an!

Raspberry Pi 3

  1. Raspberry Pi 3 Starter Kit Anschlussanleitung
  2. Raspberry Pi GPIO
  3. SPI-Kommunikation mit dem Raspberry Pi

MQTT-Kommunikationsprotokoll

MQTT (Message Query Telemetry Transport) ist ein beliebtes IoT-Kommunikationsprotokoll. Wir verwenden die Python-Bibliothek des Paho Client und einen MQTT-Dienst namens CloudMQTT. Hier erfahren Sie mehr über MQTT und seine Verwendung:

  1. Erkunden von Kommunikationsprotokollen für IoT
  2. Erste Schritte mit CloudMQTT
  3. Übersicht über die Eclipse Paho MQTT Python-Clientbibliothek

MEMS-Mikrofon-Breakout-Board

Das MEMS-Mikrofon ist ein analoges Mikrofon, daher benötigen wir einen Analog-Digital-Wandler ("ADC"), um das analoge Signal mit den digitalen GPIO-Pins des Raspberry Pi einzulesen.

  1. Erste Schritte mit dem SparkFun MEMS-Mikrofon-Breakout-Board
  2. Datenblatt zu MEMS-Mikrofonen
  3. MCP3002 ADC-Datenblatt

Schritt 2: Materialien

Materialien
Materialien
Materialien
Materialien
Materialien
Materialien

- Raspberry Pi 3 Modell B

Wir benötigen außerdem die folgenden Peripheriegeräte: Raspberry Pi 3 Gehäuse; SD-Karte (mindestens 8 GB); Raspberry Pi 3 GPIO-Kabel; MicroUSB-Stromkabel; HDMI-Kabel und HDMI-kompatibler Monitor; USB-Tastatur; USB-Maus; Lautsprecher mit 1/8 Kopfhöreranschluss.

- SparkFun MEMS-Mikrofon-Breakout-Board

- MCP3002 (Analog-zu-Digital-Wandler)

- Steckbrett- und M-zu-M-Steckbrett-Überbrückungsdrähte

Schritt 3: Konfigurieren Sie den Raspberry Pi

Konfigurieren Sie den Raspberry Pi
Konfigurieren Sie den Raspberry Pi
Konfigurieren Sie den Raspberry Pi
Konfigurieren Sie den Raspberry Pi
Konfigurieren Sie den Raspberry Pi
Konfigurieren Sie den Raspberry Pi
Konfigurieren Sie den Raspberry Pi
Konfigurieren Sie den Raspberry Pi

Schritt 1: Updates prüfen und installieren Das Suchen und Installieren von Updates ist immer ein guter Anfang. Führen Sie die folgenden Befehle im Terminalfenster aus:

sudo apt-get update

sudo apt-get upgrade

sudo neu starten

Schritt 2: SPI-Schnittstelle für MEMS-Mikrofon + MCP3002 einrichten

Um das SPI (Serial Port Interface) zum Einlesen des MEMS-Mikrofons über den MCP3002 zu verwenden, benötigen wir das Python Dev Package:

sudo apt-get install python-dev

Wir benötigen auch die SPI-Schnittstelle (möglicherweise möchten wir einen Unterordner erstellen, um dies zu speichern):

git-Klon git://github.com/doceme/py-spidev

sudo python setup.py installieren

Hier ist die SPI-Dev-Dokumentation, falls Probleme auftreten.

Schritt 3: Sounds mit OMXPlayer abspielen

Der OMXPlayer ist ein auf Raspbian OS vorinstallierter Audio- und Videoplayer. Es funktioniert mit den meisten Audiodateitypen, einschließlich:.wav,.mp3 und.m4a. Dies ist, was wir verwenden werden, um Sounds abzuspielen, wenn Fido zu laut wird. Die Python-Bibliothek zur Steuerung des OMXPlayers ist in Raspbian enthalten (woo!).

Geben Sie Folgendes ein, um den OMXPlayer vom Terminal aus zu testen:

omxplayer /home/…/SongFilePath/SongFileName.mp3

Wenn dies nicht funktioniert, versuchen Sie, es über das lokale Audioausgangsgerät zu erzwingen:

omxplayer -o local /home/…/SongFilePath/SongFileName.mp3

Schritt 4: CloudMQTT-Server konfigurieren

Jetzt richten wir einen MQTT-Server ein! Gehen Sie dazu mit CloudMQTT wie folgt vor:

  1. Richten Sie ein CloudMQTT-Konto ein (der "Cute Cat"-Plan ist kostenlos).
  2. Erstellen Sie eine neue MyCloud-Instanz.
  3. Erstellen Sie in der Konsole eine neue ACL-Regel.
  4. Sie können veröffentlichte Nachrichten in der "Websocket"-Benutzeroberfläche überwachen.

Installieren Sie abschließend die MQTT Paho Client Python-Bibliothek:

pip install paho-mqtt

Schritt 4: Erstellen Sie es! Hardware

Baue es! Hardware
Baue es! Hardware
Baue es! Hardware
Baue es! Hardware
Baue es! Hardware
Baue es! Hardware

Pinbelegungsdiagramme für den Raspberry Pi und den MCP3002 sind in den Fotos oben.

1. Stecken Sie die MCP3002-Pins in das Steckbrett (siehe Pinbelegungsdiagramm oben)

Der MCP3002 verwendet 4 SPI-Pins für die Kommunikation: Serial Clock ("SCL"), Master Input Slave Output ("MISO"), Master Output Slave Input ("MOSI") und Chip Select ("CS"). Diese Pins entsprechen dem Raspberry Pi GPIO-Pin 11 (SCLK), GPIO-Pin 9 (MISO), GPIO-Pin 10 (MOSI) und GPIO-Pin 8 (CE0).

Stellen Sie die folgenden Verbindungen mit MCP3002-Pins her:

  • Verbinden Sie Pin 1 mit Raspberry Pi GPIO Pin 8 (CE0)
  • Verbinden Sie Pin 2 mit dem analogen Ausgang des MEMS-Mikrofon-Breakout-Boards
  • Verbinden Sie Pin 4 mit GND
  • Verbinden Sie Pin 5 mit Raspberry Pi GPIO Pin 10 (MOSI)
  • Verbinden Sie Pin 6 mit Raspberry Pi GPIO Pin 9 (MISO)
  • Verbinden Sie Pin 7 mit Raspberry Pi GPIO Pin 11 (SCLK)
  • Verbinden Sie Pin 8 mit Raspberry Pi 3.3V out

2. Lötdrähte an die MEMS-Mikrofon-Breakout-Platine anlöten. Verbinden Sie sich mit MCP3002 und Raspberry Pi

  • Vcc an Raspberry Pi 3.3V anschließen.
  • Verbinden Sie GND mit Raspberry Pi GND
  • Verbinden Sie AUD mit MCP3002 Pin 2

3. Stecken Sie alle Kabel für den Raspberry Pi ein und schalten Sie alles ein

Schritt 5: Erstellen Sie es! Software

Baue es! Software
Baue es! Software

Unser Ziel mit dem Bark Back ist zweierlei: einen Wiedergabeton auszulösen, wenn der Hund bellt, und die Daten an einen Server zu senden, wo wir sie überprüfen können.

Hier ist das Open-Source-Python-Programm für dieses Projekt. Fühlen Sie sich frei, den Code anzupassen und zu ändern.

Um das Programm zum Laufen zu bringen, müssen Sie zwei Dinge ausfüllen:

- songList: Geben Sie den Dateipfad und den Dateinamen für jeden der Songs ein, die Sie abspielen möchten.

- creds: Geben Sie Ihre CloudMQTT-Informationen in dieses Wörterbuch ein.

Schritt 1: Lesen Sie das SparkFun MEMS-Mikrofon-Breakout-Board ein

Lesen Sie den ADC-Wert (zwischen 0 und 1023) von der MEMS-Mikrofon-Breakout-Platine (über das MCP3002) mithilfe der SPI-Bibliothek ein und berechnen Sie die Signal-Spitze-Spitze-Amplitude.

Ordnen Sie die Signal-Spitze-zu-Spitze-Amplitude einer Volumeneinheit zu. Der aktuelle Code ordnet den ADC-Bereich zwischen 0 und 700 (basierend auf einem schnellen Experimentieren) einer Lautstärkeeinheit zwischen 0 und 10 zu. Um die Empfindlichkeit des Mikrofons anzupassen, passen Sie den ADC-Eingangsbereich an.

Einen ausführlichen Überblick über das MEMS-Mikrofon finden Sie in diesem Tutorial.

Schritt 2: Audioplayer auslösen

Zuerst brauchen wir Lieder zum Spielen! Sie können Sounds schnell in GarageBand (oder auf Ihrem Smartphone) aufnehmen und an den Raspberry Pi senden. Verwenden Sie in Python die Subprozessbibliothek, um den omxplayer.

Geben Sie im Code den Dateipfad der Songs, die Sie wiedergeben möchten, in die Variable *songList* (Zeile 26) ein. Die aktuelle Lautstärkeschwelle wird in der Hauptfunktion auf 7 gesetzt.

Schritt 3: Daten an CloudMQTT-Server senden

Verwenden Sie die Python-Bibliothek des Paho Client, um mit den CloudMQTT-Servern zu kommunizieren. Um es grob zusammenzufassen: Richten Sie einen Client-Server ein; Kommunikationsprotokolle definieren; Verbinden Sie sich mit unseren Anmeldeinformationen (auch bekannt als Creds); und abonnieren und veröffentlichen Sie unsere Daten. Das meiste davon geschieht in der Hauptfunktion (Zeilen 129 - 149 und Zeilen 169 - 174).

Um die empfangenen Daten zu überprüfen, gehen Sie in der CloudMQTT-Konsole zum Tab "Websocket UI".

Schritt 6: Testen & installieren

Testen & installieren!
Testen & installieren!

Führen Sie das Programm BarkBack.py im Terminal oder in der Python-IDE aus (Sie können das Programm auch mit SSH ausführen, nachdem Sie es bereits verlassen haben).

Überprüfen Sie, ob Sie die Lautstärkepegel auf der Registerkarte der Websocket-Benutzeroberfläche anzeigen.

Testen Sie das System, indem Sie das Mikrofon auslösen (klatschen, schreien, bellen usw.), um sicherzustellen, dass die Lautsprecher alle Töne abspielen.

Wenn alles betriebsbereit ist, empfiehlt es sich, die Komponenten auf eine Leiterplatte (Printed Circuit Board) zu löten, wenn Sie das System länger als nur ein paar Tage installieren möchten.

Mikrocontroller-Wettbewerb 2017
Mikrocontroller-Wettbewerb 2017
Mikrocontroller-Wettbewerb 2017
Mikrocontroller-Wettbewerb 2017

Zweiter Platz beim Microcontroller Contest 2017

Sensorik-Wettbewerb 2017
Sensorik-Wettbewerb 2017
Sensorik-Wettbewerb 2017
Sensorik-Wettbewerb 2017

Erster Preis beim Sensors Contest 2017

Empfohlen: