Morse Code Decoder & Encoder

Introducere

Codul Morse este o metodă de transmitere a informației folosind secvențe standardizate de semne sau pulsații scurte și lungi – cunoscute în mod comun ca „puncte” și „linii” – pentru litere, cifre și caracterele speciale specifice oricărui mesaj.

“What hath God wrought” (Ce a creat Domnul) este primul mesaj oficial transmis de Samuel F.B. Morse în 24 mai 1844, pentru deschiderea liniei de telegraf Baltimore - Washington.

În trecut, codul Morse era folosit pe larg, mai ales de către forțele armate. Deși în prezent codul Morse are o utilizare limitată, el continuă să fie folosit în aviație, activități ale radioamatorilor și pentru tehnologii de asistență pentru persoanele cu dizabilități (AT).

Descriere Generală

Proiectul constă în decodificarea unor semnale luminoase de intensități diferite produse de un telefon mobil în text alfanumeric pe un LCD și pe o matrice de led-uri.

Implementsrea se va face utilizând placa de bază. Aceasta va fi conectată prin USB pentru a încărca codul și pentru alimentare la un calculator. Senzorul de lumină va recepționa semnale luminoase de două durate de timp diferite, corespunzătoare simbolurilor din codul Morse(. și -).

Schemă Matrice LED-uri 8x8

Pentru matrice am utilizat 64 de led-uri și 8 rezistențe de 180 ohm fiecare. Led-urile sunt cuplate astfel încât să formeze linii(catod) și coloane(anod) de câte 8. Fiecare linie este apoi conectată la câte un rezistor. Pentru a aprinde un led al matricei(linia 2, coloana 6), este nevoie să fie shiftate aceste valori în registrele de shiftare. Pentru a transmite datele câtre registre vom utiliza un vector de 8 bytes, fiecare element reprezentând o linie și fiecare bit din byte reprezintă câte un led.

Pentru a aprinde led-ul de pe linia 2 și coloana 6, vectorul va arăta astfel:

  • unsigned char LEDS[8];
  • LEDS [7] = B00000000;
  • LEDS [6] = B00000000;
  • LEDS [5] = B00000000;
  • LEDS [4] = B00000000;
  • LEDS [3] = B00000000;
  • LEDS [2] = B00000000;
  • LEDS [1] = B00000100;
  • LEDS [0] = B00000000;

Schemă bloc

Hardware Design

  • Senzor de lumină

Senzorul de lumină este utilizat pentru a percepe semnale luminoase de diferite intensități și durate pe care ulterior le transmite ca input pentru a fi analizate.

  • LCD

LCD-ul este utilizat pentru a afișa semnalele luminoase percepute de senzor transformate în text alfanumeric.

  • Registrele de shiftare

Acestea sunt utilizate pentru a putea aprinde anumite led-uri de pe matrice, neavând la dispoziție suficienți pini.

  • Matricea de led-uri

Este utilizată pentru a reprezenta un anumit caracter alfanumeric primit ca input de la senzor.

Schemă electrică

Listă de piese

  • Arduino UNO R3
  • Cablu USB A-B 25cm
  • Ecran LCD 1602
  • Modul senzor lumina ambientala TEMT6000
  • LED-uri de 5mm x64
  • 74HC595 Shift Register x2
  • Jumper Wires
  • Rezistor 180 ohm x8
  • Potentiometru rotativ 10K, liniar, mono - 161003
  • Breadboard 830 puncte MB102
  • Cablaj de test
  • Letcon 40W, fludor, cositor

Software Design

Pentru implementarea software am utilizat Arduino IDE.

Valorile transmise de senzorul de lumină se încadrează între 0(întuneric) și 1023(valoarea maximă de lumină). Prima etapă în procesul de decodare este calcularea unei valori pentru lumina ambientală, aceasta poate varia puțin. Transmiterea semnalelor luminoase se face prin intermediul unei aplicații de pe telefonul mobil și durează aproximativ 270ms pentru un punct și 460, 470ms pentru o linie. Și pentru acestea pot exista mici variațiuni de câteva milisecunde.

La momentul identificării unui semnal luminos, procesul de decodificare începe. În funcție de durata sa se stabilește dacă este punct sau linie, și este adăgat într-un buffer pentru a fi transformat în text alfanumeric.

Biblioteci utilizate

#include <LiquidCrystal.h> folosit pentru transmitea datelor către LCD.

#include <SPI.h> folosit pentru a transmite date registrelor de shiftare și pentru a accesa Pinii.

Activity Diagram

Concluzii

Pe parcursul realizării proiectului am învățat să lipesc și să asamblez componentele, să programez pe o plăcuță Arduino și să interpretez datele percepute de senzorul de lumină. Din păcate, nu am reușit să implementez toate funcționalitățile propuse inițial.

Rezultate obținute

Download

Jurnal

  • 29.04.2021 - Plasare comandă componente
  • 05.05.2021 - Primirea ultimelor componente
  • 10.05.2021 - Lipire matrice de led-uri, LCD, Senzor de lumină și testare
  • 28.05.2021 - Asamblare componente conform schemei electrice
  • 01.06.2021-04.06.2021 - Implementare

Bibliografie/Resurse

pm/prj2021/abirlica/morse_code_decoder.txt · Last modified: 2021/06/04 18:56 by liza_maria.neacsu
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