Как сделать смарт часы своими руками?

Умная техника своими руками: поэтапное создание смарт-часов на ESP8266

Ещё в 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 или 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 нужно установить все необходимые библиотеки:

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

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

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

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

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Смарт-часы это замечательное устройство, в своём маленьком корпусе он таит большие возможности и функционал, который ограничен только фантазией. Но самый лучший способ персонализировать функции смарт часов (smart watch) это создать свои собственные уникальные умные часы. Я решил для их создания использовать модуль с Wi-Fi ESP-12E на чипе ESP8266.

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

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Что нам понадобится, чтобы сделать смарт-часы:

  • Модуль ESP-12Е (ESP8266);
  • OLED дисплей SSD1306 — 0.96″, 128X64;
  • 3 SMD тактовые кнопки;
  • Микросхема стабилизатор на 3.3V;
  • Плата зарядки аккумулятора TP4056;
  • 2 SMD светодиода, типоразмера 0603 (взяты с платы заряда аккумулятора TP4056);
  • 2 SMD резистора на 1 кОм, типоразмера 0603 (взяты с платы заряда аккумулятора TP4056);
  • 1 SMD переключатель;
  • 8 SMD резисторов на 10 кОм, типоразмера 0805;
  • 2 SMD конденсатора на 10 МкФ, типоразмера 0805;
  • 1 SMD резистор на 1,1 кОм (112), типоразмера 0603;
  • Маленький Li-ion аккумулятор, можно взять от дешёвого MP3 плеера.

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Что могут эти умные часы:

— Время: часы подключаются к ближайшему NTP-серверу, чтобы получить время и дату.

— Погода: данные температуры получаются по API из сайта Yahoo Weather.

— Удаленное управление другими устройствами: часы подключаются к серверу Blynk и используют функцию моста для прямого управления другим модулем с реле на основе ESP8266.

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Как сделать смарт часы своими руками, пошаговая инструкция:

Я не хотел, чтобы часы были громоздкими и тяжелыми, поэтому я подумал, что лучший способ уменьшить количество проводов и избавиться от бутерброда из плат — это сделать печатную плату и разместить на неё все компоненты из всех модулей. Я разработал схему и печатную плату с помощью сайта EasyEDA а, затем я заказал печатные платы в JLCPCB.

Здесь я выкладываю схему смарт часов и печатную плату с gerber файлом для заказа плат в Китае или в другом месте.

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

На моей странице в Github вы также найдёте свежую схему, gerber файл печатной платы и код для Arduino. https://github.com/theTechnowright/DIY-Smartwatch-using-ESP8266

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

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

После запаивания компонентов я обнаружил ошибку в разводке платы и вывод GPIO 9 не может использоваться в качестве входа, поэтому я разрезал дорожку ведущую к этому пину и напаял тонкий проводок от кнопки к контакту GPIO 14, но Вы не беспокойтесь в схеме и файле с печатной платой уже всё исправлено.

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Всё спаяно и готово к программированию, но прежде чем это сделать мы должны получить API погоды от Yahoo Weather API (https://developer.yahoo.com/weather/). Для этого посетите страницу, там внизу под названием YQL Query Вы увидите зелёный текст, который можно редактировать, поставьте курсор на него и прокрутите строчку до конца, пока не найдете текст «nome, ak». Здесь вы должны добавить название своего города и буквенный код страны. Например, я разместил «Bengaluru, IN», где «Бенгалуру» — это город и «IN» для Индии. После этого нажмите кнопку «Тест» ниже и скопируйте ссылку, указанную под строчкой «Endpoint», начиная с «/ v1» до конца ссылки.

Читайте также  Как установить видеокамеру на даче своими руками?

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Откройте код проекта в среде Arduino и сначала вставьте код аутентификации Blynk, который будет отправлен вам по электронной почте после создания нового проекта Blynk. Затем введите WiFi SSID и пароль.

Вставьте скопированную ранее ссылку с сайта API Yahoo в том месте, где говорится: const String url = “” и затем в BLYNK_CONNECTED введите код аутентификации другого ESP8266, который управляет реле. Наконец прокрутите страницу вниз до тех пор, пока не найдете «TimeChangeRule». Здесь добавляются или вычитаются минуты из UTC в соответствии с вашим часовым поясом.

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Затем скачайте и установите все эти библиотеки для среды Ардуино:

Time.h и TimeLib.h: https://github.com/PaulStoffregen/Time

SSD1306.h и SSD1306Wire.h: https://github.com/JChristensen/Timezone

ESP8266WiFi.h и WifiUDP.h: https://github.com/JChristensen/Timezone

От сюда мжно скачать последнюю версию библиотеки Blynk: https://github.com/blynkkk/blynk-library/releases/latest

Теперь подключите 4-контактный шлейф от USB-TTL конвертера к ESP-12Е по такой распиновке:
ESP-12Е —> USB-TTL Конвертер:
GND —> GND
RST —> RTS
RX —> TXD
TX —> RXD

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

На IDE Arduino выберите ваше устройство именуемое как NodeMCU 1.0 и выберите правильный COM-порт, затем загрузите код в часы. При загрузке кода обязательно нажмите и удерживайте кнопку «Flash» на Ваших смарт часах.

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

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Всё, смарт часы которые мы сделали своими руками готовы, пора приняться за их тестирование. Включите часы, сдвинув рычажок переключателя. Затем он должен показать сообщение «Подключен к Wi-Fi». Если это так то поздравляю, Вы успешно сделали свои Smartwatch!

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

При нажатии средней кнопки на часах будут отображаться температура, время и дата. А две другие кнопки управляют по Wi-Fi модулем с двумя реле с подключенными к ним нагрузками. Вы подключаете реле к любому электроприбору и управляете ими с помощью своих смарт часов. Как сделать такой модуль с реле которые управляются через Wi-Fi и Интернет я расскажу в другой статье.

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

Смарт часы (smartwatch) на ESP-12E (ESP8266) своими руками

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

Как сделать смарт часы своими руками?

Дельта принтеры крайне требовательны к точности изготовления комплектующих (геометрия рамы, длины диагоналей, люфтам соединения диагоналей, эффектора и кареток) и всей геометрии принтера. Так же, если концевые выключатели (EndStop) расположены на разной высоте (или разный момент срабатывания в случае контактных концевиков), то высота по каждой из осей оказывается разная и мы получаем наклонную плоскость не совпадающая с плоскостью рабочего столика(стекла). Данные неточности могут быть исправлены либо механически (путем регулировки концевых выключателей по высоте), либо программно. Мы используем программный способ калибровки.
Далее будут рассмотрены основные настройки дельта принтера.
Для управления и настройки принтера мы используем программу Pronterface.
Калибровка принтера делится на три этапа:

1 Этап. Корректируем плоскость по трем точкам

Выставление в одну плоскость трех точек — A, B, C (расположенных рядом с тремя направляющими). По сути необходимо уточнить высоту от плоскости до концевых выключателей для каждой из осей.
Большинство (если не все) платы для управления трехмерным принтером (В нашем случае RAMPS 1.4) работают в декартовой системе координат, другими словами есть привод на оси: X, Y, Z.
В дельта принтере необходимо перейти от декартовых координат к полярным. Поэтому условимся, что подключенные к двигателям X, Y, Z соответствует осям A, B, C.(Против часовой стрелки начиная с любого двигателя, в нашем случае смотря на логотип слева — X-A, справа Y-B, дальний Z-C) Далее при слайсинге, печати и управлении принтером в ручном режиме, мы будем оперировать классической декартовой системой координат, электроника принтера сама будет пересчитывать данные в нужную ей систему. Это условность нам необходима для понятия принципа работы и непосредственной калибровки принтера.

Точки, по которым мы будем производить калибровку назовем аналогично (A, B, C) и позиция этих точек равна A= X-52 Y-30; B= X+52 Y-30; C= X0 Y60.

Алгоритм настройки:

  1. Подключаемся к принтеру. (В случае “крагозяб” в командной строке, необходимо сменить скорость COM порта. В нашем случае с 115200 на 250000 и переподключится)

    После чего мы увидим все настройки принтера.
  2. Обнуляем высоты осей X, Y, Z командой M666 x0 y0 z0.
    И сохраняем изменения командой M500. После каждого изменения настроек необходимо нажать home (или команда g28), для того что бы принтер знал откуда брать отсчет.
  3. Калибровка принтера производится “на горячую”, то есть должен быть включен подогрев стола (если имеется) и нагрев печатающей головки (HotEnd’а) (Стол 60град., сопло 185 град.) Так же нам понадобится щуп, желательно металлический, известных размеров. Для этих задач вполне подойдет шестигранный ключ (самый большой, в нашем случае 8мм, он предоставляется в комплекте с принтерами Prizm Pro и Prizm Mini)
  4. Опускаем печатающую головку на высоту (условно) 9мм (от стола, так, что бы сопло еле касалось нашего щупа, т.к. высота пока что не точно выставлена.) Команда: G1 Z9.
  5. Теперь приступаем непосредственно к настройке наших трех точек.
    Для удобства можно вместо g- команд создать в Pronterface четыре кнопки, для перемещения печатающей головки в точки A, B, C, 0-ноль.

  • Последовательно перемещаясь между тремя точками (созданными ранее кнопками или командами) выясняем какая из них находится ниже всего (визуально) и принимает эту ось за нулевую, относительно нее мы будем менять высоту остальных двух точек.
  • Предположим, что точка A у нас ниже остальных. Перемещаем головку в точку B(Y) и клавишами управления высотой в Pronterface опускаем сопло до касания с нашим щупом, считая величину, на которую мы опустили сопло (в лоб считаем количество нажатий на кнопки +1 и +0.1)
    Далее командой меняем параметры высоты оси Y: M666 Y <посчитанная величина>
    M666 Y0.75
    M500
    G28
  • Ту же операцию проделываем с оставшимися осями. После чего следует опять проверить высоту всех точек, может получится, что разброс высот после первой калибровки уменьшится, но высота все равно будет отличатся, при этом самая низкая точка может изменится. В этом случае повторяем пункты 6-7.
  • 2 Этап. Исправляем линзу

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

    Корректируется этот параметр т.н. дельта радиусом, который подбирается экспериментально.

    Калибровка:

    1. Отправляем головку на высоту щупа в любую из трех точек стола. Например G1 Z9 X-52 Y-30
    2. Сравниваем высоту центральной точки и высоту точек A,B,C. (Если высота точек A, B, C разная, необходимо вернутся к предыдущей калибровки.)
    3. Если высота центральной точки больше остальных, то линза выпуклая и необходимо увеличить значение дельта радиуса. Увеличивать или уменьшать желательно с шагом +-0,2мм, при необходимости уменьшить или увеличить шаг в зависимости от характера и величины искривления (подбирается экспериментально)
    4. Команды:
      G666 R67,7
      M500
      G28
    5. Подгоняем дельта радиус пока наша плоскость не выровняется
    3 Этап. Находим истинную высоту от сопла до столика

    Третьим этапом мы подгоняем высоту печати (от сопла до нижней плоскости — столика) Так как мы считали, что общая высота заведомо не правильная, необходимо ее откорректировать, после всех настроек высот осей. Можно пойти двумя путями решения данной проблемы:
    1 Способ:
    Подогнав вручную наше сопло под щуп, так что бы оно свободно под ним проходило, но при этом не было ощутимого люфта,

    • Командой M114 выводим на экран значение фактической высоты нашего HotEnd’а
    • Командой M666 L получаем полное значение высоты (Параметр H)
    • После чего вычитаем из полной высоты фактическую высоту.
    • Получившееся значение вычитаем из высоты щупа.

    Таким образом мы получаем величину недохода сопла до нижней плоскости, которое необходимо прибавить к полному значению высоты и и записать в память принтера командами:
    G666 H 235.2
    M500
    G28

    2 Способ:
    Второй способ прост как валенок. С “потолка”, “на глаз” прибавляем значение высоты (после каждого изменение не забываем “уходить” в home), добиваясь необходимого значения высоты, но есть шанс переборщить со значениями и ваше сопло с хрустом шмякнется об стекло.

    Как сделать авто калибровку для вашего принтера и что при этом авто калибрует принтер вы узнаете из следующих статей.

    Умные часы своими руками за 1500 рублей

    Началась эта история с того, что начитавшись постов с тегом DIY я решил обзавестись набором МК + отладочная плата. Погуглив, узнал что самая дешевая в городе плата это LaunchPad от TI. Не долго думая, отправился за ней в магазин, и понеслась… как и у всех сначала были мигания светодиодами, потом подключение дисплея от Siemens CX75, и т.д.
    Вскоре мне надоело делать что-то просто так, без цели, ради того что бы сделать. Так и возникла мысль создать себе гаджет, которым бы я пользовался постоянно.
    За подробностями прошу под кат.

    Обычно я хожу по улице в наушниках и не слышу звонка телефона, да и связка телефон + чехол + карман + ходьба = вибрации не чувствуется. И я придумал для себя гаджет: информатор об смс и звонках в виде часов/браслета. Опять же идея не нова, и в магазинах куча подобного хлама, но хотелось, во первых, сделать самому, а во вторых, все же дешевле получается. Первый блин, как говорится, комом:

    «Не знаю, мои часы время не показывают.» (с)
    Состав простой: МК, BT, диоды, стабилизатор напряжения, вибромотор, аккум, корпус от старых часов. Для него было написано приложение для android, и небольшая прога для МК. Чудо зверь, которому уже месяцев 6, который меня выручал и не раз.
    Что делает прога на android: коннектимся по BT с часами, отправляем “1” — коннект прошел, запускаем сервис и прослушиваем входящие смс и звонки. При приеме оного, отправляем по BT идентификатор события “2” — смс, “3” — звонок.
    Что делает прога на МК: при приеме символа с BT («1»,«2»,«3») включаем определенную последовательность вкл/выкл индикации и вибро.
    Ни о каком режиме экономии энергии тогда я и не задумывался, да и о том, что стабилизатор работает на напряжениях 3,6 — 6 В тоже как то забыл выяснить. В итоге одного заряда аккума хватает на рабочие сутки, при условии что «часы» постоянно соединены по BT.
    Месяца три назад я решил взяться за эту идею основательно и добавить функционал, которого не хватает: полноценные часы, отображение имени звонящего, текст и отправитель смс, возможность перепрошивки. С последним думал возникнут проблемы, потому как МК перепрошивается по Spy-Bi-Wire интерфейсу, а тянуть 3 пина на выход корпуса не хотелось, но потом вычитал в datasheet что у МК есть режим bootstrap Loader (BSL), позволяющий прошивать его через UART интерфейс.

    Внутренности

    Что мне понадобилось из деталей, что пришлось купить:


    Сначала хотел поставить МК в корпусе QFN, но потом отказался, и взял в корпусе tssop28. Его проще разводить, так как под корпусом еще есть место.

    Название детали Назначение Стоимость
    msp430g2553ipw28 микроконтроллер 60
    lir3048-lby2 аккумулятор 77
    ds1337u+ часы реального времени 78
    ADP3338AKCZ-3.3-RL7 стабилизатор 124
    CP2102-GMR USB-UART 84
    MCP73831T_2ACI_OT зарядка li-ion, li-pol 54
    HC-06 bluetooth 120
    LCD nokia 1202 экран 33

    Итого: 630р.

    Все детали покупались в городе, кроме BT – его заказывал из Китая, если покупать в городе, можно найти за 350р.
    Остальное: mini usb, кнопки, вибромотор взял от старого коммуникатора; кварц и пассивка нашлись в закромах родины. Если покупать эту мелочевку, выйдет от силы рублей 300.

    Детали есть, что дальше? Дальше собирался макет и писалась программа для МК. Отказавшись от Energia, я перешел на CCS 5.3 free версия с ограничением кода в 16kb чего вполне хватает, учитывая объем памяти МК (16kb). В МК задействованы: 2 таймера и WDT+ в режиме интервального таймера, HW I2C, ADC10, BSL, FLASH. Особое внимание уделялось потреблению устройства. В итоге 30 мА при полной нагрузке (BT не соединен, МК в штатном режиме, подсветка на максимум), 8 мА в ждущем (BT подключен, МК в режиме низкого потребления, подсветка отключена) и меньше 1 мА в режиме только часы (BT выключен, МК в режиме низкого потребления, подсветка отключена). Емкость аккума 200мА, так что одного заряда хватает на сутки и более. Одновременно с программированием МК, дорабатывалась программа на android, а именно: при входящем звонке, ищется соответствие номера в телефонной книжке и если соответствие найдено, заменяем номер на имя и отправляем по BT. А при поступлении смс отправляем еще и текст сообщения.

    Плата

    После написания программы и проверки жизнеспособности собранного макета, я приступил к разводке платы, вытравливанию, лужению и пайке.

    На всю плату потребовалось 6 перемычек, 5 конденсаторов, 8 резисторов, 1 светодиод. Включаем… работает!

    Корпус

    Наверно это было самое сложное. Дремель, оргстекло, дихлорэтан, паста гои: адская смесь… я не буду особо описывать процесс изготовления корпуса (да и фото я забыл сделать). 2 слоя 6мм оргстекла на нижнюю часть корпуса и 2мм оргстекло и защитное стекло экрана от старого фотика на верхнюю. В процессе вытачивания корпуса возник вопрос о креплении часов на руку, обычные ремешки для часов были бы слишком запарными с их механизмами крепления, поэтому я купил вот такой за 350р.:

    Парочка сквозных отверстий в корпусе и крепление для ремешка готово. Корпус получился на самом деле не очень, но на функциональность часов он никак не влияет и полностью выполняет свои функции.

    Вот видео работы:

    И напоследок распишу весь функционал моих часов:

    • отображение даты и времени как основная функция;
    • обновление даты и времени с телефона;
    • изменение даты и времени вручную;
    • подключение по BT к Android телефону;
    • отключение питания BT при потере связи для экономии заряда аккумулятора;
    • отображение заряда аккумулятора;
    • информирование о входящем смс с выводом текста и именем отправителя на экран;
    • информирование о входящем звонке с выводом имени звонящего на экран;
    • отображение текста, набранного в поле программы на android;
    • изменение настроек экрана (яркость и время выключения подсветки, контрастность экрана);
    • возможность перепрошивки устройства.

    ИТОГО: За 1500 деревянных и 3 месяца работы в свободное от работы и учебы время от идеи до воплощения.

    Заключение

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

    Надеюсь, данный пост вдохновит и вас сделать что-нибудь полезное.

    Как сделать смарт часы своими руками?

    Простые умные часы

    Автор: axillent
    Опубликовано 11.09.2013
    Создано при помощи КотоРед.
    Участник Конкурса «Поздравь Кота по-человечески 2013!»

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

    Сами часы основаны на давно известных простых конструкциях часов на МК типа atmega8 где для отображения информации используется семи-сегментный индикатор с программной динамической индикацией, а в качестве источника хода часов — часовой кварцевый генератор. Основа очень похожа на часы из статьи многоуважаемого Hertz .

    Что же побудило меня взяться за «еще одну» конструкцию? Буквально несколько идей которые отличают мои часы от опубликованных ранее. Итак, в техническое задание были включены следующие требования:

    • максимально простая схемотехника — было решено отказаться от специализированных микросхем типа DS1307 с часами реального времени и от микросхем типа MAX7219 — драйвера семи-сегментного дисплея. Правда некоторое усложнение в схеме есть — чтобы запитать правильно четыре дюймовые цифры потребовалось усилить выходы МК при помощи транзисторных PNP сборок по цепи общих анодов и микросхемой ULN2803 по цепи катодов.
    • полное отсутствие привычных органов управления. Никаких кнопок — часами не возможно управлять привычным образом. Это конечно не было самоцелью — целью стало то, чтобы этими часами и не нужно было управлять! Пусть они сами позаботятся о том, чтобы всегда снабжать домочадцев самым свежим временем. Я уже описывал в статье про концепцию о механизме синхронизации часов и о способе управления параметрами в EEPROM через браузер — вот именно этот механизм и станет основой управления новыми часами. Меняем кнопки на радио-модуль с чипом NRF24L01.

    Собственно из основных требований все, иначе часы нельзя было бы назвать простыми)

    Но по ходу разработки не удалось устоять от добавления еще нескольких фишек:

    • программный ШИМ с 16-ю уровнями яркости, влияет как на яркость самих цифр так и на яркость мигающих точек между парами цифр, собранных на SMD светодиодах.
    • чтобы ШИМ не пылился без дела в конструкцию был добавлен датчик освещенности на фото-резисторе. Режимом его работы можно управлять через WEB меняя два EEPROM параметра — часы могут снижать яркость с уменьшением внешней освещенности при этом могут или полностью отключаться в темноте либо оставлять заданную минимальную яркость.
    • конечно же термометр! какой кот обходится без термометра тут и там?
    • часы могу отображать собственно время, дату, температуру и освещенность. Через WEB браузер можно управлять как длительностью отображения так и отключать по отдельности отображения даты, температуры и освещенности оставляя только часы.
    • температура доступна через WEB браузер.

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

    Схема, основные комментарии по ней даны выше. Питание всего устройства осуществляется от внешнего источника на 5в. Схема содержит в себе стабилизатор на 3.3В. Такой вариант выбран потому, что напряжение порядка 3.3В требуется для радио-модуля, а с другой стороны — внешние источники питания на 5В очень распространены, подойдет любая недорогая USB зарядка с током до 500мА. Три светодиода на схеме имеют такое назначение — два оранжевых под цвет цифр нужны для двух мигающих точек между показаниями часов и минут. Один голубой расположен между ними и используется для отображения (мигания) состояния работы с радио-модулем.

    Печатная плата сделана компактно так, почти все компоненты в исполнении SMD и располагаются снизу платы в то время как сверху большую часть платы занимают семи-сегментные индикаторы, радио-модуль, разъем питания, датчик температуры и фоторезистор. В приложении есть PDF подготовленные для ЛУТ.

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

    • lght_thr — целое число от 0 до 1023 (10 бит АЦП atmega8) определяют порог выше которого считается, что «совсем темно». Схема подключения фоторезистора такая, что при ярком освещении измеряется 0, при темном — большое число в несколько сотен. Если задать заведомо большое число — часы перестанут реагировать на изменение освещения.
    • lght_min, — целое число от 0 до 15 определяет минимальную интенсивность индикаторов при снижении внешней освещенности. Если задать 0, то в темноте часы будут гаснуть.
    • disp_clk, disp_dat, disp_tmp и disp_lgh — задают число в секундах (0-255) показа часов, даты, температуры и освещенности соответственно. Для всех параметров кроме часов установка нуля означает — не показывать.

    Кроме того в приложении есть STL модели корпуса часов.

    Часы пока без корпуса:

    И наконец часы в корпусе, готовые к установке:

    Короткое виде работы часов — в момент включения происходит синхронизация и так же можно увидеть как работает подстройка яркости под освещенность:

    Умные часы своими руками

    За 1500 рублей и 3 месяца работы в свободное время автор создал умные часы, информирующие о входящих смс и звонках с выводом текста и именем отправителя на экран. Подробности смотрим под катом.

    Обычно я хожу по улице в наушниках и не слышу звонка телефона, да и связка телефон + чехол + карман + ходьба = вибрации не чувствуется. И я придумал для себя гаджет: информатор об смс и звонках в виде часов/браслета. Опять же идея не нова, и в магазинах куча подобного хлама, но хотелось, во первых, сделать самому, а во вторых, все же дешевле получается. Первый блин, как говорится, комом

    «Не знаю, мои часы время не показывают.» ©
    Состав простой: МК, BT, диоды, стабилизатор напряжения, вибромотор, аккум, корпус от старых часов. Для него было написано приложение для android, и небольшая прога для МК. Чудо зверь, которому уже месяцев 6, который меня выручал и не раз.
    Что делает прога на android: коннектимся по BT с часами, отправляем “1” — коннект прошел, запускаем сервис и прослушиваем входящие смс и звонки. При приеме оного, отправляем по BT идентификатор события “2” — смс, “3” — звонок.
    Что делает прога на МК: при приеме символа с BT («1»,«2»,«3») включаем определенную последовательность вкл/выкл индикации и вибро.
    Ни о каком режиме экономии энергии тогда я и не задумывался, да и о том, что стабилизатор работает на напряжениях 3,6 — 6 В тоже как то забыл выяснить. В итоге одного заряда аккума хватает на рабочие сутки, при условии что «часы» постоянно соединены по BT.
    Месяца три назад я решил взяться за эту идею основательно и добавить функционал, которого не хватает: полноценные часы, отображение имени звонящего, текст и отправитель смс, возможность перепрошивки. С последним думал возникнут проблемы, потому как МК перепрошивается по Spy-Bi-Wire интерфейсу, а тянуть 3 пина на выход корпуса не хотелось, но потом вычитал в datasheet что у МК есть режим bootstrap Loader (BSL), позволяющий прошивать его через UART интерфейс.
    Внутренности
    Что мне понадобилось из деталей, что пришлось купить:

    Название детали
    Назначение
    Стоимость

    msp430g2553ipw28
    микроконтроллер
    60

    lir3048-lby2
    аккумулятор
    77

    ds1337u+
    часы реального времени
    78

    ADP3338AKCZ-3.3-RL7
    стабилизатор
    124

    CP2102-GMR
    USB-UART
    84

    MCP73831T_2ACI_OT
    зарядка li-ion, li-pol
    54

    HC-06
    bluetooth
    120

    LCD nokia 1202
    экран
    33

    Итого: 630р.
    Все детали покупались в городе, кроме BT – его заказывал из Китая, если покупать в городе, можно найти за 350р.
    Остальное: mini usb, кнопки, вибромотор взял от старого коммуникатора; кварц и пассивка нашлись в закромах родины. Если покупать эту мелочевку, выйдет от силы рублей 300.
    Детали есть, что дальше? Дальше собирался макет и писалась программа для МК. Отказавшись от Energia, я перешел на CCS 5.3 free версия с ограничением кода в 16kb чего вполне хватает, учитывая объем памяти МК (16kb). В МК задействованы: 2 таймера и WDT+ в режиме интервального таймера, HW I2C, ADC10, BSL, FLASH. Особое внимание уделялось потреблению устройства. В итоге 30 мА при полной нагрузке (BT не соединен, МК в штатном режиме, подсветка на максимум), 8 мА в ждущем (BT подключен, МК в режиме низкого потребления, подсветка отключена) и меньше 1 мА в режиме только часы (BT выключен, МК в режиме низкого потребления, подсветка отключена). Емкость аккума 200мА, так что одного заряда хватает на сутки и более. Одновременно с программированием МК, дорабатывалась программа на android, а именно: при входящем звонке, ищется соответствие номера в телефонной книжке и если соответствие найдено, заменяем номер на имя и отправляем по BT. А при поступлении смс отправляем еще и текст сообщения.

    Плата
    После написания программы и проверки жизнеспособности собранного макета, я приступил к разводке платы, вытравливанию, лужению и пайке.

    На всю плату потребовалось 6 перемычек, 5 конденсаторов, 8 резисторов, 1 светодиод. Включаем… работает!
    Корпус
    Наверно это было самое сложное. Дремель, оргстекло, дихлорэтан, паста гои: адская смесь… я не буду особо описывать процесс изготовления корпуса (да и фото я забыл сделать). 2 слоя 6мм оргстекла на нижнюю часть корпуса и 2мм оргстекло и защитное стекло экрана от старого фотика на верхнюю. В процессе вытачивания корпуса возник вопрос о креплении часов на руку, обычные ремешки для часов были бы слишком запарными с их механизмами крепления, поэтому я купил вот такой за 350р.:

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