Სარჩევი:

ვებთან დაკავშირებული ციფრული საათი: 7 ნაბიჯი
ვებთან დაკავშირებული ციფრული საათი: 7 ნაბიჯი

ვიდეო: ვებთან დაკავშირებული ციფრული საათი: 7 ნაბიჯი

ვიდეო: ვებთან დაკავშირებული ციფრული საათი: 7 ნაბიჯი
ვიდეო: როგორ დავაკარგვინე გოგოს ქალიშვილობა- პირადი ისტორია.#2 2024, ნოემბერი
Anonim
ვებთან დაკავშირებული ციფრული საათი
ვებთან დაკავშირებული ციფრული საათი

Amazon- ში აღმოაჩინეს 10 დოლარიანი ციფრული საათი. ახლა დააკონფიგურირეთ, რომ მიიღოთ დრო ინტერნეტიდან.

მარაგები

ARM Stamp პროგრამირებადი BASIC ხელმისაწვდომია აქ

ნაბიჯი 1: შეაერთეთ ციფრული დისკი და სეგმენტის დრაივი მულტიპლექსური ჩვენებისთვის

შეაერთეთ ციფრული დისკი და სეგმენტის დრაივი მულტიპლექსური ჩვენებისთვის
შეაერთეთ ციფრული დისკი და სეგმენტის დრაივი მულტიპლექსური ჩვენებისთვის

დავიწყე იაფფასიანი თაროდან დიდი ნომრის ციფრული საათი. ჯერ ამოვიღე არსებული საათის ჩიპი. შემდეგ გამოიკვლია და განლაგდა 7 სეგმენტის კავშირი, რომლის მართვაც შესაძლებელია პირდაპირ მიკროპროცესორმა. შემდეგ აღმოვაჩინეთ 4 ციფრიანი დრაივერი, რომლებიც ტრანზისტორი იყო და რომლის მართვაც მიკროპროცესორს შეუძლია. და შემდეგ შეაერთეთ ისინი.

ნაბიჯი 2: შეამოწმეთ კავშირები

შეამოწმეთ კავშირები
შეამოწმეთ კავშირები

როგორც ექსპერიმენტი, მე დავწერე BASIC პროგრამა ყველა ხაზის გასავლელად, გაყვანილობის შესამოწმებლად და დენის გასაზომად, რომელიც ამ შემთხვევაში იყო 82 mA

შემდეგი იყო კოდის დაწერა ხაზების სკანირებისთვის.

ვებ საათის ჩვენების დისკი

IO (7) = 0 'PMOS დისკი - იქნება 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 ტრანზისტორი კვების ბლოკში ყველა ციფრული დრაივერისთვის. პულსის სიგანეზე დაფუძნებული მოდულაცია გააკონტროლებს ეკრანის სიკაშკაშეს. აქ არის ძირითადი კოდი დროის საჩვენებლად.

'ვებ საათის ჩვენების დისკი #მოიცავს "LPC11U3x.bas"

'გლობალური

hr = 0 'განსაზღვრეთ საათი

min = 0 'განსაზღვრეთ წუთი

#განსაზღვრეთ SEG_0 და HBB00

#განსაზღვრეთ SEG_1 და H1800

#განსაზღვრეთ SEG_2 და HD300

#განსაზღვრეთ SEG_3 და HD900

#განსაზღვრეთ SEG_4 და H7800

#განსაზღვრეთ SEG_5 და HE900

#განსაზღვრეთ SEG_6 და HEB00

#განსაზღვრეთ SEG_7 და H9800

#განსაზღვრეთ SEG_8 და HFB00

#განსაზღვრეთ SEG_9 და HF800

#განსაზღვრეთ SEG_o & H4B00

#განსაზღვრეთ 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}

#განსაზღვრეთ DIG_WAIT 1

#განსაზღვრეთ აშშ -ის დრო

ქვესაჩვენებელი_დრო (შეცდომა, სთ, წთ)

dim hr10, hr1, min10, min1, i

#fdef US_TIME

თუ hr> 12 მაშინ hr -= 12

თუ hr = 0 მაშინ hr = 12

#დაასრულე თუ

hr10 = სთ / 10

hr1 = სთ 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)

შემდეგი მე

ბოლოები

'მომხმარებელი TIMER1 (32 ბიტი) ყოველ წუთს შეწყვეტს

INTERRUPT SUB TIMER1IRQ

T1_IR = 1 'გასუფთავების შეწყვეტა

წთ += 1

თუ მინ> 59 მაშინ

მინ = 0

სთ += 1

თუ სთ> 23 მაშინ

სთ = 0

დაასრულე თუ

დაასრულე თუ

ENDSUB

SUB ON_TIMER (max_cnt, dothis)

TIMER1_ISR = dothis + 1 'VIC- ის ფუნქცია - საჭიროა +1 ცერა თითის ოპერაციისთვის

SYSCON_SYSAHBCLKCTRL OR = (1 << 10) 'ჩართეთ TIMER1

T1_PR = 0 'წინასწარი გაფართოების გარეშე - შეცვლის მნიშვნელობას უფრო ზუსტი დროისათვის

VICIntEnable OR = (1 << TIMER1_IRQn] 'შეწყვეტის ჩართვა

T1_MR0 = max_cnt-1 'დააყენეთ ms მატჩის ნომერი

T1_MCR = 3 'შეწყვეტა და გადატვირთვა

MR0 T1_IR = 1 'მკაფიო შეფერხება

T1_TC = 0 'ქრონომეტრის მრიცხველი

T1_TCR = 1 'TIMER1 ჩართვა

ENDSUB

#განსაზღვრეთ MINUT_PCLK 2880000000 '60 წამი 48 MHz

მთავარი:

სთ = 9

მინ = 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 ვებ გვერდი, რომელიც ემსახურება ინტერნეტს-

კორიდიუმის დროის სერვერი

<? php

$ დროის ზონა = htmlspecialchars ($ _ GET ["ზონა"]); if ($ დროის სარტყელი == "")

$ timezone = 'ამერიკა/Los_Angeles';

$ tz_object = ახალი DateTimeZone ($ დროის ზონა);

$ datetime = ახალი DateTime ();

$ datetime-> setTimezone ($ tz_object);

ექო "დრო არის-", $ datetime-> ფორმატი ('H: i: s');

ექო "";

ექო "თარიღი არის-", $ datetime-> ფორმატი ('მ/დ/წ');

?>

ეს ვებ გვერდი არის ასე რომ თქვენ შეგიძლიათ მოითხოვოთ

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: დაკავშირება (80, "coridium.us")

sk: send ("GET /time.php HTTP/1.1 / r / n მასპინძელი: 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) = ":" მაშინ

წთ = (build_gets (10) - "0")*10

min += build_gets (11) - "0"

სხვა

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

წთ = (build_gets (11) - "0")*10

min += build_gets (12) - "0"

დაასრულე თუ

დაასრულე თუ

ნაბიჯი 6: დაამატეთ სინათლის სენსორი და კოდი ეკრანის დაბინდვისთვის

დაამატეთ სინათლის სენსორი და კოდი ეკრანის დაბინდვისთვის
დაამატეთ სინათლის სენსორი და კოდი ეკრანის დაბინდვისთვის
დაამატეთ სინათლის სენსორი და კოდი ეკრანის დაბინდვისთვის
დაამატეთ სინათლის სენსორი და კოდი ეკრანის დაბინდვისთვის
დაამატეთ სინათლის სენსორი და კოდი ეკრანის დაბინდვისთვის
დაამატეთ სინათლის სენსორი და კოდი ეკრანის დაბინდვისთვის

დაემატა ფოტო ტრანზისტორი ოთახში ატმოსფერული შუქის გასაგებად. მის გარეშე ეკრანი საკმარისად კაშკაშაა იმისთვის, რომ ღამით მკვდარი (მე) გააღვიძოს.

ფოტო ტრანზისტორის გამომავალი ანალოგური ძაბვა იკითხება და პულსის სიგანის მოდულაცია ადგენს ეკრანის საერთო სიკაშკაშეს.

ნაბიჯი 7: დააკაკუნეთ საათი და დაიწყეთ მისი გამოყენება

დააჭირეთ ღილაკს საათს და დაიწყეთ მისი გამოყენება
დააჭირეთ ღილაკს საათს და დაიწყეთ მისი გამოყენება

საბოლოო ვერსია აჩვენებს დროს და დილის 3 საათზე ის გამოდის ინტერნეტში მიმდინარე დროის წასაკითხად. ეს ასევე ხელს უწყობს დღის შუქის დაზოგვას.

ამ პროექტის მოტივაცია იყო ელექტროენერგიის გათიშვა, რომელსაც ჩვენ ვხვდებით აქ მთებში და საჭიროება საათების გადატვირთვა ან ბატარეების გამოცვლა მათი სიცოცხლის შესანარჩუნებლად.

ეს იყო პროექტის სწრაფი მიმოხილვა.

ამ წვრილმანი ვებ – გვერდის დაკავშირებული საათის სრული დეტალები.

გირჩევთ: