Πίνακας περιεχομένων:

Digitalηφιακό ρολόι συνδεδεμένο στο Web: 7 βήματα
Digitalηφιακό ρολόι συνδεδεμένο στο Web: 7 βήματα

Βίντεο: Digitalηφιακό ρολόι συνδεδεμένο στο Web: 7 βήματα

Βίντεο: Digitalηφιακό ρολόι συνδεδεμένο στο Web: 7 βήματα
Βίντεο: Digitalηφιακό ρολόι Python 2024, Ιούλιος
Anonim
Digitalηφιακό ρολόι συνδεδεμένο στο Web
Digitalηφιακό ρολόι συνδεδεμένο στο Web

Βρήκα ένα ψηφιακό ρολόι $ 10 στην Amazon. Τώρα για να το προσαρμόσετε για να έχετε χρόνο από το διαδίκτυο.

Προμήθειες

ARM Stamp προγραμματιζόμενο σε ΒΑΣΙΚΟ διατίθεται εδώ

Βήμα 1: Συνδέστε ψηφιακή μονάδα δίσκου και τμηματική μονάδα δίσκου για πολλαπλή οθόνη

Συνδέστε το Digit Drive και το Segment Drive για Multiplexed Display
Συνδέστε το Digit Drive και το Segment Drive για Multiplexed Display

Ξεκίνησα με ένα φθηνό ψηφιακό ρολόι μεγάλου αριθμού. Πρώτα αφαίρεσα το υπάρχον τσιπ ρολογιού. Στη συνέχεια, πραγματοποιήθηκε ανίχνευση και εντοπίστηκαν οι συνδέσεις 7 τμημάτων, οι οποίες μπορούν να οδηγηθούν απευθείας από τον μικροεπεξεργαστή. Στη συνέχεια βρέθηκαν τα 4ψήφια προγράμματα οδήγησης που ήταν τρανζίστορ τα οποία μπορεί να οδηγήσει ο μικροεπεξεργαστής. Και μετά τα ένωσε.

Βήμα 2: Δοκιμάστε τις συνδέσεις

Δοκιμάστε τις Συνδέσεις
Δοκιμάστε τις Συνδέσεις

Ως πείραμα έγραψα ένα πρόγραμμα BASIC για να οδηγήσω όλες τις γραμμές, να ελέγξω την καλωδίωση και να μετρήσω το ρεύμα, το οποίο σε αυτή την περίπτωση ήταν 82 mA

Το επόμενο ήταν να γράψω τον κωδικό για να σαρώσω τις γραμμές.

«μονάδα οθόνης ρολογιού ιστού

IO (7) = 0 'PMOS drive - θα γίνει PWM κάποια μέρα

για y = 45 έως 48

IO (y) = 0 'ψηφιακή μονάδα δίσκου

για x = 8 έως 15

IO (x) = 0 'μονάδα δίσκου

περιμένετε (500)

IO (x) = 1

επόμενο x

DIR (y) = 0 'απενεργοποίηση μονάδας δίσκου στο τμήμα

επόμενο y

Βήμα 3: Κωδικοποιήστε την ώρα εμφάνισης και PWM για να ελέγξετε τη φωτεινότητα

Κωδικός για εμφάνιση χρόνου και PWM για έλεγχο φωτεινότητας
Κωδικός για εμφάνιση χρόνου και PWM για έλεγχο φωτεινότητας
Κωδικός για εμφάνιση χρόνου και PWM για έλεγχο φωτεινότητας
Κωδικός για εμφάνιση χρόνου και PWM για έλεγχο φωτεινότητας

Στη συνέχεια πρόσθεσα ένα τρανζίστορ PMOS στο τροφοδοτικό σε όλα τα ψηφιακά προγράμματα οδήγησης. Με αυτό που οδηγείται από το πλάτος παλμών, η διαμόρφωση θα ελέγχει τη φωτεινότητα της οθόνης. Εδώ είναι ο ΒΑΣΙΚΟΣ κώδικας για την εμφάνιση της ώρας.

'μονάδα οθόνης ρολογιού ιστού #include "LPC11U3x.bas"

'παγκόσμια

hr = 0 'καθορίστε την ώρα

min = 0 'καθορίστε το λεπτό

#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

#καθορίστε US_TIME

δευτερεύων χρόνος εμφάνισης (λάθος, ώρα, λεπτά)

dim hr10, hr1, min10, min1, i

#ifdef US_TIME

αν hr> 12 τότε hr -= 12

αν hr = 0 τότε hr = 12

#τέλος εαν

hr10 = hr / 10

hr1 = hr MOD 10

min10 = min / 10

min1 = min MOD 10

για i = 0 έως 1

αν hr10 τότε

IO (45) = 0

τέλος εαν

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

GPIO_CLR (0) = DIGarray (hr10)

περιμένετε (DIG_WAIT)

ΕΙΣΟΔΟΣ (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)

περιμένετε (DIG_WAIT)

ΕΙΣΟΔΟΣ (46)

IO (47) = 0

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

GPIO_CLR (0) = DIGarray (min10)

περιμένετε (DIG_WAIT)

ΕΙΣΟΔΟΣ (47)

IO (48) = 0

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

GPIO_CLR (0) = DIGarray (min1)

περιμένετε (DIG_WAIT)

ΕΙΣΟΔΟΣ (48)

επόμενο i

endub

'χρήστη TIMER1 (32 bit) για διακοπή κάθε λεπτού

INTERRUPT SUB TIMER1IRQ

T1_IR = 1 'Διαγραφή διακοπής

min += 1

αν min> 59 τότε

min = 0

hr += 1

αν hr> 23 τότε

hr = 0

τέλος εαν

τέλος εαν

ENDSUB

SUB ON_TIMER (max_cnt, dothis)

TIMER1_ISR = συνάρτηση dothis + 1 'του VIC - χρειάζεται το +1 για λειτουργία Thumb

SYSCON_SYSAHBCLKCTRL OR = (1 << 10) 'ενεργοποίηση TIMER1

T1_PR = 0 'χωρίς προεπιλογή - θα προσαρμόσει την τιμή για ακριβέστερο χρόνο

VICIntEnable OR = (1 << TIMER1_IRQn] 'Ενεργοποίηση διακοπής

T1_MR0 = max_cnt-1 'set up match match of ms

T1_MCR = 3 'Διακοπή και επαναφορά

MR0 T1_IR = 1 'καθαρή διακοπή

T1_TC = 0 'μετρητής χρονομέτρου

T1_TCR = 1 'TIMER1 Ενεργοποίηση

ENDSUB

#ορίστε MINUT_PCLK 2880000000 '60 δευτερόλεπτα στα 48 MHz

κύριος:

hr = 9

min = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'PWM κάποια μέρα - πρέπει να μετακινηθείτε στο P0_22;;

ενώ 1

χρόνος εμφάνισης (0, ώρα, λεπτά)

βρόχος

Βήμα 4: Δημιουργήστε μια σύνδεση στο Διαδίκτυο

Πραγματοποιήστε σύνδεση στο Διαδίκτυο
Πραγματοποιήστε σύνδεση στο Διαδίκτυο

Χρησιμοποιήστε ένα ESP8266 για σύνδεση WiFi. Μετά από λίγη ώρα περιήγησης στον ιστό, η καλύτερη λύση ήταν η έκδοση nodemcu 0.9.6 και ένα παλαιότερο esp8266_flasher δούλεψε καλύτερα.

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

Στη συνέχεια, μια απλή ιστοσελίδα PHP για την εξυπηρέτηση χρόνου από το διαδίκτυο-

Διακομιστής ώρας Coridium

<? php

$ timezone = htmlspecialchars ($ _ GET ["zone"]); εάν ($ timezone == "")

$ timezone = 'America/Los_Angeles';

$ tz_object = νέο DateTimeZone ($ timezone);

$ datetime = νέο DateTime ();

$ datetime-> setTimezone ($ tz_object);

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

ηχώ "";

ηχώ "ημερομηνία είναι-", $ datetime-> μορφή ('m/d/Y');

?>

Αυτή η ιστοσελίδα είναι έτσι ώστε να μπορείτε να ζητήσετε

coridium.us/time.php - και μπορείτε να πάρετε τη ζώνη ώρας των ΗΠΑ Ειρηνικού

ή

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

Δεν υπάρχει έλεγχος σφαλμάτων και πιθανότατα ποτέ δεν θα γίνει

Και η Λουά να το διαβάσει -

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

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

sk: ενεργοποίηση ("λήψη", λειτουργία (sck, c) εκτύπωση (c) τέλος)

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

sk: send ("GET /time.php HTTP/1.1 / r / nHost: coridium.us / r / nΣύνδεση: διατήρηση ζωντανής / r / nΑποδοχή: */ *\ r / n / r / n")

Και επιστρέφεις τον χρόνο ως

ώρα είναι -09: 38: 49ημερομηνία -2018-31-12

Βήμα 5: Προσθέστε ΒΑΣΙΚΟ Κωδικό για την Ανάλυση του χρόνου από τον Ιστό

Προσθέστε ΒΑΣΙΚΟ Κωδικό για την Ανάλυση του χρόνου από τον Ιστό
Προσθέστε ΒΑΣΙΚΟ Κωδικό για την Ανάλυση του χρόνου από τον Ιστό

Αυτό είναι ένα υποσύνολο του πλήρους προγράμματος BASIC, το πλήρες πρόγραμμα μπορεί να προβληθεί στο σύνδεσμο στο τελευταίο βήμα.

αν strstr (build_gets, "time is-") = 0 τότε

hr = build_gets (8) - "0"

αν build_gets (9) = ":" τότε

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

min += build_gets (11) - "0"

αλλού

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

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

min += build_gets (12) - "0"

τέλος εαν

τέλος εαν

Βήμα 6: Προσθέστε έναν αισθητήρα φωτός και έναν κωδικό για να μειώσετε την οθόνη

Προσθέστε έναν αισθητήρα φωτός και έναν κωδικό για να μειώσετε την οθόνη
Προσθέστε έναν αισθητήρα φωτός και έναν κωδικό για να μειώσετε την οθόνη
Προσθέστε έναν αισθητήρα φωτός και έναν κωδικό για να μειώσετε την οθόνη
Προσθέστε έναν αισθητήρα φωτός και έναν κωδικό για να μειώσετε την οθόνη
Προσθέστε έναν αισθητήρα φωτός και έναν κωδικό για να μειώσετε την οθόνη
Προσθέστε έναν αισθητήρα φωτός και έναν κωδικό για να μειώσετε την οθόνη

Ένα τρανζίστορ φωτογραφιών προστέθηκε για να αντιληφθεί το φως του περιβάλλοντος στο δωμάτιο. Χωρίς αυτό, η οθόνη είναι αρκετά φωτεινή για να ξυπνήσει τους νεκρούς (εμένα) τη νύχτα.

Η αναλογική τάση εξόδου του τρανζίστορ φωτογραφιών διαβάζεται και η διαμόρφωση πλάτους παλμού ορίζει τη συνολική φωτεινότητα της οθόνης.

Βήμα 7: Κουμπώστε το ρολόι και ξεκινήστε να το χρησιμοποιείτε

Κουμπί επάνω στο ρολόι και ξεκινήστε να το χρησιμοποιείτε
Κουμπί επάνω στο ρολόι και ξεκινήστε να το χρησιμοποιείτε

Η τελική έκδοση εμφανίζει την ώρα και περίπου στις 3 π.μ. βγαίνει στον ιστό για να διαβάσει την τρέχουσα ώρα. Αυτό χειρίζεται επίσης το φως της ημέρας εξοικονομώντας χρόνο.

Το κίνητρο για αυτό το έργο ήταν οι διακοπές ρεύματος που βιώνουμε εδώ στα βουνά και η ανάγκη να επαναρυθμιστούν τα ρολόγια ή να αντικατασταθούν οι μπαταρίες για να διατηρηθούν στη ζωή.

Αυτή ήταν μια γρήγορη επισκόπηση του έργου.

Πλήρεις λεπτομέρειες αυτού του DIY ρολογιού συνδεδεμένου στον ιστό.

Συνιστάται: