This shows you the differences between two versions of the page.
pm:prj2024:vstoica:cristina.grosu [2024/05/18 14:21] cristina.grosu [Hardware Design] |
pm:prj2024:vstoica:cristina.grosu [2024/05/27 13:35] (current) cristina.grosu |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Sistem Smart Home pentru climatizare ====== | ====== Sistem Smart Home pentru climatizare ====== | ||
+ | |||
+ | Student: Grosu Cristina-Geanina | ||
+ | |||
+ | Grupa: 331CC | ||
+ | |||
===== Introducere ===== | ===== Introducere ===== | ||
Line 48: | Line 53: | ||
**Schema electrica** | **Schema electrica** | ||
- | {{:pm:prj2024:vstoica:schematic_electric_climatizare_rasp_pi.jpg?800|}} | + | {{:pm:prj2024:vstoica:grosu_cristina_sper_final_electric.png?800|}} |
**Descrierea sistemului** | **Descrierea sistemului** | ||
Line 106: | Line 111: | ||
- | <note tip> | + | **Mediu de Dezvoltare** |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | |
+ | |||
+ | Pentru dezvoltarea codului aplicației a fost utilizat Thonny IDE, un mediu de dezvoltare integrat popular pentru programarea în Python, dedicat în special pentru microcontrolere. | ||
+ | |||
+ | **Biblioteci folosite** | ||
+ | |||
+ | |||
+ | În cadrul acestui proiect, au fost utilizate următoarele biblioteci externe: | ||
+ | |||
+ | * __[[https://github.com/cristinagnn/Smart-Home-System-Using-Raspberry-Pi-Pico-W/tree/main/umqtt|umqtt]]__: O librărie simplificată pentru protocolul MQTT, utilizată pentru comunicarea cu broker-ul MQTT Mosquitto. | ||
+ | * __[[https://github.com/cristinagnn/Smart-Home-System-Using-Raspberry-Pi-Pico-W/blob/main/mfrc522.py|MFRC522]]__: O librărie pentru interfațarea cu modulul RFID RC522, utilizată pentru citirea cardurilor RFID. | ||
+ | * __[[https://github.com/cristinagnn/Smart-Home-System-Using-Raspberry-Pi-Pico-W/tree/main/lib|picozero]]__: O librărie ușor de folosit pentru controlul componentelor GPIO. | ||
+ | |||
+ | |||
+ | **Algoritmi și Structuri Implementate** | ||
+ | |||
+ | 1. **[[https://github.com/cristinagnn/Smart-Home-System-Using-Raspberry-Pi-Pico-W/blob/main/master_board.py|master_board.py]]** | ||
+ | |||
+ | |||
+ | Codul aplicației este structurat pentru a îndeplini următoarele funcționalități principale: | ||
+ | |||
+ | **Conectarea la rețeaua Wi-Fi:** Realizată prin intermediul funcției connect_to_wifi(), care utilizează configurația specificată într-un fișier JSON. | ||
+ | |||
+ | **Comunicarea MQTT**: Configurarea și gestionarea clientului MQTT pentru a primi și trimite mesaje către și de la celelalte plăcuțe Raspberry Pi Pico W (centrala și aerul condiționat). | ||
+ | |||
+ | **Determinarea anotimpului curent**: Implementată prin funcția get_current_season(), care utilizează data curentă pentru a stabili dacă este iarnă sau vară. | ||
+ | |||
+ | **Gestionarea utilizatorilor**: Funcții pentru încărcarea, salvarea, adăugarea și ștergerea utilizatorilor și preferințelor lor de temperatură. | ||
+ | |||
+ | **Citirea cardurilor RFID**: Funcția scan_rfid() care utilizează biblioteca MFRC522 pentru a citi și identifica utilizatorii. | ||
+ | |||
+ | **Gestionarea temperaturii**: Funcția check_temperature() pentru a verifica și ajusta temperatura ambientală în funcție de preferințele utilizatorilor sau setările manuale. | ||
+ | |||
+ | **Gestionarea modurilor de operare**: Funcția button_handler() care permite comutarea între modurile automat și manual prin intermediul unui buton. | ||
+ | |||
+ | |||
+ | 2. **[[https://github.com/cristinagnn/Smart-Home-System-Using-Raspberry-Pi-Pico-W/blob/main/air_conditioner_board.py|air_conditioner_board.py | ||
+ | ]]** | ||
+ | |||
+ | Codul aplicației este structurat pentru a îndeplini următoarele funcționalități principale: | ||
+ | |||
+ | **Conectarea la rețeaua Wi-Fi**: Realizată prin intermediul funcției connect_to_wifi(), care utilizează configurația specificată într-un fișier JSON. | ||
+ | |||
+ | **Comunicarea MQTT**: Configurarea și gestionarea clientului MQTT pentru a primi și trimite mesaje către și de la plăcuța master_board. | ||
+ | |||
+ | **Citirea și filtrarea valorii de la potențiometru**: Implementată prin funcțiile read_potentiometer() și map_value() pentru a citi și scala valoarea de la potențiometru în intervalul de temperaturi 15°C - 40°C. | ||
+ | |||
+ | **Controlul LED-urilor**: Funcții pentru aprinderea și stingerea LED-urilor în funcție de comenzile primite pentru a indica starea de funcționare (cooling/idle). | ||
+ | |||
+ | **Transmiterea temperaturii curente**: Funcția principală care trimite periodic temperatura curentă citită de la potențiometru către plăcuța Master prin MQTT. | ||
+ | |||
+ | |||
+ | 3. **[[https://github.com/cristinagnn/Smart-Home-System-Using-Raspberry-Pi-Pico-W/blob/main/heating_system_board.py|heating_system_board.py]]** | ||
+ | |||
+ | |||
+ | Codul aplicației este structurat pentru a îndeplini următoarele funcționalități principale: | ||
+ | |||
+ | **Conectarea la rețeaua Wi-Fi**: Realizată prin intermediul funcției connect_to_wifi(), care utilizează configurația specificată într-un fișier JSON. | ||
+ | |||
+ | **Comunicarea MQTT**: Configurarea și gestionarea clientului MQTT pentru a primi și trimite mesaje către și de la plăcuța Raspberry Pi Pico W Master. | ||
+ | |||
+ | **Citirea valorii de la potențiometru**: Implementată prin funcția read_potentiometer() pentru a citi și scala valoarea de la potențiometru în intervalul de temperaturi 15°C - 40°C. | ||
+ | |||
+ | **Controlul LED-urilor**: Funcții pentru aprinderea și stingerea LED-urilor în funcție de comenzile primite pentru a indica starea de funcționare (heating/idle). | ||
+ | |||
+ | **Transmiterea temperaturii manuale**: Funcția publish_manual_temperature() trimite temperatura setată manual de la potențiometru către plăcuța Master prin MQTT. | ||
+ | |||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Proiectul a demonstrat implementarea unui sistem Smart-Home integrat, constând din trei plăcuțe Raspberry Pi Pico W conectate wireless, care comunică eficient între ele utilizând protocolul MQTT prin broker-ul Mosquitto. Am reușit să realizez o soluție funcțională pentru controlul automat și manual al sistemelor de încălzire și răcire, asigurând ajustarea temperaturii în locuință în funcție de prezența utilizatorilor și preferințele acestora. Sistemul s-a dovedit responsiv, reușind să gestioneze comenzile și să transmită datele necesare în timp real. |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
+ | <html> | ||
+ | <iframe width="880" height="495" src="https://www.youtube.com/embed/PP3-QLz_B80" title="Sistem Smart Home pentru climatizare, Grosu Cristina-Geanina, 331CC" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> | ||
+ | </html> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Proiectul a realizat cu succes integrarea unui sistem Smart-Home pentru controlul automat și manual al sistemelor de încălzire și răcire, demonstrând fiabilitatea comunicării wireless între cele trei plăcuțe Raspberry Pi Pico W. Utilizând protocolul MQTT prin broker-ul Mosquitto, sistemul a dovedit capacitatea de a gestiona eficient controlul temperaturii în funcție de prezența și preferințele utilizatorilor. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | ||
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | ||
- | |||
- | 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**. | ||
- | </note> | ||
+ | {{:pm:prj2024:vstoica:grosu_cristina_final_smart_home_system.zip|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
**7.03.2024:** Comandat piese. | **7.03.2024:** Comandat piese. | ||
**29.04.2024:** Lipit pini headers pentru componente. | **29.04.2024:** Lipit pini headers pentru componente. | ||
- | |||
- | **2.05.2024:** Decis sa folosesc un Arduino pentru citirea de la modulul de RFID RC522 si sa transmit datele ulterior la Raspberry Pi Pico W. | ||
- | |||
- | **3.05.2024:** Comandat convertor logic pentru comunicare IIC intre Arduino si Pico. | ||
**4.05.2024:** Scris documentatie wiki pentru partea de hardware. | **4.05.2024:** Scris documentatie wiki pentru partea de hardware. | ||
- | |||
- | **16.05.2024:** Conectat RFID direct la Raspberry Pi Pico W Master | ||
**17.05.2024:** Conectat toate componentele corespunzator si implementat logica in cod pentru citire card, scanare si adaugare useri intr-un JSON file, controlat potentiometru pentru temperatura, comutat prin buton cu intreruperi intre mod automat si mod manual. | **17.05.2024:** Conectat toate componentele corespunzator si implementat logica in cod pentru citire card, scanare si adaugare useri intr-un JSON file, controlat potentiometru pentru temperatura, comutat prin buton cu intreruperi intre mod automat si mod manual. | ||
+ | **18.05.2024:** Adus documentatia la un nivel mai satisfacator. | ||
+ | |||
+ | **24.05.2024:** Implementat protocolul mosquitto pentru comunicatia wireless. | ||
+ | |||
+ | **26.05.2024:** Finalizat documentatia si codul cu toate functionalitatile necesare. | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
Line 158: | Line 220: | ||
[3] https://www.raspberrypi.com/documentation/microcontrollers/images/picow-pinout.svg <- most important | [3] https://www.raspberrypi.com/documentation/microcontrollers/images/picow-pinout.svg <- most important | ||
+ | [4] https://mosquitto.org/ | ||
+ | |||
+ | [5] https://www.youtube.com/watch?v=ybCMXqsQyDw&ab_channel=CoreElectronics | ||
+ | |||
+ | [6] https://www.youtube.com/watch?v=jw9zTjKqoUA&ab_channel=Shilleh | ||
+ | [7] https://randomnerdtutorials.com/raspberry-pi-pico-w-mqtt-micropython/ | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||