Wie man eine intelligente Haustierbox mit M5StickC Plus2 baut
Einführung
Mit der rasanten Entwicklung der Internet der Dinge (IoT) Technologie hat sich die Smart Pet Box als ein neues Anwendungsfeld herausgebildet. Tierbesitzer sind zunehmend besorgt über die Lebensqualität ihrer Haustiere, aber traditionelle Tierboxen fehlen automatisierte Steuerung und Umweltüberwachung. Die Smart Pet Box ist in der Lage, durch die Integration von Sensoren und automatisierten Steuerungssystemen die Lebensumgebung von Haustieren in Echtzeit zu überwachen und anzupassen.
Dieses Projekt nutzt IoT-Technologie und eine Vielzahl von Sensor-Modulen, um Parameter wie Temperatur, Luftfeuchtigkeit, CO₂-Konzentration und Lichtintensität im Haustierbox zu überwachen, um sicherzustellen, dass die Umgebung immer innerhalb eines komfortablen Bereichs bleibt. Darüber hinaus integriert das Projekt Funktionen zur Fernsteuerung über eine Cloud-Plattform, die es den Nutzern ermöglicht, Umweltdaten zu anzeigen und Geräte wie Luftbefeuchter, Ventilatoren und Heizkissen jederzeit anzupassen. Die Smart Pet Box erleichtert es Haustierbesitzern, die Umgebung ihrer Haustiere zu verwalten, was die allgemeine Lebensqualität für Haustiere verbessert.
Was ist M5StickC Plus2?
-
Kompaktes Design: Mit nur 54mm × 54mm ist es einfach zu transportieren und in verschiedene Projekte zu integrieren.
-
Integriertes Display: Ein 1,14-Zoll-Farb-TFT-Display, das mehrere Schriftarten und grafische Anzeigen unterstützt.
-
Multifunktionale Sensoren: Beinhaltet einen Beschleunigungssensor, ein Gyroskop, Temperatur- und Feuchtigkeitssensoren sowie weitere, geeignet für verschiedene Anwendungsszenarien.
-
Integrierter Lautsprecher: Unterstützt die Audio-Wiedergabe, ideal für akustisches Feedback und Alarmfunktionen.
-
Reiche Schnittstellen: Unterstützt GPIO, I2C, UART und andere Kommunikationsschnittstellen, die die Peripherieerweiterung erleichtern.
-
Batteriebetrieben: Integrierter Akku unterstützt den langfristigen Betrieb, geeignet für mobile Anwendungen.
Dieser Abschnitt beschreibt die Hardware und erstellt die Umgebung.
1. Verwendete Hardware
2. Verbindungsart
M5StickC Plus 2 und PaHub Verbindung:
PaHub und Sensorverbindungen:
-
Der Kanal 0 am PaHub ist mit dem SCD40 CO2-Sensor verbunden.
-
Der Kanal 1 auf dem PaHub ist mit dem MLX90614 InfrarotTemperatursensor verbunden.
-
Der Kanal 2 auf dem PaHub ist mit PbHub verbunden.
PbHub und Peripheriegeräte Verbindungen:
-
Der Kanal 0 am PbHub ist mit einem Lichtsensor verbunden.
-
Der Kanal 2 auf dem PbHub ist mit dem Kameramodul verbunden (nur zur Stromversorgung verwendet).
-
Der Kanal 3 auf dem PbHub steuert den Luftbefeuchter über ein Relais.
-
Der Kanal 4 auf dem PbHub steuert das Heizkissen über ein Relais.
-
Der Kanal 5 auf dem PbHub steuert das UVA Licht über ein Relais.
-
Der Kanal 1 auf dem PbHub steuert den Ventilator über ein Relais (optional).
Software-Setup
1. Softwareumgebung
Entwicklung Umfeld:
Für einige der von dem Sensor verwendeten Bibliotheken gehen Sie direkt zu PIO Home -> Bibliotheken -> Registry -> und suchen Sie nach einem Schlüsselwort.
Erforderliche Bibliotheken:
-
M5GFX – Wird zur Anzeige von Grafiken und Text verwendet, um das M5Stack-Display zu steuern.
-
M5Unified – Bietet eine einheitliche API-Schnittstelle für eine einfachere Steuerung von M5Stack-Geräten.
-
IRremote – Zum Empfangen und Senden von IR-Signalen zur Kommunikation mit anderen Geräten.
-
M5StickCPlus2 – Steuert das M5StickC Plus2-Board, verwaltet die Geräteinitialisierung und den Betrieb.
-
Sensirion I2C SCD4x – Zur Steuerung des SCD40 Umweltsensors zur Messung von Temperatur, Luftfeuchtigkeit und CO2-Werten.
-
ArduinoJson – Wird verwendet, um JSON-Daten zu verarbeiten und zu parsen, um Sensordaten auf die Cloud-Plattform hochzuladen.
-
M5Unit-HUB und M5Unit-PbHub – Zum Interagieren mit PaHub- und PbHub-Modulen, Erweitern der I2C- und GPIO-Schnittstellen und Anschließen zusätzlicher externer Geräte.
-
TimerOne – Zur Steuerung von Zeitintervallen, um eine regelmäßige Datensammlung von Sensoren sicherzustellen.
-
PubSubClient – Implementiert die MQTT-Kommunikation zum Austausch von Daten mit der Cloud-Plattform.
-
Adafruit MLX90614 Bibliothek – Wird verwendet, um den MLX90614 Infrarot-Temperatursensor zu steuern, um die Bodentemperatur der Tierbox zu lesen.
2. Codestruktur
-
WiFi-Verbindung:Stellt eine Verbindung zum Netzwerk über WiFi her, wodurch der Zugriff auf die Cloud-Plattform für die Abonnierung und Veröffentlichung von Daten ermöglicht wird.
-
MQTT Kommunikation:Verwendet die PubSubClient-Bibliothek, um die MQTT-Kommunikation zu implementieren, Umweltdaten in die Cloud-Plattform hochzuladen und Anweisungen von ihr zu empfangen.
-
Sensor-Datenabruf: Jedes Sensors Daten werden regelmäßig gelesen und mithilfe einer Abfragemethode hochgeladen:
-
SCD40: Liest Temperatur, Luftfeuchtigkeit und CO2-Konzentration.
-
MLX90614:Liest die Daten des Temperatursensors (Untertemperatur).
-
Gerätesteuerung:Steuert Relais, um Geräte ein- und auszuschalten, wie z.B. Heizkissen, Luftbefeuchter, UVA-Lampen usw. Die Geräte können automatisch oder manuell gesteuert werden, indem die Zieltemperatur und -feuchtigkeit eingestellt werden.
3. IoT-Plattform und Daten-Upload
-
Plattformauswahl: Wir verwenden Alibaba Cloud IoT, um Daten hochzuladen und Geräte aus der Ferne zu verwalten.
-
Geräteverbindung und Bindung: Befolgen Sie das Einrichtungstutorial, um Ihr Gerät mit der Cloud-Plattform zu verbinden.
-
Daten-Upload: Sensordaten werden über das MQTT-Protokoll im JSON-Format hochgeladen.
// Parse the received JSON message void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); // Convert the received payload to a string char msg[length + 1]; for (unsigned int i = 0; i < length; i++) { msg[i] = (char)payload[i]; } msg[length] = '\0'; // Null terminator for the string // Output the received message Serial.println(msg); // Parse the JSON data JsonDocument doc; // Use JsonDocument to parse JSON DeserializationError error = deserializeJson(doc, msg); // Parse the message into a JSON object // Check if parsing was successful if (error) { Serial.printf("deserializeJson() failed: "); Serial.println(error.f_str()); return; // Exit if parsing failed } // Get the temperature value and print it, correctly retrieving the target_temperature from the nested "params" field if (doc["params"]["target_temperature"].is()) { target_temperature = doc["params"]["target_temperature"]; Serial.print("Empfangene Zieltemperatur: "); Serial.println(target_temperature); } // Get the humidity value and print it, correctly retrieving the target_humidity from the nested "params" field if (doc["params"]["target_humidity"].is ()) { target_humidity = doc["params"]["target_humidity"]; Serial.print("Empfangen Ziel-Feuchtigkeit: "); Serial.println(target_humidity); } }
4. Rückruf zum Empfang von Daten von der Cloud-Plattform
// Parse the received JSON message void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); // Convert the received payload to a string char msg[length + 1]; for (unsigned int i = 0; i < length; i++) { msg[i] = (char)payload[i]; } msg[length] = '\0'; // Null terminator for the string // Output the received message Serial.println(msg); // Parse the JSON data JsonDocument doc; // Use JsonDocument to parse JSON DeserializationError error = deserializeJson(doc, msg); // Parse the message into a JSON object // Check if parsing was successful if (error) { Serial.printf("deserializeJson() failed: "); Serial.println(error.f_str()); return; // Exit if parsing failed } // Get the temperature value and print it, correctly retrieving the target_temperature from the nested "params" field if (doc["params"]["target_temperature"].is()) { target_temperature = doc["params"]["target_temperature"]; Serial.print("Empfangene Zieltemperatur: "); Serial.println(target_temperature); } // Get the humidity value and print it, correctly retrieving the target_humidity from the nested "params" field if (doc["params"]["target_humidity"].is ()) { target_humidity = doc["params"]["target_humidity"]; Serial.print("Empfangen Ziel-Feuchtigkeit: "); Serial.println(target_humidity); } }
IoT Plattformkonfiguration
1. Alibaba Cloud IoT:
-
Melden Sie sich bei der Alibaba Cloud IoT-Plattform an, erstellen Sie ein neues Projekt und konfigurieren Sie Gerätenamen, Produkt-Keys usw.
-
Rufen Sie die Client-ID, den Benutzernamen, das Passwort ab und stellen Sie sicher, dass die MQTT-Kommunikationseinstellungen korrekt sind.
2. App-Steuerung:
-
Erstellen Sie ein Produkt auf der Alibaba Cloud IoT-Plattform und konfigurieren Sie die Schnittstelle zur Gerätesteuerung.
-
Verwenden Sie das SDK von Alibaba Cloud, um eine mobile App zu entwickeln, die eine Echtzeitüberwachung und Fernsteuerung von Geräten ermöglicht.
Notizen und häufige Probleme
1. Sensorinitialisierung:
-
Der SCD40 CO2-Sensor benötigt etwa 6 Sekunden für die Initialisierung, bevor genaue Messwerte verfügbar sind.
-
Der MLX90614-Sensor erfordert, dass die I2C-Busgeschwindigkeit auf 100 kHz eingestellt wird, um korrekt zu funktionieren.
2. Gerätekonflikte:
-
Stellen Sie sicher, dass die I2C-Adressen für die PaHub- und PbHub-Module eindeutig sind, um Konflikte zu vermeiden.
-
Weisen Sie verschiedene Kanäle für Sensoren und Peripheriegeräte auf PaHub zu, um Interferenzen zu vermeiden.
3. Debuggen und Optimierung:
-
Passen Sie die Gerätekonfiguration und die Datenübertragungsintervalle an, um übermäßige Datenübertragungen zu vermeiden und die Belastung der Cloud-Plattform zu reduzieren.
-
Wenn keine Daten auf der Cloud-Plattform empfangen werden, stellen Sie stabile Geräteverbindungen sicher und überprüfen Sie die MQTT-Einstellungen.
Anwendungsfälle
1. Umwelt Überwachung und Verwaltung:
2. Fernbedienung und Anpassungen:
3. Automatisierung:
4. Haustierüberwachung:
5. Vielseitige Nutzung:
Zukünftige Möglichkeiten und Expansion
1. Aquatische Haustierumgebungen:
2. DIY-Funktionen und Anpassung:
3. Gesundheit Überwachung:
4. Cloud-Intelligenz und Automatisierung:
Abschluss
Hinterlassen Sie einen Kommentar
Alle Blog-Kommentare werden vor der Veröffentlichung geprüft