|
| 1 | +# Wordle |
| 2 | +A Rust-based embedded implementation of the popular word-guessing game. |
| 3 | + |
| 4 | + |
| 5 | +**Author**: Suliman Edis \ |
| 6 | +**GitHub Project Link**:https://github.com/UPB-PMRust-Students/proiect-Edis9955 |
| 7 | +::: |
| 8 | + |
| 9 | +## Description |
| 10 | + |
| 11 | +The project replicates the popular Wordle game developed by the New York Times, implemented using Rust on embedded hardware. Players must guess a secret 5-letter English word in 6 tries, receiving feedback on each guess through color-coded hints: |
| 12 | + |
| 13 | +Green: Correct letter in the correct position |
| 14 | + |
| 15 | +Yellow: Correct letter in the wrong position |
| 16 | + |
| 17 | +Gray: Letter not in the word |
| 18 | + |
| 19 | +## Motivation |
| 20 | + |
| 21 | +This project is a nice first dip into the world of embedded systems. Wordle is a simple but engaging game, making it a great candidate to explore user interaction on low-power hardware while familirizing myself with Rust in an embedded environment. |
| 22 | + |
| 23 | +## Architecture |
| 24 | +The core components of the project architecture include: |
| 25 | + |
| 26 | +Game Engine (Rust): Handles word selection, guess evaluation, and game logic. |
| 27 | + |
| 28 | +Input Handler: Receives user input from a connected keypad. |
| 29 | + |
| 30 | +Display Driver: Outputs the game state on an LCD using color indicators. |
| 31 | +Architecture Overview: |
| 32 | + |
| 33 | +[Keypad/Touch Input] ---> [Input Handler] |
| 34 | + | |
| 35 | + v |
| 36 | + [Game Logic Engine] |
| 37 | + | |
| 38 | + v |
| 39 | + [Display (ILI9341)] |
| 40 | + |
| 41 | + |
| 42 | +## Log |
| 43 | + |
| 44 | +<!-- write your progress here every week --> |
| 45 | + |
| 46 | +### Week 5 - 11 May |
| 47 | + |
| 48 | +### Week 12 - 18 May |
| 49 | + |
| 50 | +### Week 19 - 25 May |
| 51 | + |
| 52 | + |
| 53 | +## Hardware |
| 54 | +The project is built on a Raspberry Pi Pico platform with peripheral components for input, output, and storage. The display provides visual feedback while the keypad serves as the main input method. |
| 55 | +### Schematics |
| 56 | +<!--  --> |
| 57 | + |
| 58 | + |
| 59 | +### Bill of Materials |
| 60 | + |
| 61 | +<!-- Fill out this table with all the hardware components that you might need. |
| 62 | +
|
| 63 | +The format is |
| 64 | +``` |
| 65 | +| [Device](link://to/device) | This is used ... | [price](link://to/store) | |
| 66 | +
|
| 67 | +``` |
| 68 | +
|
| 69 | +-->Tastatura matriceala 4x4 |
| 70 | + |
| 71 | +| Device | Usage | Price | |
| 72 | +|--------|--------|-------| |
| 73 | +| [2 x Raspberry Pi Pico 2W](https://www.optimusdigital.ro/ro/placi-raspberry-pi/13327-raspberry-pi-pico-2-w.html?search_query=raspberry+pi+pico+2w&results=26) | The microcontroller | [79 RON](https://www.optimusdigital.ro/en/raspberry-pi-boards/12394-raspberry-pi-pico-w.html) | |
| 74 | +[Raspberry Pi Ecran LCD ILI9341](https://www.bitmi.ro/module-electronice/ecran-lcd-ili9341-cu-touch-si-slot-pentru-card-sd-2-4-10797-bitmi-ro.html) | Display | [67 RON](https://www.optimusdigital.ro/en/raspberry-pi-boards/12394-raspberry-pi-pico-w.html) | |
| 75 | +[Breadboard](https://www.bitmi.ro/module-electronice/ecran-lcd-ili9341-cu-touch-si-slot-pentru-card-sd-2-4-10797-bitmi-ro.html) | 2 x Breadboard | [7 RON](https://www.optimusdigital.ro/ro/prototipare-breadboard-uri/13249-breadboard-300-puncte.html?search_query=Breadboard+300+puncte&results=1) | |
| 76 | +[4x4 input keypad](https://www.bitmi.ro/module-electronice/ecran-lcd-ili9341-cu-touch-si-slot-pentru-card-sd-2-4-10797-bitmi-ro.html) | keypad | [7 RON](https://www.optimusdigital.ro/ro/senzori-senzori-de-atingere/470-tastatura-matriceala-4x4-cu-conector-pin-de-tip-mama.html?search_query=Tastatura+matriceala+4x4&results=2) | |
| 77 | +[wires ](https://www.optimusdigital.ro/ro/fire-fire-mufate/12-set-de-cabluri-pentru-breadboard.html?search_query=fire+breadboard&results=58) | wires for breadboard| [8 RON](https://www.optimusdigital.ro/ro/senzori-senzori-de-atingere/470-tastatura-matriceala-4x4-cu-conector-pin-de-tip-mama.html?search_query=Tastatura+matriceala+4x4&results=2) | |
| 78 | +[mother-father wires](https://www.optimusdigital.ro/ro/fire-fire-mufate/878-set-fire-mama-tata-40p-30-cm.html?search_query=fire&results=426) | wires for display | [ RON](https://www.optimusdigital.ro/ro/senzori-senzori-de-atingere/470-tastatura-matriceala-4x4-cu-conector-pin-de-tip-mama.html?search_query=Tastatura+matriceala+4x4&results=2) | |
| 79 | +[usb cable](https://www.bitmi.ro/module-electronice/ecran-lcd-ili9341-cu-touch-si-slot-pentru-card-sd-2-4-10797-bitmi-ro.html) | cable | [7 RON](https://www.optimusdigital.ro/ro/senzori-senzori-de-atingere/470-tastatura-matriceala-4x4-cu-conector-pin-de-tip-mama.html?search_query=Tastatura+matriceala+4x4&results=2) | |
| 80 | + |
| 81 | + |
| 82 | + |
| 83 | + |
| 84 | + |
| 85 | +## Software |
| 86 | + |
| 87 | +| Library | Description | Usage | |
| 88 | +|---------|-------------|-------| |
| 89 | +| [st7789](https://github.com/almindor/st7789) | Display driver for ST7789 | Used for the display for the Pico Explorer Base | |
| 90 | +| [embedded-graphics](https://github.com/embedded-graphics/embedded-graphics) | 2D graphics library | Used for drawing to the display | |
| 91 | +| [rand](https://crates.io/crates/rand) | Random number generation | Random word selection | |
| 92 | +| [colored](https://crates.io/crates/colored) | Terminal color output | Color-coding of letters | |
| 93 | +| [display_interface_spi](https://crates.io/crates/display-interface-spi) | Inteface for display | using the display | |
| 94 | + |
| 95 | +## Links |
| 96 | + |
| 97 | +<!-- Add a few links that inspired you and that you think you will use for your project --> |
| 98 | + |
| 99 | +1. [New York Times Wordle](https://www.nytimes.com/games/wordle/index.html) |
| 100 | +3. [ILI9341 Driver Resources](https://docs.cirkitdesigner.com/component/b6591399-68e1-49f4-b5f6-0d512e7af130/ili9341-tft-display) |
| 101 | +4. [Raspberry Pi Pico Documentation](https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html) |
0 commit comments