summaryrefslogtreecommitdiff
path: root/docs/doc.typ
blob: 0fcf53566fba1fd049b46e2ad071ecba7e76a8b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#set text(font: "Noto Sans")
#show link: underline

#page[
= Projekt zaliczeniowy z przedmiotu Internet Rzeczy

- Autor: #sys.inputs.at("author")
- Kod źródłowy: https://git.kkard2.com/iot-esp32-textboard/ (oraz w załączniku)

= Opis

Celem projektu jest stworzenie wyświetlacza pozwalającego zostawiać
wiadomości innym użytkownikom przestrzeni współdzielonej.

Wiadomość wyświetla się przez minutę po krótkim naciśnięciu przycisku.
Następnie ekran gaśnie aby zaoszczędzić energię
(można go też wyłączyć klikając przycisk ponownie).

Wprowadzanie wiadomości odbywa się poprzez stronę serwowaną
przez mikrokontroler po przytrzymaniu przycisku.

= Szczegóły techniczne

== Rysowanie tekstu

Glify czcionki zostały wygenerowane za pomocą programu znajdującego się w
podfolderze `src/font/`. Są one zapisane w tablicy 256 elementowej
(enkodowanie ISO-8859-2 dla wsparcia polskich znaków).
Czcionka zajmuje 4KiB pamięci (16 B #sym.times 256).

== Emulacja

Kod został napisany w taki sposób aby umożliwić testowanie go bez fizycznego
sprzętu. Aby uruchomić emulator należy użyć skryptu `src/run_emulator.sh`.

Do działania jest wymagana biblioteka raylib (https://www.raylib.com/).

== Firmware

Firmware został skompilowany za pomocą narzędzia PlatformIO
(https://platformio.org/).
]

= Działanie

== Wyświetlanie tekstu

Po krótkim kliknięciu przycisku pojawia się zapisany tekst
w ustawionym motywie i wielkością czcionki.

#grid(
  columns: 2,
  rows: auto,
  image("display-example-1.png"),
  image("display-example-2.png"),
  image("display-example-3.png")
)

Po długim wciśnięciu (2 sekundy)
pojawia się informacja o możliwości ustawienia tekstu:

#image("wifi-enabled.png")

U góry ekranu pokazuje się pasek jak długo jeszcze będzie włączona obecna funkcja.
Przy kontakcie z mikrokontrolerem pasek się odświeża
(np. wysłanie tekstu do wyświetlacza, odświeżenie strony).

== Strona

#image("webpage.png")

Strona pozwala na ustawienie tekstu, zmianę kolorów oraz skali czcionki.
Odznaczenie zawijania słowami spowoduje zawijanie pojedynczych znaków.

Można też wyłączyć WiFi z poziomu strony zamiast trzymania przycisku przez 2 sekundy.

= Diagram połączeń

#image("diagram.png")

== Tabela

#table(
  columns: (auto, auto, auto),
  inset: 10pt,
  table.header(
    [*Komponent*], [*Wyprowadzenie*], [*Pin ESP32*]
  ),
  [TFT ILI9341], [SCK],      [18],
  [TFT ILI9341], [SDI/MOSI], [23],
  [TFT ILI9341], [DC],       [16],
  [TFT ILI9341], [RESET],    [17],
  [TFT ILI9341], [CS],       [5],
  [TFT ILI9341], [GND],      [GND],
  [TFT ILI9341], [VCC, LED], [3.3V],
  [Przycisk],    [A],        [4],
  [Przycisk],    [B],        [GND],
)