Introduktion
Med den snabba utvecklingen av Internet of Things (IoT) teknologi har Smart Pet Box framträtt som ett nytt tillämpningsområde. Husdjursägare är alltmer bekymrade över kvaliteten på sina husdjurs liv, men traditionella husdjurslådor saknar automatisk styrning och miljöövervakning. Smart Pet Box, genom att integrera sensorer och automatiska styrsystem, kan övervaka och justera husdjurens levnadsmiljö i realtid.
Detta projekt använder IoT-teknik och en mängd olika sensormoduler för att övervaka parametrar som temperatur, luftfuktighet, CO₂-koncentration och ljusstyrka inuti djurburen, vilket säkerställer att miljön alltid håller sig inom ett bekvämt intervall. Dessutom inkluderar projektet funktioner för fjärrstyrning via en molnplattform, vilket gör det möjligt för användare att visa miljödata och justera enheter som luftfuktare, fläktar och värmedynor när som helst. Smart Pet Box gör det enklare för djurbesättare att hantera sina husdjurs miljö, vilket förbättrar den övergripande livskvaliteten för husdjur.
Vad är M5StickC Plus2?
-
Kompakt design: Mäter endast 54 mm × 54 mm, lätt att bära med sig och integrera i olika projekt.
-
Inbyggd skärm: En 1,14-tums färg TFT-skärm som stöder flera typsnitt och grafiska visningar.
-
Multifunktionella sensorer: Inkluderar accelerometer, gyroskop, temperatur- och fuktighetssensorer med mera, lämpliga för olika applikationsscenarier.
-
Inbyggd högtalare: Stöder ljuduppspelning, idealisk för ljudfeedback och larmsignaler.
-
Rika gränssnitt: Stöder GPIO, I2C, UART och andra kommunikationsgränssnitt, vilket underlättar perifer expansion.
-
Batteridriven: Integrerat batteri som stödjer långvarig drift, lämpligt för mobila applikationer.
Detta avsnitt beskriver hårdvara och bygger upp miljön
1. Använd hårdvara
2. Anslutningsmetod
M5StickC Plus 2 och PaHub anslutning:
PaHub och sensoranslutningar:
-
Kanal 0 på PaHub är ansluten till SCD40 CO2-sensor.
-
Kanal 1 på PaHub är ansluten till MLX90614 Infraröd Temperatursensor.
-
Kanal 2 på PaHub är ansluten till PbHub.
PbHub och Kringutrustning Anslutningar:
-
Kanal 0 på PbHub är ansluten till en ljussensor.
-
Kanal 2 på PbHub är ansluten till kameramodulen (används endast för ström).
-
Kanal 3 på PbHub styr fuktaren via ett relä.
-
Kanal 4 på PbHub styr värmemattan via ett relä.
-
Kanal 5 på PbHub styr UVA ljuset via ett relä.
-
Kanal 1 på PbHub styr fläkten via ett relä (valfritt).
Mjukvaruinstallation
1. Mjukvarumiljö
Utveckling Miljö:
För några av biblioteken som används av sensorn, gå direkt till PIO Home -> Libraries -> Registry -> och sök efter ett nyckelord.
Nödvändiga bibliotek:
-
M5GFX – Används för grafik- och textvisning, styr M5Stack-skärmen.
-
M5Unified – Erbjuder ett enhetligt API-gränssnitt för enklare kontroll av M5Stack-enheter.
-
IRremote – För att ta emot och sända IR-signaler för kommunikation med andra enheter.
-
M5StickCPlus2 – Styr M5StickC Plus2-kortet, hanterar enhetens initiering och drift.
-
Sensirion I2C SCD4x – För att styra SCD40-miljögivaren och läsa temperatur, luftfuktighet och CO2-nivåer.
-
ArduinoJson – Används för att bearbeta och tolka JSON-data för att ladda upp sensordata till molnplattformen.
-
M5Unit-HUB och M5Unit-PbHub – För att interagera med PaHub- och PbHub-moduler, utöka I2C- och GPIO-gränssnitt och ansluta ytterligare externa enheter.
-
TimerOne – För att styra tidsintervaller och säkerställa regelbunden insamling av sensordata.
-
PubSubClient – Implementerar MQTT-kommunikation för att utbyta data med molnplattformen.
-
Adafruit MLX90614-bibliotek – Används för att styra MLX90614-infraröd temperaturgivare för att läsa temperaturen på botten av husdjurslådan.
2. Kodstruktur
-
WiFi-anslutning:Ansluter till nätverket via WiFi, vilket möjliggör åtkomst till molnplattformen för prenumeration och publicering av data.
-
MQTT Kommunikation:Använder PubSubClient-biblioteket för att implementera MQTT-kommunikation, laddar upp miljödata till molnplattformen och tar emot instruktioner från den.
-
Hämtning av sensordata: Varje sensors data läses periodiskt och laddas upp med en pollingmetod:
-
SCD40: Läser temperatur, luftfuktighet och CO2-koncentration.
-
MLX90614:Läser temperatursensordata (botten temperatur).
-
Enhetskontroll:Styr reläer för att slå på och av enheter, såsom värmedynor, luftfuktare, UVA-lampor, etc. Enheterna kan styras automatiskt eller manuellt genom att ställa in måltemperatur och mål luftfuktighet.
3. IoT-plattform och datauppladdning
-
Plattformsval: Vi använder Alibaba Cloud IoT för att ladda upp data och hantera enheter på distans.
-
Enhetsanslutning och bindning: Följ installationsguiden för att binda din enhet med molnplattformen.
-
Datauppladdning: Sensordata laddas upp via MQTT-protokollet 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("Mottagen 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("Mottagen target_humidity: "); Serial.println(target_humidity); } }
4. Återuppringning för att ta emot data från molnplattformen
// 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("Mottagen 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("Mottagen target_humidity: "); Serial.println(target_humidity); } }
IoT Plattformsinställningar
1. Alibaba Cloud IoT:
-
Logga in på Alibaba Cloud IoT-plattformen, skapa ett nytt projekt och konfigurera enhetsnamn, produktnycklar osv.
-
Hämta klient-ID, användarnamn, lösenord och säkerställ att MQTT-kommunikationsinställningarna är korrekta.
2. Appkontroll:
-
Skapa en produkt på Alibaba Cloud IoT-plattformen och konfigurera gränssnittet för enhetskontroll.
-
Använd Alibaba Clouds SDK för att utveckla en mobilapp som möjliggör realtidsövervakning och fjärrstyrning av enheter.
Anteckningar och vanliga problem
1. Sensorinitialisering:
-
SCD40 CO2-sensorn kräver cirka 6 sekunder för initialisering innan exakta mätningar är tillgängliga.
-
MLX90614-sensorn kräver att I2C-bushastigheten ställs in på 100 kHz för att fungera korrekt.
2. Enhetskonflikter:
-
Se till att I2C-adresserna för PaHub och PbHub-modulerna är unika för att undvika konflikter.
-
Tilldela olika kanaler för sensorer och kringutrustning på PaHub för att undvika störningar.
3. Felsökning och Optimering:
-
Justera enhetsanslutningen och datauppladdningsintervaller för att undvika överdrivna datauppladdningar och minska belastningen på molnplattformen.
-
Om data inte tas emot på molnplattformen, säkerställ stabila enhetsanslutningar och kontrollera MQTT-inställningarna.
Användningsfall
1. Miljö Övervakning och hantering:
2. Fjärrkontroll och justeringar:
3. Automatisering:
4. Djurövervakning:
5. Mångsidig användning:
Framtida möjligheter och expansion
1. Vattenlevande husdjursmiljöer:
2. Gör-det-själv-funktioner och anpassning:
3. Hälsa Övervakning:
4. Molnintelligens och automation:
Slutsats