Skip to main content
Version: ACS CC

Mini-sera inteligenta

Sera cu control automat in functie de factorii externi

info

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

Hardware milestone Hardware milestone Hardware milestone

Bill of Materials

DeviceUsagePrice
Raspberry Pi Pico WThe microcontroller35 RON
Header de Pini Tată de 2.54 mm 2 x 25pPini[14,19 RON]
Header de Pini Mamă 3p 2.54 mmPini[5,88 RON]
LED Roșu de 3 mm cu Lentile DifuzeLED[1,95 RON]
LED Verde de 3 mm cu Lentile DifuzeLED[1,95 RON]
Senzor de Temperatura și Umiditate DHT22Senzor pentru temperatura si umiditate[22,99 RON]
Senzor de Proximitate si Lumina Ambientala APDS-9930Senzor de lumina[14,99 RON]
Rezistor 0.25W 220KΩRezistente[1 RON]

Software

LibraryDescriptionUsage
st7789Display driver for ST7789Used for the display for the Pico Explorer Base
embedded-graphics2D graphics libraryUsed for drawing to the display
defmtLogging framework for embedded RustUsed for efficient logging
embassy-executorAsynchronous task executorUsed for async multitasking on embedded
embassy-rpEmbassy support for Raspberry Pi Pico (RP2040)Used for I2C, interrupts and peripherals
embassy-timeTimer utilitiesUsed for delays and timers
embassy-syncAsync synchronization primitivesUsed for mutexes and signals
embedded-hal-asyncAsync traits for HALUsed for async I2C communication
heaplessFixed-capacity data structuresUsed for dynamic strings without heap
static-cellSingle-assignment static memory cellsUsed for static initialization of resources
panic-probePanic handlerUsed for debugging panics
defmt-rttRTT backend for defmtUsed for real-time logging over RTT
core::fmt::WriteCore formatting traitUsed for writing formatted strings
  1. link
  2. link ...