Satura rādītājs:

Tīmeklī savienots digitālais pulkstenis: 7 soļi
Tīmeklī savienots digitālais pulkstenis: 7 soļi

Video: Tīmeklī savienots digitālais pulkstenis: 7 soļi

Video: Tīmeklī savienots digitālais pulkstenis: 7 soļi
Video: Ford Mustang II It's History, Models, Features & The Angels 2024, Jūlijs
Anonim
Interneta savienots digitālais pulkstenis
Interneta savienots digitālais pulkstenis

Amazon atrada digitālo pulksteni 10 USD vērtībā. Tagad pielāgojiet to, lai iegūtu laiku no interneta.

Piegādes

ARM zīmogs, kas programmējams BASIC, pieejams šeit

1. darbība: savienojiet ciparu disku un segmentēšanas disku, lai parādītu multipleksētu displeju

Savienojiet ciparu piedziņu un segmenta piedziņu, lai parādītu multipleksētu displeju
Savienojiet ciparu piedziņu un segmenta piedziņu, lai parādītu multipleksētu displeju

Es sāku ar lētu lielo ciparu digitālo pulksteni. Vispirms es noņēmu esošo pulksteņa mikroshēmu. Tad tika veikta zondēšana un tika atrasti 7 segmenta savienojumi, kurus var vadīt tieši ar mikroprocesoru. Tad atrada četrciparu draiverus, kas bija tranzistori, kurus mikroprocesors var vadīt. Un tad vadu tos.

2. darbība: pārbaudiet savienojumus

Pārbaudiet savienojumus
Pārbaudiet savienojumus

Kā eksperiments es uzrakstīju BASIC programmu, lai vadītu visas līnijas, pārbaudītu elektroinstalāciju un izmērītu strāvu, kas šajā gadījumā bija 82 mA

Nākamais bija rakstīt kodu, lai skenētu līnijas.

'tīmekļa pulksteņa diska disks

IO (7) = 0 'PMOS disks - kādreiz būs PWM

y = 45 līdz 48

IO (y) = 0 'ciparu disks

x = 8 līdz 15

IO (x) = 0 'segmenta piedziņa

pagaidiet (500)

IO (x) = 1

nākamais x

DIR (y) = 0 'atslēgt disku segmentā

nākamgad

3. darbība: kods, lai parādītu laiku un PWM, lai kontrolētu spilgtumu

Kods, lai parādītu laiku un PWM, lai kontrolētu spilgtumu
Kods, lai parādītu laiku un PWM, lai kontrolētu spilgtumu
Kods, lai parādītu laiku un PWM, lai kontrolētu spilgtumu
Kods, lai parādītu laiku un PWM, lai kontrolētu spilgtumu

Tālāk es pievienoju PMOS tranzistoru barošanas avotā visiem ciparu draiveriem. Ar to, ko virza impulsa platuma modulācija, tiks kontrolēts displeja spilgtums. Šeit ir BASIC kods, lai parādītu laiku.

"tīmekļa pulksteņa diska disks #ietver" LPC11U3x.bas"

'globāli

hr = 0 'definēt stundu

min = 0 'definēt minūti

#define SEG_0 & HBB00

#define SEG_1 & H1800

#define SEG_2 & HD300

#define SEG_3 un HD900

#define SEG_4 & H7800

#define SEG_5 un HE900

#define SEG_6 un HEB00

#define SEG_7 & H9800

#define SEG_8 & HFB00

#define SEG_9 & HF800

#define SEG_o & H4B00

#define SEG_f & HE200

const DIGarray = {SEG_0, SEG_1, SEG_2, SEG_3, SEG_4, SEG_5, SEG_6, SEG_7, SEG_8, SEG_9, SEG_o, SEG_f}

#define DIG_WAIT 1

#define US_TIME

sub display_time (kļūda, hr, min)

blāvs hr10, hr1, min10, min1, i

#ifdef US_TIME

ja hr> 12, tad hr -= 12

ja hr = 0, tad hr = 12

#endif

h10 = h / 10

hr1 = stunda MOD 10

min10 = min / 10

min1 = min MOD 10

i = 0 līdz 1

ja hr10, tad

IO (45) = 0

endif

GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (10. stunda)

GPIO_CLR (0) = DIGarray (10. stunda)

pagaidiet (DIG_WAIT)

IEVADE (45)

IO (46) = 0

GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (hr1) + IF (i, & H400, 0)

GPIO_CLR (0) = DIGarray (hr1) + IF (i, & H400, 0)

pagaidiet (DIG_WAIT)

IEEJA (46)

IO (47) = 0

GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (min10)

GPIO_CLR (0) = DIGarray (min10)

pagaidiet (DIG_WAIT)

IEVADE (47)

IO (48) = 0

GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (min1)

GPIO_CLR (0) = DIGarray (min1)

pagaidiet (DIG_WAIT)

IEEJA (48)

nākamais i

Endsub

'lietotājs TIMER1 (32 biti), lai pārtrauktu katru minūti

PĀRTRAUKTS SUB TIMER1IRQ

T1_IR = 1 'Notīrīt pārtraukumu

min += 1

ja min> 59, tad

min = 0

hr += 1

ja h> 23, tad

st = 0

endif

endif

ENDSUB

SUB ON_TIMER (max_cnt, dothis)

TIMER1_ISR = dothis + 1 'iestatīta VIC funkcija - nepieciešams +1 īkšķa darbībai

SYSCON_SYSAHBCLKCTRL VAI = (1 << 10) 'iespējot TIMER1

T1_PR = 0 'bez iepriekšējas skalas - pielāgos vērtību precīzākam laikam

VICIntEnable OR = (1 << TIMER1_IRQn) 'Iespējot pārtraukumu

T1_MR0 = max_cnt-1 'iestatiet atbilstības ms skaitu

T1_MCR = 3 'Pārtraukt un atiestatīt

MR0 T1_IR = 1 'skaidrs pārtraukums

T1_TC = 0 'dzēst taimera skaitītāju

T1_TCR = 1 'TIMER1 Iespējot

ENDSUB

#define MINUT_PCLK 2880000000 '60 sekundes pie 48 MHz

galvenais:

stundas = 9

min = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'PWM kādu dienu - jāpāriet uz P0_22 ??

kamēr 1

display_time (0, h, min)

cilpa

4. darbība. Izveidojiet interneta savienojumu

Izveidojiet interneta savienojumu
Izveidojiet interneta savienojumu

WiFi savienojumam izmantojiet ESP8266. Pēc tam, kad kādu laiku bija pārlūkojis tīmekli, labākais risinājums bija nodemcu versija 0.9.6, un vecāks esp8266_flasher darbojās vislabāk.

www.electrodragon.com/w/File:Nodemcu_20150704_firmware.zip

Pēc tam vienkārša PHP tīmekļa lapa, lai sniegtu laiku no interneta-

Koridija laika serveris

<? php

$ timezone = htmlspecialchars ($ _ GET ["zona"]); ja ($ timezone == "")

$ timezone = 'Amerika/Los_Angeles';

$ tz_object = new DateTimeZone ($ timezone);

$ datuma laiks = jauns datuma laiks ();

$ datetime-> setTimezone ($ tz_object);

echo "laiks ir-", $ datetime-> formāts ('H: i: s');

atbalss "";

echo "datums ir-", $ datetime-> formāts ('m/d/Y');

?>

Šī tīmekļa lapa ir paredzēta, lai jūs varētu pieprasīt

coridium.us/time.php - un jūs labi iegūstat ASV Klusā okeāna laika joslu

vai

coridium.us/time.php?zone=Europe/London

Nav kļūdu pārbaudes un, visticamāk, nekad nebūs

Un Lua to izlasīt -

wifi.sta.config ("your_SSID", "your_PASSWORD")> wifi.sta.connect ()…

sk = net.createConnection (net. TCP, 0)

sk: on ("saņemt", funkcija (sck, c) print (c) end)

sk: connect (80, "coridium.us")

sk: send ("GET /time.php HTTP/1.1 / r / nHost: coridium.us / r / nSavienojums: saglabāt dzīvu / r / nPieņemt: */ *\ r / n / r / n")

Un jūs atgūsit laiku kā

laiks ir-09: 38: 49datums ir -2018-31-12

5. darbība: pievienojiet BASIC kodu, lai parsētu laiku no tīmekļa

Pievienojiet BASIC kodu, lai parsētu laiku no tīmekļa
Pievienojiet BASIC kodu, lai parsētu laiku no tīmekļa

Šī ir visas BASIC programmas apakškopa, kuru pilnu programmu var apskatīt saitē pēdējā posmā.

ja strstr (build_gets, "laiks ir-") = 0, tad

hr = build_gets (8) - "0"

ja build_gets (9) = ":" tad

min = (build_gets (10) - "0")*10

min += build_gets (11) - "0"

citādi

hr = hr * 10 + build_gets (9) - "0"

min = (build_gets (11) - "0")*10

min += build_gets (12) - "0"

endif

endif

6. darbība: pievienojiet gaismas sensoru un kodu, lai aptumšotu displeju

Pievienojiet gaismas sensoru un kodu, lai aptumšotu displeju
Pievienojiet gaismas sensoru un kodu, lai aptumšotu displeju
Pievienojiet gaismas sensoru un kodu, lai aptumšotu displeju
Pievienojiet gaismas sensoru un kodu, lai aptumšotu displeju
Pievienojiet gaismas sensoru un kodu, lai aptumšotu displeju
Pievienojiet gaismas sensoru un kodu, lai aptumšotu displeju

Tika pievienots foto tranzistors, lai uztvertu apkārtējo gaismu telpā. Bez tā displejs ir pietiekami spilgts, lai naktī pamodinātu mirušo (mani).

Tiek nolasīts foto tranzistora izejas analogā spriegums, un impulsa platuma modulācija nosaka displeja kopējo spilgtumu.

7. solis: pogu uz augšu un sāciet to lietot

Nospiediet pulksteni uz augšu un sāciet to lietot
Nospiediet pulksteni uz augšu un sāciet to lietot

Galīgajā versijā tiek parādīts laiks, un aptuveni pulksten 3:00 tas tiek izlaists tīmeklī, lai nolasītu pašreizējo laiku. Tas arī nodrošina dienas gaismas taupīšanas laiku.

Šī projekta motivācija bija strāvas padeves traucējumi, ko mēs piedzīvojam šeit, kalnos, un nepieciešamība atiestatīt pulksteņus vai nomainīt baterijas, lai tie paliktu dzīvi.

Šis ir ātrs projekta pārskats.

Pilna informācija par šo DIY tīmeklī savienoto pulksteni.

Ieteicams: