Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:ccristi:alexandru.beiu [2025/05/18 19:08]
alexandru.beiu [Jurnal]
pm:prj2025:ccristi:alexandru.beiu [2025/05/26 01:56] (current)
alexandru.beiu [Rezultate Obţinute]
Line 22: Line 22:
   * Ecran OLED 0.96" I2C   * Ecran OLED 0.96" I2C
   * Modul DC-DC Step-Down MP1584EN   * Modul DC-DC Step-Down MP1584EN
-  * Modul EEPROM AT24C256 
   * Microfon de la niște căști   * Microfon de la niște căști
   * Difuzorul original   * Difuzorul original
   * Buzzer   * Buzzer
   * Rezistente 10KOhm   * Rezistente 10KOhm
- {{:​pm:​prj2025:​ccristi:​whatsapp_image_2025-05-07_at_21.33.41.jpeg?​200| }} +  ​{{:​pm:​prj2025:​ccristi:​whatsapp_image_2025-05-07_at_21.33.41.jpeg?​200| }} 
 +  
 Schemă electrică: Schemă electrică:
  
Line 42: Line 41:
  
 Astfel, am reușit să inițiez și să primesc apeluri telefonice/​SMS-uri. Am testat de mai multe ori, totul pare să funcționeze cum trebuie, singura problemă este că persoana cu care vorbesc își aude propria voce, însă nu am gasit o rezolvare. Astfel, am reușit să inițiez și să primesc apeluri telefonice/​SMS-uri. Am testat de mai multe ori, totul pare să funcționeze cum trebuie, singura problemă este că persoana cu care vorbesc își aude propria voce, însă nu am gasit o rezolvare.
 +
 +Mecanismul de formare a numarului l-am descifrat cu ajutorul unui multimetru si functioneaza in felul urmator:
 +
 + - Avem 3 fire care ies de la rotita cu urmatoarele culori : **R**osu, **G**alben, **V**erde. Firul **R** va fi conectat la **GND**, celelalte 2 vor fi conectate la INPUT cu rezistente de PULL-UP. Pentru a semnala formarea numarului (momentul in care rotita incepe sa se invarta), firul **R** si firul **G** vor avea continuitate (la input vom avea LOW, discontinuitate),​ iar cand rotita ajunge la final, continuitatea nu mai este. Pentru a identifica cifra formata, firul **R** si **V** sunt in general in continuitate dar formeaza pauze de discontinuitate de cca 50ms, la fiecare cifra parcursa, exemplu: daca formam cifra 7, vom avea 7 pauze de discontinuitate de cca 50ms. Acest lucru este simplu de interpretat in cod deoarece Arduino va vedea 7 schimbari de semnal LOW-HIGH. ​
 +
 +Pentru a vedea daca receptorul este ridicat sau nu, am lipit 2 fire de mecanismul care tine receptorul (IN si GND, cand receptorul este pus la IN vom avea HIGH iar cand este ridicat, LOW. 
 +
 +{{:​pm:​prj2025:​ccristi:​whatsapp_image_2025-05-20_at_01.28.02.jpg?​direct&​200|}}
 +
 +
  
  
Line 47: Line 56:
 ===== Software Design ===== ===== Software Design =====
  
 +**Link GitHub : https://​github.com/​Alexe1289/​proiect_pm**
  
-<note tip> +**Mediu de dezvoltare și limbaj de programare**
-Descrierea codului aplicaţiei (firmware)+    ​Arduino IDE – mediu principal ​de programare 
-  ​* ​mediu de dezvoltare ​(if any) (e.g. AVR Studio, CodeVisionAVR+    Limbaj: C++ (Arduino Sketch
-  librării şi surse 3rd-party (e.g. Procyon AVRlib) +     
-  ​algoritmi şi structuri pe care plănuiţi să le implementaţi +**Librării folosite**:
-  ​(etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+ - SoftwareSerial.h - folosită pentru a avea 2 conexiuni seriale (una la SIM800L, cealalta la Serial Monitor pentru debugging)
  
-<note tip> + - Adafruit_GFX.h - folosită pentru a afișa pe ecranul OLED imagini (bitmaps)
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+ - Adafruit_SH110X.h - folosită pentru a interacționa cu display-ul OLED
  
-===== Download =====+ - Wire.h - folosită pentru comunicarea prin I2C cu display-ul
  
-<note warning>​ +**Descrierea codului**:
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurse, 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 Alin331CC -> **:​pm:​prj2009:cc:​dumitru_alin**. + - Pentru inceput, in functia de setup(), setez rezistentele de pull-up, conexiunea USART intre modul SIM800L si Arduino si comunicarea I2C cu display-ulDupa care pentru a stabili baudrate-ul cu SIM800L (lucru ​care se face automat la primul mesaj transmis), trimit un mesaj "​AT"​. 
-</​note>​+ - In functia ​de loop, putem fi in urmatoarele stari: 
 +    - a fost ridicat receptorul ceea ce inseamna o schimbare a tensiunii pin-ului ​(LOW-HIGH, HIGH-LOW), deci: 
 +      ​raspundem unui apel primit prin trimiterea comenzii "​ATA"​ 
 +      - urmeaza sa formam un numar 
 +    - receptorul a fost pus jos ceea ce inseamna exact opusul al celor de mai sus, mai exact
 +      - inchidem apelul curent prin trimiterea comenzii "​ATH"​ 
 +      - se reseteaza vectorul cu numere formate 
 + ​Formarea numarului:
  
 + - Functioneaza exact cum am descris in partea hardware. Daca rotita se invarte, atunci pe pin-ul 5 vom primi LOW, deci putem incepe sa adaugam intr-un vector de caractere numerele formate. Numarul de schimbari HIGH-LOW pe pin-ul 6, semnifica ce numar a fost format. Dupa ce rotita a ajuns la final (pin 5 este din nou HIGH), afisam pe display numerele din vector. Cand se ajunge la 10 numere se initiaza apelul prin comanda "​**ATD+(NUMAR_TELEFON);​**"​
 +
 +Inainte de formarea numarului se verifica semnalul si accesul in retea in felul urmator:
 +
 + - Se trimite o comanda "​**AT+CSQ**"​ pentru a vedea calitatea semnalului. Raspunsul va fi de forma "​**+CSQ:​ <​rssi>,<​ber>​**"​
 +
 +    <​rssi>​ – Received Signal Strength Indication (nivelul semnalului):​
 +
 +        0 → -113 dBm (semnal foarte slab)
 +
 +        31 → -51 dBm (semnal excelent)
 +
 +        99 → necunoscut / nu se poate determina
 +        ​
 +    <ber> – Bit Error Rate (rata de erori):
 +  ​
 +  ​
 + - Pentru vizualizarea semnalului, am luat niste iconite de pe acest [[https://​www.flaticon.com/​|site]] si apoi le-am convertit in bytearrays(date constante care vor fi retinute in memoria **flash**) cu ajutorul [[https://​javl.github.io/​image2cpp/​|image2cpp]],​ apoi am apelat functia "​**.drawBitmap**"​
 +
 + - Se trimite o comanda "​**AT+CREG?​**"​ pentru a vedea daca avem acces in retea (in cazul meu, Orange). Daca primim: +CREG: 0,1, e totul ok.
 +
 +
 + - La primirea unui apel, generez prin buzzer 3 bip-uri scurte de 1000HZ folosind functia **tone**.
 +
 +
 +===== Rezultate Obţinute =====
 +
 +{{ :​pm:​prj2025:​ccristi:​whatsapp_image_2025-05-26_at_01.07.14.jpg?​direct&​300 |}}
 +
 +
 +----
 +[[https://​youtu.be/​3aeek7L6-k4|Videoclip de prezentare]]
 ===== Jurnal ===== ===== Jurnal =====
  
-#1 - am avut ceva probleme cu modulul deoarece nu reușea să se conecteze în rețea. Își lua "​RESET"​ la fiecare 8s, iar în urma documentării,​ am aflat că placa are o problme ​din fabrică. Condensatorul între VCC si GND este subdimensionat (are 100 µF, iar producătorul chip-ului recomandă 1000 µF) și nu făcea față la burst-uri de 2A. Problema mai persistă uneori, așa că probabil voi pune un condensator mai mare.+#1 - am avut ceva probleme cu modulul deoarece nu reușea să se conecteze în rețea. Își lua "​RESET"​ la fiecare 8s, iar în urma documentării,​ am aflat că placa are o problema ​din fabrică. Condensatorul între VCC si GND este subdimensionat (are 100 µF, iar producătorul chip-ului recomandă 1000 µF) și nu făcea față la burst-uri de 2A. Problema mai persistă uneori, așa că probabil voi pune un condensator mai mare.
  
 #2 - Am schimbat microfonul cu unul de la căști deoarece cel original nu părea să meargă. Difuzorul, însă, a funcționat. O poza cu improvizația:​ #2 - Am schimbat microfonul cu unul de la căști deoarece cel original nu părea să meargă. Difuzorul, însă, a funcționat. O poza cu improvizația:​
  
 {{:​pm:​prj2025:​ccristi:​pozamic2.jpg?​50|}} {{:​pm:​prj2025:​ccristi:​pozamic1.jpg?​50|}} {{:​pm:​prj2025:​ccristi:​pozamic2.jpg?​50|}} {{:​pm:​prj2025:​ccristi:​pozamic1.jpg?​50|}}
 +
 +#3 - Mecanismul soneriei lipsește așa că voi pune un buzzer, provizoriu.
 +
 +#4 - Am adaugat un buton de "​panica",​ da reset la arduino si SIM800L, deoarece existau situatii cand modulul GSM nu reusea sa se conecteze in retea.
 +
 +#5 - Am renuntat la memoria EEPROM pentru a retine apeluri, din cauza problemelor aparute. Mi-am dat seama ca Arduino-ului nu ii place comunicarea SoftwareSerial + I2C (se blocheaza). Asta inseamna ca nu puteam sa fac debug la ce afisam
 +
 +#6 - Am lipit firele si componentele pe perfboard pentru mai multa stabilitate.
 +
 +{{:​pm:​prj2025:​ccristi:​whatsapp_image_2025-05-26_at_01.06.51.jpg?​direct&​200 |}}
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +https://​www.flaticon.com/​ 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**+ 
-</note>+https://​javl.github.io/​image2cpp/​ 
 + 
 +https://​lastminuteengineers.com/​sim800l-gsm-module-arduino-tutorial/​ 
 + 
 +https://​www.instructables.com/​How-to-Display-Images-on-OLED-Using-Arduino/​ 
 + 
 +GPT + Google
  
 <​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>​
  
  
pm/prj2025/ccristi/alexandru.beiu.1747584521.txt.gz · Last modified: 2025/05/18 19:08 by alexandru.beiu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0