Wprowadzenie
Wraz z szybkim rozwojem technologii Internetu Rzeczy (IoT), Inteligentna Skrzynka dla Zwierząt stała się nowym polem zastosowań. Właściciele zwierząt coraz bardziej dbają o jakość życia swoich zwierząt, jednak tradycyjne skrzynki dla zwierząt nie posiadają automatycznej kontroli ani monitoringu środowiska. Inteligentna Skrzynka dla Zwierząt, integrując czujniki oraz systemy automatycznej kontroli, jest w stanie monitorować i dostosowywać środowisko życia zwierząt w czasie rzeczywistym.
Ten projekt wykorzystuje technologię IoT oraz różnorodne moduły czujników do monitorowania parametrów takich jak temperatura, wilgotność, stężenie CO₂ oraz natężenie światła wewnątrz pudełka dla zwierząt, zapewniając, że środowisko zawsze pozostaje w komfortowym zakresie. Dodatkowo, projekt zawiera funkcjonalność zdalnego sterowania za pośrednictwem platformy chmurowej, umożliwiając użytkownikom przeglądanie danych środowiskowych oraz regulację urządzeń takich jak nawilżacze, wentylatory i podkładki grzewcze w dowolnym momencie. Smart Pet Box ułatwia właścicielom zwierząt zarządzanie środowiskiem swoich pupili, poprawiając ogólną jakość życia zwierząt.
Czym jest M5StickC Plus2?
-
Kompaktowa konstrukcja: Mierząc zaledwie 54mm × 54mm, jest łatwy do przenoszenia i integracji w różnych projektach.
-
Wbudowany wyświetlacz: Kolorowy wyświetlacz TFT o przekątnej 1,14 cala, obsługujący wiele czcionek i wyświetlanie grafiki.
-
Wielofunkcyjne czujniki: Zawiera akcelerometr, żyroskop, czujniki temperatury i wilgotności oraz inne, odpowiednie do różnych scenariuszy zastosowań.
-
Wbudowany głośnik: Obsługuje odtwarzanie dźwięku, idealny do funkcji dźwiękowej informacji zwrotnej i alarmów.
-
Bogate interfejsy: Obsługuje GPIO, I2C, UART oraz inne interfejsy komunikacyjne, ułatwiając rozbudowę peryferiów.
-
Zasilany baterią: Wbudowana bateria wspiera długotrwałą pracę, odpowiednia do zastosowań mobilnych.
Ta sekcja opisuje sprzęt i tworzy środowisko
1. Używany sprzęt
2. Metoda połączenia
Połączenie M5StickC Plus 2 i PaHub:
Połączenia PaHub i czujników:
-
Kanał 0 na PaHub jest podłączony do SCD40 CO2 Sensor.
-
Kanał 1 na PaHub jest podłączony do czujnika temperatury na podczerwień MLX90614.
-
Kanał 2 na PaHub jest połączony z PbHub.
PbHub i Peryferyjny Połączenia:
-
Kanał 0 na PbHub jest podłączony do czujnika światła.
-
Kanał 2 na PbHub jest podłączony do modułu kamery (używany tylko do zasilania).
-
Kanał 3 na PbHub steruje nawilżaczem za pomocą przekaźnika.
-
Kanał 4 na PbHub steruje podkładką grzewczą za pomocą przekaźnika.
-
Kanał 5 na PbHub steruje światłem UVA za pomocą przekaźnika.
-
Kanał 1 na PbHub steruje wentylatorem za pomocą przekaźnika (opcjonalnie).
Konfiguracja oprogramowania
1. Środowisko oprogramowania
Rozwój Środowisko:
Dla niektórych bibliotek używanych przez czujnik, przejdź bezpośrednio do PIO Home -> Libraries -> Registry -> i wyszukaj słowo kluczowe.
Wymagane biblioteki:
-
M5GFX – Używany do wyświetlania grafiki i tekstu, kontrolując wyświetlacz M5Stack.
-
M5Unified – Zapewnia zunifikowany interfejs API dla łatwiejszej kontroli urządzeń M5Stack.
-
IRremote – Do odbierania i nadawania sygnałów podczerwieni w celu komunikacji z innymi urządzeniami.
-
M5StickCPlus2 – Steruje płytką M5StickC Plus2, zarządzając inicjalizacją i działaniem urządzenia.
-
Sensirion I2C SCD4x – Do sterowania czujnikiem środowiskowym SCD40 w celu odczytu temperatury, wilgotności i poziomu CO2.
-
ArduinoJson – Używany do przetwarzania i analizowania danych JSON w celu przesyłania danych z czujników na platformę chmurową.
-
M5Unit-HUB i M5Unit-PbHub – Do interakcji z modułami PaHub i PbHub, rozszerzania interfejsów I2C i GPIO oraz podłączania dodatkowych urządzeń zewnętrznych.
-
TimerOne – Do kontrolowania interwałów czasowych, zapewniając regularne zbieranie danych z czujników.
-
PubSubClient – Implementuje komunikację MQTT do wymiany danych z platformą chmurową.
-
Biblioteka Adafruit MLX90614 – Używana do sterowania czujnikiem temperatury na podczerwień MLX90614 w celu odczytu temperatury dna pudełka dla zwierząt.
2. Struktura kodu
-
Połączenie WiFi:Łączy się z siecią przez WiFi, umożliwiając dostęp do platformy w chmurze w celu subskrypcji i publikacji danych.
-
MQTT Komunikacja:Używa biblioteki PubSubClient do realizacji komunikacji MQTT, przesyłając dane środowiskowe do platformy chmurowej i odbierając z niej instrukcje.
-
Pobieranie danych z czujnika: Każdy czujnik jest okresowo odczytywany, a dane przesyłane metodą odpytywania:
-
SCD40: Odczytuje temperaturę, wilgotność i stężenie CO2.
-
MLX90614:Odczytuje dane z czujnika temperatury (temperatura dolna).
-
Sterowanie urządzeniem:Steruje przekaźnikami, aby włączać i wyłączać urządzenia, takie jak podkładki grzewcze, nawilżacze, lampy UVA itp. Urządzeniami można sterować automatycznie lub ręcznie, ustawiając docelową temperaturę i wilgotność.
3. Platforma IoT i przesyłanie danych
-
Wybór platformy: Używamy Alibaba Cloud IoT do przesyłania danych i zdalnego zarządzania urządzeniami.
-
Połączenie i powiązanie urządzenia: Postępuj zgodnie z samouczkiem konfiguracji, aby powiązać swoje urządzenie z platformą chmurową.
-
Przesyłanie danych: Dane z czujnika są przesyłane za pomocą protokołu MQTT w formacie JSON.
// 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("Otrzymano target_temperature: "); Serial.println(docelowa_temperatura); } // 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("Otrzymano target_humidity: "); Serial.println(docelowa_wilgotność); } }
4. Wywołanie zwrotne do odbierania danych z platformy chmurowej
// 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("Otrzymano target_temperature: "); Serial.println(docelowa_temperatura); } // 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("Otrzymano target_humidity: "); Serial.println(docelowa_wilgotność); } }
Internet rzeczy Konfiguracja platformy
1. Alibaba Cloud Internet rzeczy:
-
Zaloguj się do platformy Alibaba Cloud IoT, utwórz nowy projekt i skonfiguruj nazwy urządzeń, klucze produktów itp.
-
Pobierz identyfikator klienta, nazwę użytkownika, hasło i upewnij się, że ustawienia komunikacji MQTT są poprawne.
2. Sterowanie aplikacją:
-
Utwórz produkt na platformie Alibaba Cloud IoT i skonfiguruj interfejs do sterowania urządzeniem.
-
Użyj SDK Alibaba Cloud do opracowania aplikacji mobilnej, która umożliwia monitorowanie w czasie rzeczywistym i zdalne sterowanie urządzeniami.
Notatki i Częste Problemy
1. Inicjalizacja czujnika:
-
Czujnik CO2 SCD40 wymaga około 6 sekund na inicjalizację, zanim dostępne będą dokładne odczyty.
-
Czujnik MLX90614 wymaga ustawienia prędkości magistrali I2C na 100kHz, aby działał poprawnie.
2. Konflikty urządzeń:
-
Upewnij się, że adresy I2C dla modułów PaHub i PbHub są unikalne, aby uniknąć konfliktów.
-
Przypisz różne kanały dla czujników i urządzeń peryferyjnych na PaHub, aby uniknąć zakłóceń.
3. Debugowanie i Optymalizacja:
-
Dostosuj interwały połączenia urządzenia i przesyłania danych, aby uniknąć nadmiernego przesyłania danych i zmniejszyć obciążenie platformy chmurowej.
-
Jeśli dane nie są odbierane na platformie chmurowej, upewnij się, że połączenia urządzeń są stabilne i sprawdź ustawienia MQTT.
Przypadki użycia
1. Środowiskowy Monitorowanie i zarządzanie:
2. Pilot zdalnego sterowania i regulacje:
3. Automatyzacja:
4. Monitorowanie zwierząt domowych:
5. Wszechstronne zastosowanie:
Przyszłe możliwości i rozwój
1. Środowiska wodnych zwierząt domowych:
2. Funkcje DIY i personalizacja:
3. Zdrowie Monitorowanie:
4. Inteligencja chmurowa i automatyzacja:
Wniosek