Morse Code Translator
Interactive Text-to-Morse Translator with Multi-Sensory Feedback
Author: Nițu-Săraru Ramona-Gabriela
GitHub Project Link: https://github.com/UPB-FILS-MA/project-GabrielaNitu
Description
This project aims to seamlessly translate text input received from the server through Wi-Fi into Morse code, providing both visual and auditory feedback in real-time. Through the integration of an LCD screen, users can visually observe the Morse code representation of their text. Meanwhile, a buzzer emits distinct sounds for each Morse code symbol, allowing users to hear the translation simultaneously. Additionally, the RGB LED serves to provide visual feedback and indicate the status of the Morse code translation process, contributing to a more interactive and informative user experience.
Motivation
I chose this project because of its relevance in various emergency aspects, such as search and rescue operations and communication in remote areas. Morse code remains a fundamental skill in these contexts, offering a reliable means of communication when other methods may be unavailable. Additionally, undertaking this project provides a valuable opportunity for personal learning and skill development. Mastering Morse code not only equips me with practical skills for emergency situations but also deepens my understanding of communication systems and encoding methods.
Architecture
- Text Input Provided to the System: The user enters text input on a server, which is then transmitted through a Wi-Fi connection to the system. The input text is then passed to the Morse Code Translator for conversion.
- Morse Code Translator Converts Text into Morse Code Symbols: The Morse code translator receives the input text. It processes the text character by character, converting each character into its corresponding Morse code symbol. Special characters and spaces are also translated into their respective Morse code equivalents.
- Raspberry Pi Pico Controls the LCD Display, Buzzer, and RGB LED: The Raspberry Pi Pico receives the translated Morse code symbols from the Morse code translator. It controls the operation of the connected hardware components: -The Raspberry Pi Pico sends commands to the LCD display to update its content with the translated Morse code symbols. -Depending on the Morse code symbol being transmitted, the Raspberry Pi Pico activates the buzzer to emit corresponding sound signals. -The Raspberry Pi Pico sends signals to the RGB LED to change colors based on the Morse code symbols being transmitted, providing visual feedback. LCD Display Visually Represents the Morse Code Symbols:
- The LCD display receives commands from the Raspberry Pi Pico to update its content. It visually represents the Morse code symbols in real-time, displaying them character by character as they are transmitted.
- Buzzer Emits Sound Signals Corresponding to Each Morse Code Symbol: The buzzer receives signals from the Raspberry Pi Pico to emit sound signals. Depending on the Morse code symbol being transmitted, the buzzer generates corresponding audio tones, providing auditory feedback.
- RGB LED Changes Colors to Provide Visual Feedback: The RGB LED receives signals from the Raspberry Pi Pico to change colors. It dynamically changes colors based on the Morse code symbols being transmitted, offering visual feedback for the translation process.
Log
Week 6 - 12 May
I temporarily assembled the hardware components on a breadboard for testing. I began by testing the code for each component individually to ensure they worked as expected. This step-by-step approach allowed me to troubleshoot and verify the functionality of each part before integrating them into the complete system.
Week 7 - 19 May
I've successfully assembled all the components and created the KiCad schematics, ensuring to modify certain components to match the actual parts that I have.
Week 20 - 26 May
I completely finished the software part of the project and added all the final details. Now, the Morse Code Translator is ready!
Hardware
Raspberry Pi Pico WH (Wireless+Headers) - This is the main microcontroller board for the project. It will handle the processing tasks, transmission via Wi-Fi, GPIO interfacing, and control of peripherals.
Buzzer - An audio output device. It can produce sound signals corresponding to Morse code symbols when activated by the microcontroller.
LCD 1602 with I2C interface - This is an LCD display module with a 16x2 character display. It will be used to visually display the translated Morse code text.
Breadboard Kit (830 points) + Jumper Wires + Power Supply - The breadboard provides a platform for prototyping and connecting various components without soldering. Jumper wires will be used to make connections between components. The power supply ensures stable power for the circuit.
RGB LED (Common Cathode) + 220Ω Resistors - The RGB LED can emit different colors by combining the light emitted from its red, green, and blue components. It will be used for visual feedback and status indication. The resistors are used to limit the current flowing through the LED to prevent damage.
USB Cable - Used to power the Raspberry Pi Pico and for communication with the laptop.
Schematics
-RGB LED: The common cathode of the RGB LED is connected to GND (pin 33). The red cathode is connected to GP1 (pin 2) through a resistor. The green cathode is connected to GP2 (pin 4) through a resistor. The blue cathode is connected to GP4 (pin 6) through a resistor.
-Buzzer: The positive terminal of the buzzer is connected to GP7 (pin 10) of the Raspberry Pi Pico. The negative terminal of the buzzer is connected to GND (pin 3).
-LCD 1602 + I2C Module: The SCL (Serial Clock) of the I2C module is connected to GP21 (pin 27) of the Raspberry Pi Pico. The SDA (Serial Data) of the I2C module is connected to GP20 (pin 26) of the Raspberry Pi Pico. The VCC of the I2C module is connected to VBUS (pin 40) for power. The GND of the I2C module is connected to GND (pin 38).
Bill of Materials
Device | Usage | Price |
---|---|---|
Rapspberry Pi Pico WH | The microcontroller | 56 RON |
KIT Breadboard830 + jumper wires | Main board + connectors | 25 RON |
LCD 1602 with I2C interface and blue backlight | Display | 16 RON |
Active Buzzer | Audio output device | 2 RON |
RGB LED with Common Cathode | RGB LED | 3 RON |
220Ω Resistors | Resistors to limit the current flowing through the LED | 4 RON |
Micro USB | USB used to power the Raspberry Pi Pico | 3 RON |
"Mother-father" jumpers | Used to connect the LCD to Raspberry Pi Pico | 4 RON |
Software
Library | Description | Usage |
---|---|---|
embassy-rp | Peripheral access library | Used for initializing the peripherals |
embassy-gpio | GPIO management | Controls GPIO pins for devices and inputs |
embassy-hal | Hardware Abstraction Layer | Interfaces with Raspberry Pi Pico W hardware |
embassy-executor | Asynchronous executor for Rust embedded systems | Used for task scheduling and asynchronous programming |
embassy_time | For time-related functionality | Schedule tasks to run at specific times |
embassy-net | Network stack | Manages network connections and tasks, such as DHCP and UDP communications |
pwm | Pulse-width modulation | Used for controlling the buzzer's sound intensity |
cyw43 | Wi-Fi driver | Manages Wi-Fi connections and communication with the CYW43 Wi-Fi chip |
ag_lcd | LCD display handling | Provides functionality to interface with and control an LCD display via I2C |
heapless | Data structures for embedded systems | Provides 'Vec' and 'String' types that do not rely on the standard library, suitable for no_std environments |