Съдържание:
- Консумативи
- Стъпка 1: Свържете цифрово устройство и сегментирано устройство за мултиплексиран дисплей
- Стъпка 2: Тествайте връзките
- Стъпка 3: Код за показване на времето и ШИМ за контрол на яркостта
- Стъпка 4: Направете интернет връзка
- Стъпка 5: Добавете ОСНОВЕН код, за да анализирате времето от мрежата
- Стъпка 6: Добавете сензор за светлина и код, за да затъмните дисплея
- Стъпка 7: Копнете часовника и започнете да го използвате
Видео: Уеб свързан цифров часовник: 7 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Намерих цифров часовник за 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, свързан с интернет.
Препоръчано:
Как да направите аналогов часовник и цифров часовник с LED лента с помощта на Arduino: 3 стъпки
Как да направите аналогов часовник и цифров часовник с LED лента с помощта на Arduino: Днес ще направим аналогов часовник & Цифров часовник с Led Strip и MAX7219 Dot модул с Arduino, Той ще коригира времето с местната часова зона. Аналоговият часовник може да използва по -дълга LED лента, така че да може да бъде окачен на стената, за да се превърне в произведение на изкуството
ESP8266 Мрежов часовник без RTC - Nodemcu NTP Часовник Няма RTC - ИНТЕРНЕТЕН ЧАСОВНИК ПРОЕКТ: 4 стъпки
ESP8266 Мрежов часовник без RTC | Nodemcu NTP Часовник Няма RTC | ИНТЕРНЕТЕН ЧАСОВНИК ПРОЕКТ: В проекта ще се прави часовник проект без RTC, ще отнеме време от интернет с помощта на wifi и ще го покаже на дисплея st7735
Свързан нощен часовник за деца: 12 стъпки
Свързан нощен часовник за деца: Следвайки тези инструкции, ще можете да изградите часовник с активирано движение и ще показва дата, час и съответното събитие за деня. Той ще показва нощен режим, когато е време за сън и когато децата се събудят, те могат бързо да си спомнят какво
Свързан към мрежата SMART LED анимационен часовник с уеб базиран контролен панел, синхронизиран сървър на времето: 11 стъпки (със снимки)
Свързан с мрежата SMART LED анимационен часовник С уеб-базиран контролен панел, синхронизиран сървър на времето: Историята на този часовник датира от далечен път-повече от 30 години. Баща ми беше пионер в тази идея, когато бях само на 10 години, много преди революцията на светодиодите - тогава, когато светодиодите бяха 1/1000 от яркостта на техния ослепяващ блясък. Истина
Направете уеб свързан робот (за около $ 500) (използвайки Arduino и нетбук): 6 стъпки (със снимки)
Направете уеб свързан робот (за около $ 500) (използвайки Arduino и нетбук): Тази инструкция ще ви покаже как да създадете свой собствен уеб свързан робот (използвайки микроконтролер Arduino и компютър с Asus eee). Защо искате уеб Свързан робот? Разбира се, за да играете. Карайте робота си от цялата стая или през броя