http://obrazki.elektroda.pl/9506573100_1483947675_thumb.jpg Ostatnio sporo osób prezentuje swoje konstrukcje zegarów, więc i ja postanowiłem pokazać zegar jaki zrobiłem na prośbę kolegi. Ogólnie założenie było takie, by zegar był widoczny w nocy z większej odległości. Kolega zaproponował aby zrobić go na około 10cm wyświetlaczach LED. Wydało mi się to zbyt banalne i postanowiłem zrobić to na matrycach LED 8x8. Testowo zastosowałem trzy gotowe moduły (z Chin) zawierające po cztery matryce 8x8. Dało to wyświetlacz o rozdzielczości 16x48 pixeli. Z racji tego, że sterowanie wyświetlaczami odbywa się za pomocą układów MAX7219 ogranicza to sterowanie jasnością do zdefiniowanych 16 poziomów. Ustawiając najniższy poziom zegar w nocy emitował tyle światła, że spokojnie mógł zastąpić nocną lampkę. Postanowiłem więc zrobić go na jednym gotowym module z czterema wyświetlaczami co dało rozdzielczość 8x32 pixeli. Wyświetlacz wydał mi się trochę za gruby, bo matrtyce LED umieszczone są w nim w gniazdach. Postanowiłem wylutować gniazda i wlutować wyświetlacze prosto w PCB. Próbowałem różnych technik, ale niestety zawsze uszkodziłem jakiś pad -wysunąłem z niego metalizację i płytka nadawała się już do śmieci. Gdy uszkodziłem piątą płytkę wiedziałem już, że będę musiał zaprojektować i zamówić takie PCB, aby móc w nie bezpośrednio wlutować wyświetlacze. Zaprojektowałem PCB kompatybilne z oryginałem, jedyne co zmieniłem, to wielkość rezystorów i kondensatorów SMD, bo w moich zasobach są tylko elementy w rozmiarze 1206. Aby nie bawić się w ustawianie zegara przyciskami postanowiłem zastosować w nim moduł WiFi (z ESP8266). W pierwszej wersji wgrałem do niego oprogramowanie z możliwością odczytu czasu z NTP za pomocą komend AT. Z racji iż oprogramowanie nie pozwalało na zmianę serwera NTP szybko z niego zrezygnowałem i wróciłem do oryginału. Odczyt czasu odbywa się teraz z dowolnego serwera NTP poprzez wysłanie do niego odpowiednio spreparowanego pakietu danych po UDP. Konfigurację zegara (SSID, hasło, serwer NTP, strefę czasową i czas letni) chciałem ustawiać z poziomu przeglądarki po podłączeniu się do modułu ESP pracującego w trybie AP, ale zrezygnowałem z tego z powodu braku czasu na naukę programowania tego modułu. Zastąpiłem to odczytem konfiguracji z pliku z karty SD. W przyszłości może jeszcze to przerobię. Baterię dołożyłem na samym końcu, gdy już PCB było prawie gotowe. Zrobiłem to, by po zaniku zasilania mieć czas mimo braku Internetu. Moduł RTC (DS3231) posiada wbudowany termometr, ale i tak postanowiłem zastosować nieśmiertelny DS18B20 (w obudowie SO8), by uzyskać lepszą dokładność (dziesiętne stopnia). Z modułów ESP wylutowałem LED sygnalizujące zasilanie, by niepotrzebnie nie dawało poświaty z tyłu zegara. Oczywiście nie ustrzegłem się poważnego błędu, co da się zauważyć na zdjęciach. PCB zawsze projektuję w Protel/Altium i od zawsze korzystam tylko z własnych bibliotek elementów, ale taki błąd zdarzył mi się po raz pierwszy W module ESP zamieniłem strony i aby nie zamawiać nowych PCB postanowiłem wlutować je odwrotnie. Nawet źle to nie wygląda. Kolejnym błędem, było umieszczenie za bezpiecznikiem polimerowym dławika o tak małym rozmiarze. Chińczyk pisał, że są one do 0.7A, a co się okazało do 0.07A. Zegar przy włączonym module WiFi i najwyższej jasności pobiera około 0.35A. Poszukiwanie dławika >0.35A w takim małym rozmiarze spełzło na niczym, więc lutując zastąpiłem go zworą SMD w rozmiarze 1206. Do programowania uC zastosowałem gniazdo w rastrze 1.27mm i dodatkowo wyprowadziłem na nim linię UART (połączenie uC z ESP). Uruchamiając zegar z wciśniętym przyciskiem ESP przechodzi w tryb upgrade i za pomocą tego gniazda możemy zaktualizować mu firmware. Uruchamiając zegar normalnie w pierwszej kolejności czytana jest konfiguracja z karty SD (o ile jest w slocie). Dane z karty porównywane są z danymi zapisanymi w EEPROMie. Gdy są różne, to następuje ich nadpisanie w EEPROMie. Hasło do WiFi zapisane na karcie SD dla bezpieczeństwa po odczytaniu jest zastępowane gwiazdkami. Gdy przy ponownym odczycie zegar odczyta gwiazdki, to oczywiście nie zastąpi nimi poprawnego hasła zapisanego już w EEPROMie. Napis "vayo" na pierwszej matrycy ma jasność najniższą -"0", na drugiej "5", na trzeciej "10" i na czwartej najwyższą "15". Podczas tego napisu następuje połączenie z siecią WiFi, odczyt czasu i wyłączenie WiFi. Kolejny etap uruchamiania, to wyświetlenie intro (czcionka 8x8 ze zbiorów z małego Atari) i na koniec przejście do trybu wyświetlania czasu. Sam pomysł na ruszające kropki i przewijające się cyfry zaczerpnąłem z filmiku na YouTube gdzie jakiś Rosjanin chwalił się swoim zegarem na wyświetlaczu opartym tak samo o układy MAX7219. To jedyne na czym sie wzorowałem -cała reszta jest całkowicie mojego autorstwa. Zegar konstruowałem tak, by nie musieć tworzyć dla niego obudowy. Jako stopki pod wyświetlaczami zastosowałem silikonowe odbojniki do drzwi szafek i na taką wysokość (1.5mm) projektowałem nogi w PCB z "sercem" zegara. Gniazdo zasilania umieściłem w otworze, by wtyczka nie wystawała poza obrys wyświetlacza. Umożliwia to też skierowanie kabla zasilającego w dowolnym kierunku. Fotorezystor również umieszczony jest tak, by nie wystawał poza obrys. Jest to mój pierwszy tak banalny projekt -niczego nowego mnie nie nauczył (no może poza większym przyłożeniem się do rysowania footprint’ów elementów), ale zainteresowanie nim było spore. Do tej pory zrobiłem już 8 sztuk i to na pewno nie będzie koniec. Jeżeli powstanie kolejna wersja firmware, to dorobię do niej odczyt komunikatów z serwera WWW, tak by można było przekazywać jakieś informację do konkretnego zegara (np. składać za pośrednictwem zegara życzenia urodzinowe, lub wyświetlać zewnętrzną temperaturę z danej miejscowości) i dorobię automatyczną zmianę czasu w standardzie US, bo teraz można włączyć tylko naszą. Gerberów na razie nie poprawiałem. Jak zużyję wszystkie PCB i będę zmuszony zamówić nowe, to wtedy poprawię i zamieszczę je tutaj. A co wy sądzicie o moim projekcie? https://www.youtube.com/watch?v=P0HkCGm28JM http://obrazki.elektroda.pl/6148934000_1483947795_thumb.jpg http://obrazki.elektroda.pl/6952401400_1483947798_thumb.jpg http://obrazki.elektroda.pl/5391065200_1483947800_thumb.jpg http://obrazki.elektroda.pl/9436838600_1483947803_thumb.jpg http://obrazki.elektroda.pl/4464122000_1483947805_thumb.jpg http://obrazki.elektroda.pl/3683811600_1483947807_thumb.jpg http://obrazki.elektroda.pl/7233943200_1483947810_thumb.jpg http://obrazki.elektroda.pl/7565704600_1483947812_thumb.jpg http://obrazki.elektroda.pl/4133341500_1483947815_thumb.jpg
1
2
3
4
A
A
COD01
D-1
COD02
D-2
COD03
D-3
COD04
D-4
PID01016
PID02016
PID03016
PID01015
PID01011
PID02015
PID02011
PID03015
PID03011
PID04016
PID04015
PID04011
PID0106
PID0206
PID0306
PID0406
PID01010
PID02010
PID03010
PID04010
PID0104
PID0204
PID0304
PID0404
PID0103
PID01013
PID0203
PID02013
PID0303
PID03013
PID0403
PID04013
VCC
VCC
PIZ08 1 PIZ08 2 PIZ08 3 PIZ08 4 PIZ08 5
Z-6
COZ06
Z-7
COZ07
Z-8
COZ08
Nazwa projektu:
WiFi Clock
Tytuł dokumentu:
WiFi_Clock_display.SchDoc
Autor:
Radoslaw RUNO
Data:
2
C
1
2
3
4
5
PIZ07 1 PIZ07 2 PIZ07 3 PIZ07 4 PIZ07 5
Z-5
COZ05
D
1
COU04
VCC
Z-4
COZ04
Z-3
COZ03
U-4
GND
VCC
PIZ06 1 PIZ06 2 PIZ06 3 PIZ06 4 PIZ06 5
B
9
13
DIN
1
12
24
18
PIR0401
4
PIU0404
PIU04 9
ISET
U-3
PIU0418 PIU042 PIU04 1 PIU04 12 PIU0413
COU03
MAX7219
SEG DP
SEG A
SEG B
SEG C
SEG D
SEG E
SEG F
SEG G
GND
CLK
100nF COR04
R-4
10K
DOUT
V+
LOAD (CS)
19
PIU04019
VCC
PIZ05 1 PIZ05 2 PIZ05 3 PIZ05 4 PIZ05
22
14
16
20
23
21
15
17
2
11
6
7
3
10
5
8
PIR0402
9
GND
DIG 0
DIG 1
DIG 2
DIG 3
DIG 4
DIG 5
DIG 6
DIG 7
MAX7219
22
14
16
20
23
21
15
17
13
DIN
4
PIU0304 PIC0401 PIC0402
PIU03 9
12
CLK
LOAD (CS)
GND
PIU03 1 PIU0312 PIU03 13
1
24
PIU0318 PIU0324
VCC
PIZ04 1 PIZ04 2 PIZ04 3 PIZ04 PIZ04 5
DOUT
ISET
PIR0301
18
U-2
100nF R-3
COR03
10K
COU02
SEG DP
SEG A
SEG B
SEG C
SEG D
SEG E
SEG F
SEG G
DIG 0
DIG 1
DIG 2
DIG 3
DIG 4
DIG 5
DIG 6
DIG 7
V+
1
2
3
4
5
PIZ03 1 PIZ03 2 PIZ03 PIZ03 4 PIZ03 5
MAX7219
9
GND
LOAD (CS)
CLK
13
DIN
1
24
12
PIU02 9
19
PIR0302 PIU03019
1
2
3
4
5
Z-2
COZ02
PIU02 1 PIU02 12 PIU0213
PIU0218 PIU02 4
4
PIU0204 PIC0301 PIC0302
VCC
COC04
C-4
1
2
3
4
5
Z-1
COZ01
DOUT
ISET
PIR0201
GND
VCC
COC03
C-3
1
2
3
4
5
1
2
3
4
5
PIZ02 1 PIZ02 PIZ02 3 PIZ02 4 PIZ02 5
SEG DP
SEG A
SEG B
SEG C
SEG D
SEG E
SEG F
SEG G
DIG 0
DIG 1
DIG 2
DIG 3
DIG 4
DIG 5
DIG 6
DIG 7
V+
18
COU01
9
13
12
19
PIU02019
VCC
1
2
3
4
5
PIZ01 PIZ01 2 PIZ01 3 PIZ01 4 PIZ01 5
PIR0202
100nF COR02
R-2
10K
PIU01 9
VCC
PIC0202
1
2
3
4
5
C
1
24
18
PIU01 8 PIU0124 PIU01 PIU01 2 PIU01 3
4
VCC
COC02
C-2
PIU0104 PIC0201
U-1
PIR0101
GND
ISET
100nF COR01
R-1
10K
GND
CLK
V+
DIN
19
PIU01019
DOUT
PIR0102
LOAD (CS)
COC01
C-1
PIC0101 PIC0102
MAX7219
SEG DP
SEG A
SEG B
SEG C
SEG D
SEG E
SEG F
SEG G
DIG 0
DIG 1
DIG 2
DIG 3
DIG 4
DIG 5
DIG 6
DIG 7
VCC
B
2
11
6
7
3
10
5
8
PIU04 2 PIU041 PIU04 6 PIU04 7 PIU04 3 PIU0410 PIU04 5 PIU04 8 PIU042 PIU041 PIU0416 PIU04 20 PIU04 23 PIU0421 PIU0415 PIU04 17
22
14
16
20
23
21
15
17
PID0409 PID04 14 PID0408 PID04 12 PID0401 PID0407 PID0402 PID0405
PIU03 2 PIU031 PIU03 6 PIU03 7 PIU03 PIU03 10 PIU03 5 PIU03 8 PIU032 PIU03 14 PIU0316 PIU0320 PIU032 PIU0321 PIU03 15 PIU0317
2
11
6
7
3
10
5
8
PID0309 PID03 14 PID0308 PID03 12 PID0301 PID0307 PID0302 PID0305
PIU02 PIU021 PIU02 6 PIU02 7 PIU02 3 PIU0210 PIU02 5 PIU02 8 PIU02 PIU0214 PIU0216 PIU02 0 PIU02 3 PIU02 1 PIU0215 PIU0217
22
14
16
20
23
21
15
17
PID0209 PID02 14 PID0208 PID02 12 PID0201 PID0207 PID0202 PID0205
PIU01 2 PIU01 PIU01 6 PIU01 7 PIU01 3 PIU01 0 PIU01 5 PIU01 8 PIU012 PIU01 4 PIU01 6 PIU0120 PIU0123 PIU012 PIU01 5 PIU01 7
2
11
6
7
3
10
5
8
PID0109 PID01 4 PID0108 PID01 2 PID0101 PID0107 PID0102 PID0105
3
10.10.2016
D
Wersja:
4
1 rev.161009
PIC0801
PIC0802
IN
PIC0101
COC08
C-8
100nF
PIC0102
COC01
C-1
10uF
OUT
PIR0302
PIP0102
PIC0201
PI 01
PIC0202
PIR0402
COR03
R-3
PIC0901
COC02
COC09
C-2
C-9
PIC0902
100uF
100nF
PIR0301
10K
PIR0401
10K
POSCL
SCL
POSDA
SDA
micro USB
GND
3V3
3V3
COZ04
Z-4
PIR0101
2
4
6
PIZ0406
8
PIZ0408
10
PIZ04010
PIU03014
PIM010ADC
POESP0CS
ESP_CS
PIB010
PIU03 13
PIM010GPIO0
POTX
TX
COB01
B-1
CR1225
PIM010EN
POESP0MOD
ESP_MOD
PORX
RX
POINT
INT
PIM010GPIO3
PIC010 1
POTX
TX
PIC010 2
PIC01 01
COC010
C-10
100nF
PIC01 02
PIC01201
COC011
C-11
PIC01202
100nF
COC012
C-12
POADC
ADC
100nF
PIR0102
PIR0202
PIM010GPIO4
PIM010GPIO5
PIB010
GND
PIR0602
10K
(INT0/PCINT18) PD2
(TXD/PCINT17) PD1
(RXD/PCINT16) PD0
(RESET/PCINT14) PC6
(ADC5/SCL/PCINT13) PC5
(ADC4/SDA/PCINT12) PC4
(ADC3/PCINT11) PC3
(ADC2/PCINT10) PC2
PD5 (PCINT21/OC0B/T1)
PD6 (PCINT22/OC0A/AIN0)
PD7 (PCINT23/AIN1)
PB0 (PCINT0/CLKO/ICP1)
PB1 (PCINT1/OC1A)
PB2 (PCINT2/SS/OC1B)
PB3 (PCINT3/OC2A/MOSI)
PB4 (PCINT4/MISO)
(ADC1/PCINT9) PC1
(ADC0/PCINT8) PC0
ADC7
GND
AREF
ADC6
AVCC
(SCK/PCINT5) PB5
1Y
2Y
3Y
4Y
3
6
PIU0206
8
PIU0208
11
PIU02011
PIU0203
PIC01402
VCC
B
1
2
PIZ0202
3
PIZ0203
4
PIZ0204
5
PIZ0205
1 - CLK
2 - CS
3 - DOUT
4 - GND
5 - VCC
PIZ0201
LED OUT
COC014
C-14
PIC01401 100nF
GND
3V3
PIH0202
COR07
R-7
SD_ON
POSD0ONPIR0701
PIH0201
PIR0702
PIT0101
2K2
24
23
22
PIU01022
21
PIU01021
20
PIU01020
19
PIU01019
18
PIU01018
17
PIU01017
PIU01024
COT01
T-1
BC807
COH03
H-3
PIT0103
PO10WIRE
1-WIRE
PIU01023
SD_CS PICON010CS CS
POSD0CS
POMOSI
MOSI PICON010DI DATA IN
PIT0102
10uH
ADC
POADC
PIH0301
MISO PICON010DO DATA OUT
POMISO
PICON010CLK CLK
POSCK
SCK
PIH0302
PICON010VCC
PIC0702
PICON010GND
10uH
COC07
C-7
COC05
C-5
PIC0701
POSD0CD
SD_CD
PIC0501 PIC0502
C-6
COC06
3,3V
GND
100nF
PICON010WP
PICON010CD
PICON010COM
100nF
PIR0802
PIU04 3
R-8
COR08
4K7
PIR0801
1-WIRE
PO10WIRE
4
PIU0404
DQ
WRITE PROTECT
CARD DETECT
COM
GND
COZ05
Z-5
9
10
11
12
13
14
15
16
SCK
MISO
MOSI
LED_CS
POLED0CS
POSD0CS
SD_CS
PIC01301
COC013
C-13
100nF
1
2
GND
PIZ0501
Nazwa projektu:
GND
WiFi_Clock_logic.SchDoc
Autor:
GND
WiFi Clock
Tytuł dokumentu:
PIZ0502
GND
Radoslaw RUNO
Data:
2
PIC01302
micro SD
100nF
GND
COU04
U-4
PIU04 5
PIC0601 PIC0602
ESP_MOD
POESP0MOD
SD_ON
POSD0ON
POSD0CD
SD_CD
C
3V3
COCON01
CON-1
COH02
H-2
PIU01 9 PIU01 0 PIU01 PIU01 2 PIU01 3 PIU01 4 PIU01 5 PIU01 6
1
1
2
PIZ0102
3
PIZ0103
4
PIZ0104
5
PIZ0105
PIZ0101
LED IN
PIU02 7
ATMEGA168A
ESP_CS
POESP0CS
PIM010GPIO6
7
PD3 (PCINT19/OC2B/INT1)
PD4 (PCINT20/XCK/T0)
GND
VCC
GND
VCC
PB6 (PCINT6/XTAL1/TOSC1)
PB7 (PCINT7/XTAL2/TOSC2)
22pF
D
PIR0601
32
31
30
29
28
27
26
25
PIU0132 PIU013 PIU0130 PIU01 29 PIU0128 PIU0127 PIU0126 PIU0125
ATMEGA328P
22pF
PIM010GPIO7
DS18B20Z
COU01
U-1
PIC0402 PIC0401
PIM010GPIO10
PIM010GPIO9
PIM010GPIO8
COZ02
Z-2
3
POR\E\S\E\T\
RESET
PISW0102
SWITCH
COR06
R-6
1 - CLK
2 - CS
3 - DIN
4 - GND
5 - VCC
74LVC125
Memory Card
POSDA
SDA
PIU0214
VCC
COZ01
Z-1
2
PIU0202 1A 1 - CLK
SCK
5
POLED0CSPIU0205 2A 2 - CS
LED_CS
9
MOSI PIU0209 3A 3 - DOUT
12
PIU02012 4A 4 - GND
5 - VCC
1
PIU0201 1OE
4
PIU0204 2OE
10
PIU02010 3OE
13
PIU02013 4OE
COSW01
SW-1
PISW0101
8MHz
PIM010GPIO11
GND
GND 74HC125 Vcc
RX
TX
POSCL
SCL
COU02
U-2
14
GND
3V3
PIX0101
PIM010GPIO12
PIR0201
3V3
C-4
COC04
PIM010GPIO13
4K7
GND
X-1
COX01
A
PIM010GPIO15
PIM010GPIO14
PIM01 GND
VCC
PIX0102
PIM010GPIO16
COR02
R-2
GND
PIU0101
POINT 1
INT
POPROG 2
PROG PIU0102
3
PIU0103
4
PIU0104
5
PIU0105
6
PIU0106
7
COC03
C-3
PIU0107
8
PIC0302 PIC0301
PIU0108
PIM010GPIO1
PIM010GPIO2
IO_16
(-) IO_15
RST
IO_14
ADC
IO_13
EN
IO_12
IO_00 (*)
IO_11
IO_01 [TX]
IO_10
IO_02 (+)
IO_09
IO_03 [RX]
IO_08
IO_04
IO_07
IO_05
IO_06
GL5537-1
POMOSI
MOSI
PROG
B
C
PIM010RST
ESP-07
GND VCC
POR\E\S\E\T\ 5
RESET PIZ0405
PIZ0407
PORX 7
RX
POPROG 9
PROG PIZ0409
10K
ANT
COR01
R-1
PIZ0402
PIZ0404
14
1
PIU0301
3
PIU0303
12
PIU03012
11
PIU03011
10
PIU03010
9
PIU0309
PIM010ANT
5
POMISO 1
MISO PIZ0401
POSCK 3
SCK PIZ0403
SCL
VBAT
SDA
32kHz
RST INT/SQW
N.C.
N.C.
DS3231
N.C.
N.C.
N.C.
N.C.
N.C.
N.C.
PIR0501
13
3V3
16
15
PIU03015
4
PIU0304
5
PIU0305
6
PIU0306
7
PIU0307
8
PIU0308
PIU03016
COR05
R-5
U-3
PIM01 VC
COM01
M-1
PIR0502
PIU03 2 COU03
COR04
R-4
VCC
PIP0103
3V3
GND
A
LM1117
PIH0102
2
PIH0101
3V3
VCC
COH01
H-1
COP02
P-2
1 PIP0201
PIP0202
10uH
VBUS PIZ0301
2
D- PIZ0302 500mA
3
USB
PIZ0303
D+
4
GND PIZ0304
GND
COZ03
Z-3
3V3
COP01
P-1
4
GND
VCC
3
ESP8266 MOD
2
+
1
3
28.11.2016
D
Wersja:
4
1 rev.161018
[WIFI]
SSID = vayo_net
Password = ******
[TIME]
NTP = 193.219.28.2
UTC = +1
DST = EU