Как написать прошивку для часов

Время на прочтение
4 мин

Количество просмотров 20K

Совсем недавно Amazfit (партнёр Xiaomi) представила новое поколение умных часов, в линейку которого вошли модели GTR 3 Pro, GTR 3 и GTS 3. Эти часы официально продаются и теперь можно без проблем купить. Я бы обошёл новинку стороной, ведь есть модели и подешевле с практически теми же возможностями, например Bip S. И всё же главной изюминкой новых часов можно назвать новую операционную систему Zepp OS.
Для меня самой интересной особенностью новой ОС стала возможность запускать на часах приложения на JavaScript, чем мы сегодня и займёмся и напишем нашу самую первую программу.

Zepp Open Platform

Компания открыла разработчикам документацию и инструменты к платформе Zepp Open Platform. Сама платформа предлагает довольно обширные возможности для исследований, передачи данных, обмена данными между устройствами, приложениями для фитнесса и здоровья, интернета вещей (IoT) и много чего ещё, в основном для enterprise. Возможности заявлены огромные, но большая часть из них требует специальной регистрации как разработчика для получения доступа к разработке решений в этих областях и не доступно обычным смертным.

Тем же, кто хочет просто рисовать свои циферблаты и писать приложения под часы доступны инструменты разработчика Zepp OS (среда разработки Zepp Studio и редактор циферблатов Zepp WatchFace Maker, эмулятор и инструменты для консоли).

Подготовка

Для синхронизации с часами используется фирменное приложение Zepp. Через приложение можно настраивать часы, менять циферблаты и устанавливать приложения из официального каталога.

Для того чтобы приложение или циферблат попало в каталог требуется статус сертифицированного разработчика, который подтверждается сканом документов через модераторов. На данный момент верифицированный статус могут получить лишь работники крупных компаний или институтов. Индивидуальные разработчики могут подать заявление, но в каталог их приложения судя по всему пока не будут публиковаться.

Чтобы писать приложения для себя и заливать их себе на часы всё это не обязательно и не требуется. А те же циферблаты можно почти без сложностей заливать через приложение AmazFaces от одного из крупных каталогов циферблатов для часов Amazfit.

Итак, мы знаем что для часов на Zepp OS можно писать приложения двух типов — циферблаты (watchface) и приложения (app). Они имеют схожую внутреннюю структуру и пишутся на JavaScript. Циферблаты нас пока не интересуют и в этой статье мы более подробно разберём приложения.

Включаем режим разработчика

Чтобы мы могли заливать на свои часы сторонние приложения нам надо включить режим разработчика в приложении Zepp. Естественно, ставим на телефон Zepp (если ещё этого не сделали), создаём учётную запись или заходим в уже имеющуюся и подключаем часы как обычно, если ещё не подключили.

И включаем режим разработчика

Заходим в «Профиль» -> «Настройки» -> «О приложении» и нажимаем 7 раз на логотип приложения. Если всё сделано правильно, появится уведомление
Выключить режим можно галкой в «Профиль» -> «Настройки».

После этих манипуляций мы можем заходить в «Устройства» -> «Amazfit GTS 3» (или другие подходящие часы) -> листаем вниз до пункта «Режим разработчика».
Там есть две вкладки «Дисплей» и «Приложение» и кнопка сканирования QR-кодов в правом верхнем углу:

Создаём учётную запись

Чтобы иметь возможность запускать приложения на устройстве, надо иметь учётную запись с такой же электронной почтой, что и в приложении Zepp.

Регистрируемся тут (страну я указал родную): dev.huami.com

Приложение

И вот теперь мы наконец можем приступить к разработке.

Код можно писать в своём любимом редакторе, используя инструменты CLI. А можно воспользоваться готовым инструментом «всё-в-одном». В нашем примере мы пойдём вторым путём и откроем онлайн редактор: studio.huami.com

Нам предложат создать новый проект:

Можно воспользоваться шаблоном «Hello world» или импортировать zip архив с готовым проектом. Как вам больше нравится. Я немного упростил проект, и при желании можете взять его с моего githib.

Коротко о структуре проекта

После того как проект импортируется, откроем его в редакторе и увидим примерно такую структуру:

В настройках программы (app.json), которые редактируются в редакторе визуально, указывается экран (сцена / страница), отображаемый при старте, вот её код:

page/gts-3/home/index.js

const { width: DEVICE_WIDTH, height: DEVICE_HEIGHT } = hmSetting.getDeviceInfo()

const HELLO_TEXT = {
	text: 'Hello, Habr!',
	x: px(42),
	y: px(200),
	w: DEVICE_WIDTH - px(42) * 2,
	h: px(100),
	color: 0xffff00,
	text_size: px(36),
	align_h: hmUI.align.CENTER_H,
	text_style: hmUI.text_style.WRAP,
}

const logger = DeviceRuntimeCore.HmLogger.getLogger('firstapp')

Page({
	build() {
		logger.debug('page build invoked')
		hmUI.createWidget(hmUI.widget.TEXT, {
			...HELLO_TEXT,
		})
	},
	onInit() {
		logger.debug('page onInit invoked')
	},

	onDestroy() {
		logger.debug('page onDestroy invoked')
	},
})

Как можно догадаться, элементы интерфейса, стили и обработчики событий инициализируются непосредственно в коде. А конкретно этот код создаёт виджет текста «Hello, Habr!» с заданными характеристиками.

Запускаем

Теперь нам осталось собрать и опубликовать ссылку на приложение, для чего можно воспользоваться этой кнопкой:

В результате получим QR-код, отсканировав который из приложения Zepp мы сразу же установим приложение на часы:

Итоги

Оказалось, начать разработку под новую ОС совсем не сложно. Теперь можно подглядывать в документацию и писать свои приложения или даже игры для часов на Zepp OS. Информации по этой теме в сети практически нет, и даже ссылки на официальную документацию пришлось искать по форумам.

Я надеюсь, этот туториал кому-то станет отправной точкой для новых хороших, интересных и нужных приложений.

Документация для разработчика на китайском и английском доступна без регистрации:
docs.huami.com/docs/intro

Upd: Разработчики открыли канал в Slack (спасибо idimas13 ).
У них также есть внутренний Lark канал. Пока не знаю, можно ли туда приглашать.

В 1972 году компания Hamilton Watch разработала первые смарт-часы. Теперь вы можете сделать их сами. Разбираемся, как.

Ещё в 1972 году компания Hamilton Watch разработала первые умные часы под маркой Pulsar. Изначально у таких часов было довольно мало вычислительной мощности. Её хватало только на калькуляторы, игровые устройства и тому подобные незамысловатые гаджеты. Но с развитием технологий мощность начала стремительно увеличиваться. Современные смарт-часы — это полноценные компьютеры. Некоторые могут работать автономно, а другие функционируют только в сопряжении со смартфоном.

В этой статье будет описан принцип создания собственных смарт-часов на базе популярного микроконтроллера ESP8266.

Определение функциональности часов

В этой статье мырассмотрим часы, которые смогут выводить текущее время и дату, отображать погоду в вашем городе и позволят удалённо управлять Wi-Fi реле. Это означает, что прямо с часов вы сможете управлять любым прибором, подключённым к розетке, будь то музыкальный центр или электрочайник.

Чтобы получать текущее время, необязательно использовать модуль реального времени. Если смарт-часы будут иметь доступ к интернету, то понадобится ближайший NTP-сервер. С его помощью можно достаточно точно узнать текущее время. Чтобы контролировать Wi-Fi реле в часах, будет использоваться Blynk.

Blynk — это облачный сервис, позволяющий с помощью приложения для Android или iOS контролировать устройства на Arduino, Raspberry Pi или же, в данном случае, ESP8266.

Подбор элементов

В часах элементами управления будут 3 тактовые кнопки. Экран тут используется доступный — двухцветный OLED 0’96. Для питания нужен аккумулятор, а для зарядки — специальный контроллер. В этих часах используется литий-ионный аккумулятор и соответствующий для него контроллер TP4056.

Не стоит забывать, что ESP8266 работает на 3-вольтовой логике. Для получения необходимого напряжения питания можно использовать любой доступный стабилизатор напряжения на 3,3 В. Остаётся лишь немного деталей: разъём для зарядки, переключатель, несколько светодиодов, набор резисторов и пара конденсаторов.

Необходимые для сборки часов элементы

Необходимые для сборки часов элементы

Создание и распайка печатной платы

Если хотите, чтобы итоговый вариант часов был надёжным и компактным, лучше всего распаять часы на печатной плате. Для создания рисунка печатной платы подойдут, к примеру, Sprint Layout или же EasyEDA.

Печатная плата в EasyEDA

Вы можете создать печатную плату в домашних условиях либо заказать её у специализирующихся сервисов — те же EasyEDA или JLCPCB. К этим смарт-часам в свободном доступе уже есть Gerber PCB файлы печатной платы.

После получения/создания платы стоит распаять на ней все компоненты. Монтаж SMD компонентов удобнее делать паяльной пастой и паяльным феном. Но такую работу можно будет выполнить и обычным паяльником с тонким жалом.

Процесс распайки элементов на печатной плате

Подготовка прошивки часов

После того, как все компоненты будут распаяны, можно приступить к программной части. Вначале следует разобраться с API для получения погоды. К примеру, можно использовать Weather API Yahoo.

Примечание С января 2019 года процесс работы с Weather API Yahoo немного изменился. Однако API всё ещё в бесплатном доступе. О том, как получить доступ, детально расписано на их странице.

После получения ссылки с API можно приступить к прошивке микроконтроллера. Сам скетч для Arduino можно взять здесь.

В первую очередь подставьте ваш код аутентификации Blynk в char auth[]. Этот код будет выслан вам на почту сразу после создания нового приложения в Blynk.

Затем введите SSID и пароль от вашей точки доступа Wi-Fi в char* ssid и char* password соответственно.

Скопированную из Weather API ссылку необходимо вставить в const String url.

В BLYNK_CONNECTED() можно вставить код аутентификации Blynk другого ESP модуля, управляющего электрическим прибором (если такой имеется). Этот процесс можно увидеть в видео о создании Wi-Fi реле. И под конец не забудьте в TimeChangeRule указать параметры вашего часового пояса (в методе tellTime()).

Прошивка микроконтроллера

Теперь в Arduino IDE нужно установить все необходимые библиотеки:

  1. Time.h и TimeLib.h.
  2. Timezone.h.
  3. SSD1306.h и SSD1306Wire.h.
  4. NTPClient.h.
  5. ESP8266WiFi.h и WifiUDP.h.
  6. Последняя версия Blynk.

Чтобы прошить ESP8266, нужно подключить его к мосту USB-UART. Все необходимые контакты уже выведены на торец печатной платы. Обратите внимание, что RX контакт одного подключается к TX контакту другого и наоборот. Более подробно о прошивке микроконтроллеров серии ESP8266 можно почитать тут:

Потом в Arduino IDE нужно будет выбрать текущую плату и COM-порт. Зажав кнопку flash на микроконтроллере, начните прошивку. После удачной прошивки остаётся лишь присоединить аккумулятор и ремешок.

Включите часы. Должна высветиться надпись «Connected to Wi-Fi». Если это так, то микроконтроллер прошит, а значит, ваши смарт-часы готовы.

Смарт-часы на ESP8266

При нажатии на среднюю кнопку на часах будет отображаться текущая дата, время и температура. Две боковые кнопки управляют двумя подключёнными к Wi-Fi реле электрическими приборами.

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

Процесс элементарный.

Для начала нужно понять структуру устройства

Прошивка хранится в микроконтроллере STM32, изображение выводится на LCD экран, а данные для микроконтроллера хранятся во FLASH памяти (анимация, картинки и кое какая служебная информация)

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

итак, что нам понадобится.

программатор
ST-link v2
стоит 3 копейки, можно купить на али

Ссылка на али

на часах есть 4 контакта с надписями

CLK
VCC (или 3V3)
GND
DIO

примечание на плате может быть помечен только один контакт( например DIO), но порядок их всегда неизменный CLK — VCC — GND — DIO

аналогичные надписи есть на программаторе ST-link v2, в комплекте к нему есть 4 провода, нужно просто соединить штырьки на программаторе и на плате часов (на лексус аристо штырьки припаяны на плату, на маркообразных нет — нужно отдельно их просто вставить в плату — припаивать не нужно, контакт будет, по окончании процесса прошивки — убрать)

Плата может отличаться от фото. Ориентируемся по надписям около контактов.

Итак все подключено, можно прошивать.

Нужно на комп установить драйвера для программатора и программу для прошивки

ссылка на архив (качаем последнюю версию)

ST-LINK Драйвера и утилита

ST-LINK Драйвера и утилита…(последняя версия)

Запускаем программу

Жмем Target -> Connect

Считывается текущая прошивка

жмем File -> Save file as…

выбираем тип файла *.hex пишем имя и сохраняем на всякий случай старую прошивку

Далее жмем Target — > Erase Chip и стираем проц.

Далее File -> Open file… и выбираем новый файл прошивки (который просите у меня, под каждую плату она своя)

Далее Target -> Program & Verify

Появляется окно, в нем так делаем настройки и жмем START, Ждем несколько секунд и все готово!

На все про все с программами подключениями и прошивками 1 минута.

Всем привет! Накануне праздник 8 марта, вы уже придумали что подарить? Да/Нет? Можно конечно купить готовый подарок, но лучший подарок, это подарок сделанный своими руками. И так, вот задумался я: а что подарить Маме на 8 марта? Подумал…Подумал…О, а подарю я часы. Но покупать китайские часы я не хочу и не буду по двум причинам: сразу сломается, я же радиолюбитель. И я решил сделать свои часы своими руками! И вот что из этого получилось:

DSC04630.jpg

Сейчас я расскажу как самому сделать такие часы, но обо всём по порядку.

И так чего мне хотелось? А хотелось мне сделать достаточно большие часы на светодиодных семисегментных индикаторах, чтобы просто показывали время и шли даже тогда, когда выключены. За основу конструкции взял AVR микроконтроллер Attiny2313 с двумя килобайтами флеша, этого более чем достаточно. Сами часы реализовал с помощью RTC микросхемы реального времени DS1307, к которой подключается батарейка на 3 вольта, для поддержания хода часов. Семисегментные индикаторы поставил REC-S12101AG, зелёного цвета, с общим анодом. Их габариты: 28,8 на 40,8 мм. Поскольку часам для питания нужны 5 вольт, то я применил готовый импульсный блок питания RS-25-5. Почему именно такой ИБП? Лежал он у меня в коробочке с детальками (Давно, год назад я купил его за пять тыщ бел. руб. у одного парня, думаю хороший ИБП, пригодится!), пылился, а трансформатора  у меня не было, вот и поставил что было. С блоком питания часы питаются от сетевого напряжения 220 вольт. Вот фото ИБП:

Блок питания

Ну собственно сложностей при сборке часов возникнуть не должно. И так, принципиальная схема часов:

Схема часов

DSC04550.jpg

Собрал я всё на печатных платах, семисегментные индикаторы разместил на одной плате, всё остальное на другой. Платы лудил сплавом розе и в конце покрывал цапон лаком. Печатные платы делал с помощью ЛУТа. Чертил в программе Sprint Layout 4.0. Вот фото платы с семисегментными индикаторами:

DSC04548.jpg

DSC04551.jpg

DSC04554.jpg

Платы вместе соединял шлейфом, вот так:

DSC04558.jpg

В ход можно пустить компьютерный IDE шлейф. Вот фото основной платы:

DSC04568.jpg

DSC04570.jpg

Обратите внимание, что корпус часового кварца нужно соединить с минусом питания, это позволяет избежать сбоев и внешних помех. Всё поместил в корпус, вот что получилось:

DSC04572.jpg

DSC04573.jpg

DSC04619.jpg

DSC04623.jpg

Как вы уже заметили внутри корпуса я закреплял всё с помощью термо клея. После сборки часов необходимо прошить микроконтроллер  прошивкой ClockFirmware.HEX. Как прошить микроконтроллер и сделать программатор я писал тут и тут. После прошивки не забудьте установить следующие фьюз-биты:

fusepp.png

Для программы SinaProg:

fuse(3).png

Я прошивал микроконтроллер с помощью программатора USBtiny и программы SinaProg. Программу (прошивку) для часов писал в среде BASCOM-AVR, исходник прилагается. У меня часы работают уже почти неделю и не на секунду не отстают. Точность хода часов зависит от кварца, его лучше купить новый. Яркость часов зависит от резисторов R1-R8, чтобы уменьшить яркость увеличьте сопротивление этих резисторов, но следует учесть, что резисторы необходимо ставить с сопротивлением не меньше 10 Ом а резистор R3 не менее 100 Ом. При первом включении часов либо после смены батареи резервного питания, зажмите обе кнопки S1, S2 и включите часы. Часы сбросятся на 00:00 и начнут идти.

Кстати, ночью часы смотрятся просто отлично:

DSC04631.jpg

Ну всё, часы готовы и работоспособны!

Мною на сборку часов было потрачено примерно 250 тысяч бел. руб. Отлично! Убил двух зайцев сразу: сделал своими руками и обошелся в меньшую сумму чем стоят китайские часы. Надеюсь часы понравятся Маме.

Для любителей программы Proteus прилагается проект часов.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 МК AVR 8-бит

ATtiny2313

1 Поиск в магазине Отрон В блокнот
IC2 Часы реального времени (RTC)

DS1307

1 Поиск в магазине Отрон В блокнот
VT1-VT4 Биполярный транзистор

КТ315А

4 Поиск в магазине Отрон В блокнот
C1 Электролитический конденсатор 100 мкФ 1 Поиск в магазине Отрон В блокнот
C2 Конденсатор 100 нФ 1 Керамический Поиск в магазине Отрон В блокнот
R1, R2, R4-R8 Резистор

10 Ом

7 Поиск в магазине Отрон В блокнот
R3 Резистор

150 Ом

1 Поиск в магазине Отрон В блокнот
R9-R12 Резистор

1 кОм

4 Поиск в магазине Отрон В блокнот
R13-R15 Резистор

10 кОм

3 Поиск в магазине Отрон В блокнот
R16, R17 Резистор

4.7 кОм

2 Поиск в магазине Отрон В блокнот
CH1 Кварц 32768 Гц 1 Поиск в магазине Отрон В блокнот
7Seg Семисегментный индикатор REC-S12101AG 4 С общим анодом Поиск в магазине Отрон В блокнот
Bat1, Bat2 Батарейка 1.5 В 2 С пеналом Поиск в магазине Отрон В блокнот
S1, S2 Кнопка тактовая Без фиксации 2 Поиск в магазине Отрон В блокнот
5V ИБП RS-25-5 1 Поиск в магазине Отрон В блокнот
Сетевой шнур с вилкой 1 Поиск в магазине Отрон В блокнот
Добавить все

Скачать список элементов (PDF)

Теги:


Опубликована: 07.03.2013
Изменена: 22.06.2013

6


Вознаградить

Я собрал
2

5

x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография

0

Средний балл статьи: 4.4
Проголосовало: 5 чел.

Прошивка изначально создавалась для часов на ГРИ v2 от AlexGyver, но на данный момент возможно применение и в других проектах часов на 4/6 ламп.
Актуальная версия прошивки находится здесь. Последняя версия 1.8.8 от 23.02.2023.

Видео-обзор прошивки:


Sheet_2.pngSheet_1.png

Если при работе часов возникла какая-то проблема, то при старте часов будет звуковой код, а на индикаторах отобразится код ошибки.

  • 0001 — Нет связи с модулем DS3231(модуль часов неисправен или проблемы с шиной i2c).
  • 0002 — Ошибка осциллятора DS3231(батарейка модуля часов разряжена или проблемы с тактированием модуля часов).
  • 0003 — Ошибка слишком короткий сигнал SQW(во время работы часов были обнаружены помехи или неверный сигнал на SQW).
  • 0004 — Ошибка слишком длинный сигнала SQW(пропал сигнал SQW во время работы часов).
  • 0005 — Выбранный датчик температуры не обнаружен(проверить подключение датчика температуры).
  • 0006 — Слишком низкое или слишком высокое напряжение питания(проверить источник питания).
  • 0007 — Ошибка памяти еепром(повреждение данных, если ошибка будет повторятся слишком часто — износ еепром).
  • 0008 — Ошибка софтовой перезагрузки(говорит о нестабильности программы или об аппаратных проблемах с мк).
  • 0009 — Ошибка сбоя работы преобразователя(регистры таймера были неожиданно изменены).
  • 0010 — Ошибка переполнения заполнения шим преобразователя(превышен верхний предел заполнения шим).
  • 0011 — Ошибка переполнения стека(утечка памяти).
  • 0012 — Ошибка переполнения тиков времени(основная программа не отвечает).
  • 0013 — Ошибка сбоя работы динамической индикации(регистры таймера были неожиданно изменены или превышен предел регистра сравнения).

Для более точной работы часов желательно подключить пин SQW модуля DS3231 к пину ардуино D2, если у вас модуль DS3231mini, то необходимо найти 3-ю ножку микросхемы и также проводком подпаять к пину D2.

Доработка DS3231.jpg

  • NEON_DOT 0 — Обычная светодиодная секундная точка(пин подключения указывается в DOT_PIN)(возможно комбинирование с точками в индикаторах)
  • NEON_DOT 1 — Одна неоновая лампа в качестве секундной точки(пин подключения указывается в DOT_PIN)(возможно комбинирование с точками в индикаторах)
  • NEON_DOT 2 — Две неоновые лампы в качестве секундных точек(пин подключения указывается в DOTL_PIN и DOTR_PIN)(комбинирование с точками в индикаторах невозможно)
  • NEON_DOT 3 — Точки в индикаторах в качестве секундных точек(пин подключения указывается в DOTL_PIN и DOTR_PIN)

Так-же не забудьте выбрать свою плату — в «userConfig.h» — BOARD_TYPE.
Для других плат на 4 лампы используйте — BOARD_TYPE 3, на 6 ламп — BOARD_TYPE 4.
Маски дешефратора и порядок катодов указываются в «config.h».

Пины подключения периферии к сдвиговому регистру указываются в connection.h: ANODE_1_PIN..ANODE_6_PIN, DOTL_PIN, DOTR_PIN, DOT_PIN. Доступные номера пинов 0..7.

  • Аноды ламп.
  • Разделительные точки в индикаторах.
  • Две раздельные неоновые лампы.
  • Одну неоновую лампу.

При использовании сдвигового регистра есть ограничения на пины D13-D10, а именно:

  • D13 может быть использован только как пин сдвигового регистра — SCK.
  • D12 может быть использован для остальной периферии в качестве входа(цифровые кнопки, датчик движения, ИК приёмник, BUSY DF плеера, MISO SD карты).
  • D11 может быть использован только как пин сдвигового регистра — DATA.
  • D10 может быть использован для остальной периферии в качестве выхода(ВВ преобразователь, секундные точки, подсветка, бузер, управление питанием усилителя, RX DF плеера при использовании софтового UART, MOSI/SCK/CS SD карты, защёлка сдвигового регистра).

Если по какой-то причине нету сигнала от SQW или если во время работы сигнал он выйдет за рамки то часы перейдут на внутренний источник тактирования и по возможности будут синхронизироваться с модулем часов.

Для сброса настроек —

необходимо зажать среднюю кнопку и подать питание на часы.
Для запуска меню отладки — необходимо зажать левую кнопку и подать питание на часы.
Для запуска теста системы(ламп тест) — необходимо зажать правую кнопку и подать питание на часы.

Периферия:

  • Датчики температуры DHT11/DHT12/MW33/DHT21/DHT22(AM2301/AM2302), DS18B20/DS18S20/DS1820 — доступные пины подключения(D0..D13) с подтяжкой 4.7-10кОм к +5в.
  • Датчик температуры BME280(BMP085/180/280) — доступные пины подключения(A4 и A5) параллельно модулю часов.
  • Датчик температуры SHT20(SHT21/SHT25), SHT30(SHT31/SHT35) — доступные пины подключения(A4 и A5) параллельно модулю часов.
  • Датчик температуры DS3231 — встроенный в модуль часов реального времени.
  • Синхронизация времени по SQW — доступные пины подключения(D2).
  • Управление разделительными точками в индикаторах ИН12Б/14/16 — доступные пины подключения(D0..D13), для каждой точки используется свой пин.
  • Радиоприёмник RDA5807M — доступные пины подключения(A4 и A5) параллельно модулю часов.
  • Неоновая секундная точка(одна или две) — доступные пины подключения(D0..D13), для каждой точки используется свой пин.
  • Бузер(Для будильника и оповещений) — доступные пины подключения(D0..D13).
  • Подсветка на адресных светодиодах WS2812B — доступные пины подключения(D0..D13).
  • Подсветка на обычных светодиодах — доступные пины подключения(D11), с софт. шимом(D0..D13).
  • Дополнительная цифровая кнопка для управления таймером — секундомером — доступные пины подключения(D0..D13).
  • Преобразователь ВВ напряжения(Затвор мосфета) — доступные пины подключения(D9..D10).
  • Аналоговые кнопки(в т.ч. и дополнительная) — доступные пины подключения(A6..A7).
  • Обратная связь преобразователя ВВ напряжения на резистивном делителе — доступные пины подключения(A6..A7).
  • Озвучка на DF player — доступные пины подключения указаны в прошивке.
  • Озвучка на SD карте — доступные пины подключения указаны в прошивке.
  • Управление питание усилителя — доступные пины подключения(D0..D13).
  • Приемник ИК пульта(Пульты только с протоколом NEC) — доступные пины подключения(D0..D13).
  • Датчик яркости освещения — доступные пины подключения(A6..A7).
  • Датчик движения — доступные пины подключения(D0..D13).
  • Сдвиговый регистр для управления анодами ламп и разделительными точками(неоновыми лампами) — доступные пины подключения указаны в прошивке.

Программно:

  • Поддержка часов на 4/6 ламп.
  • 12/24 часовой формат времени.
  • Будильник(Один или несколько).
  • Радиобудильник(при наличии модуля радио).
  • Автоматическое определение подключенного датчика температуры.
  • Термометр(Гигрометр/Барометр для датчиков BME/BMP/DHT/SHT).
  • Авто-показ температуры(Влажности/Давления).
  • Отображение текущей даты.
  • Меню настройки яркости и др. функций.
  • Быстрое меню для смены анимации перелистывания/точек/подсветки.
  • Таймер — секундомер(Только при наличии доп. кнопки).
  • Радиоприёмник(Только при наличии доп. кнопки).
  • Антиотравление ламп(3 варианта анимации, выбор из меню).
  • Мелодия смены часа.
  • Смена яркости по времени и по датчику освещённости.
  • Анимация глюков.
  • 10 режимов анимации авто-показа температуры(Есть случайный режим).
  • 10 режимов анимации минут(Есть случайный режим).
  • 3 режима анимации секунд для 6-ти ламп(Выбор из меню).
  • 3 режима подсветки для обычных диодов и 15 для адресных WS2812B.
  • 3 режима работы секундных точек (1 режим для двух неоновых ламп / 4 режима разделительных точек) и доп.режимы для отображения состояния будильника.
  • Возможность создания собственных мелодий будильника.
  • Система контроля основных параметров часов(Ошибки).
  • Меню отладки(Для опытных пользователей).
  • Озвучка пунктов меню, времени и температуры.
  • Программирование кнопок ИК пульта из меню отладки.
  • Режим сна(Отключение ламп через заданное время)
  • Добавить поддержку модуля ESP-01 для настройки через веб интерфейс.
  • Добавить поддержку только правых разделительных точек в индикаторах.
  • Добавить возможность отображать температуру со второго датчика температуры.
  • Добавить анимации перехода подсветки на адресных светодиодах.

ver 1.7.0

  • Добавлена поддержка белого цвета подсветки для WS2812.
  • Исправление анимаций.
  • Мелкие исправления.

ver 1.7.1

  • Удалена «ошибка сигнала SQW», теперь она совмещена с ошибкой «слишком длинный сигнал SQW».
  • Добавлена ошибка обнаружения датчика температуры.
  • Новый порядок нумерации ошибок.
  • Максимальное количество ячеек радио увеличено до 10(ячейки 0-9).
  • Добавлено отключение радио если сработал будильник или оповещение таймера.
  • Добавлен выбор сигнала управления усилителем.
  • Добавлена возможность выбрать из меню анимацию секунд для часов на 6-ти лампах.
  • Добавлена индивидуальная подсветка для меню: настройка времени, основные настройки, отображение температуры.
  • Добавлена демонстрация эффекта антиотравления.
  • Оптимизация хранения данных о температуре.
  • Исправление анимаций.
  • Мелкие исправления.

ver 1.7.2

  • Добавлен новый режим анимации секунд.
  • Исправление анимации смены минут «волна».
  • Исправление анимаций минут для 12-ти часового формата времени.
  • Оптимизация отрисовки адресных диодов.
  • Оптимизация анимаций.
  • Мелкие исправления.

ver 1.7.3

  • Добавлен режим сна в ночное время(при установке ночной яркости индикаторов в 0).
  • Добавлен новый эффект смены минут «игровой автомат».
  • Добавлена возможность выбор типа отображения даты(ДД:ММ | ММ:ДД) и (ДД:ММ:ГГ | ММ:ДД:ГГ).
  • Добавлена возможность выбора типа отображения автоматического показа температуры, мелкие исправления(температура | температура/влажность или температура/давление | температура/влажность/давление).
  • Добавлена возможность выбор типа отображения даты.
  • Добавлена возможность выбора типа отображения автоматического показа температуры.
  • Добавлена возможность установить иную яркость прожига ламп.
  • Добавлена возможность проговаривать текущую температуру при смене часа.
  • Новая логика отрисовки адресных светодиодов.
  • Мелкие исправления.

ver 1.7.4

  • Добавлен 12-й пункт меню «Настройка времени индикации после выхода из сна», для ночного и дневного периода, 0 — сон выключен.
  • Добавлена поддержка датчиков движения для вывода часов из сна.
  • Добавлена возможность выбрать конкретный датчик BME/BMP.
  • Добавлена возможность включить ввод пароля для режима отладки.
  • Добавлена возможность включить поддержку радиоприемника.
  • Добавлена возможность выбрать точки в индикаторах в качестве секундных точек.
  • Добавлена возможность отключить полностью или частично подсветку в автоматическом показе температуры.
  • Добавлена возможно использовать точки в индикаторах в качестве секундных.
  • Добавлено два режима мигания секундных точек для точек в индикаторах (бегущая и маятник).
  • Добавлена подсветка в меню настройки будильников и радиоприемника.
  • Добавлена поддержка датчиков температуры SHT2x и SHT3x.
  • Добавлена озвучка 12-го пункта меню.
  • Оптимизация расчета давления для датчиков BME/BMP280.
  • Исправление ИК приёмника.
  • Критическое исправление бузера.
  • Мелкие исправления.

ver 1.7.5

  • Добавлена установка громкости для будильника.
  • Добавлена автогромкость для будильника.
  • Добавлена возможность отключить поддержку подсветки (BACKL_TYPE 0).
  • Добавлена возможность подключить правые точки в индикаторах (только если подключены левые).
  • Добавлена возможность выводить влажность вместе с температурой в автопоказе (только для 6-ти ламп).
  • Добавлена возможность изменить порядок адресных светодиодов(прямой или реверсивный).
  • Добавлены вариации подсветки «бегущий огонь» и «волна» с эффектами «радуга» и «конфетти».
  • Добавлена защита от утечки памяти.
  • Упрощение настройки нескольких будильников.
  • Исправление установки максимального/минимального шим в меню отладки.
  • Мелкие исправления.

ver 1.7.6

  • Добавлена возможность использовать радиостанцию в качестве мелодии будильника (для переключения радио/мелодия — уд. доп.кнопки).
  • Добавлена подсветка тревоги будильника.
  • Добавлена подсветка меню таймера/секундомера и тревоги таймера.
  • Добавлена возможность не выключать радио при переходе в сон.
  • Добавлена возможность удвоить частоту преобразователя.
  • Оптимизация установки яркости индикации.
  • Мелкие исправления.

ver 1.7.7

  • Добавлена возможность выбрать тип работы подсветки для меню — радио/таймер/тревога таймера/тревога будильника/дата/температура.
  • Добавлена минимальная яркость для доп.состояний секундной точки.
  • Новая логика управления яркостью(яркость теперь меняется во всех меню).
  • Мелкие исправления.

ver 1.7.8

  • Добавлено восстановление значения регистра старения модуля часов из памяти при сбросе батарейного питания.
  • Добавлена возможность в отладке изменять регистр старения часов вне зависимости от сигнала SQW.
  • Добавлена поддержка двух неоновых точек.
  • Изменено отображение значения регистра старения модуля часов в отладке.
  • Исправление управления питанием усилителя.
  • Исправление синхронизации времени.
  • Исправление секундных точек для таймера и будильника.
  • Исправление установки типа сигнала управления усилителем.
  • Исправление чтения сигнала BUSY плеера.
  • Мелкие исправления.

ver 1.7.9

  • Добавлен сброс по таймеру WatchDog.
  • Добавлен запрос подтверждения сброса настроек отладки.
  • Исправление анимации плавного мигания секундных точек.
  • Исправление точек в индикаторах.
  • Исправление двух неоновых точек.
  • Мелкие исправления.

ver 1.8.0

  • Исправление двух неоновых точек.
  • Изменение периода опроса датчика света на 1сек(для адекватной работы плавных анимаций при смене яркости).
  • Добавлена озвучка «Выбор цвета».
  • Добавлен предел для автопоиска.
  • Добавлено отображение номера радиостанции только когда была выбрана радиостанция(для 6-ти ламп).
  • Теперь радио само определяет номер радиостанции в памяти при ручном и автоматическом поиске(для 6-ти ламп).
  • Теперь переключаются только настроенные ячейки радиостанций.
  • Добавлено подменю настройки ячеек радиостанций(удержание доп.кнопки)(слева отображается состояние текущей ячейки (0 — не настроена, 1 — настроена), справа отображение номер текущей ячейки)
    • Удержание доп.кнопки удаляет текущую ячейку.
    • Клик по доп.кнопке сохраняет текущую частоту в текущую ячейку.
    • Клик лево/право меняет номер ячейки.
    • После сохранения ячейки сразу выходим в режим радио и отображаем по центру номер сохранённой радиостанции.
  • Мелкие исправления.

ver 1.8.1

  • Исправление пересчета яркости точек.
  • Добавлен контроль и ошибки работы преобразователя.
  • Добавлен контроль и ошибка работы динамической индикации.
  • Добавлены ошибки переполнения тиков времени и стека.
  • Добавлены новые звуки ошибок.
  • Оптимизация воспроизведения звуков ошибок.
  • Мелкие исправления.

ver 1.8.2

  • Добавлена общая анимация для автопоказа температуры.
  • Добавлена общая анимация при запуске часов и выходе из меню по тайм-ауту.
  • Добавлена возможность составить список случайных анимаций.
  • Мелкие исправления.

ver 1.8.3

  • Оптимизация анимаций.
  • Исправление анимаций при авто выходе.
  • Исправление автопоказа температуры.
  • Исправление опроса кнопок при запуске.
  • Добавлена возможность выбрать тип анимации при автопоказе температуры в меню настроек.
  • Добавлена возможность выбрать тип анимации запуска часов.
  • Добавлена синхронизация времени отображения автопоказа температуры и антиотравления.
  • Шаг времени автопоказа температуры изменён на 1мин.
  • Мелкие исправления.

ver 1.8.4

  • Исправление подсветки.
  • Исправление разделительных точек.
  • Добавлен режим «Змейка» для разделительных точек.
  • Добавлена демонстрация анимации секунд в основном меню.
  • Мелкие исправления.

ver 1.8.5

  • Исправление чтения датчиков SHT.
  • Исправление меню отладки.
  • Добавлены расширенные кнопки ик пульта для управления радио(Питание(вкл/выкл), громкость (+/-), радиостанции (+/-)).
  • Добавлена поддержка портов E для Atmega328pb.
  • Мелкие исправления.

ver 1.8.6

  • Добавлена поддержка сдвигового регистра для управления анодами ламп/точками в индикаторах(двумя неоновыми лампами).
  • Добавлена возможность выбрать пин для ВВ преобразователя/светодиодных точек/вывода звука SD плеера(D9-D10).
  • Исправление и оптимизация динамической индикации.
  • Мелкие исправления.

ver 1.8.7

  • Добавлена возможность включить точки в индикаторах вместе с двумя неоновыми лампами.
  • Добавлена возможность указать количество ламп, в которых задействованы разделительные точки(4 или 6).
  • Добавлена отдельная анимация секундных точек «маятник» для двух неоновых ламп.
  • Добавлена анимация разделительных точек «резинка».
  • Исправление динамической индикации.
  • Исправление отображения номера кнопки ИК пульта в отладке.
  • Мелкие исправления.

ver 1.8.8

  • Добавлена возможность выбрать тип озвучки текущего часа.
  • Изменен диапазон настройки минимального/максимального шим в меню отладки.
  • Исправление режима сна.
  • Исправление отключенной анимации индикаторов.
  • Исправление отображение кода ИК пульта в меню отладки.
  • Исправление выбор пункта меню 3(громкость озвучки).
  • Исправление SD плеера.
  • Мелкие исправления.

Отладка: Удерживать «левую» кнопку при включении питания

Ввод пароля:

  • Клик по «средней кнопке» — переход между разрядами
  • Клик по «левой кнопке» — уменьшить значение
  • Клик по «правой кнопке» — увеличить значение
  • Удержать «среднюю кнопку» — подтвердить ввод пароля

Меню отладки:

  • Клик по «средней кнопке» — выбор пункта отладки
  • Клик по «левой кнопке» — уменьшить значение
  • Клик по «правой кнопке» — увеличить значение
  • Удержать «среднюю кнопку» — выход к часам

Пункты отладки:

  • 01 — Коррекция хода часов DS3231(Коррекция (0..255)(128 = 0))
  • 02 — Коррекция хода внутреннего осциллятора(Коррекция (2000..4000)(мкс))
  • 03 — Минимальное значение шим(Для линейной регулировки)(100..150)
  • 04 — Максимальное значение шим(Для линейной регулировки)(150..200)
  • 05 — Коррекция напряжения преобразователя(Для регулировки по обратной связи)(Внимание! Значение может меняться в зависимости от напряжения питания)(+-30)
  • 06 — Программирование кнопок ИК пульта(Поддерживаются пульты только с протоколом NEC)(1..8)
  • 07 — Калибровка датчика освещенности(Автоматическое определение диапазона)
  • 08 — Сброс настроек отладки(0..1)(0 — отмена | 1 — подтверждение)
  • 1 — Левая клик.
  • 2 — Левая удержание.
  • 3 — Правая клик.
  • 4 — Правая удержание.
  • 5 — Средняя клик.
  • 6 — Средняя удержание.
  • 7 — Доп.кнопка клик.
  • 8 — Доп.кнопка удержание.
  • 9 — Вкл/выкл питание радио.
  • 10 — Прибавить громкость радио.
  • 11 — Убавить громкость радио.
  • 12 — Переключить на следующую радиостанцию.
  • 13 — Переключить на предыдущую радиостанцию.

Поддерживаются:

  • MH2024K-24
  • GD3200B
  • YX5200-24

Не поддерживаются:

  • MH2024K-16
  • AS21CN27OC

Настройка времени: Удерживать «правую» кнопку

  • Средняя кнопка — выбор, остальные «меньше» и «больше»
  • Клик по «выбору» — смена настройки часы/минуты | месяц/дата | год
  • Клик «меньше» или «больше» — изменение времени/даты
  • Удержать «выбор» — возврат к режиму часов

Настройка будильника: Удерживать «левую» кнопку

В режиме часов удержание левой клавиши – переход к настройке будильников.
После входа в настройку:

  • В левых двух разрядах отображается текущий номер будильника (0 – нет будильников).
  • В четвёртом разряде отображается текущий режим будильника (если будильников нет – ничего не отображается).

Экран «Выбор номера будильника»
Нажатие на:

  • Правую клавишу – увеличивает значение.
  • Левую клавишу – уменьшает значение.
  • Среднюю клавишу — переход к настройке выбранного будильника.

Удержание:

  • Правой клавиши – добавить новый будильник.
  • Левой клавиши – удалить текущий будильник.
  • Средней клавиши – выход к режиму часов.

После перехода к настройке будильника:

  • Средняя кнопка — выбор, остальные «меньше» и «больше».
  • Клик по «выбору» — перемещение по индикаторам.
  • Клик «меньше» или «больше» — изменение значений.
  • Удержать «меньше» или «больше» — смена настройки часы/минуты -> режим -> день недели/активация -> громкость(для плеера)/мелодия.
  • Удержать «выбор» — возврат к выбору будильника.
  • Удержать «доп. кнопку» — переключить режим мелодия/радио.

В режиме часов удержание левой клавиши – переход к настройке будильников.
После входа в настройку:

  • Средняя кнопка — выбор, остальные «меньше» и «больше».
  • Клик по «выбору» — перемещение по индикаторам.
  • Клик «меньше» или «больше» — изменение значений.
  • Удержать «меньше» или «больше» — смена настройки часы/минуты -> режим -> день недели/активация -> громкость(для плеера)/мелодия.
  • Удержать «выбор» — возврат к режиму часов.
  • Удержать «доп. кнопку» — переключить режим мелодия/радио.

Для начала нужно создать новый массив мелодии и прописать его в основном массиве всех мелодий(в config.h):

const uint16_t _sound_2[][3] PROGMEM = { //массив семплов 2-й мелодии будильника || семпл - частота(10..10000)(Hz) | длительность звука(50..500)(ms) | длительность паузы(50..1000)(ms)

};
const uint16_t alarm_sound[][2] = {  //массив мелодий будильника
  SOUND_PATTERN(_sound_1),
  SOUND_PATTERN(_sound_2)
};

Затем в массив добавить патерны:

const uint16_t _sound_2[][3] PROGMEM = { //массив семплов 2-й мелодии будильника || семпл - частота(10..10000)(Hz) | длительность звука(50..500)(ms) | длительность паузы(50..1000)(ms)
   {392, 700, 700}, //можно добавлять n-е количество
};

Патерн состоит из 3-х значений:

const uint16_t _sound_2[][3] PROGMEM = { //массив семплов 2-й мелодии будильника || семпл - частота(10..10000)(Hz) | длительность звука(50..500)(ms) | длительность паузы(50..1000)(ms)
  {/*Частота звука*/, /*Длительность звука*/, /*Пауза звука*/},
};

  • Частота звука(в герцах)
  • Длительность звука(в мс)
  • Пауза звука между патернами(в мс):
    Если равно длительности звука: паузы не будет.
    Если больше: пауза звука = (пауза звука — длительность звука).
  • 00 — выключен
  • 01 — однократный
  • 02 — каждый день
  • 03 — по будням
  • 04 — выбор по дням недели

Основные настройки: Удерживать «среднюю» кнопку

  • Средняя кнопка — выбор, остальные «меньше» и «больше»
  • Клик по «выбору» — переход в пункт меню для настройки/выход к выбору пункта меню
  • Клик «меньше» или «больше» — выбор пункта меню
  • Удержать «выбор» — возврат к режиму часов
  • Удержать «меньше» или «больше» — выбор подпункта меню.

Пункты меню:

  • 01 — Формат времени (12ч | 24ч)
  • 02 — Глюки вкл/выкл (0 — выкл | 1 — вкл)
  • 03 — Звук кнопок вкл/выкл (0 — выкл | 1 — вкл : Громкость озвучки)
  • 04 — Время звука смены часа(Начало : Конец)(Выключить звук смены часа: начало = конец)
  • 05 — Время смены подсветки(Ночь : День)(Выключить смену яркости(включить датчик освещения): ночь = день)
  • 06 — Яркость индикаторов(Ночь : День)
  • 07 — Яркость подсветки(Ночь : День)
  • 08 — Яркость секундных точек(Ночь : День)
  • 09 — Настройка датчика температуры(Коррекция : Сенсор)
  • 10 — Настройка интервала и анимации автоматического отображения температуры(время в минутах 0..15 : анимация)(0 — выключить)
  • 11 — Выбор анимации антиотравления индикаторов и анимации секунднд(антиотравление : анимация секунд)
  • 12 — Установка времени ожидания после выхода из сна(Ночь : День)(0 — выключить)

Таймер/секундомер: Клик по «дополнительной» кнопке

  • Клик по «дополнительной кнопке» — пуск/пауза
  • Клик по «средней кнопке» — вход в настройку таймера(только в режиме таймера)
  • Клик по «левой кнопке» или Удержать «левую кнопку» — режим секундомера
  • Клик по «правой кнопке» или Удержать «правую кнопку» — режим таймера
  • Удержать «дополнительной кнопку» — сброс таймера/секундомера
  • Удержать «среднюю кнопку» — возврат к режиму часов(таймер продолжает работать в фоне, секундомер ставится на паузу)

Настройка таймера: В режиме таймера — Клик по «средней кнопке»

  • Клик по «средней кнопке» — переключение разрядов ММ:СС(максимум 99:59)
  • Клик по «левой кнопке» — уменьшить значение
  • Клик по «правой кнопке» — увеличить значение
  • Удержать «среднюю кнопку» или Удержать «дополнительной кнопку» — выход к таймеру

Радиоприёмник: Удерживать «дополнительную» кнопку

  • Клик по «дополнительной кнопке» — переключить ячейку памяти радиостанций
  • Клик по «средней кнопке» — настройка громкости(текущая громкость):
    • Клик по «левой/правой кнопке» — изменить громкость.
    • Клик по «средней кнопке» — выход к часам(радио останется включенным).
    • Клик по «дополнительной кнопке» — вернуться к радио.
  • Клик по «левой/правой кнопке» — изменить текущую частоту
  • Удержать «дополнительной кнопку» — настройка ячеек памяти радиостанций(запись в ячейке : номер ячейки):
    • Клик по «левой/правой кнопке» — выбрать номер ячейки.
    • Клик по «дополнительной кнопке» — сохранить текущую частоту в выбранную ячейку.
    • Удержать «дополнительной кнопку» — удалить данные из выбранной ячейки.
  • Удержать «среднюю кнопку» — выход к часам(радио выключится)
  • Удержать «левую/правую кнопку» — авто поиск станций вниз/вверх

Управление кнопками В РЕЖИМЕ ЧАСОВ:

  • Клик по «правой» кнопке отображает текущую дату, затем клик по «правой» кнопке переключает дату/год.
  • Клик по «средней» кнопке отображает текущий режим подсветки, затем:
    • Клик по «правой» кнопке — переключает режим анимации цифр(0 — выкл, 1 — случайная анимация, 2 — плавное угасание и появление , 3 — перемотка по порядку числа, 4 — перемотка по порядку катодов в лампе, 5 — поезд, 6 — резинка, 7 — ворота, 8 — волна, 9 — блики, 10 — испарение | 11 — игровой автомат)
    • Клик по «средней» кнопке переключает режим подсветки —
      • Для обычных светодиодов: (0 — выкл | 1 — статичная | 2 — динамичная(дыхание))
      • Для адресных светодиодов: (0 — выкл | 1 — статичная | 2 — дыхание | 3 — дыхание со сменой цвета при затухании | 4 — бегущий огонь | 5 — бегущий огонь со сменой цвета | 6 — бегущий огонь с радугой | 7 — бегущий огонь с конфетти | 8 — волна | 9 — волна со сменой цвета | 10 — волна с радугой | 11 — волна с конфетти | 12 — плавная смена цвета | 13 — радуга | 14 — конфетти)
    • Удержание «средней» кнопки во время отображения режима подсветки(для адресных светодиодов) — переводит в режим установки цвета, выбор цвета осуществляется «левой» и «правой» кнопками(войти можно только в режимах поддерживающих смену цвета — статичная, дыхание, бегущий огонь, волна)
    • Клик по «левой» кнопке — переключает режим точек(0 — выкл | 1 — статичная | 2 — динамичная(плавно мигает))(только для точек в индикаторах)(3 — бегущая | 4 — змейка | 5 — резинка | 6 — маятник)
  • Клик по «левой» кнопке отображает текущую температуру, затем клик по «левой» кнопке переключает температуру/давление/влажность.

Если есть вопросы/проблемы, или вы нашли баг, пишите в ЛС или ниже в теме.

Огромное спасибо psyx86 за тестирование, видео-обзоры и идеи для прошивки! Так-же есть версия плат для часов от psyx86 и плата-модуль для замены оптопар на транзисторы.

Оптовые цены на запчасти и инструмент для ВСЕХ на TexnoMag.ru + доставка по РФ от 99 руб.

Микроконтроллер используется в утюгах для волос, термо пресах, стабилизаторах напряжении, зарядных устройствах…и т.д.
Сам мк. шьётся всего один раз.
Надо написать прошивку для стабилизатора напряжении. Считать родную прошивку от стабика не получится, производитель при прошивке блокирует мк. Комерческая тайна.
Есть прошивка какоето для такого микроконтроллера. Но для какого оппарата это не известно.. теперь с помошью этой прошивки хочу написать свою прошивку.
Навыков по создании прошивок ноль.
Прошу помощи колеги. Кто что скажет. Дайте направленни. Прилагаю подобный стабилизатор напряжение и неизвестную прошивку.

1234403w.jpg

Решение
Спасибо всем. Снайперу отдельное спасибо за полезные сылки. Значит начну с языка си

Ответы 6


Программисты советовали начать смязыка Си. Говорят если знать Си то остальные становятся легкими. А по поводу стабилизатора мой 15кв. Куплю киловатную или ещё меньше с такимже микроконтроллером и МК переставлю на 15 кватную. — grandxiva 5 мая


Само устройство этого стабилизатора не сложно: Измеряет напряжение на входе и выходе, сравнивает и включает через реле соответсвующую обмотку, да и показывает напряжение на 3-х символьном 7 сегментнике. Еще кудато и с кем-то связывается по I2C. Только для Холтека очень мало информации и мало самоотверженных людей прогающих для него. В основном сейчас Ардуинщики. И самый простой способ — найти в интернете проект на Ардуине или Атмеге и собрать такое устройство-адаптер — Snyper 2 мая


Почему сразу за рубежом? Можно и здесь заниматься любимым делом и неплохо зарабатывать!
В 2018 мне пришло письмо с Американского посольства, — участвовал в Green Card и выиграл разрешение на американское гражданство, — отказался. Они еще раз письмо присылали (наверное не могли с первого раза это принять) — повторно отказался. Нечего там делать. Не то…..
Мне здесь нравится! Я эту страну люблю! — Warlock 2 мая


Солидарен полностью, респект и уважуха!!! — dinamito 2 мая


Ваш ответ +1

РадиоКот >Чердак >

Китайские «сделай сам» часы на микроконтроллере STC15F204EA

    Наверное многим из вас знакомы эти часы, они постоянно попадаются тем, кто гуляет по Алиэкспресс, Ибей и другим подобным им онлайн торговым площадкам. У них не очень высокая цена (по крайней мере была) и они привлекают к себе внимание и вызывают желание купить. Я также поддался искушению заиметь у себя в спальне такие часы, и, после долгих сравнений цен и разновидностей, подобрал себе комплект с синими индикаторами и наличием терморезистора и датчика освещенности в лице фоторезистора.

    Через пару-тройку недель я получил этот набор и спаял его. Все прошло без эксцессов, часы заработали сразу и заняли свое место в спальне. Но в первый же вечер пришлось отвернуть их к стене, а затем и вовсе приходилось укладывать их лицом вниз, так как, несмотря на наличие датчика освещенности, уровней яркости было всего 2. Но даже низкий уровень давал чересчур яркий свет, эдакая замена ночника вкупе с часами. Кроме того не нравилась работа терморезистора, который к тому же надо было настраивать по другому термометру. Не нравилось «западное» отображение даты, когда первым отображается месяц, а потом уже число. Да и перелистывание показаний (45 секунд время, и по 5 секунд дата, день недели и температура) иногда раздражало, когда кидаешь взгляд на часы, а там что-то другое. Кроме того хотелось иметь нормальный почасовой сигнал, с коротким писком, а не сирену, которая издавалась вместо него. В результате начались поиски в сети информации по этим часам на предмет альтернативной прошивки.

    Из найденного по данным часам было 2 варианта. Автор первого варианта просто распаял на дополнительной плате Атмегу88, выводы которой он вывел в соответствии с цоколевкой стокового микроконтроллера, и вставил этот бутерброд в панельку вместо «родного». В отличие от него, автор второго варианта взялся за изучение данного микроконтроллера и добился определенных успехов.

    Изначально я также хотел пойти по пути первого автора и сделать переходник с каким-нибудь PIC16 в SOIC корпусе. Но, честно говоря, не хотелось портить вид на плату, ибо корпус у часов прозрачный, и тогда я тоже взялся за изучение микроконтроллера STC15F204EA, надеясь на то, исходники от автора второго варианта, помогут мне, так как Си я только начал осваивать, а с 51-м семейством, представителем которого является STC15F204EA, я был знаком только понаслышке. Это достаточно простой 8-битный  МК с объемом памяти программ 4 кБ, EEPROM 1 кБ и ОЗУ в 256 байт. Из периферии у него только 10-битный АЦП на 8 каналов. В отличии от своего прародителя от Intel, он является однотактным и работает на частотах до 35 МГц.

    Проблемы начались с самого начала, поскольку автор (он Линуксоид) писал их под sdcc, а я выбрал себе Keil uVision. Пришлось многое адаптировать, удалять, заменять, разбираться с незнакомыми мне, как новичку в Си, структурами и написаниями. Одно время я даже отложил эти часы в долгий узкий ящик, увлекшись другим проектом (о котором я может еще напишу). Тем не менее с месяц назад мне пришло ЛС, в котором я пообещал совершенно незнакомому мне человеку ускорить возвращение к часам, и примерно за неделю я это обещание выполнил, в чем и отчитываюсь. Забегая вперед, скажу, что на данный момент от первоначальных исходников осталась только малая часть файла ds1302.c (чтение-запись в/из RTC), которую я переделал под свой вкус и дополнил под свои нужды. Все остальное изначально переделывалось, а затем удалялось и писалось заново.

    Итак, в ZIP архиве 01.zip собраны все файлы, необходимые для прошивки. Что вам понадобится: программа STC-ISP на момент написания статьи версии 6.85F с этого сайта и программатор, который представляет из себя UART переходник с СОМ или USB порта с уровнями TTL 5В. В случае СОМ порта это может быть МАХ232 или его аналог, в случае же USB — любой какой найдете. Обычно они собраны на FT232, PL2303, CP2102/2104 и СН340. Выглядят они примерно так:

    Кроме того, в часах необходимо будет распаять 4-штырьковый разъем, место под который имеется на плате. Оно обозначено как Р31, Р30, GND и 5V. Контакт 5V нам не нужен, а остальные подключаете соответственно к выходу UART адаптора (вывод Р30), входу UART адаптора (вывод Р31) и к общему проводу (GND). Далее запускаете скачанную программу, выбираете свой СОМ порт, скорости оставляете как есть, нажимаете кнопку «Open Code File» и выбираете из указанного выше архива hex файл. При этом в окне справа появится дамп памяти. Ниже выбираете из списка частоту 11.0592 МГц и выставляете фьюзы как указано на этой картинке:

    Теперь, когда вы все проверили (хотя неправильно выставленными фьюзами ЭТОТ контроллер вы НЕ убьете), отключаете питание часов, жмете в программе кнопку «Download/Program» и подаете на часы питание. Если все сделано правильно, в окошке под дампом вы должны увидеть, как побежит информация о микроконтроллере, его ревизия, выставленная частота, фьюзы и прочее. По окончании прошивки, которая длится 3-4 секунды, часы запустятся сами. Как видите, процедура весьма простая и безопасная.

    Кроме самой прошивки в архиве имется также 2 оригинальных схемы: одна из них — это поставляемая с набором, другая —  найденная в сети и более качественная. Также есть нарисованная мной в sPlan схема и ее GIF аналог. Есть в архиве и схема под Протеус, можете погонять, но не удивляйтесь скачущим показаниям — это так он воспринимает псевдо-ШИМ, на реальном устройстве этого не будет.

    Управление.
    Нижняя кнопка (НК) — это кнопка ФУНКЦИЯ, верхняя кнопка (ВК) — ПЛЮС. В обычном рабочем режиме краткое нажатие ВК, сопровождающееся коротким сигналом, разрешает/запрещает перелистывание информации на экране (45 секунд время и по 5 секунд дата, день недели и температура). Длинное (более секунды) нажатие этой же кнопки разрешает/запрещает подачу почасового сигнала. Диапазон часов для него выставляется в настройках, о чем ниже. Данная функция, когда включена, отображает точку в последнем разряде при отображении часов.
    Короткое нажатие НК в рабочем режиме переключает выводимую на индикатор информацию (часы, дата, день, температура), длинное нажатие НК вводит часы в режим настройки. В этом режиме коротким нажатием НК ходите по пунктам настройки, коротким нажатием ВК увеличиваете показания по одному, а удержание ее автоматически перебирает значения. В режиме настройки 1. Часы:Минуты, 2. Число.Месяц, 3. День недели, 4. Год, 5. СТАРТ.СТОП (т.е. начало и конец почасового сигнала). В любой момент длинное нажатие НК выводит из режима настройки и сохраняет все данные в памяти DS1302. Для сброса всех данных при отключенных часах нажимаете обе кнопки и подаете питание. После этого кнопки отпускаете.

    Из того, что осталось в процессе разработки, это замена терморезистора на DS18B20. Подключаться он будет к тому же порту, что и терморезистор (Р1.7). Как только это будет готово, выложу обновленную прошивку. А пока придется смириться с тем, что у вас в комнате температура будет нулевой :-) (на дисплее отображается 0.00*).

    Кроме этих часов в продаже имеется и другой их вариант, но на 20-ногом контроллере STC15F204EA. В данных часах отсутствуют термо- и фоторезисторы (из-за отсутствия свободных выводов), поэтомупри перелистывании последним пунктом показывается год. Их программирование абсолютно аналогичное, все необходимые файлы находятся в ZIP архиве 02.zip, но перед этим ознакомьтесь с прилагаемой схемой и сравните ее с приложенной к вашему набору. Дело в том, что имеются разновидности, несовместимые по ногам. Оба выложенных мной варианта — это часы с перевернутым третьим индикатором (для двоеточия), но есть часы с отличным от них цельным индикатором с центральным двоеточием. В принципе прошивку можно адаптировать и под них, если они сделаны на том же МК, но лучше не рисковать. Если есть вопросы, лучше заранее проконсультируйтесь со мной, предъявив схему, фото и какие-либо другие уши, лапы и хвост документы.

И напоследок: Ни автор, ни редация сайта не несут ответственности за испорченные в результате ваших действий часы, компьютеры и другую домашнюю технику и живность! Все, что вы делаете, вы делаете на свой страх и риск!

Всем удачи в программировании!

Файлы:
Схема часов (28-ног)
Схема часов (20-ног)
Комплект файлов для прошивки (20-ног)
Комплект файлов для прошивки (28-ног)

Все вопросы в
Форум.


Как вам эта статья?

Заработало ли это устройство у вас?

Понравилась статья? Поделить с друзьями:
  • Как написать прошивку для камеры
  • Как написать психологическую драму
  • Как написать психологический хоррор
  • Как написать прошивку для вейпа
  • Как написать психологический ужас