BrewMate este un asistent digital portabil creat special pentru pasionații de cafea care explorează cafenelele orașului. Proiectul îmbină plăcerea descoperirii cu tehnologia embedded, oferind o experiență personalizată de jurnalizare și recomandare.
Funcționalități cheie:
• Înregistrează automat cafenelele vizitate și tipurile de cafea consumate • Salvează datele pe un card SD pentru consultare ulterioară • Oferă recomandări bazate pe istoricul tău de consum (OpenAI) • Interfață prietenoasă pentru navigare facilă • (Extra) Funcție vocală pentru sugestii dinamice de localuri sau sortimente de cafea
BrewMate este construit ca un sistem embedded interactiv, gândit să funcționeze autonom și să ofere o experiență fluidă utilizatorilor. Dispozitivul combină module hardware și software pentru a înregistra, organiza și recomanda preferințe legate de cafea.
Utilizatorii pot înregistra automat cafenelele vizitate și tipurile de cafea consumate, aceste date fiind salvate pe un card SD pentru consultare ulterioară. Fiecare înregistrare conține numele cafenelei și tipul de cafea comandat.
Înainte de o nouă ieșire, utilizatorii pot vizualiza aceste date direct de pe display, unde interfața le va afișa sugestii filtrate pe baza istoricului.
BrewMate integrează și o funcție vocală inteligentă care utilizează API-ul OpenAI pentru generarea de recomandări. Aceasta analizează preferințele înregistrate și oferă sugestii dinamice privind cafenele noi sau sortimente potrivite gusturilor utilizatorului.
Datele sunt gestionate într-un format structurat și pot fi exportate sau prelucrate în aplicații externe în versiuni viitoare. Sistemul este modular și permite adăugarea de noi funcționalități (ex. analiză statistică, integrare cu aplicații mobile).
Componente:
Interfețe hardware folosite:
Conectivitate:
Modul | Semnal | ESP32 Pin |
---|---|---|
INMP441 | I2S SCK | GPIO33 |
I2S WS (LRCL) | GPIO25 | |
I2S SD | GPIO32 | |
VCC | 3.3V | |
GND | GND |
Modul | Semnal | ESP32 Pin |
---|---|---|
SD Card | CS | GPIO2 |
MOSI | GPIO13 | |
MISO | GPIO12 | |
SCK | GPIO14 | |
VCC | 3.3V | |
GND | GND |
Modul | Semnal | ESP32 Pin |
---|---|---|
TFT Display | CS | GPIO5 |
MOSI | GPIO23 | |
SCK | GPIO18 | |
DC | GPIO21 | |
RESET | GPIO22 | |
BL (Backlight) | GPIO4 | |
VCC | 3.3V/5V | |
GND | GND |
Mediu de dezvoltare:
Biblioteci utilizate:
Implementare:
def add_entry(self, shop_name, coffee_type): """Add coffee entry and save to SD card""" try: print(f"Adding coffee entry: {shop_name} - {coffee_type}") # Add to memory first timestamp = time.ticks_ms() entry = { 'timestamp': timestamp, 'shop': shop_name, 'coffee': coffee_type } self.entries.append(entry) # Keep only recent entries to fit in one sector if len(self.entries) > self.max_entries_per_sector: self.entries = self.entries[-self.max_entries_per_sector:] # Save to SD card success = self._save_entries() if success: print(f"✅ Coffee entry saved to SD card!") else: print(f"⚠️ Entry saved to memory but SD write failed") return True # Always return True since we have it in memory except Exception as e: print(f"❌ Error adding entry: {e}") return False
def connect_wifi(): """Connect to WiFi""" print("Connecting to WiFi...") wlan = network.WLAN(network.STA_IF) wlan.active(True) if not wlan.isconnected(): print(f"Connecting to {WIFI_SSID}...") wlan.connect(WIFI_SSID, WIFI_PASSWORD) timeout = 15 while not wlan.isconnected() and timeout > 0: print(f"Waiting... {timeout}s") time.sleep(1) timeout -= 1 if wlan.isconnected(): print("WiFi connected!") print(f"IP: {wlan.ifconfig()[0]}") return True else: print("WiFi connection failed!") return False else: print("Already connected") return True
BrewMate demonstrează că un sistem embedded poate oferi o experiență interactivă și personalizată, integrând funcții moderne de AI într-o interfață minimalistă. Dispozitivul are potențial real pentru dezvoltare într-un produs comercial pentru pasionații de cafea și entuziaști tech deopotrivă.
Software-ul este disponibil aici: https://github.com/alexandrutrifu/BrewMatePM
Resurse Hardware: