This is an old revision of the document!
Nume: Floarea Gabriela-Estera, Grupă: 332CB
Smart Seed Planter este un sistem embedded automatizat care simulează integral procesul de plantare și îngrijire inițială a unei plante — de la pregătirea solului până la udarea automată — fără nicio intervenție umană după pornire.
Ideea proiectului a pornit de la dorința de a automatiza un proces agricol de bază folosind exclusiv componente electronice accesibile și un microcontroller Arduino UNO. Sistemul execută o secvență completă de operații: afânarea solului cu o lopățică acționată de servomotor, citirea umidității prin senzor analogic, luarea unei decizii automate despre oportunitatea plantării, eliberarea precisă a unei semințe printr-o clapetă mecanică, acoperirea semințelor cu pământ și udarea zonei plantate prin intermediul unei pompe controlate prin MOSFET.
Proiectul este util din mai multe perspective:
Sistemul este structurat ca o mașină de stări finite (FSM) cu mai multe stări, coordonată de Arduino UNO. Utilizatorul apasă butonul de start, după care sistemul execută automat întreaga secvență: afânare sol, citire umiditate, decizie, plantare, acoperire, udare, finalizare. Dacă umiditatea nu este în intervalul optim (400–700), procesul este întrerupt și utilizatorul este notificat prin LCD si revine apoi in starea IDLE.
Arduino UNO coordonează patru module principale. Modulul de detecție folosește un senzor rezistiv de umiditate conectat pe A0, cu media a 5 citiri consecutive pentru eliminarea zgomotului. Modulul mecanic include două servomotoare SG90 alimentate din MB102: Servo 1 acționează lopățica pentru afânare și acoperire (D9), iar Servo 2 controlează clapeta de eliberare a semințelor (D10). Modulul de irigație controlează pompa de apă 5V prin modulul dual MOSFET (D6), necesar deoarece pompa depășește curentul maxim al unui pin Arduino. Modulul de interfață afișează starea curentă și valoarea umidității pe LCD-ul 16×2 cu modul I2C (A4/A5).
Alimentarea este duală: laptopul alimentează Arduino prin USB Type-C, iar un power bank de 5V/2A alimentează servo-urile și pompa prin modulul MB102, cu GND comun între cele două surse.
Listă de piese:
| Componentă | Cantitate | Rol în sistem |
|---|---|---|
| Arduino UNO R3, ATmega328P, CH340G, Type-C | 1x | Microcontroller principal, FSM |
| Servomotor SG90 (0°–180°) | 2x | Lopățică (D9) + Clapetă semințe (D10) |
| Condensator electrolitic 470µF 16V | 2x | Stabilizare alimentare per servo |
| Condensator electrolitic 1000µF 16V | 1x | Stabilizare șină principală 5V |
| Senzor umiditate sol cu modul | 1x | Citire umiditate analogică (A0) |
| Pompă apă 5V | 1x | Udare automată sol |
| Furtun silicon ~40cm | 1x | Pompă → sol |
| Modul dual MOSFET 15A 400W | 1x | Control pompă din Arduino (D6) |
| Diodă protecție 1N4007 | 1x | Protecție curent invers pompă |
| Buton tactil 6x6x5mm 4 pini | 1x | Start secvență (D2) |
| Rezistență 10kΩ 0.25W | 2x | Pull-down buton |
| Rezistență 220Ω 0.25W | 10x | Limitare curent LED-uri |
| Ecran LCD 16×2 + modul I2C | 1x | Afișare stare + umiditate (A4, A5) |
| Power bank 5V / 2A+ | 1x | Alimentare servo-uri + pompă |
| Modul alimentare breadboard MB102 | 1x | Distribuie 5V din power bank |
| Breadboard 830 puncte | 1x | Principal |
| Breadboard 400 puncte | 1x | Pompă + MOSFET |
| Fire jumper M-M / M-F / lungi M-F | ~70x total | Conexiuni între componente |
Sistemul este construit în jurul plăcii Arduino UNO, care coordonează toate componentele hardware. Componentele de intrare sunt senzorul de umiditate și butonul de start, iar componentele de ieșire sunt cele două servomotoare, LCD-ul și pompa de apă controlată prin MOSFET.
LCD-ul este conectat prin interfața I2C, folosind pinii A4 și A5 ai plăcii Arduino UNO. Senzorul de umiditate este conectat pe pinul analogic A0, deoarece oferă o valoare variabilă în funcție de umiditatea solului. Butonul de start este conectat pe pinul digital D2 și folosește rezistența internă de pull-up a microcontrollerului.
Cele două servomotoare sunt conectate pe pinii D9 și D10, deoarece aceștia pot genera semnale PWM necesare controlului poziției. Pompa de apă nu este conectată direct la Arduino, ci este controlată printr-un modul MOSFET conectat pe pinul D6.
Alimentarea este separată: Arduino UNO este alimentat prin USB, iar servo-urile și pompa sunt alimentate prin modulul MB102. În prezent, MB102 este alimentat cu un adaptor de 9V conectat la priză. În varianta finală, adaptorul va fi înlocuit cu un suport de 6 baterii AA, care furnizează tot aproximativ 9V. Toate componentele au GND comun.
Pinii au fost aleși în funcție de rolul fiecărei componente și de facilitățile oferite de Arduino UNO.
Pinii A4 și A5 sunt utilizați pentru LCD deoarece pe Arduino UNO aceștia sunt pinii dedicați comunicației I2C: A4 pentru SDA și A5 pentru SCL. Astfel, LCD-ul ocupă doar doi pini de semnal.
Pinul A0 este folosit pentru senzorul de umiditate deoarece acesta oferă o ieșire analogică. Valoarea citită este utilizată pentru a determina dacă solul are umiditatea potrivită pentru plantare.
Pinul D2 este folosit pentru butonul de start deoarece este un pin digital simplu, potrivit pentru citirea unei apăsări. Butonul este conectat între D2 și GND, iar în cod se folosește INPUT_PULLUP, deci nu este necesară o rezistență externă.
Pinii D9 și D10 sunt folosiți pentru servomotoare, deoarece permit controlul precis al poziției prin semnale PWM. Un servomotor controlează lopățica pentru afânare și acoperire, iar celălalt controlează clapeta pentru eliberarea seminței.
Pinul D6 este folosit pentru controlul modulului MOSFET care comandă pompa. Pompa nu este alimentată direct din Arduino, deoarece consumă mai mult curent decât poate furniza un pin digital.
| Componentă | Pin componentă | Pin Arduino / Alimentare | Rol |
|---|---|---|---|
| LCD I2C | SDA | A4 | Linie de date I2C |
| LCD I2C | SCL | A5 | Linie de ceas I2C |
| LCD I2C | VCC | 5V Arduino | Alimentare LCD |
| LCD I2C | GND | GND | Masă comună |
| Senzor umiditate | AOUT | A0 | Citire analogică umiditate |
| Senzor umiditate | VCC | 5V Arduino | Alimentare senzor |
| Senzor umiditate | GND | GND | Masă comună |
| Buton START | pin 1 | D2 | Pornire secvență |
| Buton START | pin 2 | GND | INPUT_PULLUP intern |
| Servo lopățică | semnal | D9 | Control poziție servo |
| Servo lopățică | VCC | 5V_MB102 | Alimentare externă |
| Servo lopățică | GND | GND | Masă comună |
| Servo clapetă | semnal | D10 | Control clapetă semințe |
| Servo clapetă | VCC | 5V_MB102 | Alimentare externă |
| Servo clapetă | GND | GND | Masă comună |
| MOSFET | TRIG/PWM | D6 | Control pompă |
| MOSFET | VIN+ | 5V_MB102 | Alimentare pompă |
| MOSFET | VIN− | GND_MB102 | Masă alimentare pompă |
| Pompă | + | VOUT+ MOSFET | Plus pompă |
| Pompă | − | VOUT− MOSFET | Minus pompă |
| Diodă 1N4007 | catod, capăt cu bandă | VOUT+ | Protecție pompă |
| Diodă 1N4007 | anod, capăt fără bandă | VOUT− | Protecție pompă |
| Condensatoare | + | 5V_MB102 | Stabilizare alimentare |
| Condensatoare | − | GND_MB102 | Stabilizare alimentare |
Schema electrică:
Schema electrică realizată în EasyEDA prezintă interconectarea completă a componentelor folosite în proiect. Arduino UNO se află în centrul sistemului și trimite sau primește semnale de la fiecare modul.
LCD-ul este conectat prin I2C la pinii A4 și A5, ceea ce reduce numărul de conexiuni necesare. Senzorul de umiditate este conectat la pinul A0, iar valoarea analogică citită este folosită pentru decizia de continuare sau oprire a procesului de plantare.
Butonul de start este conectat între D2 și GND. Deoarece în cod se folosește INPUT_PULLUP, starea normală a pinului este HIGH, iar la apăsare devine LOW. Astfel, schema nu mai are nevoie de rezistență externă pentru buton.
Servomotoarele sunt controlate doar prin firele de semnal conectate la D9 și D10. Alimentarea lor este făcută separat, prin MB102, pentru a evita resetarea plăcii Arduino din cauza consumului mare de curent.
Pompa de apă este controlată prin modulul MOSFET. Arduino trimite semnalul de comandă pe D6, iar MOSFET-ul permite alimentarea pompei din sursa externă. Astfel, Arduino nu furnizează direct curentul necesar pompei, ci doar controlează pornirea și oprirea acesteia.
Dioda 1N4007 este montată paralel pe pompă, cu catodul la VOUT+ și anodul la VOUT−. Aceasta protejează circuitul împotriva tensiunilor inverse generate la oprirea motorului pompei.
Condensatoarele electrolitice sunt conectate între 5V_MB102 și GND_MB102. Acestea ajută la stabilizarea tensiunii și reduc fluctuațiile cauzate de pornirea pompei sau de mișcarea servomotoarelor.
Toate modulele au masă comună. Acest lucru este important deoarece Arduino, MOSFET-ul, senzorii și actuatoarele trebuie să aibă aceeași referință electrică pentru ca semnalele de control să fie interpretate corect.