This shows you the differences between two versions of the page.
pm:prj2022:apredescu:bluetooth-battleships [2022/05/24 18:34] gpoalelungi [Software Design] |
pm:prj2022:apredescu:bluetooth-battleships [2022/05/25 13:14] (current) gpoalelungi [Download & Bibliografie] |
||
---|---|---|---|
Line 24: | Line 24: | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | Lista piese: | + | **Lista piese**: |
* 2 x Arduino UNO | * 2 x Arduino UNO | ||
Line 32: | Line 32: | ||
* 2 x Ecran LCD 1602 + adaptor I2C | * 2 x Ecran LCD 1602 + adaptor I2C | ||
* 6 x Buton | * 6 x Buton | ||
- | * 4 x Rezistor | + | * 4 x Rezistor 220 Ohmi |
* 2 x LED simplu | * 2 x LED simplu | ||
* Fire Male-Male si Female-Female | * Fire Male-Male si Female-Female | ||
- | Schema electrica | + | **Schema electrica**\\ |
- | {{331cc_Poalelungi_Gabriel_schema_electrica.png?600x600}} | + | {{bt_battleships_schema_electrica.png?800x800}} |
===== Software Design ===== | ===== Software Design ===== | ||
- | |||
- | <note tip> | ||
- | 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 am folosit **Arduino IDE**. | Pentru dezvoltarea codului am folosit **Arduino IDE**. | ||
Line 58: | Line 50: | ||
In setup(), intai se initializeaza pinii digitali pentru butoane si led, matricea de led-uri, comunicarea seriala prin Bluetooth si comunicarea cu ecranul LCD 1602 prin convertorul I2C. Apoi, se apeleaza de 3 ori functia setBoat() pentru a pune cele 3 nave de lungime 3, 4, respectiv 5 pe harta. Apoi, se transmite prin Bluetooth faptul ca initializarea hartii s-a incheiat. La final, se apeleaza functia configureBoards() care transmite harta proprie catre celalalt player si primeste harta celuilalt player. | In setup(), intai se initializeaza pinii digitali pentru butoane si led, matricea de led-uri, comunicarea seriala prin Bluetooth si comunicarea cu ecranul LCD 1602 prin convertorul I2C. Apoi, se apeleaza de 3 ori functia setBoat() pentru a pune cele 3 nave de lungime 3, 4, respectiv 5 pe harta. Apoi, se transmite prin Bluetooth faptul ca initializarea hartii s-a incheiat. La final, se apeleaza functia configureBoards() care transmite harta proprie catre celalalt player si primeste harta celuilalt player. | ||
+ | |||
+ | Functia setBoat() are 3 etape in care se alege orientarea, randul celulei de inceput si coloana celulei de inceput a navei. Fiecare etapa presupune un busy-waiting care se termina la apasarea butonului SELECT de pe pinul 7. | ||
+ | |||
+ | Functia configureBoard() are 2 etape: de transmitere a hartii si primire a hartii celuilalt player. Transmiterea informatiilor este seriala. O diferenta cheie intre codurile de pe cele doua placi este faptul ca o placa are etapele in ordinea trimite-primeste, in timp ce cealalta placa are etapele in ordinea primeste-trimite pentru a evita un deadlock. | ||
+ | |||
+ | Functia loop() are doua stari: una de wait si una de go. In cea de wait, se face un busy-waiting pana cand se primeste semnal de la celalalt player ca si-a terminat randul. In cea de go, se alege celula intr-un busy-waiting si la apasarea butonului SELECT, se decide daca playerul a nimerit celula sau nu. Daca a ratat, intra in starea de wait. Daca nu, reia starea de go. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | {{BT_battleships_1.png?900x400}} |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
+ | {{BT_battleships_2.png?900x400}} | ||
+ | |||
+ | {{BT_battleships_3.png?900x400}} | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | Mi-a facut placere sa lucrez la acest proiect in cadrul caruia am invatat o mica parte din ceea ce inseamna sa lucrezi cu microcontrollere. Am invatat ca nu trebuie subestimat niciodata niciun bug, fie el software sau hardware si, totodata, ca daca conectezi din neatentie pinul de 5V cu GND-ul Arduino-ului, se duc banii de mancare pe 2 zile :)). |
- | <note warning> | + | Datorita acestui proiect, imi doresc sa transform lucrul cu tot ce inseamna sfera Arduino intr-un mic hobby. |
- | 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ă ;-). | + | ===== Download & Bibliografie===== |
- | 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**. | + | Link tutorial 8x8 LED Matrix: //https://circuitdigest.com/microcontroller-projects/arduino-8x8-led-matrix\\ |
- | </note> | + | |
- | ===== Jurnal ===== | + | Link tutorial LCD 1602 + adaptor I2C: //https://youtu.be/q9YC_GVHy5A\\ |
- | <note tip> | + | Datasheet modul Bluetooth HC-05: //https://filafill.com/img/cms/hc_hc-05-user-instructions-bluetooth.pdf\\ |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | |
- | ===== Bibliografie/Resurse ===== | + | Link tutorial modul Bluetooth HC-05: //https://create.arduino.cc/projecthub/electropeak/getting-started-with-hc-05-bluetooth-module-arduino-e0ca81\\ |
- | + | ||
- | <note> | + | |
- | 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> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||
- |