This shows you the differences between two versions of the page.
pm:prj2022:ndrogeanu:simularebarajautomat [2022/05/29 21:03] andra.bordincel [Hardware Design] |
pm:prj2022:ndrogeanu:simularebarajautomat [2022/06/02 17:24] (current) andra.bordincel [Download] |
||
---|---|---|---|
Line 27: | Line 27: | ||
Daca totusi butonul nu este apasat in timp util, modulul de WI-FI va trimite catre un device conectat la WI-FI un mesaj (fie pe numarul de telefon, fie e-mail) in care anunta ca este neaparat necesara o interventie in cadrul barajului. | Daca totusi butonul nu este apasat in timp util, modulul de WI-FI va trimite catre un device conectat la WI-FI un mesaj (fie pe numarul de telefon, fie e-mail) in care anunta ca este neaparat necesara o interventie in cadrul barajului. | ||
- | |||
- | Un dispozitiv care verifica nivelul apei dintr-un spatiu. | ||
- | Daca nivelul limita este atins(se verifica cu un senzor pentru nivel | ||
- | apa), se porneste un semnal sonor de la buzzer, se led-ul RGB pe rosu | ||
- | intermitent si se trimite un mesaj pe un modul LCD “nivel apa critic!” | ||
- | si se cere apasarea butonului de siguranta. Daca butonul este apasat, | ||
- | un servo motor deschide un orificiu de evacuare a apei pana la un nivel | ||
- | de siguranta. Daca butonul nu este apasat in 10 secunde, se va trimite | ||
- | cu ajutorul unui modul WI-FI un mesaj de informare pe un device | ||
- | conectat la WI-FI in care se anunta ca este nevoie de interventia | ||
- | pompierilor. | ||
- | Pentru determinarea nivelului de siguranta al apei voi avea un obiect | ||
- | plutitor si un senzor ultrasonic. Daca obiectul se afla la o distanta | ||
- | de 10cm fata de acest senzor, nivelul este unul sigur. | ||
- | |||
**Schema bloc proiect:** | **Schema bloc proiect:** | ||
Line 73: | Line 58: | ||
**Schema electrica:** | **Schema electrica:** | ||
- | {{pm/prj2022/ndrogeanu/schemaelectrica_andrabordincel.png?w=800&h=300&t=1652112441&tok=f27d8c}} | + | {{pm/prj2022/ndrogeanu/schelecrica_andrabordincel.png?w=800&h=300&t=1652112441&tok=f27d8c}} |
<note> | <note> | ||
Line 86: | Line 71: | ||
* LiquidCrystal_I2C.h | * LiquidCrystal_I2C.h | ||
* Servo.h | * Servo.h | ||
+ | * [[https://ifttt.com/explore]] | ||
+ | * APPLET-ul creat de mine: [[https://ifttt.com/applets/BR2ms6bT-if-maker-event-alerta_baraj-then-send-yourself-an-email-from-bordincel-andra2001-gmail-com]] | ||
+ | |||
**Workflow program actual:** | **Workflow program actual:** | ||
* In setup() partea de definire a pinilor, modurilor componentelor si configurare pentru diverse elemente din cod precum intreruperea externa generata la apasarea butonului | * In setup() partea de definire a pinilor, modurilor componentelor si configurare pentru diverse elemente din cod precum intreruperea externa generata la apasarea butonului | ||
- | * In loop() mare parte din implementarea descrisa mai jos cu exceptia functionalitatii modului de WI-FI si a senzorului ultrasonic | + | * In loop() este implementata descrierea de mai jos |
- | * Functii auxiliare pentru colorarea led-ului, producerea sunetului si afisarea pe LCD | + | * Functii auxiliare pentru colorarea led-ului, producerea sunetului, afisarea pe LCD, trimiterea E-mail-ului de alerta. |
**De implementat mai departe:** :-( | **De implementat mai departe:** :-( | ||
- | * Setup-ul si functionalitatea senzorului ultrasonic | + | * Sper ca nu mi-a mai ramas nimic |
- | * Setup-ul modulului ESP8266 pentru WI-FI | + | |
- | * Crearea unui server pentru a permite comunicarea cu telefonul prin WI-FI | + | |
**Implementare momentan:** | **Implementare momentan:** | ||
* Functionalitatea senzorului de nivel de apa | * Functionalitatea senzorului de nivel de apa | ||
Line 101: | Line 89: | ||
* Functionalitatea si activarea intreruperii la apasarea butonului | * Functionalitatea si activarea intreruperii la apasarea butonului | ||
* Functionalitatea servo motorului | * Functionalitatea servo motorului | ||
+ | * Functionalitatea senzorului ultrasonic | ||
+ | * Functionalitatea modulului de wifi Esp8266 | ||
**Descrierea programului:** | **Descrierea programului:** | ||
- | La inceputul programului includ bibliotecile necesare pentru utilizarea anumitor componente, acestea momentan fiind "Wire.h", "LiquidCrystal_I2C.h" si "Servo.h". Imi creez apoi 2 obiecte, unul fiind pentru servoMotor si celalalt pentru ecranul LCD. | + | La inceputul programului includ bibliotecile necesare pentru utilizarea anumitor componente, acestea momentan fiind "Wire.h", "LiquidCrystal_I2C.h" si "Servo.h". Imi creez apoi 2 obiecte, unul fiind pentru servoMotor si celalalt pentru ecranul LCD. De asemenea, am adaugat si "WiFiEsp.h", "SoftwareSerial.h" si am declarat si obiectele necesare pt acesta. |
Definesc pinii pentru fiecare din componentele utilizate pana acum in ordinea urmatoare: | Definesc pinii pentru fiecare din componentele utilizate pana acum in ordinea urmatoare: | ||
Line 111: | Line 101: | ||
* ServoMotor(4) | * ServoMotor(4) | ||
* Led(R-11, G-10, B-9) | * Led(R-11, G-10, B-9) | ||
+ | * Pinii RX, TX pentru modulul ESP8266(7, 6) | ||
+ | * Pinii trig(12) si echo(13) pentru senzorul ultrasonic. | ||
Mai departe declar variabile globale pe care le voi folosi pe parcursul programului, in principal flag-uri pentru diferite actiuni. | Mai departe declar variabile globale pe care le voi folosi pe parcursul programului, in principal flag-uri pentru diferite actiuni. | ||
In setup(): | In setup(): | ||
- | Setez baud rate-ul pentru serial fiind 9600. Configurez apoi LCD-ul, definesc modurile (INPUT/OUTPUT) pentru pinii digitali, atasez obiectului pentru servo motor pinul asignat mai sus si configurez intreruperea externa ce va aparea la apasarea butonului. | + | Setez baud rate-ul pentru serial fiind 115200. Configurez apoi LCD-ul, definesc modurile (INPUT/OUTPUT) pentru pinii digitali, atasez obiectului pentru servo motor pinul asignat mai sus si configurez intreruperea externa ce va aparea la apasarea butonului. Mai departe configurez conectarea la reteaua WiFi si pinii pentru senzorul ultrasonic. |
- | In ISR fac debounce pentru buton, revin la culoarea verde a led-ului, opresc sunetul buzzer-ului si modific falg-urile pentru afisarea pe LCD si pentru servo motor. | + | In ISR fac debounce pentru buton, revin la culoarea verde a led-ului, opresc sunetul buzzer-ului si modific falg-urile pentru afisarea pe LCD si pentru servo motor, si restez timer-ul pentru cererea HTTP. |
In functia toggleLed() verific un flag pentru led pentru a putea oscila intre culoarea rosie si inactivitatea led-ului pentru a creea efectul de lumina intermimtenta. | In functia toggleLed() verific un flag pentru led pentru a putea oscila intre culoarea rosie si inactivitatea led-ului pentru a creea efectul de lumina intermimtenta. | ||
Line 125: | Line 117: | ||
In functia printLCD() se verifica flag-ul mentionat mai sus. In caz ca acesta are valoarea 1 se afiseaza cele 2 mesaje de atentionare pe LCD, iar daca este 0, se face clear si se printeaza un string null. | In functia printLCD() se verifica flag-ul mentionat mai sus. In caz ca acesta are valoarea 1 se afiseaza cele 2 mesaje de atentionare pe LCD, iar daca este 0, se face clear si se printeaza un string null. | ||
- | Ajungand la functia principala, loop(), aici se incepe cu aprinderea led-ului de siguranta pe verde si citirea de la senzor si afisarea pe serial a nivelului apei. Daca nivelul critic prestabilit al apei este depasit se apeleaza functiile de alerta "toggleLed()", "makeBipBip() si "printLCD". Daca butonul este apasat se intra in intreruperea unde efectul acestora este anulat si se revine la normal, dupa care in loop se verifica flag-ul modificat in intrerupere si de ationeaza miscarea servo motorului la o anumita pozitie pentru deschiderea usii. | + | In functia makeHttpRequest() ma opresc la clientul curent si ma conectez la server. Daca clientul este conectat fac cererea HTTPP la host-ul asociat. |
+ | |||
+ | Ajungand la functia principala, loop(), aici se incepe cu aprinderea led-ului de siguranta pe verde si citirea de la senzor si afisarea pe serial a nivelului apei. Daca nivelul critic prestabilit al apei este depasit se apeleaza functiile de alerta "toggleLed()", "makeBipBip() si "printLCD" si se porneste timer-ul pentru cererea HTTP. Daca butonul este apasat se intra in intreruperea unde efectul acestora este anulat si se revine la normal, dupa care in loop se verifica flag-ul modificat in intrerupere si de ationeaza miscarea servo motorului la o anumita pozitie pentru deschiderea usii. Daca timer-ul pentru HTTP a depasit 10 secunde, se apeleazaz functia "makeHttpRequest()" si se trimite e-mail-ul de alerta. Senzorul ultrasonic calculeaza o distanta pana la un obiect atunci cand usa de evacuare este deschisa, iar daca distanta este mai mica de 4cm atunci usa se va inchide. | ||
- | Momentan atat am reusit sa implementez. | ||
**Schema bloc setup:** | **Schema bloc setup:** | ||
- | {{pm/prj2022/ndrogeanu/schemabloc_setup_andrabordincel.png?w=400&h=100&t=1652112441&tok=f27d8c}} | + | {{pm/prj2022/ndrogeanu/setup_andrabordi.png?w=400&h=100&t=1652112441&tok=f27d8c}} |
**Schema bloc loop:** | **Schema bloc loop:** | ||
- | {{pm/prj2022/ndrogeanu/schemabloc_loop_andrabordincel.png?w=800&h=300&t=1652112441&tok=f27d8c}} | + | {{pm/prj2022/ndrogeanu/loop_andrabordi.png?w=800&h=300&t=1652112441&tok=f27d8c}} |
<note> | <note> | ||
Line 142: | Line 135: | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note warning>O sa mai completez aceasta rubrica abia dupa ce termin implementarea 8-O </note> | + | Link Youtube: [[https://youtu.be/nzGHj96vH6U]] |
+ | |||
+ | Poze: | ||
+ | |||
+ | {{:pm:prj2022:ndrogeanu:andrab1.jpeg?nolink&300|}} | ||
+ | {{:pm:prj2022:ndrogeanu:andrab2.jpeg?nolink&300 |}} | ||
+ | {{:pm:prj2022:ndrogeanu:andrab3.jpeg?nolink&300 |}} | ||
+ | {{:pm:prj2022:ndrogeanu:andrab4.jpeg?nolink&300 |}} | ||
+ | {{:pm:prj2022:ndrogeanu:andrab5.jpeg?nolink&300 |}} | ||
+ | {{:pm:prj2022:ndrogeanu:andrab6.jpeg?nolink&300 |}} | ||
+ | {{:pm:prj2022:ndrogeanu:andrab7.jpeg?nolink&300 |}} | ||
+ | {{:pm:prj2022:ndrogeanu:andrab8.jpeg?nolink&300 |}} | ||
+ | {{:pm:prj2022:ndrogeanu:andrab9.jpeg?nolink&300 |}} | ||
- | Momentan am reusit sa fac partea de alarma cu aprindere de led, buzzer si afisare de mesaj sa functioneze. La apasarea butonului de asemenea se actioneaza servo motorul pentru deschiderea usii si se opreste alarma sonora, se revine la culoarea verde si dispare mesajul de pe LCD, dar nu am apucat sa testez si dupa ce am atasat usa de la orificiu pentru a putea determina daca apa se evacueaza corespunzator si fara scurgeri dupa inchidere. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | Drept concluzie, desi nu e inca gata, a fost un proiect la care mi-a fost foarte drag sa lucrez tocmai pentru ca am avut ocazia sa fac si ceva creativ. | + | Drept concluzie, a fost un proiect la care mi-a fost foarte drag sa lucrez tocmai pentru ca am avut ocazia sa fac si ceva creativ. |
- | Mare parte din logica e gata, dar mai e de munca. Nu stiu daca e un proiect de 10, dar cum am mai spus, eu sunt fericita ca am avut ocazia sa lucrez cu atatea lucruri noi si sa construiesc ceva propriu. | + | Nu stiu daca e un proiect de 10, dar cum am mai spus, eu sunt fericita ca am avut ocazia sa lucrez cu atatea lucruri noi si sa construiesc ceva propriu. |
+ | |||
+ | Consider ca cea mai dificila parte a fost utilizarea modulului ESP8266. | ||
===== Download ===== | ===== Download ===== | ||
<note warning> | <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ă ;-). | + | Link GitHub: [[https://github.com/andrab0/proiect-PM]] |
- | + | ||
- | 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> | </note> | ||
Line 163: | Line 167: | ||
* 10.05.2022: Update lista componente hardware | * 10.05.2022: Update lista componente hardware | ||
* 29.05.2022: Update sectiuni si scheme bloc + schema electrica | * 29.05.2022: Update sectiuni si scheme bloc + schema electrica | ||
+ | * 06.02.2022: Update cod + sectiuni [FINAL] | ||
+ | |||
</note> | </note> | ||
- | ===== Bibliografie/Resurse ===== | + | [[https://github.com/bportaluri/WiFiEsp/tree/master/examples/WebClient]] |
- | <note> | + | [[https://create.arduino.cc/projecthub/abdularbi17/ultrasonic-sensor-hc-sr04-with-arduino-tutorial-327ff6]] |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
- | </note> | + | |
- | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> |