Descrierea codului aplicaţiei (firmware):
Mediu de dezvoltare: Arduino IDE 2
Librării:
HX711.h: Pentru interfatarea cu senzorul de greutate HX711.
WiFi.h: Pentru conectivitatea WiFi a ESP32.
Adafruit_MQTT.h și Adafruit_MQTT_Client.h: Pentru conexiunea MQTT cu Adafruit IO.
Algoritmi și structuri implementate
Conexiunea la WiFi: În setup(), ESP32 se conectează la rețeaua WiFi folosind credențialele furnizate.
Configurarea MQTT: Este configurată conexiunea MQTT cu Adafruit IO pentru a primi comenzi de la platformă.
Configurarea senzorului de greutate: Senzorul HX711 este inițializat și calibrat pentru a măsura corect greutatea.
Controlul motorului: Motorul este controlat folosind un driver H-Bridge, iar viteza acestuia este controlată prin PWM (Pulse Width Modulation). Motorul poate funcționa la viteză normală sau redusă pentru ajustări fine.
Algoritm de hrănire: În funcție de comanda primită (normal sau overweight), motorul va funcționa până când se atinge greutatea țintă specificată. Greutatea este măsurată continuu și motorul se ajustează între viteză normală și viteză redusă pentru a atinge cât mai precis greutatea țintă.
Hrănire automată: Odată ce comanda este dată, pet feeder-ul continuă să hrănească animalul o dată la 8 ore până când se primește o nouă comandă.
Surse și funcții implementate
Codul firmware este structurat în jurul a trei funcții principale. Funcția setup() inițializează motorul și senzorul de greutate, realizează conexiunea la WiFi și la serviciul MQTT Adafruit IO. Funcția loop() menține conexiunea MQTT activă, citește comenzile primite și controlează motorul pentru hrănirea animalului în funcție de modul selectat (normal sau overweight). Funcția MQTT_connect() gestionează procesul de conectare și reconectare la Adafruit IO pentru a asigura o comunicare continuă.