Мазмуну:

Интернетке туташкан санариптик саат: 7 кадам
Интернетке туташкан санариптик саат: 7 кадам

Video: Интернетке туташкан санариптик саат: 7 кадам

Video: Интернетке туташкан санариптик саат: 7 кадам
Video: 📣 ТОП-10 КРИПТОВАЛЮТНЫХ АФЕР - Настоящий СКАМ в Крипте | Риски Криптовалюты | Прогноз Криптовалюты 2024, Ноябрь
Anonim
Интернетке туташкан санариптик саат
Интернетке туташкан санариптик саат

Амазонкадан 10 долларлык санариптик саат табылды. Эми аны интернеттен убакыт алуу үчүн ыңгайлаштыруу.

Жабдуулар

Бул жерде жеткиликтүү BASIC программасында ARM Stamp

1 -кадам: Multiplexed Display үчүн Digit Drive менен Segment Drive туташтырыңыз

Multiplexed Display үчүн Digit Drive жана Segment Drive туташтырыңыз
Multiplexed Display үчүн Digit Drive жана Segment Drive туташтырыңыз

Мен текчеден арзан сандагы чоң санариптик сааттан баштадым. Алгач мен учурдагы чипти алып салдым. Андан кийин бир аз текшерүү жүргүзүлүп, 7 сегменттик байланыштар табылды, алар түздөн -түз микропроцессор тарабынан башкарылат. Андан кийин микропроцессор айдай турган транзистор болгон 4 орундуу драйверлер табылды. Анан буларды зым менен байланыштырды.

2 -кадам: Туташууларды текшериңиз

Байланыштарды сыноо
Байланыштарды сыноо

Эксперимент катары мен бардык линияларды айдап, зымдарды текшерүү жана бул учурда 82 мА болгон токту өлчөө үчүн BASIC программасын жаздым.

Кийинки саптарды сканерлөө үчүн кодду жазуу болчу.

'веб саат дисплейи

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 'сегменттеги дискти өчүрүү

кийинки ж

3 -кадам: Убакытты көрсөтүү үчүн код жана Жарыктыгы көзөмөлдөө үчүн PWM

Убакытты көрсөтүү коду жана PWM жарыктыгын көзөмөлдөө үчүн
Убакытты көрсөтүү коду жана PWM жарыктыгын көзөмөлдөө үчүн
Убакытты көрсөтүү коду жана PWM жарыктыгын көзөмөлдөө үчүн
Убакытты көрсөтүү коду жана PWM жарыктыгын көзөмөлдөө үчүн

Кийинчерээк мен бардык сандагы драйверлерди энергия менен камсыздоодо PMOS транзисторун коштум. Мунун жардамы менен импульстун туурасы модуляциясы дисплейдин жарыктыгын көзөмөлдөйт. Бул жерде убакытты көрсөтүү үчүн НЕГИЗГИ код.

веб -саат дисплейи #include "LPC11U3x.bas"

'глобалдар

hr = 0 'саатты аныктоо

min = 0 'мүнөтүн аныктоо

#degine SEG_0 & HBB00

#degine SEG_1 & H1800

#Define SEG_2 & HD300

#SEG_3 & HD900 аныктоо

#degine SEG_4 & H7800

#SEG_5 & HE900 аныктоо

#SEG_6 & HEB00 аныктоо

#degine SEG_7 & H9800

#аныктоо SEG_8 & HFB00

#аныктоо SEG_9 & HF800

#degine 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

#аныктоо US_TIME

sub display_time (ката, саат, мүнөт)

күңүрт саат 10, саат 1, мин10, мин1, мен

#ifdef US_TIME

эгер ср> 12 анда ср -= 12

hr = 0 анда hr = 12

#endif

hr10 = hr / 10

hr1 = hr MOD 10

min10 = min / 10

min1 = min MOD 10

i = 0ден 1ге чейин

анда саат 10до

IO (45) = 0

endif

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

учтар

'колдонуучу TIMER1 (32 бит) ар бир мүнөттү үзгүлтүккө учуратуу үчүн

INTERRUPT SUB TIMER1IRQ

T1_IR = 1 'Үзгүлтүктү тазалоо

мүн += 1

эгер мин> 59 болсо

мүн = 0

hr += 1

эгер саат> 23 болсо

hr = 0

endif

endif

ENDSUB

ON_TIMER SUB (max_cnt, dothis)

TIMER1_ISR = dothis + 1 'VICтин функциясы - Thumb операциясы үчүн +1 керек

SYSCON_SYSAHBCLKCTRL ЖЕ = (1 << 10) 'TIMER1 иштетүү

T1_PR = 0 'prescale жок - маанини тагыраак убакытка тууралайт

VICIntEnable OR = (1 << TIMER1_IRQn) 'үзүүнү иштетүү

T1_MR0 = max_cnt-1 'мс дал келүү санын орнотту

T1_MCR = 3 'Үзгүлтүк жана баштапкы абалга келтирүү

MR0 T1_IR = 1 'ачык үзгүлтүк

T1_TC = 0 'ачык таймер эсептегичи

T1_TCR = 1 'TIMER1 иштетүү

ENDSUB

#define MINUT_PCLK 2880000000 '48 секундда 60 секунд

негизги:

ср = 9

мүн = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'PWM бир күнү - P0_22ге өтүү керекпи ??

ал эми 1

display_time (0, с., мүн.)

цикл

4 -кадам: Интернетке туташуу

Интернет туташуусун түзүү
Интернет туташуусун түзүү

WiFi туташуусу үчүн ESP8266 колдонуңуз. Интернетте бир аз убакыт өткөндөн кийин, эң жакшы чечим nodemcu 0.9.6 версиясы жана эски esp8266_flasher эң жакшы иштеген.

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

Андан кийин интернеттен убакыт берүү үчүн жөнөкөй PHP баракчасы-

Coridium Time Server

<? php

$ timezone = htmlspecialchars ($ _ GET ["zone"]); эгер ($ timezone == "")

$ timezone = 'Америка/Los_Angeles';

$ tz_object = жаңы DateTimeZone ($ убакыт алкагы);

$ datetime = жаңы DateTime ();

$ datetime-> setTimezone ($ tz_object);

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

жаңырык "";

echo "дата-", $ 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: on ("алуу", функция (sck, c) басып чыгаруу (c) аягы)

sk: туташуу (80, "coridium.us")

sk: жөнөтүү ("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 кодун кошуңуз

Интернеттен убакытты талдоо үчүн BASIC кодун кошуңуз
Интернеттен убакытты талдоо үчүн BASIC кодун кошуңуз

Бул толук базалык программанын чакан бөлүгү, ал программаны акыркы баскычтагы шилтемеден көрсө болот.

if strstr (build_gets, "time is-") = 0 анда

hr = build_gets (8) - "0"

эгер build_gets (9) = ":" анда

мүн = (build_gets (10) - "0")*10

мүн += build_gets (11) - "0"

башка

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

мүн = (build_gets (11) - "0")*10

мүн += build_gets (12) - "0"

endif

endif

6 -кадам: Жарык сенсорун жана кодду дисплейди караңгылатууга кошуңуз

Жарык сенсорун жана кодду дисплейди караңгылатууга кошуңуз
Жарык сенсорун жана кодду дисплейди караңгылатууга кошуңуз
Жарык сенсорун жана кодду дисплейди караңгылатууга кошуңуз
Жарык сенсорун жана кодду дисплейди караңгылатууга кошуңуз
Жарык сенсорун жана кодду дисплейди караңгылатууга кошуңуз
Жарык сенсорун жана кодду дисплейди караңгылатууга кошуңуз

Бөлмөдөгү айланадагы жарыкты сезүү үчүн фото транзистор кошулду. Ансыз дисплей өлгөндөрдү (мени) түнкүсүн ойгото турганчалык жарык.

Сүрөт транзисторунун аналогдук чыңалуусу окулат жана импульстун туурасы модуляциясы дисплейдин жалпы жарыктыгын орнотот.

7 -кадам: Саатты өйдө басуу жана аны колдонууну баштоо

Саатты өйдө басуу жана аны колдонууну баштоо
Саатты өйдө басуу жана аны колдонууну баштоо

Акыркы версия убакытты көрсөтөт жана болжол менен түнкү саат 3тө ал учурдагы убакытты окуу үчүн интернетке чыгат. Бул ошондой эле күндүзгү жарыкты үнөмдөөгө жардам берет.

Бул долбоордун мотивациясы тоолордо электр энергиясынын үзгүлтүккө учурашы жана аларды тирүү кармоо үчүн сааттарды баштапкы абалга келтирүү же батареяларды алмаштыруу зарылдыгы болду.

Бул долбоорго кыскача сереп болду.

Бул DIY интернетке туташкан сааттын толук маалыматы.

Сунушталууда: