Sadržaj:

Digitalni sat sa mrežnim povezivanjem: 7 koraka
Digitalni sat sa mrežnim povezivanjem: 7 koraka

Video: Digitalni sat sa mrežnim povezivanjem: 7 koraka

Video: Digitalni sat sa mrežnim povezivanjem: 7 koraka
Video: Kao pravilno povezati pametni sat i pametni telefon te podesiti vrijeme? 2024, Juli
Anonim
Web povezan digitalni sat
Web povezan digitalni sat

Pronašao sam digitalni sat od 10 USD na Amazonu. Sada ga prilagodite kako biste dobili vrijeme s interneta.

Supplies

ARM pečat koji se može programirati na BASIC -u dostupan je ovdje

Korak 1: Povežite digitalni pogon i segmentni pogon za višestruki prikaz

Povežite digitalni pogon i segmentni pogon za višestruki prikaz
Povežite digitalni pogon i segmentni pogon za višestruki prikaz

Počeo sam s jeftinim digitalnim satom velikog broja. Prvo sam uklonio postojeći sat čip. Zatim smo izvršili malo sondiranja i locirali 7 segmentne veze, koje se mogu pokretati direktno pomoću mikroprocesora. Zatim smo pronašli četveroznamenkaste upravljačke programe koji su bili tranzistori koje mikroprocesor može pokretati. A onda ih povezao.

Korak 2: Testirajte veze

Testirajte veze
Testirajte veze

Kao eksperiment napisao sam BASIC program za pogon svih linija, za provjeru ožičenja i mjerenje struje, koja je u ovom slučaju iznosila 82 mA

Slijedilo je pisanje koda za skeniranje linija.

'pogon prikaza web sata

IO (7) = 0 'PMOS pogon - jednog dana će biti PWM

za y = 45 do 48

IO (y) = 0 'cifreni pogon

za x = 8 do 15

IO (x) = 0 'segmentni pogon

čekaj (500)

IO (x) = 1

sljedeći x

DIR (y) = 0 'onemogući pogon na segmentu

next y

Korak 3: Kod za prikaz vremena i PWM za kontrolu svjetline

Kod za prikaz vremena i PWM za kontrolu svjetline
Kod za prikaz vremena i PWM za kontrolu svjetline
Kod za prikaz vremena i PWM za kontrolu svjetline
Kod za prikaz vremena i PWM za kontrolu svjetline

Zatim sam dodao PMOS tranzistor u napajanje svim upravljačkim programima za znamenke. S tim upravljanjem širine impulsa modulacija će kontrolirati svjetlinu ekrana. Evo BASIC koda za prikaz vremena.

'pogon za prikaz web sata #include "LPC11U3x.bas"

'globals

hr = 0 'definirajte sat

min = 0 'definirajte minutu

#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

sub display_time (greška, sat, min)

dim hr10, hr1, min10, min1, i

#ifdef US_TIME

ako je hr> 12 tada je hr -= 12

ako je hr = 0, tada je hr = 12

#endif

hr10 = hr / 10

hr1 = hr MOD 10

min10 = min / 10

min1 = min MOD 10

za i = 0 do 1

ako hr10 tada

IO (45) = 0

endif

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

GPIO_CLR (0) = DIGarray (hr10)

čekaj (DIG_WAIT)

ULAZ (45)

IO (46) = 0

GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarija (hr1) + IF (i, & H400, 0)

GPIO_CLR (0) = DIGarray (hr1) + IF (i, & H400, 0)

čekaj (DIG_WAIT)

ULAZ (46)

IO (47) = 0

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

GPIO_CLR (0) = DIGarray (min10)

čekaj (DIG_WAIT)

ULAZ (47)

IO (48) = 0

GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarija (min1)

GPIO_CLR (0) = DIGarray (min1)

čekaj (DIG_WAIT)

ULAZ (48)

next i

ENDUB

'korisnik TIMER1 (32 bit) za prekidanje svake minute

PREKID SUB TIMER1IRQ

T1_IR = 1 'Obriši prekid

min += 1

ako je min> 59 tada

min = 0

hr += 1

ako je hr> 23 tada

hr = 0

endif

endif

ENDSUB

SUB ON_TIMER (max_cnt, ovo)

TIMER1_ISR = radi li ovo +1 funkcija VIC -a - potrebno je +1 za operaciju Thumb

SYSCON_SYSAHBCLKCTRL ILI = (1 << 10) 'omogući TIMER1

T1_PR = 0 'bez predskale - podešava vrijednost za preciznije vrijeme

VICIntEnable OR = (1 << TIMER1_IRQn) 'Omogući prekid

T1_MR0 = max_cnt-1 'podešen broj podudaranja ms

T1_MCR = 3 'Prekini i resetiraj uključeno

MR0 T1_IR = 1 'brisanje prekida

T1_TC = 0 'obriši brojač vremena

T1_TCR = 1 'TIMER1 Omogući

ENDSUB

#define MINUT_PCLK 2880000000 '60 sekundi na 48 MHz

glavni:

hr = 9

min = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'PWM jednog dana - potrebno je preći na P0_22 ??

dok je 1

display_time (0, sat, min)

petlja

Korak 4: Uspostavite internetsku vezu

Uspostavite internetsku vezu
Uspostavite internetsku vezu

Za WiFi vezu koristite ESP8266. Nakon što je neko vrijeme čekao po webu, najbolje rješenje bila je nodemcu verzija 0.9.6, a stariji esp8266_flasher je najbolje funkcionirao.

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

Zatim jednostavna PHP web stranica koja služi vremenu s interneta--

Coridium Time Server

<? php

$ timezone = htmlspecialchars ($ _ GET ["zone"]); if ($ vremenska zona == "")

$ timezone = 'America/Los_Angeles';

$ tz_object = novi DateTimeZone ($ vremenska zona);

$ datetime = new DateTime ();

$ datetime-> setTimezone ($ tz_object);

echo "vrijeme je-", $ datetime-> format ('H: i: s');

echo "";

echo "datum je-", $ datetime-> format ('m/d/Y');

?>

Ta web stranica je takva da možete zatražiti

coridium.us/time.php - i dobro ste dobili američku pacifičku vremensku zonu

ili

coridium.us/time.php?zone=Europe/London

Nema provjere grešaka i najvjerovatnije nikada neće biti

A Lua da to pročita …

wifi.sta.config ("your_SSID", "your_PASSWORD")> wifi.sta.connect ()…

sk = net.createConnection (net. TCP, 0)

sk: on ("primi", funkcija (sck, c) ispis (c) kraj)

sk: connect (80, "coridium.us")

sk: send ("GET /time.php HTTP/1.1 / r / nHost: coridium.us / r / nVeza: keep-living / r / nPrihvati: */ *\ r / n / r / n")

I vraćate vrijeme kao

vrijeme je-09: 38: 49datum je -2018-31-12

Korak 5: Dodajte BASIC kod za raščlanjivanje vremena s weba

Dodajte BASIC kod za raščlanjivanje vremena s weba
Dodajte BASIC kod za raščlanjivanje vremena s weba

Ovo je podskup cijelog BASIC programa, koji se može pogledati na linku u posljednjem koraku.

ako je strstr (build_gets, "vrijeme je-") = 0 tada

hr = build_gets (8) - "0"

if build_gets (9) = ":" tada

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

min += build_gets (11) - "0"

else

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

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

min += build_gets (12) - "0"

endif

endif

Korak 6: Dodajte svjetlosni senzor i kôd za zatamnjivanje zaslona

Dodajte svjetlosni senzor i kôd za zatamnjivanje ekrana
Dodajte svjetlosni senzor i kôd za zatamnjivanje ekrana
Dodajte svjetlosni senzor i kôd za zatamnjivanje ekrana
Dodajte svjetlosni senzor i kôd za zatamnjivanje ekrana
Dodajte svjetlosni senzor i kôd za zatamnjivanje zaslona
Dodajte svjetlosni senzor i kôd za zatamnjivanje zaslona

Dodan je foto tranzistor koji je osjetio ambijentalno svjetlo u prostoriji. Bez njega ekran je dovoljno svetao da probudi mrtve (mene) noću.

Očitava se analogni napon na izlazu foto tranzistora, a modulacija širine impulsa postavlja ukupnu svjetlinu ekrana.

Korak 7: Satirajte sat i počnite ga koristiti

Pritisnite gumb na satu i počnite ga koristiti
Pritisnite gumb na satu i počnite ga koristiti

Konačna verzija prikazuje vrijeme, a oko 3 sata ujutro izlazi na web kako bi pročitalo trenutno vrijeme. Ovo takođe upravlja dnevnim uštedama vremena.

Motivacija za ovaj projekt bili su nestanci struje koje doživljavamo ovdje u planinama i potreba za resetiranjem satova ili zamjenom baterija kako bi ih održali u životu.

Ovo je bio kratak pregled projekta.

Potpuni detalji ovog DIY sata povezanog s internetom.

Preporučuje se: