Johdanto
Nopeasti kehittyvän esineiden internetin (IoT) teknologian myötä Älykäs lemmikkilaatikko on noussut uudeksi sovellusalueeksi. Lemmikkien omistajat ovat yhä huolestuneempia lemmikkiensä elämänlaadusta, mutta perinteisistä lemmikkilaatikoista puuttuu automaattinen ohjaus ja ympäristön valvonta. Älykäs lemmikkilaatikko yhdistämällä anturit ja automaattiset ohjausjärjestelmät pystyy valvomaan ja säätämään lemmikkien elinympäristöä reaaliajassa.
Tämä projekti hyödyntää IoT-teknologiaa ja erilaisia anturimoduuleja valvoakseen parametreja, kuten lämpötilaa, kosteutta, CO₂-pitoisuutta ja valon voimakkuutta lemmikkilaatikon sisällä, varmistaen, että ympäristö pysyy aina mukavuusalueella. Lisäksi projekti sisältää etäohjaustoiminnallisuuden pilvialustan kautta, jolloin käyttäjät voivat nähdä ympäristötiedot ja säätää laitteita, kuten kosteuttimia, tuulettimia ja lämpötyynyjä milloin tahansa. Smart Pet Box helpottaa lemmikinomistajien lemmikkiensä ympäristön hallintaa, parantaen lemmikkien elämänlaatua.
Mikä on M5StickC Plus2?
-
Kompakti muotoilu: Koko vain 54 mm × 54 mm, helppo kantaa ja integroida erilaisiin projekteihin.
-
Sisäänrakennettu näyttö: 1,14 tuuman värillinen TFT-näyttö, joka tukee useita fontteja ja graafisia näyttöjä.
-
Monitoimiset anturit: Sisältää kiihtyvyysanturin, gyroskoopin, lämpötila- ja kosteusanturit sekä muita, sopii monipuolisiin sovellusympäristöihin.
-
Sisäänrakennettu kaiutin: Tukee äänen toistoa, ihanteellinen äänipalautteeseen ja hälytyksiin.
-
Monipuoliset liitännät: Tukee GPIO-, I2C-, UART- ja muita viestintäliitäntöjä, helpottaen oheislaitteiden laajentamista.
-
Paristokäyttöinen: Integroitu akku tukee pitkäaikaista käyttöä, sopii mobiilisovelluksiin.
Tässä osassa kuvataan laitteisto ja rakennetaan ympäristö
1. Käytetty laitteisto
2. Yhdistystapa
M5StickC Plus 2 ja PaHub-yhteys:
PaHubin ja anturien liitännät:
-
PaHubin kanava 0 on kytketty SCD40 CO2 -anturiin.
-
PaHubin kanava 1 on kytketty MLX90614 Infrapunalämpötila-anturiin.
-
PaHubin kanava 2 on kytketty PbHubiin.
PbHub ja Oheislaite Liitännät:
-
PbHubin kanava 0 on kytketty valosensoriin.
-
PbHubin kanava 2 on kytketty kameramoduuliin (käytetään vain virran saantiin).
-
PbHubin kanava 3 ohjaa kosteudensäädintä releen kautta.
-
PbHubin kanava 4 ohjaa lämpötyynyä releen kautta.
-
PbHubin kanava 5 ohjaa UVA-valoa releen kautta.
-
PbHubin kanava 1 ohjaa tuuletinta releen kautta (valinnainen).
Ohjelmiston asennus
1. Ohjelmistoympäristö
Kehitys Ympäristö:
Joidenkin anturin käyttämien kirjastojen osalta siirry suoraan kohtaan PIO Home -> Libraries -> Registry -> ja hae avainsanalla.
Vaaditut kirjastot:
-
M5GFX – Käytetään grafiikan ja tekstin näyttöön, ohjaten M5Stack-näyttöä.
-
M5Unified – Tarjoaa yhtenäisen API-rajapinnan M5Stack-laitteiden helpompaan ohjaukseen.
-
IRremote – IR-signaalien vastaanottoon ja lähetykseen muiden laitteiden kanssa kommunikointiin.
-
M5StickCPlus2 – Ohjaa M5StickC Plus2 -levyä, halliten laitteen aloituksen ja toiminnan.
-
Sensirion I2C SCD4x – SCD40-ympäristöanturin ohjaukseen, lukemaan lämpötila, kosteus ja CO2-tasot.
-
ArduinoJson – Käytetään JSON-datan käsittelyyn ja jäsentämiseen anturidatan lataamiseksi pilvialustalle.
-
M5Unit-HUB ja M5Unit-PbHub – PaHub- ja PbHub-moduulien kanssa vuorovaikutukseen, laajentaen I2C- ja GPIO-liitäntöjä sekä liittäen lisälaitteita.
-
TimerOne – Aikavälien hallintaan, varmistaen säännöllisen anturidatan keruun.
-
PubSubClient – Toteuttaa MQTT-viestinnän tietojen vaihtoon pilvialustan kanssa.
-
Adafruit MLX90614 Library – Käytetään MLX90614-infrapunalämpötila-anturin ohjaukseen, lukemaan lemmikkilaatikon pohjan lämpötila.
2. Koodin rakenne
-
WiFi-yhteys:Yhdistää verkkoon WiFin kautta, mahdollistaen pääsyn pilvialustalle tietojen tilaamiseen ja julkaisuun.
-
MQTT Viestintä:Käyttää PubSubClient-kirjastoa MQTT-viestinnän toteuttamiseen, ympäristötietojen lataamiseen pilvialustalle ja ohjeiden vastaanottamiseen sieltä.
-
Anturidatan haku: Jokaisen anturin tiedot luetaan säännöllisesti ja lähetetään kyselymenetelmällä:
-
SCD40: Lukee lämpötilan, kosteuden ja CO2-pitoisuuden.
-
MLX90614:Lukee lämpötila-anturin tiedot (alalämpötila).
-
Laitteen ohjaus:Ohjaa releitä laitteiden, kuten lämmitystyynyjen, ilmankostuttimien, UVA-valojen yms. päälle ja pois kytkemiseksi. Laitteita voidaan ohjata automaattisesti tai manuaalisesti asettamalla tavoitelämpötila ja -kosteus.
3. IoT-alusta ja tietojen lähetys
-
Alustan valinta: Käytämme Alibaba Cloud IoT-palvelua tietojen lähettämiseen ja laitteiden etähallintaan.
-
Laitteen yhdistäminen ja sitominen: Noudata asennusopasta sitomaan laitteesi pilvialustaan.
-
Tietojen lähetys: Anturidata lähetetään MQTT-protokollan kautta JSON-muodossa.
// 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("Vastaanotettu 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("Vastaanotettu target_humidity: "); Serial.println(target_humidity); } }
4. Takaisinkutsu tietojen vastaanottamiseksi pilvialustalta
// 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("Vastaanotettu 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("Vastaanotettu target_humidity: "); Serial.println(target_humidity); } }
IoT Alustan määritys
1. Alibaba Cloud IoT:
-
Kirjaudu Alibaba Cloud IoT -alustalle, luo uusi projekti ja määritä laitenimet, tuoteavaimet jne.
-
Hae asiakastunnus, käyttäjätunnus, salasana ja varmista, että MQTT-yhteysasetukset ovat oikein.
2. Sovelluksen ohjaus:
-
Luo tuote Alibaba Cloud IoT -alustalle ja määritä laiteohjausliittymä.
-
Käytä Alibaba Cloudin SDK:ta mobiilisovelluksen kehittämiseen, joka mahdollistaa reaaliaikaisen seurannan ja etäohjauksen.
Huomautuksia ja yleisiä ongelmia
1. Anturin alustaminen:
-
SCD40 CO2 -anturi tarvitsee noin 6 sekuntia alustukseen ennen tarkkojen lukemien saamista.
-
MLX90614-anturi vaatii I2C-väylän nopeudeksi 100 kHz toimiakseen oikein.
2. Laiteristiriidat:
-
Varmista, että PaHub- ja PbHub-moduulien I2C-osoitteet ovat yksilöllisiä ristiriitojen välttämiseksi.
-
Määritä eri kanavat antureille ja oheislaitteille PaHub-laitteessa häiriöiden välttämiseksi.
3. Vianetsintä ja Optimointi:
-
Säädä laitteen yhteys- ja datan lähetysvälejä välttääksesi liiallista datan lataamista ja vähentääksesi pilvialustan kuormitusta.
-
Jos dataa ei vastaanoteta pilvialustalla, varmista laitteiden vakaat yhteydet ja tarkista MQTT-asetukset.
Käyttötapaukset
1. Ympäristö Valvonta ja hallinta:
2. Etäohjaus ja säädöt:
3. Automaatio:
4. Lemmikkien valvonta:
5. Monipuolinen käyttö:
Tulevaisuuden mahdollisuudet ja laajennukset
1. Vesieläinten ympäristöt:
2. Tee-se-itse-ominaisuudet ja mukauttaminen:
3. Terveys Valvonta:
4. Pilviäly ja automaatio:
Johtopäätös