Оглавление:

Цифровые часы с подключением к Интернету: 7 шагов
Цифровые часы с подключением к Интернету: 7 шагов

Видео: Цифровые часы с подключением к Интернету: 7 шагов

Видео: Цифровые часы с подключением к Интернету: 7 шагов
Видео: ФИТНЕС-БРАСЛЕТ М7. SMART BAND 7 - ОБЗОР и ПЕРВАЯ НАСТРОЙКА (+119 циферблатов) 2024, Ноябрь
Anonim
Цифровые часы с подключением к Интернету
Цифровые часы с подключением к Интернету

Нашла на Amazon цифровые часы за 10 долларов. Теперь настроим его, чтобы получать время из Интернета.

Запасы

ARM Stamp, программируемый на BASIC, доступен здесь

Шаг 1. Подключите цифровой привод и сегментный привод для мультиплексированного отображения

Подключите цифровой привод и сегментный привод для мультиплексного отображения
Подключите цифровой привод и сегментный привод для мультиплексного отображения

Я начал с дешевых готовых цифровых часов с большими цифрами. Сначала я удалил существующий чип часов. Затем провел некоторое исследование и обнаружил 7-сегментные соединения, которыми может управлять непосредственно микропроцессор. Затем нашли 4-значные драйверы, которые были транзисторами, которыми может управлять микропроцессор. А потом подключил их.

Шаг 2: проверьте подключения

Проверьте соединения
Проверьте соединения

В качестве эксперимента я написал программу BASIC для управления всеми линиями, чтобы проверить проводку и измерить ток, который в данном случае составлял 82 мА.

Затем нужно было написать код для сканирования строк.

'привод отображения веб-часов

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: Код для отображения времени и ШИМ для управления яркостью

Код для отображения времени и ШИМ для управления яркостью
Код для отображения времени и ШИМ для управления яркостью
Код для отображения времени и ШИМ для управления яркостью
Код для отображения времени и ШИМ для управления яркостью

Затем я добавил транзистор 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

#define US_TIME

sub display_time (ошибка, час, мин)

dim hr10, hr1, min10, min1, i

#ifdef US_TIME

если hr> 12, то hr - = 12

если hr = 0, то hr = 12

#endif

hr10 = час / 10

hr1 = час MOD 10

мин10 = мин / 10

min1 = min MOD 10

для i = от 0 до 1

если hr10 то

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 (мин10)

подождите (DIG_WAIT)

ВХОД (47)

IO (48) = 0

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

GPIO_CLR (0) = DIGarray (мин1)

подождите (DIG_WAIT)

ВХОД (48)

следующий я

конец

'пользовательский TIMER1 (32 бит) для прерывания каждую минуту

ПРЕРЫВАНИЕ ДОПОЛНИТЕЛЬНОГО ТАЙМЕРА 1IRQ

T1_IR = 1 'Очистить прерывание

мин + = 1

если min> 59, то

мин = 0

ч + = 1

если hr> 23, то

ч = 0

endif

endif

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 'установить количество совпадений в мс

T1_MCR = 3 'Прерывание и сброс на

MR0 T1_IR = 1 'очистить прерывание

T1_TC = 0 'сбросить счетчик таймера

T1_TCR = 1 'Включение ТАЙМЕРА1

ENDSUB

#define MINUT_PCLK 2880000000 '60 секунд при 48 МГц

главный:

ч = 9

мин = 33

ON_TIMER (MINUT_PCLK, ADDRESSOF TIMER1IRQ)

IO (7) = 0 'ШИМ когда-нибудь - нужно перейти на P0_22 ??

пока 1

display_time (0, час, мин)

петля

Шаг 4. Подключитесь к Интернету

Подключитесь к Интернету
Подключитесь к Интернету

Используйте ESP8266 для подключения к Wi-Fi. После того, как некоторое время копался в сети, лучшим решением была nodemcu версии 0.9.6, а более старая esp8266_flasher работала лучше всего.

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

Затем простая веб-страница PHP для обслуживания времени из Интернета -

Сервер времени Coridium

<? php

$ timezone = htmlspecialchars ($ _ GET ["зона"]); если ($ timezone == "")

$ timezone = 'Америка / Лос-Анджелес';

$ tz_object = новый DateTimeZone ($ часовой пояс);

$ datetime = новый DateTime ();

$ datetime-> setTimezone ($ tz_object);

echo "время -", $ datetime-> format ('H: i: s');

эхо "";

echo "дата -", $ datetime-> format ('m / d / Y');

?>

Эта веб-страница предназначена для того, чтобы вы могли запросить

coridium.us/time.php - и вы получите часовой пояс Тихоокеанского региона США

или

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

Никакой проверки ошибок и, скорее всего, никогда не будет

И Lua, чтобы прочитать это -

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

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

sk: on ("получение", функция (sck, c) print (c) end)

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

sk: send ("GET /time.php HTTP / 1.1 / r / nHost: coridium.us / r / nConnection: keep-alive / r / nAccept: * / * / r / n / r / n")

И ты вернешься в прошлое, как

время -09: 38: 49дата -12 / 31/2018

Шаг 5: Добавьте БЕЙСИК-код для анализа времени из Интернета

Добавьте BASIC-код для анализа времени из Интернета
Добавьте BASIC-код для анализа времени из Интернета

Это подмножество полной программы 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"

endif

endif

Шаг 6. Добавьте датчик освещенности и код для уменьшения яркости дисплея

Добавьте датчик освещенности и код для уменьшения яркости дисплея
Добавьте датчик освещенности и код для уменьшения яркости дисплея
Добавьте датчик освещенности и код для уменьшения яркости дисплея
Добавьте датчик освещенности и код для уменьшения яркости дисплея
Добавьте датчик освещенности и код для уменьшения яркости дисплея
Добавьте датчик освещенности и код для уменьшения яркости дисплея

Был добавлен фототранзистор, чтобы воспринимать окружающий свет в комнате. Без него дисплей достаточно яркий, чтобы разбудить мертвого (меня) ночью.

Аналоговое напряжение на выходе фототранзистора считывается, а широтно-импульсная модуляция устанавливает общую яркость дисплея.

Шаг 7. Застегните часы и начните их использовать

Застегните часы и начните их использовать
Застегните часы и начните их использовать

В окончательной версии отображается время, и примерно в 3 часа ночи оно выходит в Интернет, чтобы прочитать текущее время. Это также позволяет экономить летнее время.

Мотивацией для этого проекта были перебои в подаче электроэнергии, которые мы испытывали здесь, в горах, и необходимость сбросить часы или заменить батареи, чтобы они оставались живыми.

Это был краткий обзор проекта.

Полная информация об этих сетевых часах, сделанных своими руками.

Рекомендуемые: