Introduktion
Med den hurtige udvikling af Internet of Things (IoT) teknologi er Smart Pet Box opstået som et nyt anvendelsesområde. Kæledyrsejere er i stigende grad bekymrede for kvaliteten af deres kæledyrs liv, men traditionelle kæledyrsbokse mangler automatisk styring og miljøovervågning. Smart Pet Box, ved at integrere sensorer og automatiske styresystemer, er i stand til at overvåge og justere kæledyrs levevilkår i realtid.
Dette projekt anvender IoT-teknologi og en række sensormoduler til at overvåge parametre som temperatur, fugtighed, CO₂-koncentration og lysintensitet inde i kæledyrskassen, hvilket sikrer, at miljøet altid forbliver inden for et behageligt område. Derudover indeholder projektet fjernbetjeningsfunktionalitet via en cloud-platform, som giver brugerne mulighed for at se miljødata og justere enheder såsom befugtere, ventilatorer og varmeplader når som helst. Smart Pet Box gør det nemmere for kæledyrsejere at styre deres kæledyrs miljø, hvilket forbedrer den overordnede livskvalitet for kæledyr.
Hvad er M5StickC Plus2?
-
Kompakt design: Måler kun 54 mm × 54 mm, nem at bære og integrere i forskellige projekter.
-
Indbygget display: En 1,14-tommer farvet TFT-skærm, der understøtter flere skrifttyper og grafiske visninger.
-
Multifunktionelle sensorer: Indeholder accelerometer, gyroskop, temperatur- og fugtighedssensorer med mere, velegnet til forskellige anvendelsesscenarier.
-
Indbygget højttaler: Understøtter lydafspilning, ideel til lydfeedback og alarmfunktioner.
-
Rige grænseflader: Understøtter GPIO, I2C, UART og andre kommunikationsgrænseflader, hvilket letter udvidelse af periferiudstyr.
-
Batteridrevet: Integreret batteri understøtter langvarig drift, velegnet til mobile applikationer.
Dette afsnit beskriver hardware og opbygger miljøet
1. Hardware brugt
2. Tilslutningsmetode
M5StickC Plus 2 og PaHub forbindelse:
PaHub og sensorforbindelser:
-
Kanal 0 på PaHub er forbundet til SCD40 CO2 Sensor.
-
Kanal 1 på PaHub er forbundet til MLX90614 Infrarød Temperatursensor.
-
Kanal 2 på PaHub er forbundet til PbHub.
PbHub og Periferi Forbindelser:
-
Kanal 0 på PbHub er forbundet til en lyssensor.
-
Kanal 2 på PbHub er forbundet til kamera modulet (bruges kun til strøm).
-
Kanal 3 på PbHub styrer befugteren via et relæ.
-
Kanal 4 på PbHub styrer varmepuden via et relæ.
-
Kanal 5 på PbHub styrer UVA lyset via et relæ.
-
Kanal 1 på PbHub styrer blæseren via et relæ (valgfrit).
Softwareopsætning
1. Softwaremiljø
Udvikling Miljø:
For nogle af de biblioteker, der bruges af sensoren, gå direkte til PIO Home -> Libraries -> Registry -> og søg efter et nøgleord.
Påkrævede biblioteker:
-
M5GFX – Bruges til grafik- og tekstvisning, styrer M5Stack-displayet.
-
M5Unified – Tilbyder en samlet API-grænseflade for nemmere styring af M5Stack-enheder.
-
IRremote – Til modtagelse og afsendelse af IR-signaler for at kommunikere med andre enheder.
-
M5StickCPlus2 – Styrer M5StickC Plus2 boardet, håndterer enhedsinitialisering og drift.
-
Sensirion I2C SCD4x – Til styring af SCD40 miljøsensor for at aflæse temperatur, fugtighed og CO2-niveauer.
-
ArduinoJson – Bruges til behandling og parsing af JSON-data for at uploade sensordata til cloud-platformen.
-
M5Unit-HUB og M5Unit-PbHub – Til interaktion med PaHub- og PbHub-moduler, udvider I2C- og GPIO-interfaces og forbinder yderligere eksterne enheder.
-
TimerOne – Til styring af tidsintervaller, sikrer regelmæssig indsamling af sensordata.
-
PubSubClient – Implementerer MQTT-kommunikation til udveksling af data med cloud-platformen.
-
Adafruit MLX90614 Library – Bruges til at styre MLX90614 infrarøde temperatursensor for at aflæse bunden af kæledyrskassen.
2. Kodestruktur
-
WiFi-forbindelse:Opretter forbindelse til netværket via WiFi, hvilket muliggør adgang til cloud-platformen for abonnement og publicering af data.
-
MQTT Kommunikation:Bruger PubSubClient-biblioteket til at implementere MQTT-kommunikation, uploader miljødata til cloud-platformen og modtager instruktioner derfra.
-
Sensor dataindsamling: Hver sensors data læses periodisk og uploades ved hjælp af en polling-metode:
-
SCD40: Læser temperatur, fugtighed og CO2-koncentration.
-
MLX90614:Læser temperatursensordata (bundtemperatur).
-
Enhedskontrol:Styrer relæer for at tænde og slukke enheder som varmeplader, luftfugtere, UVA-lys osv. Enhederne kan styres automatisk eller manuelt ved at indstille måltemperatur og -fugtighed.
3. IoT-platform og dataupload
-
Platformvalg: Vi bruger Alibaba Cloud IoT til at uploade data og administrere enheder eksternt.
-
Enhedsforbindelse og binding: Følg opsætningstutorialen for at binde din enhed til cloud-platformen.
-
Data Upload: Sensordata uploades via MQTT-protokollen i JSON-format.
// 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("Modtaget target_temperature: "); 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("Modtaget target_humidity: "); Serial.println(target_humidity); } }
4. Callback til modtagelse af data fra cloud-platform
// 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("Modtaget target_temperature: "); 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("Modtaget target_humidity: "); Serial.println(target_humidity); } }
IoT Platformkonfiguration
1. Alibaba Cloud IoT:
-
Log ind på Alibaba Cloud IoT-platformen, opret et nyt projekt, og konfigurer enhedsnavne, produktnøgler osv.
-
Hent klient-ID, brugernavn, adgangskode, og sørg for, at MQTT-kommunikationsindstillingerne er korrekte.
2. App-kontrol:
-
Opret et produkt på Alibaba Cloud IoT-platformen og konfigurer grænsefladen til enhedskontrol.
-
Brug Alibaba Clouds SDK til at udvikle en mobilapp, der muliggør realtidsmonitorering og fjernbetjening af enheder.
Noter og almindelige problemer
1. Sensorinitialisering:
-
SCD40 CO2-sensoren kræver cirka 6 sekunder til initialisering, før nøjagtige målinger er tilgængelige.
-
MLX90614-sensoren kræver, at I2C-bushastigheden sættes til 100 kHz for at fungere korrekt.
2. Enhedskonflikter:
-
Sørg for, at I2C-adresserne for PaHub og PbHub modulerne er unikke for at undgå konflikter.
-
Tildel forskellige kanaler til sensorer og perifere enheder på PaHub for at undgå interferens.
3. Fejlfinding og Optimering:
-
Justér enhedsforbindelsen og datauploadintervaller for at undgå overdreven dataupload og reducere belastningen på cloud-platformen.
-
Hvis data ikke modtages på cloud-platformen, skal du sikre stabile enhedsforbindelser og kontrollere MQTT-indstillinger.
Brugssager
1. Miljømæssig Overvågning og styring:
2. Fjernstyring og justeringer:
3. Automatisering:
4. Kæledyrsovervågning:
5. Alsidig brug:
Fremtidige muligheder og udvidelser
1. Akvatiske kæledyrsmiljøer:
2. DIY-funktioner og tilpasning:
3. Sundhed Overvågning:
4. Cloud-intelligens og automatisering:
Konklusion