Come costruire una Smart Pet Box con M5StickC Plus2
Introduzione
Con lo sviluppo rapido della tecnologia Internet of Things (IoT), il Smart Pet Box è emerso come un nuovo campo di applicazione. I proprietari di animali domestici sono sempre più preoccupati per la qualità della vita dei loro animali, ma le tradizionali scatole per animali mancano di controllo automatico e monitoraggio ambientale. Lo Smart Pet Box, integrando sensori e sistemi di controllo automatico, è in grado di monitorare e regolare l'ambiente di vita degli animali in tempo reale.
Questo progetto utilizza tecnologia IoT e una varietà di moduli sensoriali per monitorare parametri come temperatura, umidità, concentrazione di CO₂ e intensità della luce all'interno della scatola per animali, garantendo che l'ambiente rimanga sempre all'interno di un intervallo confortevole. Inoltre, il progetto incorpora funzionalità di controllo remoto attraverso una piattaforma cloud, consentendo agli utenti di visualizzare i dati ambientali e regolare i dispositivi come umidificatori, ventilatori e cuscinetti riscaldanti in qualsiasi momento. La Smart Pet Box rende più facile per i proprietari di animali gestire l'ambiente dei loro animali, migliorando la qualità della vita per gli animali.
Che cos'è M5StickC Plus2?
-
Design Compatto: Misurando solo 54mm × 54mm, è facile da trasportare e integrare in vari progetti.
-
Display integrato: Un display a colori TFT da 1,14 pollici che supporta più caratteri e grafica.
-
Sensoristica Multifunzionale: Include un accelerometro, un giroscopio, sensori di temperatura e umidità, tra gli altri, adatti a diversi scenari applicativi.
-
Altoparlante integrato: Supporta la riproduzione audio, ideale per feedback sonori e funzioni di allerta.
-
Interfacce Ricche: Supporta GPIO, I2C, UART e altre interfacce di comunicazione, facilitando l'espansione dei periferici.
-
Alimentato a Batteria: La batteria integrata supporta un funzionamento a lungo termine, adatta per applicazioni mobili.
Questa sezione descrive l'hardware e costruisce l'ambiente
1. Hardware utilizzato
2. Metodo di Connessione
M5StickC Plus 2 e Connessione PaHub:
Collegamenti PaHub e Sensori:
-
Il Canale 0 sul PaHub è collegato al SCD40 Sensore di CO2.
-
Il Canale 1 su PaHub è collegato al MLX90614 Sensore di Temperatura Infrarosso.
-
Il Canale 2 su PaHub è connesso a PbHub.
PbHub e Periferica Connessioni:
-
Il Canale 0 sul PbHub è collegato a un sensore di luce.
-
Il Canale 2 sul PbHub è collegato al modulo della fotocamera (utilizzato solo per l'alimentazione).
-
Il Canale 3 su PbHub controlla il umidificatore tramite un relè.
-
Il Canale 4 su PbHub controlla il cuscinetto riscaldante tramite un relè.
-
Il Canale 5 su PbHub controlla la luce UVA tramite un relè.
-
Il Canale 1 sul PbHub controlla il ventilatore tramite un relè (opzionale).
Configurazione del software
1. Ambiente software
Sviluppo Ambiente:
Per alcune delle librerie utilizzate dal sensore, vai direttamente a PIO Home -> Librerie -> Registro -> e cerca una parola chiave.
Librerie richieste:
-
M5GFX – Utilizzato per la visualizzazione di grafica e testo, controllando il display M5Stack.
-
M5Unified – Fornisce un'interfaccia API unificata per un controllo più semplice dei dispositivi M5Stack.
-
IRremote – Per ricevere e trasmettere segnali IR per comunicare con altri dispositivi.
-
M5StickCPlus2 – Controlla la scheda M5StickC Plus2, gestendo l'inizializzazione e il funzionamento del dispositivo.
-
Sensirion I2C SCD4x – Per controllare il sensore ambientale SCD40 per leggere temperatura, umidità e livelli di CO2.
-
ArduinoJson – Utilizzato per elaborare e analizzare i dati JSON per caricare i dati dei sensori sulla piattaforma cloud.
-
M5Unit-HUB e M5Unit-PbHub – Per interagire con i moduli PaHub e PbHub, espandere le interfacce I2C e GPIO e collegare dispositivi esterni aggiuntivi.
-
TimerOne – Per controllare gli intervalli di tempo, garantendo una regolare raccolta dei dati dei sensori.
-
PubSubClient – Implementa la comunicazione MQTT per lo scambio di dati con la piattaforma cloud.
-
Adafruit MLX90614 Library – Utilizzato per controllare il sensore di temperatura a infrarossi MLX90614 per leggere la temperatura inferiore della scatola per animali.
2. Struttura del codice
-
Connessione WiFi:Si connette alla rete tramite WiFi, consentendo l'accesso alla piattaforma cloud per l'abbonamento e la pubblicazione dei dati.
-
MQTT Comunicazione:Utilizza la libreria PubSubClient per implementare la comunicazione MQTT, caricando i dati ambientali sulla piattaforma cloud e ricevendo istruzioni da essa.
-
Recupero Dati del Sensore: Ogni dato del sensore viene letto periodicamente e caricato utilizzando un metodo di polling:
-
SCD40: Legge temperatura, umidità e concentrazione di CO2.
-
MLX90614: Legge i dati del sensore di temperatura (temperatura inferiore).
-
Controllo Dispositivo:Controlla i relè per accendere e spegnere i dispositivi, come cuscinetti riscaldanti, umidificatori, luci UVA, ecc. I dispositivi possono essere controllati automaticamente o manualmente impostando la temperatura e l'umidità target.
3. Piattaforma IoT e Caricamento Dati
-
Selezione della Piattaforma: Utilizziamo Alibaba Cloud IoT per caricare dati e gestire dispositivi da remoto.
-
Connessione e Associazione del Dispositivo: Segui il tutorial di configurazione per associare il tuo dispositivo alla piattaforma cloud.
-
Caricamento Dati: I dati del sensore vengono caricati tramite il protocollo MQTT in formato 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("Temperatura obiettivo ricevuta: "); 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("Ricevuto target_humidity: "); Serial.println(target_humidity); } }
4. Callback per ricevere dati dalla piattaforma cloud
// 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("Temperatura obiettivo ricevuta: "); 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("Ricevuto target_humidity: "); Serial.println(target_humidity); } }
IoT Configurazione della Piattaforma
1. Nuvola di Alibaba IoT:
-
Accedi alla piattaforma IoT di Alibaba Cloud, crea un nuovo progetto e configura i nomi dei dispositivi, le chiavi del prodotto, ecc.
-
Recupera l'ID cliente, il nome utente, la password e assicurati che le impostazioni di comunicazione MQTT siano corrette.
2. Controllo app:
-
Crea un prodotto sulla piattaforma IoT di Alibaba Cloud e configura l'interfaccia per il controllo dei dispositivi.
-
Utilizza l'SDK di Alibaba Cloud per sviluppare un'app mobile che consenta il monitoraggio in tempo reale e il controllo remoto dei dispositivi.
Note e Problemi Comuni
1. Inizializzazione del sensore:
-
Il sensore di CO2 SCD40 richiede circa 6 secondi per l'inizializzazione prima che siano disponibili letture accurate.
-
Il sensore MLX90614 richiede che la velocità del bus I2C sia impostata a 100kHz per funzionare correttamente.
2. Conflitti di dispositivo:
-
Assicurati che gli indirizzi I2C per i moduli PaHub e PbHub siano unici per evitare conflitti.
-
Assegna canali diversi per sensori e periferiche su PaHub per evitare interferenze.
3. Debug e Ottimizzazione:
-
Regola la connessione del dispositivo e gli intervalli di caricamento dei dati per evitare caricamenti eccessivi di dati e ridurre il carico sulla piattaforma cloud.
-
Se i dati non vengono ricevuti sulla piattaforma cloud, assicurati che le connessioni dei dispositivi siano stabili e controlla le impostazioni MQTT.
Casi d'uso
1. Ambientale Monitoraggio e Gestione:
2. Controllo Remoto e Regolazioni:
3. Automazione:
4. Monitoraggio degli animali domestici:
5. Utilizzo versatile:
Possibilità Future e Espansione
1. Ambienti per animali domestici acquatici:
2. Funzionalità DIY e personalizzazione:
3. Salute Monitoraggio:
4. Intelligenza Cloud e Automazione:
Conclusione
Lascia un commento
Tutti i commenti del blog vengono controllati prima della pubblicazione