Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Podłącz napęd cyfrowy i napęd segmentowy dla multipleksowanego wyświetlacza
- Krok 2: Przetestuj połączenia
- Krok 3: Kod do wyświetlania czasu i PWM do sterowania jasnością
- Krok 4: Nawiąż połączenie z Internetem
- Krok 5: Dodaj kod BASIC, aby analizować czas z sieci
- Krok 6: Dodaj czujnik światła i kod, aby przyciemnić wyświetlacz
- Krok 7: Zaciśnij zegar i zacznij go używać
Wideo: Zegar cyfrowy podłączony do sieci: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Znalazłem zegar cyfrowy za 10 USD w Amazon. Teraz dostosuj go, aby uzyskać czas z Internetu.
Kieszonkowe dzieci
ARM Stamp programowalny w BASIC dostępny tutaj
Krok 1: Podłącz napęd cyfrowy i napęd segmentowy dla multipleksowanego wyświetlacza
Zacząłem od taniego zegara cyfrowego z dużej liczby. Najpierw usunąłem istniejący układ zegara. Następnie wykonałem sondowanie i zlokalizowałem 7-segmentowe połączenia, które mogą być sterowane bezpośrednio przez mikroprocesor. Następnie znaleziono 4-cyfrowe sterowniki, które były tranzystorami, którymi może sterować mikroprocesor. A potem podłączyłem je.
Krok 2: Przetestuj połączenia
Jako eksperyment napisałem program BASIC do wysterowania wszystkich linii, sprawdzenia okablowania i pomiaru prądu, który w tym przypadku wynosił 82 mA
Następnym krokiem było napisanie kodu do skanowania linii.
„Dysk zegara internetowego”
IO(7)=0 'Napęd PMOS - kiedyś będzie PWM
dla y=45 do 48
IO(y)=0 'napęd cyfr
dla x=8 do 15
IO(x)=0 'napęd segmentu
czekaj(500)
IO(x)=1
następny x
DIR(y)=0 ' wyłącz napęd w segmencie
następny ty
Krok 3: Kod do wyświetlania czasu i PWM do sterowania jasnością
Następnie dodałem tranzystor PMOS w zasilaczu do wszystkich sterowników cyfrowych. Dzięki temu sterowana modulacją szerokości impulsu będzie sterować jasnością wyświetlacza. Oto kod BASIC do wyświetlania czasu.
' dysk wyświetlania zegara internetowego #include "LPC11U3x.bas"
„globalne”
hr = 0 ' zdefiniuj godzinę
min = 0 'zdefiniuj minutę
#zdefiniuj SEG_0 &HBB00
#define SEG_1 &H1800
#zdefiniuj SEG_2 &HD300
#zdefiniuj SEG_3 &HD900
#zdefiniuj SEG_4 &H7800
#zdefiniuj SEG_5 &HE900
#define SEG_6 &HEB00
#zdefiniuj SEG_7 &H9800
#zdefiniuj SEG_8 &HFB00
#zdefiniuj SEG_9 &HF800
#zdefiniuj SEG_o &H4B00
#zdefiniuj 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
#definiuj US_TIME
sub display_time (błąd, godz., min)
dim hr10, hr1, min10, min1, i
#ifdef US_TIME
jeśli hr > 12 to hr -= 12
jeśli hr = 0 to hr = 12
#endif
godz.10 = godz. / 10
godz1 = godz MOD 10
min10 = min / 10
min1 = min MOD 10
dla i=0 do 1
jeśli hr10 to
IO(45) = 0
endif
GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DIGarray(hr10)
GPIO_CLR(0) = DIGarray(hr10)
czekaj (DIG_WAIT)
WEJŚCIE(45)
IO(46) = 0
GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DIGarray(hr1) + JEŻELI(i, &H400, 0)
GPIO_CLR(0) = DIGarray(hr1) + JEŻELI(i, &H400, 0)
czekaj (DIG_WAIT)
WEJŚCIE(46)
IO(47) = 0
GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DIGarray(min10)
GPIO_CLR(0) = DIGarray(min10)
czekaj (DIG_WAIT)
WEJŚCIE(47)
IO(48) = 0
GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DIGarray(min1)
GPIO_CLR(0) = DIGarray(min1)
czekaj (DIG_WAIT)
WEJŚCIE(48)
następny ja
napis końcowy
' użytkownik TIMER1 (32 bity) do przerywania co minutę
PRZERWANIE CZASU PODCZASOWEGO1IRQ
T1_IR = 1 'Skasuj przerwanie
min += 1
jeśli min > 59 to
min = 0
godz. += 1
jeśli godz. > 23 to
godz. = 0
endif
endif
NAPIS KOŃCOWY
SUB ON_TIMER (max_cnt, dothis)
TIMER1_ISR = dothis + 1 'ustaw funkcję VIC - potrzebujesz +1 dla operacji kciuka
SYSCON_SYSAHBCLKCTRL OR= (1<<10) 'włącz TIMER1
T1_PR = 0 'brak przeskalowania - dostosuje wartość, aby uzyskać dokładniejszy czas
VICIntEnable OR= (1<<TIMER1_IRQn) 'Włącz przerwanie
T1_MR0 = max_cnt-1 'ustaw liczbę dopasowania ms
T1_MCR = 3 'Przerwanie i zresetowanie włączone
MR0 T1_IR = 1 'wyczyść przerwanie
T1_TC = 0 'wyczyść licznik czasu
T1_TCR = 1 ' TIMER1 włączony
NAPIS KOŃCOWY
#define MINUT_PCLK 2880000000 ' 60 sekund przy 48 MHz
Główny:
godz. = 9
min = 33
ON_TIMER(MINUT_PCLK, ADRES TIMER1IRQ)
IO(7) = 0' PWM pewnego dnia -- trzeba przejść do P0_22 ??
podczas gdy 1
display_time(0, godz., min)
pętla
Krok 4: Nawiąż połączenie z Internetem
Użyj ESP8266 do połączenia Wi-Fi. Po grzebaniu w sieci najlepszym rozwiązaniem okazała się wersja nodemcu 0.9.6, a starsza wersja esp8266_flasher działała najlepiej.
www.electrodragon.com/w/File:Nodemcu_20150704_firmware.zip
Następnie prosta strona internetowa PHP do udostępniania czasu z Internetu…
Serwer czasu Coridium
<?php
$timezone = htmlspecialchars($_GET["strefa"]); if ($strefa czasowa == "")
$strefa czasowa = 'Ameryka/Los_Angeles';
$tz_object = new DateTimeZone($timezone);
$dataczas = nowa DataCzas();
$datetime->setTimezone($tz_object);
echo "czas to-", $datetime->format('H:i:s');
Echo "";
echo "data to-", $datetime->format('m/d/Y');
?>
Ta strona internetowa jest po to, abyś mógł poprosić
coridium.us/time.php -- i masz strefę czasową US Pacific
lub
coridium.us/time.php?zone=Europa/Londyn
Brak sprawdzania błędów i najprawdopodobniej nigdy nie będzie
I Lua, żeby to przeczytać…
wifi.sta.config("twoje_SSID", "twoje_HASŁO")> wifi.sta.connect()…
sk=net.createConnection(net. TCP, 0)
sk:on("odbierz", function(sck, c) print(c) end)
sk:connect(80, "coridium.us")
sk:send("GET /time.php HTTP/1.1\r\nHost: coridium.us\r\nPołączenie: keep-alive\r\nAkceptuj: */*\r\n\r\n")
I wracasz do czasu, gdy
czas to 09:38:49data to 31.12.2018
Krok 5: Dodaj kod BASIC, aby analizować czas z sieci
Jest to podzbiór pełnego programu BASIC, który można wyświetlić pod linkiem w ostatnim kroku.
if strstr(build_gets, "czas to-") = 0 wtedy
hr = build_gets(8) - "0"
if build_gets(9) = ":" to
min = (build_gets(10) - "0")*10
min += build_gets(11) - "0"
w przeciwnym razie
hr = hr * 10 + build_gets(9) - "0"
min = (build_gets(11) - "0")*10
min += build_gets(12) - "0"
endif
endif
Krok 6: Dodaj czujnik światła i kod, aby przyciemnić wyświetlacz
Dodano fototranzystor, aby wyczuć światło otoczenia w pomieszczeniu. Bez niego wyświetlacz jest wystarczająco jasny, aby obudzić zmarłych (mnie) w nocy.
Odczytywane jest napięcie analogowe wyjścia fototranzystora, a modulacja szerokości impulsu ustawia ogólną jasność wyświetlacza.
Krok 7: Zaciśnij zegar i zacznij go używać
Ostateczna wersja wyświetla czas, a około 3 nad ranem wychodzi do sieci, aby odczytać aktualny czas. Dotyczy to również czasu oszczędzania światła dziennego.
Motywacją do tego projektu były przerwy w dostawie prądu, których doświadczamy tutaj w górach i konieczność resetowania zegarów lub wymiany baterii, aby utrzymać je przy życiu.
To był krótki przegląd projektu.
Pełne informacje na temat tego DIY zegara podłączonego do Internetu.
Zalecana:
Zegar cyfrowy LED Dot Matrix - ESP Matrix Aplikacja na Androida: 14 kroków
Cyfrowy zegar LED Dot Matrix - aplikacja ESP Matrix na Androida: Ten artykuł jest dumnie sponsorowany przez PCBWAY.PCBWAY tworzy wysokiej jakości prototypowe płytki PCB dla ludzi na całym świecie. Wypróbuj to dla siebie i zdobądź 10 płytek PCB za jedyne 5 USD w PCBWAY o bardzo dobrej jakości, dzięki PCBWAY. Płyta ESP Matrix Board, którą opracowałem
Jak zrobić zegar analogowy i zegar cyfrowy z paskiem LED za pomocą Arduino: 3 kroki
Jak zrobić zegar analogowy i zegar cyfrowy z paskiem LED za pomocą Arduino: Dzisiaj zrobimy zegar analogowy i amp; Zegar cyfrowy z paskiem Led i modułem MAX7219 Dot z Arduino. Koryguje czas z lokalną strefą czasową. Zegar analogowy może wykorzystywać dłuższą taśmę LED, dzięki czemu można go zawiesić na ścianie, aby stać się grafiką
ESP8266 Zegar sieciowy bez zegara RTC - Nodemcu NTP Zegar bez RTC - PROJEKT ZEGAR INTERNETOWY: 4 kroki
ESP8266 Zegar sieciowy bez zegara RTC | Nodemcu NTP Zegar bez RTC | PROJEKT ZEGARA INTERNETOWEGO: W projekcie będzie wykonywany projekt zegara bez RTC, będzie pobierał czas z internetu za pomocą wifi i wyświetli go na wyświetlaczu st7735
Podłączony zegar nocny dla dzieci: 12 kroków
Podłączony zegar nocny dla dzieci: Postępując zgodnie z tymi instrukcjami, będziesz mógł zbudować zegar, który jest aktywowany ruchem i będzie pokazywał datę, godzinę i odpowiednie wydarzenie dnia. Pokaże tryb nocny, kiedy nadejdzie pora snu, a kiedy dzieci się obudzą, szybko zapamiętają, co
Zegar ESP32 korzystający z WiFi, ESP-NOW i sieci komórkowej: 4 kroki
Zegar ESP32 korzystający z WiFi, ESP-NOW i Cellular: Jest to zegar Wi-Fi oparty na ESP32, który stworzyłem na zawody bezprzewodowe. Postanowiłem, że ten zegar będzie nadmiernie bezprzewodowy, więc używa trzech różnych form komunikacji bezprzewodowej (WiFi, ESP-NOW i Cellular). Telefon jest podłączony do wieży komórkowej i