Cuprins:
- Provizii
- Pasul 1: Conectați unitatea digitală și unitatea segmentată pentru afișaj multiplexat
- Pasul 2: Testați conexiunile
- Pasul 3: Cod pentru afișarea timpului și PWM pentru controlul luminozității
- Pasul 4: Faceți o conexiune la Internet
- Pasul 5: Adăugați un cod BASIC pentru a analiza timpul de pe web
- Pasul 6: Adăugați un senzor de lumină și un cod pentru a reduce afișajul
- Pasul 7: Butonează ceasul și începe să îl folosești
Video: Ceas digital conectat la web: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Am găsit un ceas digital de 10 USD la Amazon. Acum, personalizați-l pentru a obține timpul de pe internet.
Provizii
ARM Stamp programabil în BASIC disponibil aici
Pasul 1: Conectați unitatea digitală și unitatea segmentată pentru afișaj multiplexat
Am început cu un ceas digital cu număr mare ieftin. Mai întâi am eliminat cipul de ceas existent. Apoi am făcut câteva sondaje și am localizat conexiunile pe 7 segmente, care pot fi conduse direct de microprocesor. Apoi am găsit driverele de 4 cifre care erau tranzistoare pe care microprocesorul le poate conduce. Și apoi le-am conectat.
Pasul 2: Testați conexiunile
Ca experiment am scris un program BASIC pentru a conduce toate liniile, pentru a verifica cablajul și a măsura curentul, care în acest caz a fost de 82 mA
Apoi a fost să scriu codul pentru a scana liniile.
'unitate de afișare a ceasului web
IO (7) = 0 'unitate PMOS - va fi PWM cândva
pentru y = 45 până la 48
IO (y) = unitate de 0 'cifre
pentru x = 8 la 15
IO (x) = unitate de segment 0 '
așteptați (500)
IO (x) = 1
următorul x
DIR (y) = 0 'dezactivează unitatea pe segment
următorul y
Pasul 3: Cod pentru afișarea timpului și PWM pentru controlul luminozității
Apoi am adăugat un tranzistor PMOS în sursa de alimentare la toate driverele de cifre. Modulat în funcție de lățimea impulsului va controla luminozitatea afișajului. Iată codul BASIC pentru a afișa ora.
'Unitatea de afișare a ceasului web #include "LPC11U3x.bas"
'globali
hr = 0 'definește ora
min = 0 'definiți minutul
#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
#define US_TIME
timp afișare secundară (eroare, oră, min)
dim hr10, hr1, min10, min1, i
#ifdef US_TIME
dacă hr> 12 atunci hr - = 12
dacă hr = 0 atunci hr = 12
#endif
hr10 = hr / 10
hr1 = hr MOD 10
min10 = min / 10
min1 = min MOD 10
pentru i = 0 la 1
dacă hr10 atunci
IO (45) = 0
endif
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (hr10)
GPIO_CLR (0) = DIGarray (hr10)
așteptați (DIG_WAIT)
INTRARE (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)
așteptați (DIG_WAIT)
INTRARE (46)
IO (47) = 0
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (min10)
GPIO_CLR (0) = DIGarray (min10)
așteptați (DIG_WAIT)
INTRARE (47)
IO (48) = 0
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (min1)
GPIO_CLR (0) = DIGarray (min1)
așteptați (DIG_WAIT)
INTRARE (48)
apoi eu
endsub
'utilizator TIMER1 (32 biți) pentru a întrerupe fiecare minut
INTERRUPT SUB TIMER1IRQ
T1_IR = 1 'Ștergeți întreruperea
min + = 1
dacă min> 59 atunci
min = 0
hr + = 1
dacă hr> 23 atunci
hr = 0
endif
endif
ENDSUB
SUB ON_TIMER (max_cnt, dothis)
TIMER1_ISR = aceasta este funcția setată de + 1 'a VIC - are nevoie de +1 pentru operația Thumb
SYSCON_SYSAHBCLKCTRL OR = (1 << 10) 'activa TIMER1
T1_PR = 0 'fără prescalare - va ajusta valoarea pentru un timp mai precis
VICIntEnable OR = (1 << TIMER1_IRQn) 'Activați întreruperea
T1_MR0 = max_cnt-1 'setează numărul de meci de ms
T1_MCR = 3 'Întrerupere și resetare activată
MR0 T1_IR = 1 'întrerupe clar
T1_TC = 0 'goliți contorul temporizatorului
T1_TCR = 1 'TIMER1 Activare
ENDSUB
#define MINUT_PCLK 2880000000 '60 de secunde la 48 MHz
principal:
hr = 9
min = 33
ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)
IO (7) = 0 'PWM într-o zi - trebuie să treceți la P0_22 ??
în timp ce 1
display_time (0, hr, min)
buclă
Pasul 4: Faceți o conexiune la Internet
Utilizați un ESP8266 pentru o conexiune WiFi. După ce a scos pe internet o vreme cea mai bună soluție a fost versiunea nodemcu 0.9.6 și un vechi esp8266_flasher a funcționat cel mai bine.
www.electrodragon.com/w/File:Nodemcu_20150704_firmware.zip
Apoi, o pagină web PHP simplă pentru a transmite timp de pe internet …
Coridium Time Server
<? php
$ fus orar = htmlspecialchars ($ _ GET ["zona"]); if ($ fus orar == "")
$ fus orar = 'America / Los_Angeles';
$ tz_object = new DateTimeZone ($ fus orar);
$ datetime = new DateTime ();
$ datetime-> setTimezone ($ tz_object);
ecou "ora este-", $ datetime-> format ('H: i: s');
ecou "";
ecou "data is-", $ datetime-> format ('m / d / Y');
?>
Această pagină web este astfel încât să puteți solicita
coridium.us/time.php - și veți obține fusul orar din Pacificul SUA
sau
coridium.us/time.php?zone=Europe/London
Nicio verificare a erorilor și cel mai probabil nu va fi niciodată
Și Lua să citească asta -
wifi.sta.config ("your_SSID", "your_PASSWORD")> wifi.sta.connect () …
sk = net.createConnection (net. TCP, 0)
sk: activat („primi”, funcție (sck, c) print (c) final)
sk: connect (80, "coridium.us")
sk: send ("GET /time.php HTTP / 1.1 / r / nHost: coridium.us / r / nConectare: keep-alive / r / nAccept: * / * / r / n / r / n")
Și vă întoarceți timpul ca
ora este-09: 38: 49 data este-2018-31-12
Pasul 5: Adăugați un cod BASIC pentru a analiza timpul de pe web
Acesta este un subset al întregului program BASIC, acel program complet poate fi vizualizat la linkul din pasul final.
if strstr (build_gets, "time is-") = 0 atunci
hr = build_gets (8) - "0"
dacă build_gets (9) = ":" atunci
min = (build_gets (10) - "0") * 10
min + = build_gets (11) - "0"
altceva
hr = hr * 10 + build_gets (9) - "0"
min = (build_gets (11) - "0") * 10
min + = build_gets (12) - "0"
endif
endif
Pasul 6: Adăugați un senzor de lumină și un cod pentru a reduce afișajul
S-a adăugat un tranzistor foto pentru a detecta lumina ambientală din cameră. Fără el, ecranul este suficient de luminos pentru a trezi morții (eu) noaptea.
Tensiunea analogică a ieșirii tranzistorului foto este citită și modulația lățimii pulsului setează luminozitatea generală a afișajului.
Pasul 7: Butonează ceasul și începe să îl folosești
Versiunea finală afișează ora și în jurul orei 3 dimineața iese pe web pentru a citi ora curentă. Aceasta se ocupă și de timpul de economisire a luminii de zi.
Motivația acestui proiect a fost căderile de curent pe care le experimentăm aici la munte și necesitatea de a reseta ceasurile sau de a înlocui bateriile pentru a le menține în viață.
Aceasta a fost o prezentare rapidă a proiectului.
Detalii complete despre acest ceas DIY conectat la web.
Recomandat:
Cum să faci ceas analogic și ceas digital cu bandă LED folosind Arduino: 3 pași
Cum să faci ceas analogic și ceas digital cu bandă led folosind Arduino: Astăzi vom face un ceas analogic & Ceas digital cu Led Strip și modul MAX7219 Dot cu Arduino. Acesta va corecta ora cu fusul orar local. Ceasul analogic poate folosi o bandă cu LED mai lungă, deci poate fi agățat pe perete pentru a deveni un artist
Cadru foto digital, conectat WiFi - Raspberry Pi: 4 pași (cu imagini)
Cadru foto digital, conectat WiFi - Raspberry Pi: Acesta este un traseu foarte ușor și cu cost redus către o ramă foto digitală - cu avantajul de a adăuga / elimina fotografii prin WiFi prin „clic și trageți” folosind un program de transfer de fișiere (gratuit) . Poate fi alimentat de micul £ 4,50 Pi Zero. De asemenea, puteți transfera
Ceas de noptieră conectat pentru copii: 12 pași
Ceas de nopți conectat pentru copii: urmând aceste instrucțiuni, veți putea construi un ceas care este activat prin mișcare și va afișa data, ora și evenimentul relevant al zilei. Va afișa un mod de noapte când este timpul să doarmă și când copiii se trezesc, își pot aminti rapid ce
Ceas de animație SMART LED conectat la web cu panou de control bazat pe web, Time Server sincronizat: 11 pași (cu imagini)
Ceas de animație SMART LED conectat la web cu panou de control bazat pe web, sincronizat cu serverul de timp: povestea acestui ceas se întoarce mult - mai bine de 30 de ani. Tatăl meu a fost pionierul acestei idei când aveam doar 10 ani, cu mult înainte de revoluția LED-urilor - când LED-urile erau 1/1000 luminozitatea strălucirii lor orbitoare actuale. Un adevar
Realizați un robot conectat la web (pentru aproximativ 500 USD) (folosind un Arduino și Netbook): 6 pași (cu imagini)
Creați un robot conectat la web (pentru aproximativ 500 USD) (folosind un Arduino și Netbook): acest instructiv vă va arăta cum să vă construiți propriul robot conectat la web (folosind un microcontroler Arduino și un Asus eee pc). De ce ați dori un Web Robot conectat? Pentru a juca, desigur. Conduceți robotul de-a lungul camerei sau peste tot