Часы были куплены и собраны год назад. Так как все покупки участвующие в обзоре покупались давно и продавцы их уже не продают, ссылки ведут на аналогичные предложения.
Основой часов является микроконтроллер stc15w1k24s и микросхема rtc ds3231. Сменив прошивку микроконтроллера и подключив дополнительные модули мы можем увеличить функционал часов.
Расстояние между отверстиями модулей 5 мм.
Изначально для изготовления П-образных контактов пытался изогнуть штырьки от гребенок PLS, но почему-то при изгибании они лопались. Пришлось применить жилу от провода ПВ-1/ПУВ 1х0,5 мм( диаметр жилы примерно 0.7мм ).
и подпаяны к часам.
Точки подключения модулей.
Перепрошиты и собраны.
Отличия прошивки от стандартной(заводской):
1. При подключенном модуле si7021 — вывод влажности.
2. При подключенном модуле bmp180 — вывод давления.
3. При подключенном модуле bme280 — вывод давления и влажности.
4. Будильник с выбором дней недели.
5. 6 уровней яркости.
6. Наши праздники.
7. Возможность корректировки хода ds3231.
8. Пока отсутствуют анимация/эффекты.
Мне вот почему то думается, что давление и влажность как таковые не столь важны, сколь интересно знать тенденцию их изменения. Т.е. если бы при выводе их значений где-то рядом отображалась бы стрелочка вверх или вниз (куда это самое значение двигается скажем за последние несколько часов). А если бы при сильном изменении она ещё бы и зловеще мигала — было бы вообще шикарно))
За неделю не нужно.
А вот на основании изменения давления за последние 6-12 часов вполне можно принять решение брать ли с собой зонт или отправиться куда-то налегке.
за всю картинку давление падало 4 раза. дождь был только 25го да и то не везде.
Мне до работы 25 км — по пути погода может радикально переменится раза 2.
Вот такая маленькая и гордая страна с грустными синоптиками :D
Хотя именно осадки в ближайщие пару дней они угадывают очень точно
bme280 — работает.
В теории и bmp280 должен.
Сначала ищется по адресу 0x76, потом по 0x77, при удачной проверке 0x76, 0x77 не проверяется.
По chipid определяется модель датчика, и его возможности.
Давно ждал когда можно избавится от этих Китайских праздников. Хорошая работа!.. Супер..! Тож хочу так прошить…
Только вот несколько вопросиков…
Можно ссылочку на саму програмку-прошивальщик, где её скачать можно? Если не подключать дополнительные модули, а только пролить. Будут работать часики?
Если с одним модулем BMP180, без si7021, будут работать?
А вот это Firmware for STC15W1K24S microcontroller on DIY LED Matrix Clock with DS3231 Это и есть исодник?
Интересно, в заводской прошивке почасовой сигнал был только один раз, при смене часа… А в той прошивке исправлено?
Почасовой сигнал, конечно традиционно один раз в час — достаточно. Но именно на прошивке с «завода» вот такая странность есть… Допустим подали питание на часики в 10:20, они в 11:00 как и положено пикнули… И далее в 12 часов, в 13 часов и так далее — молчат… И в меню непонятно как этот почасовой сигнал включается…
Подскажите вот ещё что… Можно как то прошивку с часов «списать», чтоб потом можно было «откат» сделать...?
Температуру берет с ds3231.
Про точность, жаль что единственную si7021 впаял в часы она тоже что то свое показывала. Все трое воткнуты в одну бредбоард, после 15 минутного прогрева:
bme280 Temperature = 23.09 *C
bme280 Pressure = 744.45 mm
bme280 Humidity = 50.24 %
bmp180 Temperature = 22.30 `C
bmp180 Pressure = 743.8 mm
ds3231 Temperature = 21.25 `C
Пробовал прошивать, но что то даже MCU не удалось прочитать… Первая попытка в жизни… и появились вопросики… Можно подробней для несильно продвинутых… На часы питание с БП перед соединением программатора и компа надо подавать...? Перед запуском прошивки на программаторе кнопку Ресет нужно нажимать? Или я програматор не правильный использовал..? Или сигнал готовности проводулькой нужно подавать… я фото программатора позже выложу, но он точно но CH340 сделан, но может он не UART...? И у моего ноги на так расположены как у вас на фото…
Для любых операций из STC-ISP( «Download» / «Check MCU» ) нужно чтобы STC15 вошел в bootloader, то есть его нужно перезапустить. На верхнем UART-адаптере нажатие на кнопку обесточивает вывод VCC, что приводит к сбросу и входу в bootloader.
1. часы выключены.
2. нажимаем «Download» или «Check MCU»
3. если на часы припаяны контакты и подсоединен шлейф, то нажимаем кнопку на UART или вручную отключаем и подключаем вывод VCC.
если не припаяны то просто начиная с GND прислоняем гребенку, VCC должен податься последним и не отпускаем до радостного писка часов.
Опыты лучше начать с кнопки «Check MCU»
Checking target MCU ...
MCU type: STC15W1K24S
F/W version: 7.2.5T
Current H/W Option:
. Current system clock source is internal IRC oscillator
. IRC frequency: 18.425MHz
. Wakeup Timer frequency: 36.896KHz
. Do not detect the level of P3.2 and P3.3 next download
. Power-on reset, use the extra power-on delay
. RESET pin behaves as I/O pin
. Reset while detect a Low-Voltage
. Thresh voltage level of the built-in LVD : 2.62 V
. Inhibit EEPROM operation under Low-Voltage
. CPU-Core supply level : 2.81 V
. Hardware do not enable Watch-Dog-Timer
. Watch-Dog-Timer pre-scalar : 256
. Watch-Dog-Timer stop count in idle mode
. Program can modify the Watch-Dog-Timer scalar
. Do not erase user EEPROM area at next download
. Do not control 485 at next download
. Do not check user password next download
. TXD is independent IO
. TXD pin as quasi-bidirectional mode after reset
. P2.0 output HIGH level after reset
. Testing time: 2016-11-17
. MCU type: STC15W1K24S
F/W version: 7.2.5T
Complete !(2017-08-31 10:41:44)
Работают нормально дополнительные датчики ещё не подпаивал, праздники на русском пишут… Клёво…
А можно в праздники добавить день энергетика 22 декабря..?
На Keil C51… Пробовал сам найти, но пока не получается… На официальном сайте, какой то, бонус на 14 дней дают, но чтоб воспользоваться нужно свой эл.адрес ввести я все сделал как они хотят, но мой ящик что то оказался неправильным для них… Наверно надо им надо «буржуинский» типа gmail.com…
Ну почему люди считают, что их обзоры читают ТОЛЬКО жители России??? Неужели так тяжело указать стоимость в более распространённых тугриках?
И сам обзор малоинформативен. В комментариях и то больше информации почерпнул, чем в обзоре.
А то, что он расположен в буржуйском интернете? Написан на буржуйском языке? Крутится на буржуйскуом сервере? Не нужно лепить горбатого со своей зоной «ru». На каждый аналогичный глупый аргумент есть десяток грамотных ответов, от которых вы как минимум засмущаетесь и почувствуете себя довольно неловко.
Достаточно уважать других посетителей сайта и предоставлять удобоваримую цену в нормальной валюте, которую в любой стране мира людям удобно пересчитать в свою национальную. Мы же уважаем вас и пишем на русском, а не на своем родном. Почему вы считаете, что все остальные люди на Земле хуже вас и должны прогибаться под вас? Обыкновенное уважение. Тем более тысячу раз просили поступать по человечески.
Это обзор про русскую прошивку для китайских часов. Автор обзора очень мне помог в русификации прошивки для другой модели подобных часов. Свою прошивку он писал с нуля, так как исходников китайской прошивки на эту модель не было. Прошивка из-за используемых в ней российских праздников рассчитана в основном для пользователей из России. Исходники есть можно сделать прошивку с праздниками и днями недели других стран. Можно добавить в прошивку и дни рождения членов семьи, но это уже спец прошивка для отдельной семьи.
Случайно не на контроллере STC15F2K16S2? У автора на гитхабе есть прошивка для часов на таком контроллере, но у меня она почему то не заработала, после прошивки все элементы матрицы постоянно горят.
Поддержку STC15 в Keil можно добавить через STC-ISP.
Сколько ни пытался добавить поддержку STC15 через STC-ISP так и не понял как это можно сделать.
При открытии проекта в Keil было сообщение о том что «Target device not found», ну или что то в этом роде. В библиотеке девайсов STC контроллеров, конечно же, не оказалось. Пришлось добавить их вручную, взяв за основу стандартный контроллер 8051.
Без добавления поддержки данного контроллера в Keil получаю ошибку: sys.h(4): warning C318: can't open file 'STC15.H'
Прошу прощения за беспокойство, но подумалось, что может быть Вам будет интересно, что кто-то вносит дополнения в Вашу программу, и посмотреть на эти дополнения. Подробности и ссылки в комментариях. В любом случае большое спасибо за исходники.
День добрый. Набор DIY 3231 собран на светодиодах(матричный) при прошивке возникла проблема; часы перестали работать. Светодиоды не зажигаются, проц IAP15W413S прошивал через STS-ISP ошибок не выдал прошил нормально.Вопрос прошивка может не подходить к этому процу?
Подпаяв к часам модули bmp180 и si7021 и впаяв чистый микроконтроллер вместо того, который был в наборе (чтобы не портить заводскую прошивку), я воспользовался предоставленными v0tang исходниками его варианта прошивки, внеся некоторые изменения в программу так, как мне этого хотелось:
Уменьшение частоты мигания двоеточия между часами и минутами в два раза.
Изменение типа дисплея в пункте меню DiSP для отображения только времени с 1 на 5, как в заводской прошивке.
Увеличение интервала, через который отображаются показатели (дата, день недели, температура, давление и влажность), с 5 до 60 сек.
Большое спасибо v0tang за предосталенные исходники его прошивки.
Добавление в показатели года (на первом месте), минут и секунд (после дня недели) — отображаются 5 сек, чтобы можно было посмотреть точность хода часов.
В режиме отображения только времени (тип дисплея 5) нажатие кнопки SET приводит к отображению показателей, начиная с года, и кончая празником, если он есть. Последующие нажатия кнопки SET во время отображения показателей приводят к пропуску показателя. Так можно быстро добраться до интересующих показателей (виджетов).
Добавлен пункт меню EXiT — выход из меню, помимо долгого нажатия на кнопку SET.
Изменены выходы из пунктов меню FONT и MiDP: в исходной версии v0tang (файл OldDIYClock[18.432].hex, 56440 bytes от 10.09.2017), если тип дисплея был не равен 1, т.е. осуществлялся режим отображения показателей через 5 сек, то при выборе пункта меню FONT или MiDP и нажатии кнопки SET, отображения показателей через 5 сек больше не происходило. Чтобы оно возобновлялось, надо было нажимать еще раз кнопку SET. Может так и было задумано, но я это изменил. У меня при выходе из пунктов меню FONT, MiDP и EXiT путем нажатия кнопки SET отображение показателей (когда тип дисплея не равен 5) не останавливается.
Большое спасибо v0tang за предоставленные им исходники его прошивки.
Завершил реализацию выбора шрифта и типа двоеточия практически полностью сделанную v0tang в его прошивке. Функции выбора такие же, как и для выбора типа дисплея. Ничего нового и моего тут нет — все было уже написано v0tang. Только подправил несколько цифр. Исходники и прошивка там же, где и предыдущие.
Добавил вывод строки о празднике через каждый час, независимо от выбора типа дисплея и вывода этой строки вместе с другими показателями (дата, день недели, температура и т.д.). Исходники и прошивка там же, где и предыдущие.
Имеется в виду пункт меню «STRG»? Тоесть, когда STRG=On, то праздник будет отображаться только раз в час, а если STRG=Off — то каждый раз после всех виджетов?
Если disp= 5, то независимо от STRG, виджеты не будут отображаться автоматически, но цикл их отображения, включая и строку праздника, если он имеется в данный день, можно запустить, нажав кнопку SET. При этом disp строка праздника в день праздника будет отображаться раз в час, если STRG=On. Если установить STRG=Off, то строка праздника больше не будет отображаться не при каких условиях. Это можно сделать после того, как вы в праздничный день увидили эту строку пару раз, и больше не хотите ее видеть. В следующий день вы можете опять устаноить STRG=On, чтобы не пропустить следующий праздник. Если disp не равно 5, то происходит автоматическое отображение всех виджетов, включая и строку для празника в праздничный день, через заданный в программе интервал времени — через 60 секунд. При этом disp строка праздников в праздничный день не будет отображаться через час при STRG=On, и виждеты не будут отображаться путем нажатия кнопки SET.
Вы можете поэкспериментировать с этим, установив дату, например, на 1-е мая. У меня DISP=5, STRG=On.
Поскольку значение STRG сохраняется в EEPROM, то также, как и при других изменениях параметров, хранящихся в EEPROM, я делал прошивку с галкой у Erase all EEPROM data next time program… в прошивальщике, для удаления всех данных из EEPROM.
Автономный вывод строки о празднике теперь можно включать и выключать через меню часов. Выдается она только в режиме дисплея отображения только времени.Исходники и прошивка там же, где и предыдущие.
В версии прошивки от Varanа у меня не получается установить коррекцию значения температуры.
PS: прошивал без сброса EEPROM.
Баг, или всё-таки нужно прошить со сбросом?
Ошибка. Я ее исправил. С температурой от датчика Si7021 работает. Надо проверить еще, как работает, когда температура считывается с микросхемы RTC DS3231, а не с датчика. С этой коррекцией есть один неудобный момент. Когда вы корректируете температуру, отображается температура, и вы видете, как она увеличивается с каждым нажатием на "+" или уменьшается с каждым нажатием на "-" на один градус. Дальше вы нажимаете SET и температура будет теперь корректироваться на какое-то установленное вами количество градусов от -9 до +9. Трудность заключается в том, чтобы убрать введенную коррекцию. Надо запомнить, на сколько градусов вы скорректировали, или нажимать "+" до тех пор, пока отображаемая температура после очередного нажатия не уменьшится на 18 градусов, и затем нажимать "+" еще 9 раз. Т.е. все это происходит вслепую. Лучше было бы, чтобы при коррекции отображалась бы не результирующая температура, а величина коррекции в градусах. Тогда отказаться от коррекции было бы просто, установив коррекцию в 0 градусов. Я могу это сделать в своей прошивке, если кому-то это надо. Когда я протестирую исправление, то выложу новый вариант там же.
Реализовал некоторые замечания v0tang. Выбор шрифта и мигающей точки примерно как у китайцев. Добавил в меню пункт RST — reset — сброс параметров, хранящихся в EEPROM, к значениям по умолчанию (defult). Часть из этих параметров приведена ниже:
Откорректировал holidays.c в Keil_v5, скомпилировал hex, зашил в контроллер. Отображает строку не полностью, а только 47 символов с учетом пробелов, на 48 обрывается. У меня в строке 54 символа.
Нашел в display.c константы #define DISPLAYSIZE 22 и #define RENDSERBUFFERSIZE 254, изменил 254 на 512 — отображение начинается с 48 символа. Подскажите как увеличить объем буфера экрана.
Нет. В данной строке uint8_t это размерность одного элемента массива.
Я же имел ввиду адресацию, то есть те переменные что используются в [скобках] и имеют размерность uint8_t
Только изменение типа переменной с uint8_t на uint16_t не решает проблему. Одновременно с этим нужно увеличить RENDSERBUFFERSIZE. Значения RENDSERBUFFERSIZE = 254 хватает для вывода строки в 46 символов. Для вывода строки в 80 символов хватит значения RENDSERBUFFERSIZE = 432 (6*72). Т.е. формула RENDSERBUFFERSIZE = 6 * (максимальная строка) не совсем верна. Вместо 6 больше подходит 5.5. У меня длинных строк нет, поэтому в своей прошивке я оставил RENDSERBUFFERSIZE = 254.
У автора на гитхаб есть прошивка для часов на контроллере STC15F2K16S2 У меня как раз такие часы. После прошивки просто горят все символы матриц постоянно. При этом при нажатии кнопок есть звук. Не понимаю где косяк?
А вот на основании изменения давления за последние 6-12 часов вполне можно принять решение брать ли с собой зонт или отправиться куда-то налегке.
Мне до работы 25 км — по пути погода может радикально переменится раза 2.
Вот такая маленькая и гордая страна с грустными синоптиками :D
Хотя именно осадки в ближайщие пару дней они угадывают очень точно
ПС
хочу прошить свои часики под bme280
и добавить дни рождения своего семейства
В теории и bmp280 должен.
Сначала ищется по адресу 0x76, потом по 0x77, при удачной проверке 0x76, 0x77 не проверяется.
По chipid определяется модель датчика, и его возможности.
проверялось на:
bmp180 — I2C address 0x77 chipid 0x55
bme280 — I2C address 0x76 chipid 0x60
Только вот несколько вопросиков…
Можно ссылочку на саму програмку-прошивальщик, где её скачать можно? Если не подключать дополнительные модули, а только пролить. Будут работать часики?
Если с одним модулем BMP180, без si7021, будут работать?
Будут.
Будут.
Интересно, в заводской прошивке почасовой сигнал был только один раз, при смене часа… А в той прошивке исправлено?
А сколько раз нужно при смене часа?
Подскажите вот ещё что… Можно как то прошивку с часов «списать», чтоб потом можно было «откат» сделать...?
У меня двое часов на новой прошивке, нормально себя чувствуют.
А как вы включает и Отключаете почасовой сигнал..?
А анимация часов тоже есть?
В меню — on/off.
Анимации/эффектов нет, в меню пункт disp есть, но он ни на что не влияет.
Про точность, жаль что единственную si7021 впаял в часы она тоже что то свое показывала. Все трое воткнуты в одну бредбоард, после 15 минутного прогрева:
Да можно в меню подстроить отображаемую температуру в диапазоне -9 +9 градусов.
1. часы выключены.
2. нажимаем «Download» или «Check MCU»
3. если на часы припаяны контакты и подсоединен шлейф, то нажимаем кнопку на UART или вручную отключаем и подключаем вывод VCC.
если не припаяны то просто начиная с GND прислоняем гребенку, VCC должен податься последним и не отпускаем до радостного писка часов.
Опыты лучше начать с кнопки «Check MCU»
А можно в праздники добавить день энергетика 22 декабря..?
А чтоб этот архив использовать, его нужно ещё как то в Keil v9.56 обработать?
И сам обзор малоинформативен. В комментариях и то больше информации почерпнул, чем в обзоре.
такие часы
Таких часов у меня нет.
При открытии проекта в Keil было сообщение о том что «Target device not found», ну или что то в этом роде. В библиотеке девайсов STC контроллеров, конечно же, не оказалось. Пришлось добавить их вручную, взяв за основу стандартный контроллер 8051.
Без добавления поддержки данного контроллера в Keil получаю ошибку: sys.h(4): warning C318: can't open file 'STC15.H'
Уменьшение частоты мигания двоеточия между часами и минутами в два раза.
Изменение типа дисплея в пункте меню DiSP для отображения только времени с 1 на 5, как в заводской прошивке.
Увеличение интервала, через который отображаются показатели (дата, день недели, температура, давление и влажность), с 5 до 60 сек.
Большое спасибо v0tang за предосталенные исходники его прошивки.
Добавление в показатели года (на первом месте), минут и секунд (после дня недели) — отображаются 5 сек, чтобы можно было посмотреть точность хода часов.
В режиме отображения только времени (тип дисплея 5) нажатие кнопки SET приводит к отображению показателей, начиная с года, и кончая празником, если он есть. Последующие нажатия кнопки SET во время отображения показателей приводят к пропуску показателя. Так можно быстро добраться до интересующих показателей (виджетов).
Добавлен пункт меню EXiT — выход из меню, помимо долгого нажатия на кнопку SET.
Изменены выходы из пунктов меню FONT и MiDP: в исходной версии v0tang (файл OldDIYClock[18.432].hex, 56440 bytes от 10.09.2017), если тип дисплея был не равен 1, т.е. осуществлялся режим отображения показателей через 5 сек, то при выборе пункта меню FONT или MiDP и нажатии кнопки SET, отображения показателей через 5 сек больше не происходило. Чтобы оно возобновлялось, надо было нажимать еще раз кнопку SET. Может так и было задумано, но я это изменил. У меня при выходе из пунктов меню FONT, MiDP и EXiT путем нажатия кнопки SET отображение показателей (когда тип дисплея не равен 5) не останавливается.
Большое спасибо v0tang за предоставленные им исходники его прошивки.
Поскольку значение STRG сохраняется в EEPROM, то также, как и при других изменениях параметров, хранящихся в EEPROM, я делал прошивку с галкой у Erase all EEPROM data next time program… в прошивальщике, для удаления всех данных из EEPROM.
PS: прошивал без сброса EEPROM.
Баг, или всё-таки нужно прошить со сбросом?
Прошивка здесь.
Нашел в display.c константы #define DISPLAYSIZE 22 и #define RENDSERBUFFERSIZE 254, изменил 254 на 512 — отображение начинается с 48 символа. Подскажите как увеличить объем буфера экрана.
Я же имел ввиду адресацию, то есть те переменные что используются в [скобках] и имеют размерность uint8_t
display.c
display.h
В теории это решит вашу проблему
рекомендую рассчитать RENDSERBUFFERSIZE = 6 * максимальная строка, у контроллера не так много памяти.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.