Мазмұны:
- Жабдықтар
- 1 -қадам: Сандық дискіні және мультиплексті дисплейге арналған сегменттік дискіні қосыңыз
- 2 -қадам: Қосылымдарды тексеріңіз
- 3 -қадам: Уақытты көрсету коды және жарықтықты басқару үшін PWM
- 4 -қадам: Интернетке қосылу
- 5 -қадам: Интернеттен уақытты талдау үшін BASIC кодын қосыңыз
- 6 -қадам: Дисплейді күңгірттеу үшін жарық сенсоры мен кодын қосыңыз
- 7 -қадам: Сағат түймесін басып, оны пайдалануды бастаңыз
Бейне: Интернетке қосылған сандық сағат: 7 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Amazon -да 10 доллар тұратын сандық сағат табылды. Енді интернеттен уақытты алу үшін оны реттеу.
Жабдықтар
BASIC тілінде бағдарламаланатын ARM Stamp мұнда қол жетімді
1 -қадам: Сандық дискіні және мультиплексті дисплейге арналған сегменттік дискіні қосыңыз
Мен сөреден арзан сандық үлкен сағаттан бастадым. Алдымен мен қолданыстағы сағат чипін алып тастадым. Содан кейін микропроцессор тікелей басқаруға болатын 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
Содан кейін мен барлық разрядты драйверлерге қуат көзіне PMOS транзисторын қостым. Оның көмегімен импульстік ен модуляциясы дисплей жарықтығын басқарады. Міне, уақытты көрсету үшін BASIC коды.
веб -дисплей дискі #«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 анықтаңыз
#US_TIME анықтаңыз
sub display_time (қате, сағ, мин)
күңгірт сағ10, сағ1, мин10, мин1, мен
#ifdef US_TIME
егер сағ> 12 болса, сағ -= 12
егер сағ = 0 болса, онда сағ = 12 болады
#endif
сағ10 = сағ / 10
сағ1 = сағ MOD 10
мин10 = мин / 10
min1 = min MOD 10
i = 0 -ден 1 -ге дейін
егер сағат 10 болса
IO (45) = 0
эндиф
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (сағ10)
GPIO_CLR (0) = DIGarray (сағ10)
күту (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 (мин10)
GPIO_CLR (0) = DIGarray (мин10)
күту (DIG_WAIT)
Кіріс (47)
IO (48) = 0
GPIO_DIR (0) = (GPIO_DIR (0) & HFFFF00FF) + DIGarray (мин1)
GPIO_CLR (0) = DIGarray (мин1)
күту (DIG_WAIT)
Кіріс (48)
келесі i
ұшы
пайдаланушы TIMER1 (32 бит) әр минутты үзу үшін
INTERRUPT SUB TIMER1IRQ
T1_IR = 1 'Үзілісті өшіру
мин += 1
егер мин> 59 болса
мин = 0
сағ += 1
егер сағ> 23 болса
сағ = 0
эндиф
эндиф
ENDSUB
ON_TIMER SUB (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 'мс сәйкестік санын орнатады
T1_MCR = 3 'Үзіліс және қалпына келтіру
MR0 T1_IR = 1 'таза үзіліс
T1_TC = 0 'анық таймер есептегіші
T1_TCR = 1 'TIMER1 қосу
ENDSUB
#анықтау MINUT_PCLK 2880000000 '48 МГц жиілігінде 60 секунд
негізгі:
сағ = 9
мин = 33
ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)
IO (7) = 0 'PWM бір күні - P0_22 -ге көшу керек пе?
ал 1
көрсету_ уақыты (0, сағ, мин)
цикл
4 -қадам: Интернетке қосылу
WiFi байланысы үшін ESP8266 пайдаланыңыз. Біраз уақыт интернетті аралап көргеннен кейін 0.9.6 nodemcu нұсқасы ең жақсы шешім болды, ал ескі esp8266_flasher ең жақсы жұмыс істеді.
www.electrodragon.com/w/File:Nodemcu_20150704_firmware.zip
Содан кейін интернеттен уақытты қамтамасыз ететін қарапайым PHP веб-беті-
Coridium уақыт сервері
<? php
$ timezone = htmlspecialchars ($ _ GET [«аймақ»]); егер ($ уақыт белдеуі == «»)
$ timezone = 'Америка/Los_Angeles';
$ tz_object = жаңа DateTimeZone ($ уақыт белдеуі);
$ datetime = жаңа DateTime ();
$ datetime-> setTimezone ($ tz_object);
echo «time is-», $ datetime-> format ('H: i: s');
жаңғырық «»;
echo «date is-», $ 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) басып шығару (с) соңы)
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, күні-12.12.18
5 -қадам: Интернеттен уақытты талдау үшін BASIC кодын қосыңыз
Бұл толық BASIC бағдарламасының жиынтығы, оны толық бағдарламаны соңғы қадамдағы сілтеме бойынша қарауға болады.
егер strstr (build_gets, «time is») = 0 болса
сағ = build_gets (8) - «0»
егер build_gets (9) = «:» болса, онда
мин = (build_gets (10) - «0»)*10
мин += build_gets (11) - «0»
басқа
сағ = сағ * 10 + build_gets (9) - «0»
мин = (build_gets (11) - «0»)*10
мин += build_gets (12) - «0»
эндиф
эндиф
6 -қадам: Дисплейді күңгірттеу үшін жарық сенсоры мен кодын қосыңыз
Бөлмедегі жарықты сезіну үшін фото транзистор қосылды. Онсыз дисплей өлгендерді (мені) түнде оятатындай жарқын.
Фото транзистордың шығысындағы аналогтық кернеу оқылады және импульстің ені модуляциясы дисплейдің жалпы жарықтығын орнатады.
7 -қадам: Сағат түймесін басып, оны пайдалануды бастаңыз
Соңғы нұсқада уақыт көрсетіледі, ал таңғы 3 -те ол ағымдағы уақытты оқу үшін желіге шығады. Бұл сонымен қатар күндізгі уақытты үнемдеуге мүмкіндік береді.
Бұл жобаның мотивациясы - тауларда электр қуатын өшіру және тірі қалу үшін сағаттарды қалпына келтіру немесе батареяларды ауыстыру қажеттілігі.
Бұл жобаның қысқаша шолуы болды.
Бұл DIY желіге қосылған сағат туралы толық ақпарат.
Ұсынылған:
Топырақтың ылғалдылығы бойынша кері байланыс бақыланатын Интернетке қосылған тамшылатып суару жүйесі (ESP32 және Blynk): 5 қадам
Топырақтың ылғалдылығы туралы кері байланыс бақыланатын Интернетке қосылған тамшылатып суару жүйесі (ESP32 және Blynk): Ұзақ демалыстарға шыққанда өз бақшаңызға немесе өсімдіктеріңізге алаңдаңыз, немесе зауытты күнделікті суаруды ұмытпаңыз. Міне шешім - бұл топырақтың ылғалдылығын бақылайтын және жаһандық байланыстырылған тамшылатып суару жүйесі, бағдарламалық қамтамасыз етудің алдыңғы жағында ESP32 басқарады
Интернетке қосылған дүкен стерео жасау: 6 қадам (суреттермен)
Интернетке қосылған стерео дүкенін жасау: Мен көлік жүргізген кезде радионы қосқанда, мен жергілікті колледждің 90.7 KALX радиостанциясына жүгінемін. Мен өмір сүрген жылдар мен әр түрлі жерлерде мен әрқашан колледж радиостанцияларын тыңдадым. Интернет күшінің арқасында мен қазір тыңдай аламын
Интернетке қосылған қуат розеткасы: 13 қадам
Интернет қосылған қуат розеткасы: PowerHub Webserver жобасы & Интернетке қосылған розетканы орнату бойынша нұсқаулар: Интернетке қосылған жарық пен сіздің үйдегі розеткалар үшін орталық деректерді сақтау орталығы
Zwift үшін Интернетке қосылған желдеткіш: 7 қадам (суреттермен)
Zwift үшін Интернетке қосылған желдеткіш: Мен интернетке қосылған желдеткіш жасадым, бұл веложарыс ойындары / жаттығуларының виртуалды жүйесі Zwift. Егер сіз Zwift -те жылдам жүрсеңіз, желдеткіш сыртқа шығу жағдайын имитациялау үшін тезірек айналады.;) Мен бұл құрылысты жақсы өткіздім, сізге ұнайды деп үміттенемін
IoT Weather Monitor электрондық қағаз дисплейі - Интернетке қосылған ESP8266: 7 қадам
IoT Weather Monitor электрондық қағаз дисплейі | Интернетке қосылған ESP8266: E-Paper дисплейі OpenWeatherMap API (WiFi арқылы) синхрондалған ауа райы туралы ақпаратты көрсетеді. Жобаның жүрегі - ESP8266/32. Сәлеметсіз бе, балалар? Akarsh мұнда CETech. Бүгін біз ауа райы мониторы болып табылатын жоба жасамақпыз