This shows you the differences between two versions of the page.
pm:prj2023:razvans:smart_home_system [2023/05/30 10:47] fabian.filip [Software Design] |
pm:prj2023:razvans:smart_home_system [2023/05/30 13:54] (current) fabian.filip |
||
---|---|---|---|
Line 48: | Line 48: | ||
Codul sursă se află în secțiunea //**Download**//. | Codul sursă se află în secțiunea //**Download**//. | ||
- | In functia de **Setup()**, am realizat conexiunea la internet prin functia **begin** a bibliotecii "Wifi", am pornit serverul **ThingSpeak**, catre care va urma sa trimitem datele de la senzori si pe langa acestea, am configurat toti pinii conectati la placuta, fie ei fiind de **OUTPUT**, fie de **INPUT**, pentru cei din urma folosind si rezistente de PULLUP. | ||
- | Descrierea codului aplicaţiei (firmware): | + | In functia **Setup()**, am realizat conexiunea la internet prin functia **begin** a bibliotecii "Wifi", am pornit serverul **ThingSpeak**, catre care va urma sa trimitem datele de la senzori si pe langa acestea, am configurat toti pinii conectati la placuta, fie ei fiind de **OUTPUT**, fie de **INPUT**, pentru cei din urma folosind si rezistente de PULLUP. |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
+ | In functia **Loop()**, citesc datele de la fiecare senzor, respectiv de temperatura, de umiditate, de detectare a miscarii si de detectare a usii daca este deschisa sau inchisa. Pentru senzorii de temperatura si umiditate, verific daca valorile primite sunt valabile (!= nan), deoarece aceasta bucata de cod ma poate ajuta la debug atunci cand unul din senzori se arde. Pe baza valorilor de temperatura si umiditate, calculez o noua valoare numita **indice de caldura**, ce reprezinta temperatura resimtita si pe baza caruia voi controla ventilatorul. Acesta va porni cand se depaseste o valoare critica setata de utilizator. (avand in vedere conditiile actuale si precizia senzorului DHT11, am setat valoarea critica ca fiind 30 grade Celsius). Pe langa acestea, ventilatorul poate fi comandat si dintr-un buton, conectat la placuta, dar numai in momentul cand nu este depasita temperatura critica. | ||
+ | Tot in functia de loop, am realizat transmiterea datelor catre **ThingSpeak**. In ceea ce priveste temperatura si umiditatea, se face cate o cerere de tip POST, o data la 20 de secunde, iar referitor la senzorii ce asigura securitate usii de intrare, se trimit date mai des, o data la 10 secunde. In cazul in care se detecteaza o miscare, se trimit date despre starea usii, daca este deschisa sau inchisa, iar daca aceasta este deschisa, se aprinde un buton rosu de avertizare. De asemenea, am creat si un buton de avertizare pentru temperaturi ridicate, de data aceasta temepratura critica fiind 28 grade Celsius. (**ATENTIE** - butonul se activeaza pe baza temperaturii de pe server, iar ventilatorul pe baza indicelui de caldura sau temperatura resimtita din camera). Trimiterea catre server a fost destul de usoara, deoarece m-am folosit de functiile **setField** si **writeFields** din biblioteca **ThingSpeak**. | ||
</note> | </note> | ||
Line 58: | Line 60: | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | {{:pm:prj2023:razvans:hardware.jpg?linkonly|}} |
+ | {{ :pm:prj2023:razvans:hardware.jpg?nolink&500 |}} | ||
+ | |||
+ | {{:pm:prj2023:razvans:temperature_chart.png?linkonly|}} | ||
+ | {{:pm:prj2023:razvans:temperature_chart.png?nolink&500|}} | ||
+ | |||
+ | {{:pm:prj2023:razvans:humidity_chart.png?linkonly|}} | ||
+ | {{:pm:prj2023:razvans:humidity_chart.png?nolink&500|}} | ||
+ | |||
+ | {{:pm:prj2023:razvans:temperature_light.png?linkonly|}} | ||
+ | {{:pm:prj2023:razvans:temperature_light.png?nolink&600|}} | ||
+ | |||
+ | {{:pm:prj2023:razvans:security_charts.png?linkonly|}} | ||
+ | {{:pm:prj2023:razvans:security_charts.png?nolink&600|}} | ||
+ | |||
+ | {{:pm:prj2023:razvans:security_alert.png?linkonly|}} | ||
+ | {{:pm:prj2023:razvans:security_alert.png?nolink&600|}} | ||
</note> | </note> | ||
Line 67: | Line 85: | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | <note> |
- | 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**. | + | {{:pm:prj2023:razvans:smart_home_system_filip_fabian.zip|}} |
</note> | </note> | ||
Line 88: | Line 105: | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | **https://randomnerdtutorials.com/** |
+ | * cel mai utilizat | ||
+ | |||
+ | https://www.instructables.com/How-to-Use-a-Magnetic-Door-Switch-Sensor-With-Ardu/ | ||
+ | |||
+ | https://lastminuteengineers.com/pir-sensor-arduino-tutorial/ | ||
+ | |||
+ | https://www.onetransistor.eu/2018/01/compute-heat-index-arduino-dht.html | ||
+ | |||
+ | https://www.arduinolibraries.info/libraries/thing-speak | ||
+ | |||
+ | https://github.com/arduino-libraries/WiFi | ||
+ | |||
</note> | </note> | ||
<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> |