Mini-sera inteligenta
Sera cu control automat in functie de factorii externi
Author: Ionescu Ana-Corina 334CC
GitHub Project Link: link_to_github
Description
Acest proiect urmareste realizarea unei mini-sere inteligente care monitorizeaza conditiile de mediu si reactioneaza automat pentru a proteja plantele. Sistemul citeste temperatura, umiditatea si luminozitatea, afiseaza valorile pe un ecran LCD si semnaleaza situatiile critice prin LED-uri si buzzer. In plus, un ventilator este folosit.
Motivation
Am ales sa dezvolt o mini-sera inteligenta deoarece imbina mai multe domenii de interes personal: tehnologia embedded, automatizarea si grija pentru plante. Acest proiect ofera o oportunitate practica de a lucra cu senzori, afisaj LCD, controlul GPIO si componente de alertare, contribuind la dezvoltarea unei solutii utile si intuitive pentru monitorizarea mediului. In plus, sistemul de ventilatie adauga un plus de relevanta practica si personala acestui proiect
Architecture
Sistemul este compus din urmatoarele module arhitecturale:
-
Modul de monitorizare a mediului Format din senzorul de temperatura si umiditate (DHT11) si senzorul de lumina (LDR), care masoara conditiile de mediu si trimit valorile catre celelalte module.
-
Modul de afisare Preia informatiile de la modulul de monitorizare si le afiseaza pe un ecran cu interfata I2C.
-
Modul de alerta Verifica daca valorile senzorilor depasesc pragurile setate si activeaza componentele de avertizare:
-
In caz de situatie critica: se aprinde LED-ul rosu si se activeaza buzzer-ul.
-
In caz de valori normale: se aprinde LED-ul verde.
-
-
Modul de ventilatie automata Daca temperatura depaseste un anumit prag, se porneste ventilatia
-
Modul de control principal – Raspberry Pi Coordoneaza toate modulele, citeste datele de la senzori, actualizeaza afisajul, genereaza alertele si controleaza ventilatia. Logica este implementata in Rust, folosind bibliotecile:
-
rppal – pentru controlul pinilor GPIO si PWM
-
dht-sensor – pentru senzorul de temperatura/umiditate
-
hd44780-driver – pentru afisajul LCD
-
tokio – pentru gestionarea asincrona a task-urilor
-
Log
Week 5 - 11 May
Finalizarea cumpararii componentelor.
Week 12 - 18 May
Aranjarea componentelor pe placuta si testarea functionalitatii lor.
Week 19 - 25 May
Finalizarea codului pt alerta.
Hardware
- Raspberry Pi RP2350 (Pico 2W)
- Senzor de lumina: APDS-9930 (I2C, 0x39)
- Display OLED SSD1306 (I2C, 0x3C, 128x64 px)
- GPIO 0 – SDA, GPIO 1 – SCL
- Conexiuni optionale: LED, buzzer, etc. (pentru feedback de alerta)
Schematics
Bill of Materials
Device | Usage | Price |
---|---|---|
Raspberry Pi Pico W | The microcontroller | 35 RON |
Header de Pini Tată de 2.54 mm 2 x 25p | Pini | [14,19 RON] |
Header de Pini Mamă 3p 2.54 mm | Pini | [5,88 RON] |
LED Roșu de 3 mm cu Lentile Difuze | LED | [1,95 RON] |
LED Verde de 3 mm cu Lentile Difuze | LED | [1,95 RON] |
Senzor de Temperatura și Umiditate DHT22 | Senzor pentru temperatura si umiditate | [22,99 RON] |
Senzor de Proximitate si Lumina Ambientala APDS-9930 | Senzor de lumina | [14,99 RON] |
Rezistor 0.25W 220KΩ | Rezistente | [1 RON] |
Software
Library | Description | Usage |
---|---|---|
st7789 | Display driver for ST7789 | Used for the display for the Pico Explorer Base |
embedded-graphics | 2D graphics library | Used for drawing to the display |
defmt | Logging framework for embedded Rust | Used for efficient logging |
embassy-executor | Asynchronous task executor | Used for async multitasking on embedded |
embassy-rp | Embassy support for Raspberry Pi Pico (RP2040) | Used for I2C, interrupts and peripherals |
embassy-time | Timer utilities | Used for delays and timers |
embassy-sync | Async synchronization primitives | Used for mutexes and signals |
embedded-hal-async | Async traits for HAL | Used for async I2C communication |
heapless | Fixed-capacity data structures | Used for dynamic strings without heap |
static-cell | Single-assignment static memory cells | Used for static initialization of resources |
panic-probe | Panic handler | Used for debugging panics |
defmt-rtt | RTT backend for defmt | Used for real-time logging over RTT |
core::fmt::Write | Core formatting trait | Used for writing formatted strings |