Inhoudsopgave:
- Benodigdheden
- Stap 1: Digit Drive en Segment Drive aansluiten voor multiplexweergave
- Stap 2: Test de verbindingen
- Stap 3: Codeer om tijd weer te geven en PWM om de helderheid te regelen
- Stap 4: Maak een internetverbinding
- Stap 5: BASIC-code toevoegen om de tijd van internet te ontleden
- Stap 6: voeg een lichtsensor en code toe om het scherm te dimmen
- Stap 7: Sluit de klok aan en begin deze te gebruiken
Video: Web-verbonden digitale klok: 7 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Ik heb een digitale klok van $ 10 gevonden bij Amazon. Nu om het aan te passen om de tijd van internet te halen.
Benodigdheden
ARM Stamp programmeerbaar in BASIC hier beschikbaar
Stap 1: Digit Drive en Segment Drive aansluiten voor multiplexweergave
Ik begon met een goedkope standaard digitale klok met een groot aantal. Eerst heb ik de bestaande klokchip verwijderd. Daarna wat rondgespeurd en de 7 segment aansluitingen gelokaliseerd, die direct aangestuurd kunnen worden door de microprocessor. Toen vond ik de 4-cijferige stuurprogramma's die transistors waren die de microprocessor kan aansturen. En heb die dan aangesloten.
Stap 2: Test de verbindingen
Als experiment heb ik een BASIC-programma geschreven om alle lijnen aan te sturen, de bedrading te controleren en de stroom te meten, in dit geval 82 mA
Het volgende was om de code te schrijven om de regels te scannen.
' web klok display drive
IO(7)=0 ' PMOS-schijf -- zal ooit PWM zijn
voor y=45 tot 48
IO(y)=0 'cijferige schijf
voor x=8 tot 15
IO(x)=0 ' segmentaandrijving
wacht(500)
IO(x)=1
volgende x
DIR(y)=0 ' schijf uitschakelen op segment
volgende jaar
Stap 3: Codeer om tijd weer te geven en PWM om de helderheid te regelen
Vervolgens heb ik een PMOS-transistor in de voeding toegevoegd aan alle cijferstuurprogramma's. Met dat aangedreven door pulsbreedtemodulatie zal de helderheid van het scherm worden geregeld. Hier is de BASIC-code om de tijd weer te geven.
' web klok display drive #include "LPC11U3x.bas"
'globalen'
hr = 0 ' definieer uur
min = 0 ' definieer minuut
#define SEG_0 &HBB00
#definieer SEG_1 &H1800
#definieer SEG_2 &HD300
#definieer SEG_3 &HD900
#definieer SEG_4 &H7800
#definieer SEG_5 &HE900
#definieer SEG_6 &HEB00
#definieer 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(err, hr, min)
dim hr10, hr1, min10, min1, i
#ifdef US_TIME
als hr > 12 dan hr -= 12
als hr = 0 dan hr = 12
#stop als
uur10 = uur / 10
uur1 = uur MOD 10
min10 = min / 10
min1 = min MOD 10
voor i=0 tot 1
als hr10 dan
IO(45) = 0
stop als
GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DIGarray(hr10)
GPIO_CLR(0) = DI-array(hr10)
wacht (DIG_WAIT)
INGANG(45)
IO(46) = 0
GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DIArray(hr1) + IF(i, &H400, 0)
GPIO_CLR(0) = DI-array(hr1) + IF(i, &H400, 0)
wacht (DIG_WAIT)
INGANG(46)
IO(47) = 0
GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DI-array (min10)
GPIO_CLR(0) = DI-array(min10)
wacht (DIG_WAIT)
INGANG(47)
IO(48) = 0
GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DI-array (min1)
GPIO_CLR(0) = DI-array(min1)
wacht (DIG_WAIT)
INGANG(48)
volgende ik
eindsub
' gebruiker TIMER1 (32 bit) om elke minuut te onderbreken
SUB-TIMER ONDERBREKEN1IRQ
T1_IR = 1 ' Wis onderbreking
min += 1
als min > 59 dan
min = 0
uur += 1
als u > 23 dan
u = 0
stop als
stop als
ENDSUB
SUB ON_TIMER (max_cnt, doe dit)
TIMER1_ISR = dothis + 1 'set-functie van VIC - heb de +1 nodig voor duimbediening
SYSCON_SYSAHBCLKCTRL OR= (1<<10) ' TIMER1 inschakelen
T1_PR = 0 'geen voorschaal - zal de waarde aanpassen voor een nauwkeurigere tijd
VICIntEnable OR= (1<<TIMER1_IRQn) 'Onderbreking inschakelen'
T1_MR0 = max_cnt-1 ' matchnummer van ms instellen
T1_MCR = 3 ' Onderbreken en resetten aan
MR0 T1_IR = 1' onderbreking wissen
T1_TC = 0 ' timerteller wissen
T1_TCR = 1 ' TIMER1 inschakelen
ENDSUB
#define MINUT_PCLK 2880000000 ' 60 seconden bij 48 MHz
hoofd:
u = 9
min = 33
ON_TIMER(MINUT_PCLK, ADRES VAN TIMER1IRQ)
IO(7) = 0 ' PWM op een dag -- moet verhuizen naar P0_22 ??
terwijl 1
display_time(0, u, min)
lus
Stap 4: Maak een internetverbinding
Gebruik een ESP8266 voor een wifi-verbinding. Na een tijdje rondneuzen op het web was de beste oplossing nodemcu versie 0.9.6 en een oudere esp8266_flasher werkte het beste.
www.electrodragon.com/w/File:Nodemcu_20150704_firmware.zip
Dan een eenvoudige PHP-webpagina om de tijd van internet te dienen--
Coridium Tijdserver
<?php
$timezone = htmlspecialchars($_GET["zone"]); if ($tijdzone == "")
$timezone = 'Amerika/Los_Angeles';
$tz_object = nieuwe DateTimeZone($timezone);
$datetime = nieuwe DateTime();
$datetime->setTimezone($tz_object);
echo "tijd is-", $datetime->format('H:i:s');
echo "";
echo "datum is-", $datetime->format('m/d/Y');
?>
Die webpagina is zodat u kunt aanvragen
coridium.us/time.php -- en je krijgt de tijdzone van de VS Pacific
of
coridium.us/time.php?zone=Europa/Londen
Geen foutcontrole en zal dat hoogstwaarschijnlijk ook nooit zijn
En de Lua om dat te lezen --
wifi.sta.config("your_SSID", "your_PASSWORD")> wifi.sta.connect() …
sk=net.createConnection(net. TCP, 0)
sk:on("ontvangen", functie(sck, c) print(c) einde)
sk:connect(80, "coridium.us")
sk:send("GET /time.php HTTP/1.1\r\nHost: coridium.us\r\nVerbinding: keep-alive\r\nAccepteren: */*\r\n\r\n")
En je krijgt de tijd terug als
tijd is-09:38:49datum is 31-12-2018
Stap 5: BASIC-code toevoegen om de tijd van internet te ontleden
Dit is een subset van het volledige BASIC-programma, dat volledige programma kan worden bekeken via de link in de laatste stap.
if strstr(build_gets, "time is-") = 0 dan
hr = build_gets(8) - "0"
if build_gets(9) = ":" dan
min = (build_gets(10) - "0")*10
min += build_gets(11) - "0"
anders
hr = hr * 10 + build_gets(9) - "0"
min = (build_gets(11) - "0")*10
min += build_gets (12) - "0"
stop als
stop als
Stap 6: voeg een lichtsensor en code toe om het scherm te dimmen
Een fototransistor werd toegevoegd om het omgevingslicht in de kamer te voelen. Zonder dit is het scherm helder genoeg om de doden (ik) 's nachts wakker te maken.
De analoge spanning van de uitgang van de fototransistor wordt gelezen en de pulsbreedtemodulatie stelt de algehele helderheid van het display in.
Stap 7: Sluit de klok aan en begin deze te gebruiken
De definitieve versie geeft de tijd weer en rond 3 uur 's nachts gaat het naar het web om de huidige tijd te lezen. Dit houdt ook rekening met de zomertijd.
De motivatie voor dit project waren de stroomstoringen die we hier in de bergen ervaren en de noodzaak om klokken te resetten of batterijen te vervangen om ze in leven te houden.
Dit was een kort overzicht van het project.
Volledige details van deze doe-het-zelf klok met internet.
Aanbevolen:
Hoe maak je een analoge klok en digitale klok met ledstrip met behulp van Arduino - Ajarnpa
Hoe maak je een analoge klok en digitale klok met ledstrip met behulp van Arduino: vandaag zullen we een analoge klok & Digitale klok met Led Strip en MAX7219 Dot module met Arduino. Het corrigeert de tijd met de lokale tijdzone. De analoge klok kan een langere LED-strip gebruiken, zodat hij aan de muur kan worden gehangen om een kunstwerk te
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)
Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
Alles in één digitale chronometer (klok, timer, alarm, temperatuur): 10 stappen (met afbeeldingen)
All in One Digitale Chronometer (Klok, Timer, Alarm, Temperatuur): We waren van plan om voor een andere wedstrijd een Timer te maken, maar later hebben we ook een klok (zonder RTC) geïmplementeerd. Toen we begonnen met programmeren, raakten we geïnteresseerd in het toepassen van meer functionaliteiten op het apparaat en uiteindelijk voegden we DS3231 RTC toe, als
De digitale klok: 6 stappen
De digitale klok: dit project is gemaakt voor het doel wiens hobby het is om verschillende dingen te maken door doe-het-zelfprojecten. Dit is een van de digitale klok van het diy-project. De digitale klok heeft verschillende functies, zoals tijd, datum, alarm, temperatuur, verschillende overgangen in LED
Een klok maken van een klok: 11 stappen (met afbeeldingen)
Een klok maken van een klok: in deze Instructable neem ik een bestaande klok en creëer ik een betere klok. We gaan van de afbeelding links naar de afbeelding rechts. Voordat u op uw eigen klok begint, moet u weten dat het opnieuw in elkaar zetten een uitdaging kan zijn, aangezien de piv