В детстве мне было интересно как работают электронные часы, калькулятор и другая электроника и было сильное желание разобраться в этом. Поэтому когда мне родители подарили электронную игру "Волк ловит яйца" я боролся с сильным желанием разобрать ее и посмотреть как она устроена внутри, боролся целую неделю и в итоге разобрал ее ж). Но содержимое тогда оставалось загадкой для меня в виде "черной кляксы" на текстолите.
В общем мальчик вырос, а любопытство осталось которое отчасти пригодилась в жизни ;).
В какой-то определенный момент мне захотелось осуществить детскую мечту и сделать
цифровые наручные часы, это у меня уже третий вариант, второй вариант я даже проносил на руке около полугода пока мне не сказали, что они "пугают людей" ))). Двустороннюю печатную плату разводил сразу в программе DipTrace. Часы могут только показывать время,
никаких примочек агента 007 я туда не
делал (типа грабера ключей 1-Wire, где-то
видел такое).
Часы на сими сегментном индикаторе АЛ304 и микроконтроллере stm32f100.
В общем я отложил на полку этот вариант и занялся следующей версией часов.
Пожалуй начну с фото третьего варианта часов франкенштейна)).
Когда заказывал экранчик на aliexpress и я не ожидал, что он будет настолько крут! При прямом солнечном свете и не полной яркости экрана все отлично видно и не нужно прикрываться от солнца чтобы посмотреть время! Библиотеку для SSD1306 на 90% писал сам хотя и получился не очень аккуратный код. Исходники которые брались за основу я не помню где брал (это на случай если автор первоначального кода будет читать этот пост, пусть даст ссылку на себя я с удовольствием вставлю сюда ж) ).
Схема часов достаточно простая, есть контроллер STM32L151, контроллер заряда литиевых аккумуляторов MCP73831 и экранчик 0.96″ 128×64 OLED SSD1306:
Особенность контроллеров серии STM32L это очень низкое потребление, сравнимое с током саморазряда литиевых аккумуляторов, подробней можно посмотреть здесь.
SSD1306 это однокристальный КМОП OLED/PLED драйвер с контроллером для органических/полимерных светодиодных графических дисплеев. У SSD1306 есть встроенное управление контрастностью, 256-шагов регулировки яркости, оперативной памятью и внутренний генератор. По этому экранчику требуется минимальное количество внешних компонентов. SSD1306 драйвер может работать со следующими интерфейсами: 6800/8000 серии совместимым параллельным интерфейсом, последовательный периферийный интерфейс интерфейс I2C или SPI.
Схема часов достаточно простая, есть контроллер STM32L151, контроллер заряда литиевых аккумуляторов MCP73831 и экранчик 0.96″ 128×64 OLED SSD1306:
Печатная
плата изготовлена немного улучшенным лазерно-утюжным методом: нанесение
тонера на пищевую фольгу, с последующим креплением ее к
стеклотекстолиту и прогреву утюгом. Далее травил в хлорном железе не отдирая
фольги от платы. Подробней можно прочитать например здесь.
Особенность контроллеров серии STM32L это очень низкое потребление, сравнимое с током саморазряда литиевых аккумуляторов, подробней можно посмотреть здесь.
Режим
|
I пот.
|
CPU
|
Flash
|
RAM
|
DMA/Periph
|
Тактирование
|
RTC
|
LCD
|
Sleep
|
100uA/МГц
(Range 1)
|
Остановлен
|
Вкл
|
Вкл
|
Вкл
|
Любой источник
|
Доступны
|
|
82uA/МГц
(Range 2)
|
||||||||
65uA/МГц
(Range 3)
|
||||||||
Low Power RUN
|
10.4uA
(Flash Выкл, 32 КГц)
|
Работает
|
Выклили Вкл.
|
Вкл
|
Вкл
|
MSI
|
Доступны
|
|
Low Power Sleep
|
5.1uA
(периферия выкл.)
|
Остановлен
|
Выкл.
|
Вкл
|
Вкл
|
MSI
|
Доступны
|
|
6.1uA
(1 таймер вкл.)
|
||||||||
Stop c RTC
|
1.3uA
(1.8 В)
|
Остановлен
|
Выкл.
|
Вкл
|
Остановлен
|
LSE, LSI
|
Доступны
|
|
1.6uA
(3 В)
|
||||||||
Stop
|
500нА
|
Остановлен
|
Выкл.
|
Вкл
|
Остановлен
|
LSE, LSI
|
Выкл.
|
Выкл.
|
Standby c RTC
|
1.3uA
(3 В)
|
Выкл
|
Выкл.
|
Выкл.
|
Выкл.
|
LSE, LSI
|
Выкл.
|
Вкл.
|
1uA
(1.8 В)
|
||||||||
Standby
|
270нА
|
Выкл.
|
Выкл.
|
Выкл.
|
Выкл.
|
LSE, LSI
|
Выкл.
|
Выкл.
|
SSD1306 это однокристальный КМОП OLED/PLED драйвер с контроллером для органических/полимерных светодиодных графических дисплеев. У SSD1306 есть встроенное управление контрастностью, 256-шагов регулировки яркости, оперативной памятью и внутренний генератор. По этому экранчику требуется минимальное количество внешних компонентов. SSD1306 драйвер может работать со следующими интерфейсами: 6800/8000 серии совместимым параллельным интерфейсом, последовательный периферийный интерфейс интерфейс I2C или SPI.
ОСОБЕННОСТИ
- Разрешение: 128 х 64.
- Питание
- VDD = 1,65 В до 3,3 В, напряжение питание логики<VBAT
- VBAT = 3,3 до 4,2 В напряжение питания внутренего повышающего преобразователя
- VCC = 7В до 15В внешнее напряжение питание OLED панели
- Потребление
- Ток сегмента максимальный: 100 мкА
- Общий потребляемый, максимальный ток: 15 мА
- 256 шагов регулировки яркости
- Встроенный 128 х 64 бит SRAM буфер дисплея
- Интерфейсы MCU:
- 8-битный параллельный интерфейс 6800/8080-series
- 3/4 проводной SPI
- интерфейс I2C
- Функцией прокрутки в горизонтальном и вертикальном направлении
- Программируемая частота кадров
- Возможность изменять систему координат
- Внутренний генератор
- Широкий диапазон рабочих температур: от -40 ° C до 85 ° C
В качестве программатора я использую
отладочную плату stm32vldiscovery в которой
есть такая замечательная вещь как Serial
Wire Debug (SWD) через который можно прошить
и отладить свой девайс.
Распиновка разъема SWD:
1 - +3,3V
2 - SWCLK - тактовый сигнал
3 - GND
4 - SWD - данные
В следующем посте я остановлюсь на некоторых куска кода на которых у меня возникали трудности при изготовлении данных "smartwatch" в частности режим пониженного энергосбережения STANDBY и выход из него по внешнему прерыванию и от будильника, а также реализацию графического меню и анимацию отображения времени по типу перекидных механических часов.
Распиновка разъема SWD:
1 - +3,3V
2 - SWCLK - тактовый сигнал
3 - GND
4 - SWD - данные
В следующем посте я остановлюсь на некоторых куска кода на которых у меня возникали трудности при изготовлении данных "smartwatch" в частности режим пониженного энергосбережения STANDBY и выход из него по внешнему прерыванию и от будильника, а также реализацию графического меню и анимацию отображения времени по типу перекидных механических часов.
5 комментариев:
как долго работают от одной батарейки?
От одной зарядки уже работает 4й месяц. По идее часы должны в спящем режиме (отключено все кроме RTC и будильника) работать около года, а с включенным экраном и периферией где то около недели, не проверял.
Можно прошивкуи печатку скинуть
Прошивку бы
Работа, как хобби; хобби, как работа
Отправить комментарий