REKLAMA

WiFi clock Leon.zip

WiFi clock "Leon" by vayo

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


Pobierz plik - link do postu
  • WiFi clock Leon.zip
    • WiFi_Clock.hex
    • WiFi_Clock.elf



WiFi clock Leon.zip > WiFi_Clock_display_SchDoc.pdf

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


WiFi clock Leon.zip > WiFi_Clock_logic_SchDoc.pdf

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 clock Leon.zip > clock.txt

[WIFI]
SSID = vayo_net
Password = ******

[TIME]
NTP = 193.219.28.2
UTC = +1
DST = EU