Оглавление:
- Запасы
- Шаг 1. Подключите цифровой привод и сегментный привод для мультиплексированного отображения
- Шаг 2: проверьте подключения
- Шаг 3: Код для отображения времени и ШИМ для управления яркостью
- Шаг 4. Подключитесь к Интернету
- Шаг 5: Добавьте БЕЙСИК-код для анализа времени из Интернета
- Шаг 6. Добавьте датчик освещенности и код для уменьшения яркости дисплея
- Шаг 7. Застегните часы и начните их использовать
Видео: Цифровые часы с подключением к Интернету: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Нашла на 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, эту полную программу можно просмотреть по ссылке на последнем шаге.
если 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 часа ночи оно выходит в Интернет, чтобы прочитать текущее время. Это также позволяет экономить летнее время.
Мотивацией для этого проекта были перебои в подаче электроэнергии, которые мы испытывали здесь, в горах, и необходимость сбросить часы или заменить батареи, чтобы они оставались живыми.
Это был краткий обзор проекта.
Полная информация об этих сетевых часах, сделанных своими руками.
Рекомендуемые:
Система капельного орошения с подключением к Интернету (ESP32 и Blynk), управляемая с обратной связью по влажности почвы: 5 шагов
Система капельного орошения, управляемая с обратной связью по влажности почвы (ESP32 и Blynk): беспокойтесь о своем саду или растениях, когда вы уезжаете в отпуск, или забывайте ежедневно поливать растение. Что ж, вот решение. Это система капельного орошения с контролируемой влажностью почвы и глобально подключенная система, управляемая ESP32 на программном уровне i
Потрясающая теплица с автоматическим поливом, подключением к Интернету и многим другим: 7 шагов (с изображениями)
Потрясающая теплица с автоматическим поливом, подключением к Интернету и многим другим: добро пожаловать в эту инструкцию. В начале марта я была в садовой лавке и увидела теплицы. И так как я уже давно хотел создать проект с заводами и электроникой, я пошел дальше и купил его: https://www.instagram.com/p
Розетка с подключением к Интернету: 13 шагов
Розетка с подключением к Интернету: PowerHub Webserver Project & Инструкции по настройке розетки с выходом в Интернет
Вентилятор с подключением к Интернету для Zwift: 7 шагов (с изображениями)
Вентилятор с подключением к Интернету для Zwift: я сделал вентилятор, подключенный к Интернету, для использования с Zwift, виртуальной гоночной игрой / системой обучения. Когда вы едете быстрее в Zwift, вентилятор вращается быстрее, чтобы имитировать внешние условия катания .;) Я получил удовольствие, создавая это, надеюсь, вам понравится
Дисплей на электронной бумаге для монитора погоды IoT - ESP8266 с подключением к Интернету: 7 шагов
Дисплей на электронной бумаге для монитора погоды IoT | ESP8266 с подключением к Интернету: на дисплее E-Paper будет отображаться информация о погоде, синхронизированная с API OpenWeatherMap (через Wi-Fi). Сердце проекта - ESP8266 / 32. Эй, как дела, ребята? Акарш из CETech. Сегодня мы собираемся сделать проект, который будет погодным монитором, который