Съдържание:

Уеб свързан цифров часовник: 7 стъпки
Уеб свързан цифров часовник: 7 стъпки

Видео: Уеб свързан цифров часовник: 7 стъпки

Видео: Уеб свързан цифров часовник: 7 стъпки
Видео: Часовникът от APPLE, който си заслужава парите! 2024, Ноември
Anonim
Уеб свързан цифров часовник
Уеб свързан цифров часовник

Намерих цифров часовник за 10 долара в Amazon. Сега, за да го персонализирате, за да получавате време от интернет.

Консумативи

ARM Stamp програмируем в BASIC, достъпен тук

Стъпка 1: Свържете цифрово устройство и сегментирано устройство за мултиплексиран дисплей

Свържете цифрово устройство и сегментно устройство за мултиплексиран дисплей
Свържете цифрово устройство и сегментно устройство за мултиплексиран дисплей

Започнах с евтин цифров часовник с големи числа. Първо премахнах съществуващия часовник чип. След това направи известно проучване и разположи 7 -сегментните връзки, които могат да бъдат задвижвани директно от микропроцесора. След това намерих 4 -цифрените драйвери, които бяха транзистори, които микропроцесорът може да управлява. И след това ги свърза.

Стъпка 2: Тествайте връзките

Тествайте връзките
Тествайте връзките

Като експеримент написах BASIC програма за задвижване на всички линии, за проверка на окабеляването и измерване на тока, който в този случай беше 82 mA

Следваше да напиша кода, за да сканирам редовете.

'устройство за показване на уеб часовник

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 кода за показване на часа.

'устройство за показване на уеб часовник #include "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

sub display_time (грешка, час, мин)

dim hr10, hr1, min10, min1, i

#ifdef US_TIME

ако hr> 12, тогава hr -= 12

ако hr = 0, тогава hr = 12

#endif

hr10 = hr / 10

hr1 = hr MOD 10

min10 = min / 10

min1 = min MOD 10

за i = 0 до 1

ако hr10 тогава

IO (45) = 0

endif

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

GPIO_CLR (0) = DIGarray (hr10)

изчакайте (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 (min1)

изчакайте (DIG_WAIT)

ВХОД (48)

следващ i

крайник

'потребител TIMER1 (32 бита), за да прекъсва всяка минута

ПРЕКРАТЯВАНЕ НА SUB TIMER1IRQ

T1_IR = 1 'Изчистване на прекъсването

min += 1

ако min> 59 тогава

min = 0

hr += 1

ако hr> 23 тогава

hr = 0

endif

endif

ENDSUB

SUB ON_TIMER (max_cnt, това)

TIMER1_ISR = това + 1 'задава функцията на VIC - трябва +1 за операцията Thumb

SYSCON_SYSAHBCLKCTRL ИЛИ = (1 << 10) 'активиране на TIMER1

T1_PR = 0 'без предварителна скала - ще коригира стойността за по -точно време

VICIntEnable ИЛИ = (1 << TIMER1_IRQn) 'Активиране на прекъсване

T1_MR0 = max_cnt-1 'настроен съвпадащ брой на ms

T1_MCR = 3 'Прекъсване и нулиране включено

MR0 T1_IR = 1 'ясно прекъсване

T1_TC = 0 'изчистване на брояча на таймера

T1_TCR = 1 'TIMER1 Активиране

ENDSUB

#define MINUT_PCLK 2880000000 '60 секунди при 48 MHz

основно:

hr = 9

мин = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'PWM някой ден - трябва да преминете към P0_22 ??

докато 1

display_time (0, час, мин)

цикъл

Стъпка 4: Направете интернет връзка

Направете интернет връзка
Направете интернет връзка

Използвайте ESP8266 за WiFi връзка. След като се поразрових из мрежата известно време най -доброто решение беше nodemcu версия 0.9.6 и по -стара esp8266_flasher работи най -добре.

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

След това проста PHP уеб страница, която да обслужва време от интернет-

Coridium Time Server

<? php

$ timezone = htmlspecialchars ($ _ GET ["зона"]); ако ($ timezone == "")

$ timezone = 'America/Los_Angeles';

$ tz_object = нов DateTimeZone ($ часова зона);

$ datetime = нов DateTime ();

$ datetime-> setTimezone ($ tz_object);

ехо "часът е-", $ datetime-> формат ('H: i: s');

ехо "";

ехо "дата е-", $ 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: connect (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 дата е-31.12.2018

Стъпка 5: Добавете ОСНОВЕН код, за да анализирате времето от мрежата

Добавете ОСНОВЕН код, за да анализирате времето от мрежата
Добавете ОСНОВЕН код, за да анализирате времето от мрежата

Това е подмножество от пълната BASIC програма, която може да бъде видяна на връзката в последната стъпка.

ако strstr (build_gets, "времето е-") = 0 тогава

hr = build_gets (8) - "0"

ако build_gets (9) = ":" тогава

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

min += build_gets (11) - "0"

иначе

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

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

min += build_gets (12) - "0"

endif

endif

Стъпка 6: Добавете сензор за светлина и код, за да затъмните дисплея

Добавете сензор за светлина и код, за да затъмните дисплея
Добавете сензор за светлина и код, за да затъмните дисплея
Добавете сензор за светлина и код, за да затъмните дисплея
Добавете сензор за светлина и код, за да затъмните дисплея
Добавете сензор за светлина и код, за да затъмните дисплея
Добавете сензор за светлина и код, за да затъмните дисплея

Добавен е фототранзистор за усещане на околната светлина в стаята. Без него дисплеят е достатъчно ярък, за да събуди мъртвите (мен) през нощта.

Аналоговото напрежение на изхода на фототранзистора се отчита и широчинно -импулсната модулация задава общата яркост на дисплея.

Стъпка 7: Копнете часовника и започнете да го използвате

Копнете часовника и започнете да го използвате
Копнете часовника и започнете да го използвате

Последната версия показва часа и около 3 часа сутринта излиза в мрежата, за да прочете текущото време. Това също така управлява дневното време за пестене на светлина.

Мотивацията за този проект беше прекъсването на захранването, което преживяваме тук, в планината, и необходимостта от нулиране на часовниците или подмяна на батерии, за да ги поддържаме живи.

Това е кратък преглед на проекта.

Пълни подробности за този часовник DIY, свързан с интернет.

Препоръчано: