İçindekiler:

Web Bağlantılı Dijital Saat: 7 Adım
Web Bağlantılı Dijital Saat: 7 Adım

Video: Web Bağlantılı Dijital Saat: 7 Adım

Video: Web Bağlantılı Dijital Saat: 7 Adım
Video: Akıllı Saat: Bağlantı ve Ayar Sorunları Nasıl Onarılır? (10 Çözüm) | Smart Watch 🇹🇷 2024, Aralık
Anonim
Web Bağlantılı Dijital Saat
Web Bağlantılı Dijital Saat

Amazon'da 10 dolarlık bir dijital saat buldum. Şimdi internetten zaman almak için özelleştirmek için.

Gereçler

BASIC'te programlanabilen ARM Damgası burada mevcuttur

Adım 1: Multiplexed Display için Digit Drive ve Segment Drive'ı bağlayın

Multiplexed Display için Digit Drive ve Segment Drive'ı bağlayın
Multiplexed Display için Digit Drive ve Segment Drive'ı bağlayın

Ucuz bir raftan büyük numara dijital saatle başladım. Önce mevcut saat çipini çıkardım. Ardından, doğrudan mikroişlemci tarafından çalıştırılabilen 7 segmentli bağlantıların etrafında biraz araştırma yaptı ve buldu. Daha sonra mikroişlemcinin sürebileceği transistörler olan 4 haneli sürücüleri buldu. Ve sonra bunları bağladı.

2. Adım: Bağlantıları Test Edin

Bağlantıları Test Edin
Bağlantıları Test Edin

Bir deney olarak, tüm hatları sürmek, kablolamayı kontrol etmek ve bu durumda 82 mA olan akımı ölçmek için bir BASIC programı yazdım.

Sonraki satırları taramak için kod yazmaktı.

' web saat ekran sürücüsü

IO(7)=0 ' PMOS sürücüsü -- bir gün PWM olacak

y=45 ila 48 için

IO(y)=0 ' basamaklı sürücü

x=8 ila 15 için

IO(x)=0 ' segment sürücü

bekle(500)

IO(x)=1

sonraki x

DIR(y)=0 ' segmentteki sürücüyü devre dışı bırak

sonraki y

Adım 3: Zamanı Gösteren Kod ve Parlaklığı Kontrol Eden PWM

Zamanı Gösteren Kod ve Parlaklığı Kontrol Eden PWM
Zamanı Gösteren Kod ve Parlaklığı Kontrol Eden PWM
Zamanı Gösteren Kod ve Parlaklığı Kontrol Eden PWM
Zamanı Gösteren Kod ve Parlaklığı Kontrol Eden PWM

Sonra güç kaynağına tüm basamak sürücülerine bir PMOS transistörü ekledim. Darbe genişlik modülasyonu tarafından sürülen bununla ekranın parlaklığı kontrol edilecektir. İşte zamanı görüntülemek için TEMEL kod.

' web saati görüntüleme sürücüsü #include "LPC11U3x.bas"

'küresel

hr = 0 ' saati tanımla

min = 0 ' dakikayı tanımla

#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

alt display_time(hata, saat, dakika)

loş sa10, sa1, min10, min1, ben

#ifdef US_TIME

sa > 12 ise sa -= 12

sa = 0 ise sa = 12

#endif

sa10 = sa/10

sa1 = sa MOD 10

min10 = dak / 10

min1 = min MOD 10

i=0 ila 1 için

saat 10 ise

GÇ(45) = 0

endif

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

GPIO_CLR(0) = DIGarray(saat10)

bekle(DIG_WAIT)

GİRİŞ(45)

GÇ(46) = 0

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

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

bekle(DIG_WAIT)

GİRİŞ(46)

GÇ(47) = 0

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

GPIO_CLR(0) = DIGarray(min10)

bekle(DIG_WAIT)

GİRİŞ(47)

GÇ(48) = 0

GPIO_DIR(0) = (GPIO_DIR(0) &HFFFF00FF) + DIArray(dk1)

GPIO_CLR(0) = DIGarray(dk1)

bekle(DIG_WAIT)

GİRİŞ(48)

sonraki ben

endsub

' kullanıcı TIMER1 (32 bit) her dakikayı kesecek

KESİNTİ ALT ZAMANLAYICI1IRQ

T1_IR = 1 ' Kesintiyi temizle

min += 1

min > 59 ise

min = 0

saat += 1

saat > 23 ise

saat = 0

endif

endif

ENDSUB

SUB ON_TIMER (max_cnt, bunu yap)

TIMER1_ISR = dothis + 1 'VIC'nin set işlevi -- Thumb işlemi için +1'e ihtiyaç duyar

SYSCON_SYSAHBCLKCTRL VEYA= (1<<10) ' ZAMANLAYICI1'i etkinleştir

T1_PR = 0 'ön ölçek yok -- değeri daha doğru zaman için ayarlayacaktır

VICntEnable VEYA= (1<<TIMER1_IRQn) 'Kesmeyi etkinleştir

T1_MR0 = max_cnt-1 ' ms eşleşme sayısını ayarla

T1_MCR = 3 ' Kesinti ve Sıfırlama açık

MR0 T1_IR = 1' kesmeyi temizle

T1_TC = 0 ' zamanlayıcı sayacını temizle

T1_TCR = 1 ' ZAMANLAYICI1 Etkin

ENDSUB

#define MINUT_PCLK 2880000000 ' 48 MHz'de 60 saniye

ana:

saat = 9

dk = 33

ON_TIMER(MINUT_PCLK, ADRESSOF TIMER1IRQ)

IO(7) = 0 ' PWM bir gün -- P0_22'ye geçmeniz mi gerekiyor?

1 iken

display_time(0, sa, dak)

döngü

4. Adım: İnternet Bağlantısı Yapın

İnternet Bağlantısı Yapın
İnternet Bağlantısı Yapın

WiFi bağlantısı için bir ESP8266 kullanın. Bir süre internette dolaştıktan sonra en iyi çözüm nodemcu sürüm 0.9.6 idi ve daha eski bir esp8266_flasher en iyi sonucu verdi.

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

Sonra internetten zaman sunmak için basit bir PHP web sayfası--

Coridium Zaman Sunucusu

<?php

$zaman dilimi = htmlspecialchars($_GET["bölge"]); if ($zaman dilimi == "")

$zaman dilimi = 'Amerika/Los_Angeles';

$tz_object = new DateTimeZone($timezone);

$tarihsaat = yeni TarihSaat();

$datetime->setTimezone($tz_object);

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

Eko "";

echo "tarih-", $datetime->format('m/g/Y');

?>

Bu web sayfası, talep edebilmeniz için

coridium.us/time.php -- ve ABD Pasifik saat dilimini iyi anlıyorsunuz

veya

coridium.us/time.php?zone=Avrupa/Londra

Hata denetimi yok ve büyük olasılıkla hiçbir zaman olmayacak

Ve bunu okumak için Lua --

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

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

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

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

sk:send("GET /time.php HTTP/1.1\r\nAna Bilgisayar: coridium.us\r\nBağlantı: canlı tut\r\nKabul et: */*\r\n\r\n")

Ve zamanı geri alırsın

saat-09:38:49tarih 2018-12-31

Adım 5: Web'den Zamanı Ayrıştırmak için BASIC Kodu Ekleyin

Web'den Zamanı Ayrıştırmak için BASIC Kodu Ekleyin
Web'den Zamanı Ayrıştırmak için BASIC Kodu Ekleyin

Bu, tam BASIC programının bir alt kümesidir, tam program son adımda bağlantıda görüntülenebilir.

strstr(build_gets, "zaman is-") = 0 ise

saat = build_gets(8) - "0"

build_gets(9) = ":" ise

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

min += build_gets(11) - "0"

Başka

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

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

min += build_gets(12) - "0"

endif

endif

6. Adım: Ekranı Karartmak için Işık Sensörü ve Kod Ekleyin

Ekranı Karartmak için Işık Sensörü ve Kod Ekleyin
Ekranı Karartmak için Işık Sensörü ve Kod Ekleyin
Ekranı Karartmak için Işık Sensörü ve Kod Ekleyin
Ekranı Karartmak için Işık Sensörü ve Kod Ekleyin
Ekranı Karartmak için Işık Sensörü ve Kod Ekleyin
Ekranı Karartmak için Işık Sensörü ve Kod Ekleyin

Odadaki ortam ışığını algılamak için bir foto transistör eklendi. Onsuz, ekran ölüleri (beni) geceleri uyandıracak kadar parlak.

Foto transistör çıkışının analog voltajı okunur ve darbe genişlik modülasyonu ekranın genel parlaklığını ayarlar.

Adım 7: Saatin Düğmesini Açın ve Kullanmaya Başlayın

Saatin Düğmesini Açın ve Kullanmaya Başlayın
Saatin Düğmesini Açın ve Kullanmaya Başlayın

Son sürüm saati gösterir ve saat 3 civarında geçerli saati okumak için web'e gider. Bu aynı zamanda gün ışığından yararlanma süresini de yönetir.

Bu projenin motivasyonu, burada, dağlarda yaşadığımız elektrik kesintileri ve onları hayatta tutmak için saatleri sıfırlama veya pilleri değiştirme ihtiyacıydı.

Bu, projeye hızlı bir genel bakış olmuştur.

Bu DIY web bağlantılı saatin tüm detayları.

Önerilen: