This shows you the differences between two versions of the page.
|
pm:prj2026:bianca.popa1106:radu.stoican [2026/05/12 16:43] radu.stoican [Bill of Materials (BOM)] |
pm:prj2026:bianca.popa1106:radu.stoican [2026/05/12 19:17] (current) radu.stoican [Conclusions] |
||
|---|---|---|---|
| Line 46: | Line 46: | ||
| |Keypad (Rows)|Digital|D2, D3, D4, D5|Input scanning (Pull-up)| | |Keypad (Rows)|Digital|D2, D3, D4, D5|Input scanning (Pull-up)| | ||
| |Keypad (Cols)|Digital|D6, D7, D8, D9|Input scanning| | |Keypad (Cols)|Digital|D6, D7, D8, D9|Input scanning| | ||
| - | |Buzzer|PWM|D3 (shared) or D10*|Audio signal generation| | + | |Buzzer|PWM|D3 (shared)|Audio signal generation| |
| |TFT Screen (SCK)|SPI Clock|D13|Shared SPI clock| | |TFT Screen (SCK)|SPI Clock|D13|Shared SPI clock| | ||
| |TFT Screen (MOSI)|SPI Data|D11|Master Out Slave In| | |TFT Screen (MOSI)|SPI Data|D11|Master Out Slave In| | ||
| |TFT Screen (CS/DC/RST)|Control|D10, D9, D8|Chip Select, Data/Cmd, Reset| | |TFT Screen (CS/DC/RST)|Control|D10, D9, D8|Chip Select, Data/Cmd, Reset| | ||
| - | |SD Card (CS)|Control|D4 (shared) or D7*|Chip Select for SD Module| | + | |SD Card (CS)|Control|D4 (shared)|Chip Select for SD Module| |
| |Potentiometer|Analog|A0|10-bit ADC conversion| | |Potentiometer|Analog|A0|10-bit ADC conversion| | ||
| - | <note important>*Specific pin assignments may vary based on the final software library configuration</note> | ||
| ==== Electrical Schematic Description ==== | ==== Electrical Schematic Description ==== | ||
| The system design follows a modular approach. The SPI Bus (Serial Peripheral Interface) is the backbone of the hardware, allowing the MCU to communicate with both the TFT Screen and the SD Card. To avoid bus contention, separate Chip Select (CS) lines are used. | The system design follows a modular approach. The SPI Bus (Serial Peripheral Interface) is the backbone of the hardware, allowing the MCU to communicate with both the TFT Screen and the SD Card. To avoid bus contention, separate Chip Select (CS) lines are used. | ||
| - | The 4x4 Keypad is connected using a matrix scanning technique, utilizing 8 digital pins to minimize I/O usage. The Passive Buzzer is connected in series with a 220Ω resistor to the MCU to prevent overcurrent damage to the digital pin. The Slide Potentiometer acts as a voltage divider, providing a linear voltage between 0V and 5V to the ADC (Analog-to-Digital Converter) on pin A0. | + | The 4x4 Keypad is connected using a matrix scanning technique, utilizing 8 digital pins to minimize I/O usage. The Passive Buzzer is connected in series to the MCU to prevent overcurrent damage to the digital pin. The Slide Potentiometer acts as a voltage divider, providing a linear voltage between 0V and 5V to the ADC (Analog-to-Digital Converter) on pin A0. |
| ==== Signal Diagrams and Communication Protocols ==== | ==== Signal Diagrams and Communication Protocols ==== | ||
| Line 124: | Line 123: | ||
| ===== Obtained Results ===== | ===== Obtained Results ===== | ||
| - | The implementation of the project yielded a fully functional embedded system that successfully integrates all specified hardware and software modules. The core achievements include: | + | I managed to build a fully functional embedded system that successfully integrated all specified modules. In more detail, I managed to do the following things: |
| *Hardware Integration: The ATmega328P microcontroller reliably interfaces with all peripherals. The SPI bus arbitration was successfully implemented, allowing the ST7735 TFT display and the MicroSD card module to share the same data lines without interference, managed via separate Chip Select (CS) pins. | *Hardware Integration: The ATmega328P microcontroller reliably interfaces with all peripherals. The SPI bus arbitration was successfully implemented, allowing the ST7735 TFT display and the MicroSD card module to share the same data lines without interference, managed via separate Chip Select (CS) pins. | ||
| Line 140: | Line 139: | ||
| Overall, the project met its initial design specifications, operating smoothly via a standard 5V USB power supply and demonstrating excellent real-time reliability. | Overall, the project met its initial design specifications, operating smoothly via a standard 5V USB power supply and demonstrating excellent real-time reliability. | ||
| ===== Conclusions ===== | ===== Conclusions ===== | ||
| - | The development of this embedded system provided a comprehensive and practical experience in both hardware integration and low-level microcontroller programming. Successfully combining heterogeneous peripherals—such as a color display, external storage, and analog/digital inputs—on a resource-constrained platform like the ATmega328P demonstrated the importance of efficient system architecture. | + | Personally, it was one of the most satisfying projects I've made during uni. I learnt a lot about embedded development and I'm truly planning to create a future project(in my limited spare time). |
| Several key technical takeaways and challenges were identified during the project: | Several key technical takeaways and challenges were identified during the project: | ||
| Line 150: | Line 149: | ||
| *Software Architecture: Implementing a Finite State Machine (FSM) alongside non-blocking polling proved to be a highly effective strategy for maintaining a responsive User Interface while handling background tasks. | *Software Architecture: Implementing a Finite State Machine (FSM) alongside non-blocking polling proved to be a highly effective strategy for maintaining a responsive User Interface while handling background tasks. | ||
| - | *Future Improvements: | + | *Future Improvements: Soldering all the hardware on a more robust Perfboard would be an obvious next step. Managing to add more complex operations or even to simulate different function graphics could make the product much closer to a real scientific calculator (that would mean changing the keyboard to one with more buttons or even adding one more). One of the best functionalities i can think of would be an integral solver or a differential equation solver. However, we face big issues when trying to implement these locally on the microcontroller. Thus, we may need to change the heavy duty responsibility to another computer, either connected by Bluetooth or by Wi-fi. If we are connected to another device through bluetooth or Wi-fi, why not add the option to talk to an LLM? That could be a student's daydream for a math exam where calculators are allowed. |
| - | While the current breadboard prototype is fully functional, future iterations of the project could include: | + | |
| - | + | ||
| - | *Advanced UI/UX: Expanding the Adafruit GFX implementation to include custom bitmaps (loaded directly from the SD card) and smoother animations. | + | |
| - | + | ||
| - | *Specific Application Deployment: Adapting the versatile hardware setup into a dedicated end-user application, such as a secure vault system (using the keypad for PIN entry and SD card for access logging) or a retro-style interactive game. | + | |
| ===== Download ===== | ===== Download ===== | ||
| **TO BE CONTINUED** | **TO BE CONTINUED** | ||
| [[https://github.com/stoichy/Graphing-Calculator|Github Repo]] | [[https://github.com/stoichy/Graphing-Calculator|Github Repo]] | ||
| + | |||
| + | ===== Calendar of Progress====== | ||
| + | ^Date^Software^Hardware^ | ||
| + | |2nd May|Software state: Basic arithmetic operations were successfully implemented, along with history management. Graphics for sin and cos functions are currently displayed wrong and a better user-interface can also be developed|All jumper wires are connected successfully, meaning all peripherals can be used accordingly. Possibility in the far future: Perfboard soldering| | ||
| + | |||
| ===== Bibliography / Resources ===== | ===== Bibliography / Resources ===== | ||
| ==== Hardware Resources ==== | ==== Hardware Resources ==== | ||