This shows you the differences between two versions of the page.
pm:prj2025:mdinica:cristian.popescu03 [2025/05/29 22:56] cristian.popescu03 [Software Design] |
pm:prj2025:mdinica:cristian.popescu03 [2025/05/30 01:10] (current) cristian.popescu03 [Jurnal] |
||
---|---|---|---|
Line 28: | Line 28: | ||
* Ecranul va fi folosit pentru afișarea aplicațiilor și conținutului. | * Ecranul va fi folosit pentru afișarea aplicațiilor și conținutului. | ||
* Funcția capacitivă a modulului permite utilizatorului sa navigheze prin aplicații și să controleze anumite funcționalități ale acestora. | * Funcția capacitivă a modulului permite utilizatorului sa navigheze prin aplicații și să controleze anumite funcționalități ale acestora. | ||
+ | * Ecranul dispune de un Touch Pen pentru a crește precizia. | ||
^ ^ Pin ^ Pin ESP32 ^ Descriere ^ | ^ ^ Pin ^ Pin ESP32 ^ Descriere ^ | ||
Line 160: | Line 161: | ||
* Revenirea la homescreen se face prin apăsarea butonului HOME, sau în cazul aplicației de muzică la sfârșitul ultimei melodii. | * Revenirea la homescreen se face prin apăsarea butonului HOME, sau în cazul aplicației de muzică la sfârșitul ultimei melodii. | ||
* La fiecare revenire, homescreen-ul este actualizat. Dacă utilizatorul s-a conectat la Wi-Fi, atunci vremea si timpul sunt actualizate cu date in timp real. | * La fiecare revenire, homescreen-ul este actualizat. Dacă utilizatorul s-a conectat la Wi-Fi, atunci vremea si timpul sunt actualizate cu date in timp real. | ||
- | |||
** Main loop ** | ** Main loop ** | ||
- | <code> | + | <code cpp> |
void loop() { | void loop() { | ||
- | // If button is pressed, toggle the display | + | // If button is pressed, toggle the display |
- | if (button_pressed) { | + | if (button_pressed) { |
- | button_pressed = false; | + | button_pressed = false; |
- | toggle_display(); | + | toggle_display(); |
- | } | + | } |
- | // Check and handle any gesture | + | // Check and handle any gesture |
- | if (get_sensor_flag()) | + | if (get_sensor_flag()) |
- | handle_gesture(); | + | handle_gesture(); |
- | // If the screen is off, return | + | // If the screen is off, return |
- | if (!screen_on) { | + | if (!screen_on) { |
- | idle(); | + | idle(); |
- | return; | + | return; |
- | } | + | } |
- | // If the clock timer updated the time, draw the new time | + | // If the clock timer updated the time, draw the new time |
- | if (update_time) { | + | if (update_time) { |
- | update_time = false; | + | update_time = false; |
- | draw_clock_time(); | + | draw_clock_time(); |
- | } | + | } |
- | // Check for any touch | + | // Check for any touch |
- | uint16_t touch_x = 0, touch_y = 0; | + | uint16_t touch_x = 0, touch_y = 0; |
- | bool touch = tft.getTouch(&touch_x, &touch_y); | + | bool touch = tft.getTouch(&touch_x, &touch_y); |
- | if (!touch) | + | if (!touch) |
- | return; | + | return; |
- | // If user exited app, redraw homescreen | + | // If user exited app, redraw homescreen |
- | if (check_app_use(touch_x, touch_y)) | + | if (check_app_use(touch_x, touch_y)) |
- | draw_homescreen(); | + | draw_homescreen(); |
} | } | ||
</code> | </code> | ||
Line 224: | Line 223: | ||
{{pm:prj2025:mdinica:cristian.popescu03:music_app_v1.jpeg?700x800|Music app}} | {{pm:prj2025:mdinica:cristian.popescu03:music_app_v1.jpeg?700x800|Music app}} | ||
+ | |||
+ | == ESPhone v2.0 == | ||
+ | |||
+ | {{pm:prj2025:mdinica:cristian.popescu03:esphone_with_battery.jpeg?225x450|ESPhone}} | ||
+ | {{pm:prj2025:mdinica:cristian.popescu03:keyboard.jpeg?225x450|ESPhone keyboard}} | ||
+ | {{pm:prj2025:mdinica:cristian.popescu03:bytechat.jpeg?225x450|ESPhone ByteChat app}} | ||
+ | |||
+ | {{pm:prj2025:mdinica:cristian.popescu03:esphone_pm.jpeg?700x850|Paint app again}} | ||
+ | |||
+ | {{pm:prj2025:mdinica:cristian.popescu03:back_with_espen_holder.jpeg?700x510|ESPhone with ESPen holder}} | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | După multe zile de debugging și o grămadă de fire lipite, pot să spun că am reușit să creez ceea ce mi-am propus: un telefon ușor de folosit, greu de asamblat. Am învățat o grămadă de lucruri noi, mai ales pe partea de embedded, și sigur nu o să uit această experiență prea curând. |
===== Jurnal ===== | ===== Jurnal ===== | ||
+ | <note> | ||
+ | * 15.04.2025 -> M-am decis în legătură cu tema proiectului. | ||
+ | * 22.04.2025 -> Am comandat ecranul TFT LCD 2.8". | ||
+ | * 28.04.2025 -> Am desenat UI pentru aplicații. | ||
+ | * 5.05.2025 -> Am comandat un kit Plusivo, ESP32 DevKit-V1 si un APDS9960. | ||
+ | * 11.05.2025 -> M-am apucat să dezvolt "OS-ul" pentru ESPhone. | ||
+ | * 15.05.2025 -> Am cumpărat o placă de test. De asemenea, am implementat aplicația de desenat, de redat muzică, conectat la WiFi și schimbat culoarea fundalului. | ||
+ | * 22.05.2025 -> Am cumpărat fire pentru momentul când voi lipi piesele pe placa de test. | ||
+ | * 27.05.2025 -> Am implementat aplicația de mesagerie si galerie foto. | ||
+ | * 28.05.2025 -> Am lipit componentele pe placa de test. | ||
+ | * 29.05.2025 -> Am finalizat ESPhone. | ||
+ | </note> | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
+ | |||
+ | Resurse Software: | ||
+ | * https://github.com/Bodmer/TFT_eSPI | ||
+ | * https://github.com/Bodmer/TJpg_Decoder | ||
+ | * https://randomnerdtutorials.com/esp32-tft-touchscreen-display-2-8-ili9341-arduino/ | ||
+ | * https://randomnerdtutorials.com/esp32-ntp-timezones-daylight-saving/ | ||
+ | * https://randomnerdtutorials.com/esp32-date-time-ntp-client-server-arduino/ | ||
+ | * https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv | ||
+ | * https://projecthub.arduino.cc/tmekinyan/playing-popular-songs-with-arduino-and-a-buzzer-546f4a | ||
+ | * https://github.com/hibit-dev/buzzer | ||
+ | * https://randomnerdtutorials.com/esp32-pwm-arduino-ide/ | ||
+ | * https://randomnerdtutorials.com/esp32-useful-wi-fi-functions-arduino/ | ||
+ | * https://cataas.com/ | ||
+ | * https://www.weatherapi.com/ | ||
+ | Resurse Hardware: | ||
+ | * https://www.youtube.com/watch?v=rq5yPJbX_uk&list=LL&index=1&t=832s&pp=gAQBiAQB | ||
+ | * https://www.youtube.com/watch?v=gj-H_agfd6U |