Идеальные часы

от автора

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

Получилось?


image

Первые телевизоры были черно-белыми, затем появились цветные.
С электронными часами все наоборот, они с рождения цветные: желтые, зеленые, красные и лишь недавно — синие. Черно-белые часы днем с огнем не сыскать.
И вот многолетняя мечта свершилась. Первоначальные варианты названия были “белые часы” или “конец цвета”. В процессе создания конструкции удалось избавиться от недостатков большинства электронных часов: неточность хода, наличие кнопок, сложные алгоритмы управления, отсутствие автоматической яркости. Так часы стали практически “идеальными”.

Для поддержания точности часов необходимо добиться стабильности колебаний кварцевого резонатора и своевременно производить компенсацию ухода показаний от образцового времени.
Стабильность достигают аппаратными способами, а компенсацию производят программно или вручную от внешних источников сигнала точного времени: радиостанции, Интернет, спутники систем навигации.
В данных часах применяется последний способ. Так как в сигнале навигационных спутников передается UTC — всемирное координированное время, то нет необходимости “подводить стрелки” часов. Необходимо лишь один раз указать смещение относительно всемирного времени.

Идея была проверена в предыдущих разработках с показом времени при помощи разноцветных вспышек: лампа времени и кубик. «Волшебная палочка» от кубика — новую одежду только получила, а то старое блестящее покрытие поизносилось и с магнита окалина начала сыпаться.
“Лампа” держится в жару и холод, дождь, снег и дым больше года и до сих пор не отклонилась ни на секунду.
Настала очередь привычного способа показа времени. Мечтой было применение большого белого светодиодного индикатора, обеспечивающего хорошую видимость в пределах комнаты.

После сравнительно большого модуля GL8088s, используемого в “кубике”, в этот раз выбор пал на небольшой приемник сигналов спутниковой системы позиционирования, модуль Gms-g6a — глаза и уши часов для связи с Космосом. Пара этих модулей была приобретена для эксперимента по созданию часов.
Чипсет: MT3333.
33 канала отслеживания и 99 каналов поиска систем GPS, ГЛОНАСС и Galileo.
Чувствительность при слежении: -165 dBm.
Чувствительность при обнаружении: -148 dBm.
Время горячего/холодного старта: 1/35 сек.
Напряжение питания: 3,0…4,3 В.
Ток потребления при захвате/слежении (для Uпит.=3,3В): 35/29 мА.
Размер: 16x16x2,1 мм.
Вес: 1 грамм.

Помимо отличной родословной и прекрасных технических данных, данный приемник обладает важной особенностью — наличием встроенной на плате чип-антенны. Не все радиолюбители являются специалистами в области проектирования и изготовления антенн, поэтому такая особенность модуля позволяет легко достичь положительного результата.
В такой конструкции есть ограничения в виде наличия запрещенной зоны при разводке платы и максимальной удаленности от крупногабаритных радиодеталей, но это все мелочи.
Опытные разработчики могут использовать в своих часах другой модуль: Gmm-g3, который обладает такими же характеристиками, но его габариты уменьшены до 11,5 x 13 x 2,1 мм в связи с отсутствием антенны. Такие маленькие размеры позволят установить модуль на пару миллиметров выше, а антенну в виде печатного проводника или в отдельном исполнении разместить на самом верху печатной платы, что еще ближе приблизит ее к Космосу.

Модуль Gms-g6a, в отличии от приемника, используемого в проекте “кубик” не подвергался никаким настройкам. Все сообщения “из коробки” — без изменения скорости и отключения неиспользуемых строк.
Скорость работы порта RS-232 по умолчанию составляет 9600 бит/сек. Такая скорость удобна для работы, но время передачи длинных сообщений занимает значительное время и приближается к секунде — когда уже необходимо начать работу со следующей порцией информации. Поэтому на этот раз в программе нет ожидания конца сообщений. Из потока информации просто “выдергиваются” необходимые значения и производится их обработка. По сравнению с определением местоположения, получить информацию о времени легче, и модуль начинает выдавать необходимые данные еще до показа количества видимых спутников. Программа делит спутники на ваши и наши, но часы показывают суммарное число видимых аппаратов, что сближает космические группировки для выполнения одной задачи.

image

Мозги часов — микроконтроллер PIC16F688 в небольшом корпусе для поверхностного монтажа. Программа работы загоняется в память контроллера при помощи фрагмента микросхемы ПЗУ с ультрафиолетовым стиранием КС573РФ2. Микросхему можно подключить пружинящими иголками к контактным площадкам для программирования, а можно просто припаять. При монтаже приемника необходимо подложить под него изолирующую пленку, так как снизу проходят несколько дорожек.

image

Настроил и забыл.
Как и в предыдущих разработках, на единственную кнопку первоначально предполагалось возложить лишь внесение поправки относительно всемирного координированного времени, поступающего со спутников.
Но в дальнейшем, по мере разработки конструкции, кнопка стала обрастать новыми задачами.
Было решено заменить кнопку униполярным датчиком Холла TLE4905L, реагирующим на магнитное поле “волшебной палочки”.
Это уже третий вариант по замене классической механической кнопки. В “лампе” кнопка отсутствовала как класс, и внесение поправки производилась замыканием выводов контроллера, в “кубике” роль кнопки играл геркон.
Но геркон является хрупкой стеклянной конструкцией, имеющей большие по нынешним меркам размеры, поэтому в “идеальных часах” использован современный вариант — датчик Холла.
Поправка времени вносится просто. До подачи питания необходимо поднести “волшебную” палочку или магнит (магнетизм — это тоже волшебство) к датчику, расположенному в верхней части индикатора единиц минут. После включения питания начинается отсчет часов поправки. При достижении необходимого значения магнит убирают, поправка запоминается и это подтверждается вспышкой индикатора. Если за время круга — 23 часа, решение не принято, происходит выход из режима внесения коррекции времени.

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

Режимы индикации:
— количество видимых спутников C = GPS + GLONASS, отключение повторным пассом “волшебной” палочки;
— индикация четверти минут (точка сверху): включена/отключена;
— режим отображения времени: 24/12 часов;
— разделительные точки: не мигают/мигают;
— регулировка яркости: автоматическая/ручная;
— восемь уровней максимальной яркости для ручного и автоматического режимов работы.

Сократить время на подготовку символьной информации для названия каналов помогла таблица подключения индикатора, в которой учтены особенности разводки печатной платы. Сегмент, который необходимо включить отмечается цифрой 1. Далее, в полуавтоматическом режиме выдается результат: выражение вида A954 AAAA, что на языке индикатора означает “включить восемь вертикальных линий”.

Мечта сделать часы с белым индикатором была большой и долгой. Сначала поиски по магазинам и Интернету, затем попытка самостоятельного изготовления индикатора. Был разобран красный 7-сегментный индикатор, световод оставлялся на месте, а светодиоды заменялись белыми. Но размер 0,56 дюйма все же мал для комнаты.

image

В больших индикаторах устанавливается по несколько последовательно соединенных белых светодиодов, чтобы равномерно засветить световод сегмента. В результате, даже у цепочки из пары светодиодов необходимо использовать напряжение более 7 Вольт, что превышает привычные 5 Вольт. Применять преобразователь напряжения желания не было.
И вот, чудо произошло. Рассказал о проблеме одному товарищу по работе, который приобретает комплектующие элементы на eBay. Не прошло и часа, как он нашел необходимые светодиоды: белые, дюйм с четвертью, с общим анодом, работающие от 4 Вольт — то, что надо! Через несколько дней он принес их домой. Огромное ему спасибо!
Индикатор был безродным, из опознавательных знаков на нем был только символ “В”. Подробное описание так и не удалось найти, пришлось пользоваться данными со страницы покупки. Насколько я понимаю английский, там они закончились, но желающие собрать часы смогут найти что-то подобное по указанным в схеме параметрам.
Четыре индикатора, расположенные рядом друг с другом и определяют габариты часов: ширина 98 мм, высота 44 мм, глубина 18 мм, без учета разъема питания. Испытания показали, что цифры отлично видны в дневное время при токе 5 мА через сегмент. Ночью это значение можно уменьшать в 10 раз. Небольшой недостаток индикатора в том, что на малых токах белый цвет начинает приобретать различные оттенки, видимо, это связано с особенностями люминофора.

Существует выражение “минута кажется вечностью”. Эта фраза, скорее всего, возникла после появления часов, у которых отсутствует индикация секунд: человек видит, какая идет минута, но не знает, когда она закончится. Чтобы лучше понять место во времени, в идеальных часах введена индикация четверти минуты — это точка, которая горит над одним из четырех индикаторов. Эта функция новая и пока еще непривычная. Люди, которые не желают теряться во времени, могут ее включить. Было несколько вариантов показа секунд, но победила идея одного коллеги — просто перевернуть индикатор и тогда никому не нужные точки начинают приносить пользу. За хорошую идею плюс в его карму!
В режиме отображения четверти минут человеку достаточно одного взгляда, чтобы определить время с точностью 15 секунд. Если подсчитать количество вспышек при мигании разделительных точек, то становится доступной секундная точность. Разделительные точки сделаны из двух белых светодиодов и установлены методом допиливания корпуса. Подключены они вместо одного неиспользуемого сегмента индикатора десятков минут.

В электронных часах важно иметь автоматическую регулировку яркости. Столкнулся с этим в древних часах на К145ИК1901, тогда пришлось их дорабатывать, чтобы утихомирить зеленый прожектор.
Из современного имеется датчики освещенности MAX44007, MAX9635, APDS-9300, которые позволяют отказаться от канала АЦП в контроллере.
Но в пределах досягаемости оказался лишь аналоговый датчик APDS-9002 (серия 9002…9007), со всеми вытекающими из этого последствиями. Вот он виднеется — небольшой золотистый прямоугольник в верхней правой части индикатора десятков минут, чуть правее от него чернеет корпус датчика Холла — к нему и надо подносить магнит.

image

Датчик прекрасно реагирует на любое изменение яркости, даже от лампы накаливания. Видимо в связи с этим, существуют сторонники запитывать лампы накаливания от выпрямленного и сглаженного напряжения.
Лампы дневного света, имеющие низкочастотные дроссели в цепи питания также сильно пульсируют, чем и объясняется запрет их использования при работе на станках — стробоскопический эффект.
Поэтому, в цепи датчика освещенности установлен конденсатор большой емкости, который несколько сглаживает эти пульсации.
На осциллограммах: напряжение на нагрузочном резисторе сопротивлением 1 кОм.
Слева лампа дневного света, справа лампа накаливания. Снизу с фильтрующим конденсатором емкостью 4,7 мкФ, сверху — без конденсатора.

image

Самый ровный уровень освещенности дает Солнце и лишь тучки пытаются модулировать этот свет.
Нахождение датчика освещенности под пленкой несколько уменьшает его выходной сигнал, но АЦП контроллера справляется с поступающим напряжением.

Особенностью часов является статический режим работы индикаторов. К динамическому режиму не лежит душа, поэтому плата за нелюбовь — увеличение числа корпусов.
Драйвер MBI15026 удобен для управления двумя семисегментными индикаторами. При использовании печатной платы, микросхема с мелким вариантом корпуса прекрасно располагается между выводами любого индикатора. При помощи трех сигнальных проводников, драйвер управляет 16-ю сегментами. Если необходимо 32 светодиода, то добавится одна микросхема и один управляющий сигнал.
Ток через сегменты задается при помощи одного резистора. В часах этот переменный цифровой потенциометр AD8400 “крутит” микроконтроллер в зависимости от внешней освещенности. Наиболее подходящий номинал 50 кОм, но в наличии был только 100 кОм.

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

image

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

image

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

image

Идеальные часы помимо показа точного времени должны сочетаться с окружающей обстановкой. В этом также помогает метод “Потемкинские деревни”. На боковые поверхности корпуса можно просто и быстро наклеить пленку, имеющую цвет, наиболее подходящий к обстановке. Белый цвет лицевой поверхности сочетается со всем, но можно также использовать полупрозрачную пленку-светофильтр и тогда цифры окрасятся в любимый цвет. Операция по смене имиджа занимает пару минут: отклеить старое, приклеить новой, обрезать лишнее. В скором времени наверняка появятся семисегментные RGB-индикаторы, тогда цвет излучения можно будет выбрать на одном из каналов управления за несколько секунд.
При изготовлении часов, перед проклейкой корпуса необходимо на ровной поверхности выровнять верхнюю и нижнюю стороны припаянных индикаторов при помощи наждачной бумаги, все же на доли миллиметра они отличаются по высоте. Юстировка передней стороны индикаторов производится при пайке на ровной поверхности стола. После приклеивания передней пленки убеждаемся, что и лицевая поверхность выглядит не очень из-за того, что при заливке световодов индикатора образовались ложбинки разной глубины, и пленка не может скрыть этого дефекта. В корпусе это было бы незаметно, но в нашем случае не годится. Снимаем пленку, кладем конструкцию на стол и при помощи наждачной бумаги двух разных калибров приводим состояние лицевой поверхности к виду, соответствующему названию часов. Страшно было приниматься за эту операцию на дефицитном индикаторе, но все закончилось успешно: глубина световодов достаточная, чтобы снять небольшую часть.
Еще одна тонкость при сборке — формирование аккуратного выходного отверстия разделительных точек. В этом помогает пластилин и трубочка небольшого диаметра. Пластилином заполняется все свободное пространство вокруг светодиода, а мягкой трубочкой от изоляции провода формируется отверстие желаемого диаметра. Данную операцию удобно проводить при включенном индикаторе.

image

Помимо корпуса конструкции, головной болью разработчика является блок питания (БП).
В последнее время наметилась тенденция к использованию порта USB компьютера для зарядки многочисленных носимых устройств. Таким образом, выход USB компьютера можно считать в наше время самым универсальным источником питания. Задача разработчика: умерить аппетит устройства и не превышать возможности USB-порта.
Чтобы не зависеть от компьютера, производители наладили выпуск сетевых БП, имеющих USB-разъем с выходным напряжением 5 Вольт.
При использовании современных компонентов удается значительно снизить потребляемый устройством ток, а значит и габариты БП. Импульсный режим работы позволяет уменьшить его габариты до размеров, недостижимых в “ламповый” век.

“Идеальные часы” могут питаться как от разъема USB компьютера — напрямую или через удлинитель, так и от сетевого БП, например, A1265: размер 26х26х28 мм без учета сетевой вилки, входное напряжение 100…240 В, выход: 5 В х 1 А.
К счастью, до соединения с часами решил разобрать этот БП. В результате, на внутренней стороне пластины с сетевой вилкой обнаружилась “жирная” капля припоя. На низковольтной стороне печатной платы был прилипший металлический кусочек отрезанного вывода от USB-разъема. Дальнейшую жизнь этого блока легко представить. Большой привет изготовителю!
Перед подключением часов проверил напряжение БП: 5,35 В на холостом ходу и 5,33 В под нагрузкой 40 мА. Не годится — превышение максимального напряжения. Придется вскрывать и что-то подкручивать. С трудом удалось отыскать один экземпляр, выдающий 5,05/4,95 В при тех же условиях. На этот момент необходимо обратить внимание.
Миниатюрный размер современных БП позволяет реализовать настенную установку часов.
Вариант 1. Розетка — блок питания с разъемом USB — часы.
Вариант 2. На стене, спрятав блок питания в монтажную коробку. В стене будет небольшое прямоугольное отверстие, куда втыкается USB-разъем часов. Необходимо предусмотреть защиту и отключение “на всякий пожарный” случай линии питания спрятанного БП.

Если для питания используется USB-разъем ноутбука, необходимо при пайке разъема питания часов произвести его правильную ориентацию. При монтаже не думал об этой возможности, и получилось как всегда.
Часы можно установить в автомобиль, небольшой размер позволяет это легко сделать.
Никто не отменял и классический корпус часов.
Как вариант, можно расположить часы в окне, прикрепив их на одном из стекол или раме.
Вообще это может быть даже переносной вариант: забрал из дома, воткнул в разъем на работе или на курорте.

Для радиолюбителей, желающих упростить схему, можно применить динамическую индикацию.
Драйверы для индикаторов с общим катодом MAX7219/MAX7221 или MAX6950/MAX6951.
Для общего анода можно использовать STLED316S.
Датчики освещенности можно применить с цифровым выходом, что позволит сократить еще пару элементов из схемы.

Небольшая проблема проявилась при наладке устройства. В этом варианте часов решил не подключать приемник к компьютеру, а сделать все, воспользовавшись только текстовым описанием. Но гладко было на бумаге. Контроллер не желал ловить сигналы GPS-приемника. Причем не только сигналы, передаваемые по RS-232, а вообще не реагировал на изменения сигнала от приемника.
Пришлось таки подключить часы к осциллографу и через небольшой преобразователь к порту RS-232 компьютера.
Приемник был жив и ежесекундно выдавал положенные ему сообщения. Удивительно, как в такой маленький приемник помещается столько больших букв и цифр!

Пример сообщений, поступающих каждую секунду:
$GPGGA,124541.000,5551.3636,N,04834.2565,E,1,5,2.72,161.8,M,1.4,M,,*69
$GNGSA,A,3,02,04,29,,,,,,,,,,2.90,2.72,0.99*1D
$GNGSA,A,3,81,88,,,,,,,,,,,2.90,2.72,0.99*19
$GNRMC,124541.000,A,5551.3636,N,04834.2565,E,0.43,334.91,130213,,,A*75
$GPVTG,334.91,T,,M,0.43,N,0.79,K,A*38

$GPGGA,124542.000,5551.3636,N,04834.2564,E,1,5,2.72,161.8,M,1.4,M,,*6B
$GNGSA,A,3,02,04,29,,,,,,,,,,2.90,2.72,0.99*1D
$GNGSA,A,3,81,88,,,,,,,,,,,2.90,2.72,0.99*19
$GPGSV,3,1,11,23,84,113,,13,66,275,17,30,41,076,,16,37,114,*71
$GPGSV,3,2,11,20,33,168,,04,26,275,24,07,20,223,,02,18,320,27*7A
$GPGSV,3,3,11,32,16,150,,31,15,054,,29,08,021,19*44
$GLGSV,2,1,08,73,79,100,,71,64,149,,74,39,206,,80,29,041,*66
$GLGSV,2,2,08,81,15,011,19,88,12,318,18,70,12,140,,65,05,317,*6A
$GNRMC,124542.000,A,5551.3636,N,04834.2564,E,0.35,334.91,130213,,,A*76
$GPVTG,334.91,T,,M,0.35,N,0.65,K,A*34

Возможна одна строка GSA
$GPGGA,033345.000,5551.3525,N,04834.2534,E,1,5,3.11,102.9,M,1.4,M,,*69
$GPGSA,A,3,06,16,03,07,08,,,,,,,,3.26,3.11,0.98*0A
$GPRMC,033345.000,A,5551.3525,N,04834.2534,E,0.35,286.26,200213,,,A*6E
$GPVTG,286.26,T,,M,0.35,N,0.65,K,A*30

Исследование вопроса показало следующее.
При разработке, питание приемника: 4,15 В было подведено к верхней границе рабочего диапазона; 4,3 В, чтобы уровень выходной “единицы” улавливал пятивольтовый контроллер.
На практике оказалось, что внутри приемника находится стабилизатор напряжения и уровень “1” приемника составляет 2,7 В — для контроллера не выполняется параметр VIH.
Пришлось внести доработку: миниатюрный преобразователь уровня на двух транзисторах в корпусе SOT23 и паре резисторов размером 0603. В приложенной к проекту печатной плате исправление внесено.
Делать на весу сборку из таких маленьких деталей — удовольствие огромное! Малейшее неловкое движение или случайный чих приводят к телепортации элементов в неизвестность. Поэтому деталей потребовалось несколько больше, чем указано на принципиальной электрической схеме.
В связи с этими событиями, в следующих версиях часов, напряжение питания приемника можно смело снижать до 3…3,3 В, например, установив два последовательных диода в цепи питания, вместо одного, используемого сейчас. Только необходимо учесть, что если приемник будет переводиться в режим пониженного потребления, то ограничитель напряжения на диоде использовать нельзя, так как напряжение в этом случае поднимется выше максимально допустимого. В этом случае нужен классический линейный стабилизатор на 3…3.3 В в корпусе SOT-23.
Как вариант, можно использовать подходящий по выводам модуль PA6B с верхним пределом питающего напряжения 5 В. Из отличий: другой чипсет, высота корпуса 4 мм, необходимо подать сигнал на вход “Enable” (замкнуть выводы 2 и 1), меньшее количество каналов, но для часов вполне сгодится, так как чувствительность аналогичная.
Преобразователь уровня можно будет сделать на одном транзисторе и паре резисторов или применить специализированный преобразователь типа MC74VHC1GT125. Можно обойтись без преобразователя, сделав для всех элементов, кроме белых светодиодов, напряжение питания 3,3 В.

Подключение приемника к компьютеру спасло еще в одной ситуации. Как оказалось, приемник не всегда выдает две строки $GNGSA. Если спутники одной из группировок отсутствуют, например, после включения питания часов, то строка будет только одна.
Вообще, из всего многообразия поступающих от приемника данных, часам нужно очень мало.

image

Дальнейшее направление работы — добавление к часам будильника. Вместо кнопок можно использовать
микросхему MGC3130, которая анализирует изменение характеристик электрического поля при движении рук на расстоянии до 15 см от экрана. Тогда настроить время срабатывания будильника и изменить режим работы часов можно будет без волшебной палочки — просто пассами пальцев, что только добавит идеальности часам.

Теперь о том, ради чего затевалась идея точных часов.
Существующие радиоканальные системы сбора информации содержат центральный пункт и удаленные объекты с приемником и передатчиком.
Идеальные часы позволяют отказаться от передатчика на центральном объекте и приемников на удаленных точках, используя синхронизацию по точному времени.
Вместо канала яркости делается канал задержки начала передачи: 0…59 сек — ежеминутный будильник передатчика. На каждом объекте настраивается время включения передачи относительно начала минуты с точностью до 1 секунды. В результате, каждый объект имеет индивидуальное время начала передачи данных, распределенное по каждой минуте.
Система сбора информации упрощается, удешевляется и улучшается качество и надежность ее работы.
Часы в этом варианте применения можно также значительно упростить.
1. Индикатор сделать красного цвета, что позволит использовать напряжение 3,3 В.
2. Часы и минуты становятся ненужными, достаточно знать только секунды.
3. Секунды можно показывать точкой на матричном светодиодном индикаторе 8х8.
4. Можно использовать всего три светодиода — “начало минуты”, секундные импульсы”, “включение передачи”. Как вариант: один RGB светодиод.

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

Ничего, если опросов не будет?

ссылка на оригинал статьи http://habrahabr.ru/post/171153/