Server Room Guardian este un sistem embedded de monitorizare și control pentru infrastructura personală de acasă, construit în jurul unui microcontroller ATmega328P-XMINI și al unui modul WiFi ESP8266 pe placă NodeMCU V2.
Proiectul monitorizează periodic temperatura și umiditatea din carcasa/server rack-ul în care se află Raspberry Pi-ul și trimite aceste date către un VPS personal. În același timp, sistemul verifică dacă pe server există comenzi noi, cum ar fi pornirea sau oprirea Raspberry Pi-ului.
Feedback-ul local este oferit prin LED-uri, astfel încât starea sistemului să fie vizibilă imediat:
Ideea proiectului a pornit de la nevoia de a supraveghea de la distanță infrastructura personală de acasă, în special un Raspberry Pi folosit ca server. În utilizarea zilnică, pot apărea situații în care temperatura din carcasă crește prea mult, conexiunea se pierde sau Raspberry Pi-ul trebuie repornit fără acces fizic direct.
Sistemul este util deoarece permite:
Sistemul este împărțit în două componente principale: partea hardware locală, aflată lângă Raspberry Pi, și partea software/server, aflată pe un VPS personal.
Partea locală este formată din microcontrollerul ATmega328P-XMINI, modulul ESP8266 NodeMCU V2, senzorul de temperatură și umiditate, LED-urile de stare și circuitul de comandă pentru alimentarea Raspberry Pi-ului. Microcontrollerul citește periodic valorile de temperatură și umiditate, interpretează starea sistemului și comandă LED-urile. Pentru conectarea la Internet, acesta comunică prin USART cu modulul ESP8266.
Modulul ESP8266 are rolul de interfață WiFi. Acesta transmite datele către VPS și verifică dacă există comenzi noi. Comenzile primite de la server sunt trimise către ATmega328P, care decide dacă trebuie pornit sau oprit Raspberry Pi-ul.
+-----------------------------+
| VPS Personal |
|-----------------------------|
| - primește temperatură |
| - primește umiditate |
| - salvează/loghează date |
| - expune comenzi remote |
+--------------^--------------+
|
| WiFi / HTTP
|
+--------------v--------------+
| ESP8266 NodeMCU V2 |
|-----------------------------|
| - conexiune WiFi |
| - comunicare cu VPS |
| - trimite date măsurate |
| - primește comenzi |
+--------------^--------------+
|
| USART
|
+--------------v--------------+
| ATmega328P-XMINI |
|-----------------------------|
| - logica principală |
| - timere pentru citiri |
| - interpretare comenzi |
| - comandă LED-uri |
| - comandă alimentare RPi |
+-------^-----------^---------+
| |
| |
| +-----------------------------+
| |
+-------v--------+ +---------v----------+
| Senzor temp. | | Circuit control |
| și umiditate | | alimentare RPi |
| AM2302/DHT22 | | MOSFET/Optocuplor |
+----------------+ +---------+----------+
|
|
+----------v----------+
| Raspberry Pi |
|---------------------|
| - server personal |
| - pornire/oprire |
+---------------------+
Fluxul principal de funcționare este următorul:
Componentele hardware folosite în proiect sunt:
| Nr. | Componentă | Rol în proiect |
|---|---|---|
| 1 | ATmega328P-XMINI | Microcontroller principal; controlează logica sistemului, citește senzorii și comandă ieșirile |
| 2 | ESP8266 NodeMCU V2 | Modul WiFi folosit pentru comunicarea cu VPS-ul personal |
| 3 | Senzor temperatură și umiditate AM2302 | Măsoară temperatura și umiditatea din carcasa serverului |
| 4 | LED-uri | Feedback vizual pentru starea Raspberry Pi-ului și temperatura sistemului |
| 5 | Rezistențe 220Ω | Limitarea curentului |
| 6 | MOSFET sau optocuplor | Controlul fizic al alimentării/pornirii/opririi Raspberry Pi-ului |
| 7 | Breadboard | |
| 8 | Fire jumper | |
| 9 | Sursă de alimentare (3.3V) | |
| 10 | Raspberry Pi |
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.