Inhaltsverzeichnis:

Mit dem Internet verbundene Digitaluhr - Gunook
Mit dem Internet verbundene Digitaluhr - Gunook

Video: Mit dem Internet verbundene Digitaluhr - Gunook

Video: Mit dem Internet verbundene Digitaluhr - Gunook
Video: 🚀 AMAZON 2.0 - ИНТЕРНЕТ МАГАЗИН с нуля за 6 часов [Next / React / Nest / PostgreSQL / Prisma / TS] 2024, Juli
Anonim
Mit dem Internet verbundene Digitaluhr
Mit dem Internet verbundene Digitaluhr

Habe bei Amazon eine Digitaluhr im Wert von 10 US-Dollar gefunden. Jetzt können Sie es anpassen, um die Zeit aus dem Internet zu erhalten.

Lieferungen

ARM Stamp programmierbar in BASIC hier erhältlich

Schritt 1: Verbinden Sie Digit Drive und Segment Drive für Multiplexed Display

Verbinden Sie Digit Drive und Segment Drive für Multiplexed Display
Verbinden Sie Digit Drive und Segment Drive für Multiplexed Display

Ich begann mit einer billigen Digitaluhr mit großen Zahlen von der Stange. Zuerst habe ich den vorhandenen Uhrenchip entfernt. Dann habe etwas herumgeprobt und die 7-Segment-Anschlüsse lokalisiert, die direkt vom Mikroprozessor angesteuert werden können. Dann fanden die 4-stelligen Treiber, die Transistoren waren, die der Mikroprozessor ansteuern kann. Und die dann verkabelt.

Schritt 2: Testen Sie die Verbindungen

Testen Sie die Verbindungen
Testen Sie die Verbindungen

Als Experiment habe ich ein BASIC-Programm geschrieben, um alle Leitungen zu steuern, die Verdrahtung zu überprüfen und den Strom zu messen, der in diesem Fall 82 mA betrug

Als nächstes musste der Code geschrieben werden, um die Zeilen zu scannen.

'Webuhr-Display-Laufwerk

IO(7)=0 'PMOS-Laufwerk - wird eines Tages PWM sein

für y=45 bis 48

IO(y)=0 ' Ziffernlaufwerk

für x=8 bis 15

IO(x)=0 ' Laufwerk segmentieren

warte(500)

E/A(x)=1

nächstes x

DIR(y)=0 ' Laufwerk auf Segment deaktivieren

als nächstes

Schritt 3: Code zur Anzeige der Zeit und PWM zur Steuerung der Helligkeit

Code zur Anzeige der Zeit und PWM zur Steuerung der Helligkeit
Code zur Anzeige der Zeit und PWM zur Steuerung der Helligkeit
Code zur Anzeige der Zeit und PWM zur Steuerung der Helligkeit
Code zur Anzeige der Zeit und PWM zur Steuerung der Helligkeit

Als nächstes fügte ich allen Zifferntreibern einen PMOS-Transistor in der Stromversorgung hinzu. Mit diesem durch Pulsweitenmodulation gesteuert wird die Helligkeit des Displays gesteuert. Hier ist der BASIC-Code zum Anzeigen der Uhrzeit.

' Webuhr-Display-Laufwerk #include "LPC11U3x.bas"

"Globale"

hr = 0 ' Stunde definieren

min = 0 ' Minute definieren

#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(err, h, min)

dim Std10, Std1, Min10, Min1, i

#ifdef US_TIME

wenn Std > 12 dann Std -= 12

wenn Std = 0 dann Std = 12

#endif

h10 = h / 10

h1 = h MOD 10

min10 = min / 10

min1 = min MOD 10

für i=0 bis 1

wenn hr10 dann

IO(45) = 0

endif

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

GPIO_CLR(0) = DIGarray(hr10)

warte(DIG_WAIT)

EINGANG(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)

warte(DIG_WAIT)

EINGANG(46)

IO(47) = 0

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

GPIO_CLR(0) = DIGArray(min10)

warte(DIG_WAIT)

EINGANG(47)

IO(48) = 0

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

GPIO_CLR(0) = DIGArray(min1)

warte(DIG_WAIT)

EINGANG(48)

als nächstes ich

End Sub

' Benutzer TIMER1 (32 Bit) um jede Minute zu unterbrechen

INTERRUPT SUB TIMER1IRQ

T1_IR = 1 ' Unterbrechung löschen

min += 1

wenn min > 59 dann

min = 0

Std. += 1

wenn Std > 23 dann

Stunde = 0

endif

endif

END SUB

SUB ON_TIMER (max_cnt, dothis)

TIMER1_ISR = dothis + 1 'Funktion von VIC einstellen -- benötige die +1 für den Daumenbetrieb

SYSCON_SYSAHBCLKCTRL OR= (1<<10) ' TIMER1 aktivieren

T1_PR = 0 'keine Vorskalierung - passt den Wert für eine genauere Zeit an

VICIntEnable OR= (1<<TIMER1_IRQn) 'Interrupt aktivieren

T1_MR0 = max_cnt-1 ' Übereinstimmungszahl von ms einrichten

T1_MCR = 3 ' Interrupt und Reset ein

MR0 T1_IR = 1 ' Unterbrechung löschen

T1_TC = 0 ' Timerzähler löschen

T1_TCR = 1 ' TIMER1 aktivieren

END SUB

#define MINUT_PCLK 2880000000 ' 60 Sekunden bei 48 MHz

hauptsächlich:

Std. = 9

min = 33

ON_TIMER(MINUT_PCLK, ADRESSOF TIMER1IRQ)

IO(7) = 0 'PWM eines Tages - müssen Sie zu P0_22 wechseln??

während 1

display_time(0, h, min)

Schleife

Schritt 4: Stellen Sie eine Internetverbindung her

Stellen Sie eine Internetverbindung her
Stellen Sie eine Internetverbindung her

Verwenden Sie einen ESP8266 für eine WLAN-Verbindung. Nachdem ich eine Weile im Web herumstöberte, war die beste Lösung die Nodemcu-Version 0.9.6 und ein älterer esp8266_flasher funktionierte am besten.

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

Dann eine einfache PHP-Webseite, um Zeit aus dem Internet zu bedienen -

Coridium-Zeitserver

<?php

$timezone = htmlspecialchars($_GET["zone"]); if ($Zeitzone == "")

$timezone = 'Amerika/Los_Angeles';

$tz_object = new DateTimeZone($timezone);

$datetime = neue DateTime();

$datetime->setTimezone($tz_object);

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

Echo "";

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

?>

Diese Webseite ist so, dass Sie sie anfordern können

coridium.us/time.php -- und Sie erhalten die Zeitzone des US-Pazifiks

oder

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

Keine Fehlerüberprüfung und wahrscheinlich auch nie

Und die Lua, um das zu lesen –

wifi.sta.config("Ihre_SSID", "Ihr_PASSWORT")> wifi.sta.connect() …

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

sk:on("receive", function(sck, c) print(c) end)

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

sk:send("GET /time.php HTTP/1.1\r\nHost: coridium.us\r\nVerbindung: keep-alive\r\nAkzeptieren: */*\r\n\r\n")

Und du bekommst die Zeit zurück als

Zeit ist-09:38:49Datum ist 31.12.2018

Schritt 5: BASIC-Code hinzufügen, um die Zeit aus dem Web zu analysieren

BASIC-Code hinzufügen, um die Zeit aus dem Web zu analysieren
BASIC-Code hinzufügen, um die Zeit aus dem Web zu analysieren

Dies ist eine Teilmenge des vollständigen BASIC-Programms, das im letzten Schritt unter dem Link angezeigt werden kann.

if strstr(build_gets, "time is-") = 0 then

hr = build_gets(8) - "0"

if build_gets(9) = ":" dann

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

min += build_gets(11) - "0"

anders

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

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

min += build_gets(12) - "0"

endif

endif

Schritt 6: Fügen Sie einen Lichtsensor und einen Code hinzu, um das Display zu dimmen

Fügen Sie einen Lichtsensor und einen Code hinzu, um das Display zu dimmen
Fügen Sie einen Lichtsensor und einen Code hinzu, um das Display zu dimmen
Fügen Sie einen Lichtsensor und einen Code hinzu, um das Display zu dimmen
Fügen Sie einen Lichtsensor und einen Code hinzu, um das Display zu dimmen
Fügen Sie einen Lichtsensor und einen Code hinzu, um das Display zu dimmen
Fügen Sie einen Lichtsensor und einen Code hinzu, um das Display zu dimmen

Ein Fototransistor wurde hinzugefügt, um das Umgebungslicht im Raum zu erfassen. Ohne sie ist das Display hell genug, um nachts die Toten (mich) zu wecken.

Die analoge Spannung am Ausgang des Fototransistors wird gelesen und die Pulsweitenmodulation stellt die Gesamthelligkeit des Displays ein.

Schritt 7: Drücken Sie die Uhr auf und beginnen Sie mit der Verwendung

Drücken Sie die Uhr auf und beginnen Sie, sie zu verwenden
Drücken Sie die Uhr auf und beginnen Sie, sie zu verwenden

Die endgültige Version zeigt die Uhrzeit an und geht gegen 3 Uhr morgens ins Internet, um die aktuelle Uhrzeit abzulesen. Dadurch wird auch die Sommerzeit berücksichtigt.

Die Motivation für dieses Projekt waren die Stromausfälle, die wir hier in den Bergen erleben und die Notwendigkeit, Uhren umzustellen oder Batterien zu ersetzen, um sie am Leben zu erhalten.

Dies war ein schneller Überblick über das Projekt.

Alle Details zu dieser DIY-Web-verbundenen Uhr.

Empfohlen: