Talaan ng mga Nilalaman:

Nakakonekta sa Web ang Digital Clock: 7 Mga Hakbang
Nakakonekta sa Web ang Digital Clock: 7 Mga Hakbang

Video: Nakakonekta sa Web ang Digital Clock: 7 Mga Hakbang

Video: Nakakonekta sa Web ang Digital Clock: 7 Mga Hakbang
Video: Lesson 99: Building Arduino Digital Clock using DS3231 LCD and Seven Segment Display 2024, Hulyo
Anonim
Nakakonekta sa Web ang Digital Clock
Nakakonekta sa Web ang Digital Clock

Natagpuan ang isang $ 10 digital na orasan sa Amazon. Ngayon upang ipasadya ito upang makakuha ng oras mula sa internet.

Mga gamit

Programmable ang ARM Stamp sa BASIC na magagamit dito

Hakbang 1: Ikonekta ang Digit Drive at Segment Drive para sa Multiplexed Display

Ikonekta ang Digit Drive at Segment Drive para sa Multiplexed Display
Ikonekta ang Digit Drive at Segment Drive para sa Multiplexed Display

Nagsimula ako sa isang murang off the shelf malaking bilang digital na orasan. Una kong tinanggal ang mayroon nang orasan chip. Pagkatapos ay ilang pagsisiyasat sa paligid at matatagpuan ang mga koneksyon ng 7 segment, na maaaring direktang hinihimok ng microprocessor. Pagkatapos natagpuan ang 4 na mga driver ng driver na kung saan ay mga transistors na maaaring himukin ng microprocessor. At pagkatapos ay i-wire ang mga iyon.

Hakbang 2: Subukan ang Mga Koneksyon

Subukan ang Mga Koneksyon
Subukan ang Mga Koneksyon

Bilang isang eksperimento nagsulat ako ng isang BASIC na programa upang himukin ang lahat ng mga linya, upang suriin ang mga kable at sukatin ang kasalukuyang, na sa kasong ito ay 82 mA

Susunod ay upang isulat ang code upang i-scan ang mga linya.

'drive ng display ng orasan sa web

IO (7) = 0 'PMOS drive - magiging PWM balang araw

para sa y = 45 hanggang 48

IO (y) = 0 'digit na drive

para sa x = 8 hanggang 15

IO (x) = 0 'segment drive

maghintay (500)

IO (x) = 1

susunod na x

DIR (y) = 0 'huwag paganahin ang drive sa segment

susunod na y

Hakbang 3: Code upang Maipakita ang Oras at PWM upang Makontrol ang Liwanag

Code upang Ipakita ang Oras at PWM upang Makontrol ang Liwanag
Code upang Ipakita ang Oras at PWM upang Makontrol ang Liwanag
Code upang Ipakita ang Oras at PWM upang Makontrol ang Liwanag
Code upang Ipakita ang Oras at PWM upang Makontrol ang Liwanag

Susunod na idinagdag ko ang isang PMOS transistor sa supply ng kuryente sa lahat ng mga driver ng digit. Sa pamamagitan ng na hinimok ng pulso lapad na modulasyon ay makokontrol ang ningning ng display. Narito ang BASIC code upang maipakita ang oras.

'drive ng display ng orasan sa web # isama ang "LPC11U3x.bas"

'globals

hr = 0 'tukuyin ang oras

min = 0 'tukuyin ang minuto

# tukuyin ang SEG_0 & HBB00

# tukuyin ang SEG_1 at H1800

# tukuyin ang SEG_2 & HD300

# tukuyin ang SEG_3 & HD900

# tukuyin ang SEG_4 at H7800

# tukuyin ang SEG_5 & HE900

# tukuyin ang SEG_6 & HEB00

# tukuyin ang SEG_7 & H9800

# tukuyin ang SEG_8 & HFB00

# tukuyin ang SEG_9 & HF800

# tukuyin ang SEG_o & H4B00

# tukuyin ang 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}

# tukuyin ang DIG_WAIT 1

# tukuyin ang US_TIME

sub display_time (err, hr, min)

malabo hr10, hr1, min10, min1, i

#ifdef US_TIME

kung hr> 12 pagkatapos ay hr - = 12

kung hr = 0 pagkatapos hr = 12

#tapusin kung

hr10 = oras / 10

hr1 = hr MOD 10

min10 = min / 10

min1 = min MOD 10

para sa i = 0 hanggang 1

kung hr10 kung ganon

IO (45) = 0

tapusin kung

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

GPIO_CLR (0) = DIGarray (hr10)

maghintay (DIG_WAIT)

INPUT (45)

IO (46) = 0

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

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

maghintay (DIG_WAIT)

INPUT (46)

IO (47) = 0

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

GPIO_CLR (0) = DIGarray (min10)

maghintay (DIG_WAIT)

INPUT (47)

IO (48) = 0

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

GPIO_CLR (0) = DIGarray (min1)

maghintay (DIG_WAIT)

INPUT (48)

susunod na i

endub

'user TIMER1 (32 bit) upang makagambala sa bawat minuto

INTERRUPT SUB TIMER1IRQ

T1_IR = 1 'Malinaw na makagambala

min + = 1

kung min> 59 kung ganon

min = 0

hr + = 1

kung hr> 23 kung ganon

hr = 0

tapusin kung

tapusin kung

ENDSUB

SUB ON_TIMER (max_cnt, doesis)

Ang TIMER1_ISR = doesis + 1 'itinakdang pagpapaandar ng VIC - kailangan ang +1 para sa operasyon ng Thumb

SYSCON_SYSAHBCLKCTRL O = (1 << 10) 'paganahin ang TIMER1

T1_PR = 0 'walang prescale - ayusin ang halaga para sa mas tumpak na oras

VICIntEnable OR = (1 << TIMER1_IRQn) 'Paganahin ang makagambala

T1_MR0 = max_cnt-1 'i-set up ang bilang ng tugma ng ms

T1_MCR = 3 'Makagambala at I-reset sa

MR0 T1_IR = 1 'malinaw na makagambala

T1_TC = 0 'malinaw na timer counter

T1_TCR = 1 'TIMER1 Paganahin

ENDSUB

# tukuyin ang MINUT_PCLK 2880000000 '60 segundo sa 48 MHz

pangunahing:

oras = 9

min = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'PWM ilang araw - kailangang lumipat sa P0_22 ??

habang 1

display_time (0, hr, min)

loop

Hakbang 4: Gumawa ng isang Koneksyon sa Internet

Gumawa ng isang Koneksyon sa Internet
Gumawa ng isang Koneksyon sa Internet

Gumamit ng isang ESP8266 para sa isang koneksyon sa WiFi. Matapos ang poking sa paligid ng web para sa isang habang ang pinakamahusay na solusyon ay nodemcu bersyon 0.9.6 at isang mas matandang esp8266_flasher ay nagtrabaho ang pinakamahusay.

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

Pagkatapos ng isang simpleng webpage na PHP upang maghatid ng oras mula sa internet--

Coridium Time Server

<? php

$ timezone = htmlspecialchars ($ _ GET ["zone"]); kung ($ timezone == "")

$ timezone = 'America / Los_Angeles';

$ tz_object = bagong DateTimeZone ($ timezone);

$ datetime = bagong DateTime ();

$ datetime-> setTimezone ($ tz_object);

echo "oras ay-", $ datetime-> format ('H: i: s');

echo "";

echo "date is-", $ datetime-> format ('m / d / Y');

?>

Ang webpage na iyon ay kaya mong humiling

coridium.us/time.php - at makakakuha ka ng time zone ng US Pacific

o

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

Walang error sa pag-check at malamang hindi na

At basahin iyon ng Lua -

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

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

sk: on ("accept", function (sck, c) print (c) end)

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

sk: ipadala ("GET /time.php HTTP / 1.1 / r / nHost: coridium.us / r / nConnection: keep-alive / r / nAccept: * / * / r / n / r / n")

At makakabalik ka ng oras bilang

oras ay-09: 38: 49date ay-2018-31-12

Hakbang 5: Magdagdag ng BASIC Code upang Ma-parse ang Oras Mula sa Web

Magdagdag ng BASIC Code upang Ma-parse ang Oras Mula sa Web
Magdagdag ng BASIC Code upang Ma-parse ang Oras Mula sa Web

Ito ay isang subset ng buong programa ng BASIC, na ang buong programa ay maaaring matingnan sa link sa huling hakbang.

kung strstr (build_gets, "ang oras ay-") = 0 pagkatapos

hr = build_gets (8) - "0"

kung build_gets (9) = ":" kung gayon

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

min + = build_gets (11) - "0"

iba pa

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

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

min + = build_gets (12) - "0"

tapusin kung

tapusin kung

Hakbang 6: Magdagdag ng isang Light Sensor at Code upang Dim ang Display

Magdagdag ng isang Light Sensor at Code upang Dim ang Display
Magdagdag ng isang Light Sensor at Code upang Dim ang Display
Magdagdag ng isang Light Sensor at Code upang Dim ang Display
Magdagdag ng isang Light Sensor at Code upang Dim ang Display
Magdagdag ng isang Light Sensor at Code upang Dim ang Display
Magdagdag ng isang Light Sensor at Code upang Dim ang Display

Ang isang photo transistor ay idinagdag upang maunawaan ang paligid na ilaw sa silid. Nang wala ito ang display ay sapat na maliwanag upang gisingin ang patay (ako) sa gabi.

Nabasa ang analog boltahe ng output ng photo transistor at ang modulate ng lapad ng pulso ay nagtatakda ng pangkalahatang ningning ng display.

Hakbang 7: Button Up ang Clock at Simulang Gamitin Ito

Button Up ang Clock at Simulang Gamitin Ito
Button Up ang Clock at Simulang Gamitin Ito

Ipinapakita ng panghuling bersyon ang oras, at bandang 3 AM lumabas ito sa web upang basahin ang kasalukuyang oras. Humahawak din ito ng oras sa pag-save ng ilaw ng araw.

Ang motibasyon para sa proyektong ito ay ang mga pagkabigo sa kuryente na nararanasan natin dito sa mga bundok at ang pangangailangan na i-reset ang mga orasan o palitan ang mga baterya upang mabuhay sila.

Ito ay naging isang mabilis na pangkalahatang ideya ng proyekto.

Mga buong detalye ng orasan na nakakonekta sa DIY web na ito.

Inirerekumendang: