Агуулгын хүснэгт:

Вэбэд холбогдсон дижитал цаг: 7 алхам
Вэбэд холбогдсон дижитал цаг: 7 алхам

Видео: Вэбэд холбогдсон дижитал цаг: 7 алхам

Видео: Вэбэд холбогдсон дижитал цаг: 7 алхам
Видео: РАЗДАЕТ WIFI СЛЕДИТ ЗА ЧЕЛОВЕКОМ 4G камера видеонаблюдения 2024, Арваннэгдүгээр
Anonim
Вэбд холбогдсон дижитал цаг
Вэбд холбогдсон дижитал цаг

Амазоноос 10 долларын үнэтэй дижитал цаг олжээ. Одоо интернэтээс цаг авахын тулд үүнийг өөрчилж болно.

Хангамж

ARM Stamp програмыг BASIC хэл дээр эндээс авах боломжтой

Алхам 1: Дижитал хөтөч ба сегментийн драйверийг олон талт дэлгэцтэй холбоно уу

Multiplexed Display -ийн Digit Drive болон Segment Drive -ийг холбоно уу
Multiplexed Display -ийн Digit Drive болон Segment Drive -ийг холбоно уу

Би тавиур дээрээс хямд үнэтэй олон тооны дижитал цагнаас эхлэв. Эхлээд би одоо байгаа цагны чипийг арилгасан. Дараа нь бага зэрэг судалж үзээд микропроцессороор шууд удирддаг 7 сегментийн холболтыг олж илрүүлэв. Дараа нь микропроцессор жолоодох боломжтой транзистор болох 4 оронтой драйверуудыг олов. Тэгээд тэднийг утсаар холбосон.

Алхам 2: Холболтыг шалгана уу

Холболтыг туршиж үзээрэй
Холболтыг туршиж үзээрэй

Туршилтын хувьд би бүх шугамыг жолоодох, утсыг шалгах, гүйдлийг хэмжих BASIC програм бичсэн бөгөөд энэ тохиолдолд 82 мА байв.

Дараагийнх нь мөрүүдийг скан хийх код бичих явдал байв.

'вэб цагийн дэлгэц хөтөч

IO (7) = 0 'PMOS хөтөч - хэзээ нэгэн цагт ХБХ болно

y = 45 -аас 48 хүртэл

IO (y) = 0 'оронтой хөтөч

x = 8 -аас 15 хүртэл

IO (x) = 0 'сегментийн хөтөч

хүлээх (500)

IO (x) = 1

дараагийн x

DIR (y) = 0 'сегмент дээрх хөтчийг идэвхгүй болгох

дараагийн y

Алхам 3: Цагийг харуулах код, Гэрэлтүүлгийг хянах ХОУХХ

Цагийг харуулах код, тод байдлыг хянах ХОУХН
Цагийг харуулах код, тод байдлыг хянах ХОУХН
Цагийг харуулах код, тод байдлыг хянах ХОУХН
Цагийг харуулах код, тод байдлыг хянах ХОУХН

Дараа нь би бүх оронтой драйверуудад цахилгаан хангамжид PMOS транзистор нэмсэн. Үүний тусламжтайгаар импульсийн өргөний модуляци нь дэлгэцийн гэрлийг хянах болно. Цагийг харуулах BASIC код энд байна.

'вэб цагийн дэлгэц хөтөч #"LPC11U3x.bas" -ийг оруулна уу

'дэлхийн

hr = 0 'тодорхойлох цаг

min = 0 'минут тодорхойлох

#SEG_0 & HBB00 -ийг тодорхойлно уу

#SEG_1 & H1800 -ийг тодорхойлно уу

#SEG_2 & HD300 -ийг тодорхойлно уу

#SEG_3 & HD900 -ийг тодорхойлох

#SEG_4 & H7800 -ийг тодорхойлно уу

#SEG_5 & HE900 -ийг тодорхойлно уу

#SEG_6 & HEB00 -ийг тодорхойлно уу

#SEG_7 & H9800 -ийг тодорхойлно уу

#SEG_8 & HFB00 -ийг тодорхойлно уу

#SEG_9 & HF800 -ийг тодорхойлно уу

#SEG_o & H4B00 -ийг тодорхойлно уу

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}

#тодорхойлох DIG_WAIT 1

US_TIME -ийг #тодорхойлно уу

дэд дэлгэцийн цаг (алдаа, цаг, мин)

бүдэг hr10, hr1, min10, min1, i

#ifdef US_TIME

Хэрэв цаг> 12 бол цаг -= 12 болно

Хэрэв hr = 0 бол hr = 12 болно

#endif

цаг 10 = цаг / 10

hr1 = hr MOD 10

мин10 = мин / 10

min1 = min MOD 10

i = 0 -ээс 1 хүртэл

хэрэв 10 цаг бол

IO (45) = 0

эндиф

GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (цаг 10)

GPIO_CLR (0) = DIGarray (цаг 10)

хүлээх (DIG_WAIT)

Оролт (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)

хүлээх (DIG_WAIT)

Оролт (46)

IO (47) = 0

GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (мин10)

GPIO_CLR (0) = DIGarray (мин10)

хүлээх (DIG_WAIT)

Оролт (47)

IO (48) = 0

GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (мин1)

GPIO_CLR (0) = DIGarray (мин1)

хүлээх (DIG_WAIT)

Оролт (48)

дараагийн i

төгсгөл

минут тутамд тасалдаг хэрэглэгч TIMER1 (32 бит)

INTERRUPT SUB TIMER1IRQ

T1_IR = 1 'Тасалдлыг арилгах

мин += 1

хэрэв мин> 59 бол

мин = 0

цаг += 1

хэрэв цаг> 23 бол

цаг = 0

эндиф

эндиф

Төгсгөл

SUB ON_TIMER (max_cnt, dothis)

TIMER1_ISR = dothis + 1 'VIC -ийн функц - эрхий хурууны ажилд +1 хэрэгтэй

SYSCON_SYSAHBCLKCTRL OR = (1 << 10) 'TIMER1 -ийг идэвхжүүлэх

T1_PR = 0 'урьдчилсан үнэлгээ байхгүй - утгыг илүү нарийвчлалтай тохируулах болно

VICIntEnable OR = (1 << TIMER1_IRQn) 'Тасалдлыг идэвхжүүлэх

T1_MR0 = max_cnt-1 'тохирох мс тоог тохируулна

T1_MCR = 3 'Таслах ба дахин тохируулах

MR0 T1_IR = 1 'тасалдлыг арилгах

T1_TC = 0 'тодорхой таймер тоолуур

T1_TCR = 1 'TIMER1 идэвхжүүлэх

Төгсгөл

#тодорхойлох MINUT_PCLK 2880000000 '48 МГц давтамжтай 60 секунд

үндсэн:

цаг = 9

мин = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'ХБХ хэзээ нэгэн цагт - P0_22 руу шилжих шаардлагатай байна уу?

байхад 1

display_time (0, цаг, мин)

гогцоо

Алхам 4: Интернет холболт хийх

Интернет холболт хийх
Интернет холболт хийх

WiFi холболт хийхийн тулд ESP8266 ашиглана уу. Хэсэг хугацааны дараа вэбийг тойрсоны дараа хамгийн сайн шийдэл бол nodemcu 0.9.6 хувилбар байсан бөгөөд хуучин esp8266_flasher хамгийн сайн ажилласан.

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

Дараа нь интернетээс цаг зарцуулах энгийн PHP вэб хуудас.

Coridium цагийн сервер

<? php

$ timezone = htmlspecialchars ($ _ GET ["zone"]); хэрэв ($ цагийн бүс == "")

$ timezone = 'Америк/Los_Angeles';

$ tz_object = шинэ DateTimeZone ($ цагийн бүс);

$ datetime = шинэ DateTime ();

$ datetime-> setTimezone ($ tz_object);

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

цуурай "";

echo "огноо бол-", $ datetime-> формат ('m/d/Y');

?>

Энэ вэб хуудас нь та хүсэлт гаргаж болно

coridium.us/time.php - мөн та АНУ -ын Номхон далайн цагийн бүсийг сайн мэдэх болно

эсвэл

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

Алдаа шалгахгүй, магадгүй хэзээ ч болохгүй

Үүнийг уншсан Луа -

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

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

sk: on ("хүлээн авах", функц (sck, c) хэвлэх (c) төгсгөл)

sk: холбох (80, "coridium.us")

sk: send ("GET /time.php HTTP/1.1 / r / nHost: coridium.us / r / nХолболт: амьд байлгах / r / nХүлээн авах: */ *\ r / n / r / n")

Мөн та цаг хугацааг буцааж авдаг

цаг нь-09: 38: 49, огноо-2018-31-12

Алхам 5: Вэбээс цагийг задлан шинжлэхийн тулд BASIC кодыг нэмнэ үү

Вэбээс цагийг шинжлэхийн тулд BASIC кодыг нэмнэ үү
Вэбээс цагийг шинжлэхийн тулд BASIC кодыг нэмнэ үү

Энэ бол BASIC програмын бүрэн бүрэлдэхүүн хэсэг бөгөөд бүрэн програмыг эцсийн алхам дахь линкээс үзэх боломжтой.

Хэрэв strstr (build_gets, "time is-") = 0 бол

hr = build_gets (8) - "0"

хэрэв build_gets (9) = ":" бол

мин = (build_gets (10) - "0")*10

мин += бүтээх_багц (11) - "0"

өөр

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

мин = (build_gets (11) - "0")*10

мин += бүтээх_багц (12) - "0"

эндиф

эндиф

Алхам 6: Дэлгэцийг бүдэгрүүлэхийн тулд гэрэл мэдрэгч ба кодыг нэмнэ үү

Дэлгэцийг бүдэгрүүлэх хэсэгт гэрэл мэдрэгч ба кодыг нэмнэ үү
Дэлгэцийг бүдэгрүүлэх хэсэгт гэрэл мэдрэгч ба кодыг нэмнэ үү
Дэлгэцийг бүдэгрүүлэх хэсэгт гэрэл мэдрэгч ба кодыг нэмнэ үү
Дэлгэцийг бүдэгрүүлэх хэсэгт гэрэл мэдрэгч ба кодыг нэмнэ үү
Дэлгэцийг бүдэгрүүлэх хэсэгт гэрэл мэдрэгч ба кодыг нэмнэ үү
Дэлгэцийг бүдэгрүүлэх хэсэгт гэрэл мэдрэгч ба кодыг нэмнэ үү

Өрөөн доторх гэрлийг мэдрэхийн тулд гэрэл зургийн транзистор нэмсэн. Үүнгүйгээр дэлгэц нь шөнийн цагаар нас барагсдыг (намайг) сэрээх хангалттай гэрэл гэгээтэй байдаг.

Фото транзисторын гаралтын аналог хүчдэлийг уншиж, импульсийн өргөний модуляц нь дэлгэцийн нийт гэрэлтүүлгийг тохируулдаг.

Алхам 7: Цагны товчлуурыг дарж, үүнийг ашиглаж эхлээрэй

Цагийн товчлуурыг дарж, үүнийг ашиглаж эхлээрэй
Цагийн товчлуурыг дарж, үүнийг ашиглаж эхлээрэй

Эцсийн хувилбар нь цагийг харуулдаг бөгөөд өглөөний 3 цагийн орчимд тухайн цагийг уншихаар вэб рүү гардаг. Энэ нь өдрийн гэрэл хэмнэх цагийг зохицуулдаг.

Энэхүү төслийн сэдэл нь ууланд цахилгаан тасарсан, цагийг шинэчилж, амьд байлгахын тулд батерейг солих шаардлагатай болсон явдал байв.

Энэ бол төслийн талаархи ерөнхий тойм юм.

Энэхүү DIY вэб холболттой цагийн талаархи дэлгэрэнгүй мэдээлэл.

Зөвлөмж болгож буй: