Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Tilslut Digit Drive og Segment Drive til Multiplexed Display
- Trin 2: Test forbindelserne
- Trin 3: Kode til visningstid og PWM til styring af lysstyrke
- Trin 4: Opret en internetforbindelse
- Trin 5: Tilføj BASIC -kode for at analysere tiden fra internettet
- Trin 6: Tilføj en lyssensor og kode for at dæmpe skærmen
- Trin 7: Knap uret, og begynd at bruge det
Video: Webforbundet digitalt ur: 7 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Fandt et digitalt ur på $ 10 på Amazon. Nu for at tilpasse det for at få tiden fra internettet.
Forbrugsvarer
ARM Stamp programmerbar i BASIC tilgængelig her
Trin 1: Tilslut Digit Drive og Segment Drive til Multiplexed Display
Jeg startede med et billigt stort nummer digitalt ur. Først fjernede jeg den eksisterende urchip. Derefter foretog nogle sondering rundt og fandt de 7 segmentforbindelser, som kan drives direkte af mikroprocessoren. Derefter fandt de firecifrede drivere, som var transistorer, som mikroprocessoren kan drive. Og derefter kablet dem op.
Trin 2: Test forbindelserne
Som et eksperiment skrev jeg et BASIC -program til at køre alle linjer, for at kontrollere ledningerne og måle strømmen, som i dette tilfælde var 82 mA
Næste var at skrive koden for at scanne linjerne.
'webur displaydrev
IO (7) = 0 'PMOS -drev - vil være PWM en dag
for y = 45 til 48
IO (y) = 0 'cifret drev
for x = 8 til 15
IO (x) = 0 'segmentdrev
vent (500)
IO (x) = 1
næste x
DIR (y) = 0 'deaktiver drev på segment
næste y
Trin 3: Kode til visningstid og PWM til styring af lysstyrke
Dernæst tilføjede jeg en PMOS -transistor i strømforsyningen til alle cifferdriverne. Med det drevet af pulsbreddemodulation styrer skærmens lysstyrke. Her er BASIC -koden til visning af tiden.
'web clock display drive #include "LPC11U3x.bas"
'globaler
hr = 0 'definer time
min = 0 'definer minut
#define SEG_0 & HBB00
#define SEG_1 & H1800
#define SEG_2 & HD300
#define SEG_3 & HD900
#define SEG_4 & H7800
#define SEG_5 & HE900
#define SEG_6 & HEB00
#define SEG_7 & H9800
#define SEG_8 & HFB00
#define SEG_9 & HF800
#define SEG_o & H4B00
#define 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
#definer US_TIME
sub display_time (fejl, t, min)
dæmpet hr10, hr1, min10, min1, i
#ifdef US_TIME
hvis hr> 12 så hr -= 12
hvis hr = 0 så hr = 12
#Afslut Hvis
hr10 = hr / 10
hr1 = hr MOD 10
min10 = min / 10
min1 = min MOD 10
for i = 0 til 1
hvis hr10 så
IO (45) = 0
Afslut Hvis
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (hr10)
GPIO_CLR (0) = DIGarray (hr10)
vent (DIG_WAIT)
INDGANG (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)
vent (DIG_WAIT)
INDGANG (46)
IO (47) = 0
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (min10)
GPIO_CLR (0) = DIGarray (min10)
vent (DIG_WAIT)
INDGANG (47)
IO (48) = 0
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (min1)
GPIO_CLR (0) = DIGarray (min1)
vent (DIG_WAIT)
INDGANG (48)
næste i
endesub
'bruger TIMER1 (32 bit) for at afbryde hvert minut
AFBRYT SUB TIMER1IRQ
T1_IR = 1 'Ryd afbrydelse
min += 1
hvis min> 59 derefter
min = 0
time += 1
hvis hr> 23 derefter
time = 0
Afslut Hvis
Afslut Hvis
ENDSUB
SUB ON_TIMER (max_cnt, gør dette)
TIMER1_ISR = denne + 1 'indstillede funktion for VIC - har brug for +1 for tommelfingerbetjening
SYSCON_SYSAHBCLKCTRL ELLER = (1 << 10) 'aktiver TIMER1
T1_PR = 0 'ingen forudskala - justerer værdien for mere præcis tid
VICIntEnable OR = (1 << TIMER1_IRQn) 'Aktiver afbrydelse
T1_MR0 = max_cnt-1 'opsætning match antal ms
T1_MCR = 3 'Afbryd og nulstil
MR0 T1_IR = 1 'klar afbrydelse
T1_TC = 0 'clear timer counter
T1_TCR = 1 'TIMER1 Aktiver
ENDSUB
#define MINUT_PCLK 2880000000 '60 sekunder ved 48 MHz
vigtigste:
time = 9
min = 33
ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)
IO (7) = 0 'PWM en dag - skal du flytte til P0_22 ??
mens 1
display_time (0, hr, min)
sløjfe
Trin 4: Opret en internetforbindelse
Brug en ESP8266 til en WiFi -forbindelse. Efter at have stukket rundt på nettet et stykke tid var den bedste løsning nodemcu version 0.9.6 og en ældre esp8266_flasher fungerede bedst.
www.electrodragon.com/w/File:Nodemcu_20150704_firmware.zip
Derefter en simpel PHP-webside til at tjene tid fra internettet-
Coridium Time Server
<? php
$ tidszone = htmlspecialchars ($ _ GET ["zone"]); hvis ($ tidszone == "")
$ timezone = 'America/Los_Angeles';
$ tz_object = ny DateTimeZone ($ tidszone);
$ datetime = ny DateTime ();
$ datetime-> setTimezone ($ tz_object);
ekko "time is-", $ datetime-> format ('H: i: s');
ekko "";
ekko "dato er-", $ datetime-> format ('m/d/Y');
?>
Denne webside er så du kan anmode om det
coridium.us/time.php - og du får godt US Pacific tidszone
eller
coridium.us/time.php?zone=Europe/London
Ingen fejlkontrol og sandsynligvis aldrig
Og Luaen læste det -
wifi.sta.config ("your_SSID", "your_PASSWORD")> wifi.sta.connect () …
sk = net.createConnection (net. TCP, 0)
sk: on ("modtag", funktion (sck, c) print (c) ende)
sk: connect (80, "coridium.us")
sk: send ("GET /time.php HTTP/1.1 / r / nHost: coridium.us / r / nTilslutning: hold-i live / r / nAccept: */ *\ r / n / r / n")
Og du får tiden tilbage som
klokken er-09: 38: 49dato er-2018-31-12
Trin 5: Tilføj BASIC -kode for at analysere tiden fra internettet
Dette er en delmængde af det fulde BASIC -program, det fulde program kan ses på linket i det sidste trin.
hvis strstr (build_gets, "time is-") = 0 derefter
hr = build_gets (8) - "0"
hvis build_gets (9) = ":" så
min = (build_gets (10) - "0")*10
min += build_gets (11) - "0"
andet
hr = hr * 10 + build_gets (9) - "0"
min = (build_gets (11) - "0")*10
min += build_gets (12) - "0"
Afslut Hvis
Afslut Hvis
Trin 6: Tilføj en lyssensor og kode for at dæmpe skærmen
En fototransistor blev tilføjet for at mærke det omgivende lys i rummet. Uden det er displayet lyst nok til at vække de døde (mig) om natten.
Den analoge spænding for fototransistorens output læses, og pulsbreddemodulationen indstiller displayets samlede lysstyrke.
Trin 7: Knap uret, og begynd at bruge det
Den endelige version viser klokkeslættet, og omkring kl. 03.00 går den ud på nettet for at læse den aktuelle tid. Dette håndterer også sommertid.
Motivationen til dette projekt var de strømafbrydelser, vi oplever her i bjergene og behovet for at nulstille ure eller udskifte batterier for at holde dem i live.
Dette har været en hurtig oversigt over projektet.
Fuld detaljer om dette DIY web -tilsluttede ur.
Anbefalede:
GranDow - Enkelt flersproget digitalt ur: 4 trin
GranDow - Enkelt flersproget digitalt ur: Min bedstemor glemmer hele tiden ugedagen for sine piller. Desværre er alle digitale ure, jeg kan finde, der viser ugedagen, på engelsk. Dette enkle projekt med kun 3 komponenter er billigt, let at bygge, og jeg håber, det vil
Digitalt kompas og Heading Finder: 6 trin
Digitalt kompas og Heading Finder: Forfattere: Cullan Whelan Andrew Luft Blake Johnson Anerkendelser: California Maritime Academy Evan Chang-Siu Introduktion: Grundlaget for dette projekt er et digitalt kompas med overskriftssporing. Dette gør det muligt for brugeren at følge en overskrift på lang afstand
Føj et digitalt display til en gammel kommunikationsmodtager: 6 trin (med billeder)
Føj et digitalt display til en gammel kommunikationsmodtager: En af manglerne ved at bruge et ældre kommunikationsudstyr er, at den analoge urskive ikke er særlig præcis. Du gætter altid på den frekvens, du modtager. I AM- eller FM -båndene er dette generelt ikke et problem, fordi du normalt
Sådan laver du et analogt ur og digitalt ur med LED -strip ved hjælp af Arduino: 3 trin
Sådan laver du et analogt ur og et digitalt ur med LED -strip ved hjælp af Arduino: I dag laver vi et analogt ur & Digitalt ur med Led Strip og MAX7219 Dot -modul med Arduino. Det vil rette tiden med den lokale tidszone. Det analoge ur kan bruge en længere LED -strimmel, så det kan hænges på væggen for at blive en kunstværker
Arduino & MPU6050 baseret digitalt vaterpas: 3 trin
Arduino & MPU6050 baseret digitalt vaterpas: Velkommen til min første nogensinde instruerbare! Jeg håber, at du finder det informativt. Du er velkommen til at give feedback, uanset om det er positivt eller negativt. Dette projekt er at lave en arduino & MPU6050 baseret digitalt vaterpas. Mens det færdige design og