Русский
Русский
English
Статистика
Реклама

Пайка

Моя USB визитка

01.07.2020 22:06:22 | Автор: admin
Всем привет!

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



Цель проекта


Сделать максимально дешёвую версию USB Flash визитки, на которой бы содержалось моё резюме, исходный код и ещё несколько файлов. При этом использовать доступные комплектующие, которые можно заказать на LCSC и JLCPCB.

Что мне нужно было для этого сделать?


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

Что в итоге делает моя визитка?


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

Основные узлы проекта


Микроконтроллер STM32F070F6 это был самый дешевый вариант контроллера с USB device на борту из тех что я нашёл;
Winbond W25Q32 последовательная флэш память на 4 Мб;
Светодиоды 0805 белый и синий цвета, для красоты;
LP3992 понижающий преобразователь напряжения на 3.3В, питание микросхем;
USBLC6-2 защита USB разъема от статики.

Мой подход к разработке пет-проектов


Есть определенный путь, которого я придерживаюсь программируя микроконтроллеры:
1) Не использовать SPL, HAL и другие библиотеки для программирования периферии. Этого правила я придерживаюсь и на основной работе;
2) Не использовать ОС. Я считаю что мои домашние проекты не настолько сложны, чтобы использовать этот полезный инструмент;
3) Не использовать Кучу. Касается только домашних проектов (нет необходимости);
4) Не использовать динамическое выделение памяти. Касается только домашних проектов (нет необходимости).

Проектирование


Компоненты
Для начала мне было необходимо подобрать компоненты для моей задумки т.к. помимо рассыпухи у меня ничего не было. Для этого я решил использовать сервис LCSC, как дешёвый и доступный вариант для домашних разработок. Как оказалось, по многим параметрам я вошёл тютелька в тютельку. Например, использовал все ножки микроконтроллера, уложился в оперативную память в 6кБ, из которых 4кБ у меня занял буфер для передачи данных с USB на SPI Flash, использовал ноги для USB которых физически нету на данном контроллере и т.п.

По цене в итоге вышло следующее:
Микроконтроллер STM32F070F6 -0.64$
Последовательная флэш память Winbond W25Q32 0.35$
Понижающий преобразователь LP3992-33B5F 0.04$
Защита от статики USBLC6-2SC6 -0.08$
Кварц 0.15$

Резисторы и конденсаторы использовал в форм факторе 0603, светодиоды 0805. Всё это у меня уже было, поэтому подсчитать их стоимость не представляется возможным. Однако можно с уверенностью сказать, что по цене всё уместилось в 1.5$ с запасом. Это не выглядит дешёвым по сравнению с проектом Хиллиарда, но и цены у меня не оптовые.

Печатная плата и схемотехника
Схему и печатную плату проектировал в Altium designer, скрины прилагаю.





Все компоненты обвязаны согласно даташитам. Микросхема флэш памяти запускается с контроллера через МДП транзистор.
Тут проблемой был USB разъем. Согласно спецификации USB он имеет толщину 2мм. Плату такой толщины заказывать дорого, да и для визитки не очень практично. Выход из ситуации я подсмотрел у одного человека, который делал музыкальную визитку. Он использовал плату 1мм, и делал на ней дополнительный разъем, который отрывается и запаивается поверх основного. Я поступил также.



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

Программирование
Тут мне особо сказать нечего, программировал всё на низком уровне, на языке C++.Исходный код прикрепляю. Обращение к регистрам делал по статьям lamerok. USB реализовано с помощью средств микроконтроллера. Микросхема флэш памяти работает по SPI через DMA на самой высокой скорости. Диоды мигают по очереди по прерыванию таймера на 250мС.





Заключение


На этом думаю всё, основные моменты я описал. Если нужно что-то раскрыть более подробно (программирование USB, Flash или схемотехнику), то пишите, обязательно сделаю.

Всех благ!
Подробнее..

Поведениеметр

28.12.2020 14:06:07 | Автор: admin
Я специально добавил хаб читальный зал, так как конкретных схем, ПО и чертежей тут не будет, зато будет сказ о том, как проект выходного дня растянулся на 2 недели. В общем, нет ТЗ результат ХЗ.
Предпосылка. Не знаю, или кризис 4х 5и лет, или непростой 2020, но поведение дочки стало резко портится. Дома еще ничего, а на занятиях мрак. С другой стороны, в развивающем клубе, куда она ходит, есть аналоговый поведениеметр (не знаю, как он правильно называется, пусть будет так), представляющий из себя 5и этажный многоподъездный домик, где каждому ребенку выделен именной подъезд и звездочка, которую ставят от 1 до 5 уровня. Эту же игру мелкая принесла домой, нарисовав на бумажке клеточки, но ставит всегда звезду на верхний этаж, вне зависимости от реального поведения. Ладно, надо это геймифицировать, используя тягу к лидерству, подумал я и решил сделать цифровой измерительный прибор. В результате получилось вот такое, как ни странно, работает:
image
Работает именно по назначению. За месяц использования удалось немного откорректировать поведение в лучшую сторону. Если интересно, как на такой простой проект ушло больше недели,

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

добро пожаловать!

Конечно, про несколько недель я слукавил, непосредственно активная работа заняла пару дней, но шла она с невероятным скрипом, с фейлами просто на ровном месте.
Первый вариант родился, когда я проходил мимо очередного рисунка домика со звездой на крыше. Берем досочку, к ней крепим 3 подходящие полупрозрачные емкости, которые планировал подобрать в ближайших хозтоварах, светодиодов у меня коробка, случайно на порядок ошибся, когда на Али заказывал, собираем. Выглядеть это должно было как то так:
image
Прошу прощения, вообще нет таланта рисовальщика. Из электроники PIC12F508, пару герконов, батарейка и несколько десятков строк на Ассемблере. Управлять предполагалось волшебной палочкой с закрепленным на конце магнитом (да, справа была попытка нарисовать волшебную палочку). Подносим к левому геркону отнимаем балл, к правому добавляем. Итого, из 6 GPIO контроллера 3 на светодиоды, 2 на герконы, 1 свободный. Внутренняя подтяжка GPIO к U+, по сути на плату надо будет поместить только 1 контроллер и токоограничивающие резисторы для светодиодов. Эта конструкция родилась за пару минут в голове и оказалась неприемлемой к сборке в текущих условиях, несмотря на свою простоту. Как так?
Вначале была досочка. Это в нашем доме есть все необходимое, а на съемной квартире не смог найти даже заготовку. Еще нужна ножовка, желательно лобзик, дрель, шлифовальная машина, ладно, шкурка подойдет, морилка, лак и хоть какой то уголок, где можно намусорить локально, не получив люлей от жены. Рассматривал вариант поездки к коллеге, у которого частный дом и все необходимое есть, но отрывать человека от дел, согласовывать время Не оправдано. До своего дома пилить почти 1000км, с пересечением границы. Досочка в минус, ищем другое решение.

Просто соединить подходящие корпуса, найденные в хозяйственном магазине. Но поход по ближайшим не дал ничего стоящего. И как соединить все красиво? МГТФ чудесный провод, но соединять только им не эстетично. Термоусадка? Убожество! Еще есть очень красивый аудиокабель, проложенный от усилителя к колонкам и его с запасом. Обычный, не аудиофильский. Но мне надо несколько проводов, а выдергивать из него жилы и пропихивать МГТФ сомнительно. Стоп, где-то уже видел такое. Рыбка из капельницы:

Сейчас понимаю, что иметь этих рыбок в доме большое горе, но в детстве мы хвастались такими поделками, не понимая, почему они есть не у всех К счастью, теперь купить капельницу можно в ближайшей аптеке, что и было сделано. Попробовал окрасить йодом получилось. Дело за корпусами индикаторов и электроники
Первоначально 3D печать не входила в планы, но отсутствие подходящих корпусов + приблизительно сложившийся вид готового изделия заставили поменять намерения. Создал простой проект:

И запустил пробную печать одного фонарика. До этого все шло хорошо От идей до первой печати прошел день, но малая стала выяснять, а что делает папа? Пришлось рассказать. И получить первую правку к ТЗ:
Пап, а лампочек надо не 3, а 5, как в школе!
Ок, все равно все корпуса под индикаторы идентичные, напечатаю 5. Но, похоже, на этом этапе дочурка договорилась с нечистой силой и все пошло наперекосяк. Тем более разговор состоялся в Хэллоуин. Шутка. Я старый атеист и в чудеса не верю, но все же
Контроллер. Уже 5 GPIO задействованы под светодиоды, остается 1, который работает только как вход (или reset). Конечно, можно сделать что то подобное, высвободив еще 1 GPIO, даже подключив 6 светодиодов, но это увеличит количество проводов между индикаторами, что неудобно (подтягивающие резисторы на вход не рисовал):

Комбинируя на P0 единицу или ноль, а на P1, P2 1/0/Z, можно зажечь требуемый светодиод. Но, как сказал выше, неохота протягивать лишние провода в итак маленькие отверстия трубки от капельницы. Надо искать другое решение, которое просто смотрело на меня. ИК пульт от ресивера, которым не пользовался (пультом). Порывшись в хламе, наткнулся на давно купленные ИК приемники TSOP2138, с использованием которых хотел сделать временное управление освещением в доме (не успел, переехал) и по счастливой случайности перевезенные на съемную квартиру. Честно, никогда не работал с ИК пультами. Так получилось. И с Ethernet работал, и с SpaceWire, SRIO всякими, не говоря про каноничные UARTы, SPI, I2C, даже ISA застал, а ИК пригодился впервые. Немного погуглив, выяснил, что есть 2 основных протокола, известные как Philips и NEC. Первый использует манчестерский код, второй ШИМ. ШИМ проще декодировать, особенно когда у тебя всего 512 слов ПЗУ и 25 байт ОЗУ на все, но пульт работал по протоколу Philips. К счастью, нашел еще один, абсолютно ненужный пульт от игрушечного китайского проектора, который использовал NEC стандарт. Определял протоколы просто подключив к ИК приемнику питание, подтяжку и осциллограф. Так как PIC12 не имеет внутрисхемной отладки, отлаживал на PIC16F819, учитывая ограничения двенашки. Как ни странно, ушло на написание с отладкой меньше часа времени, завелось почти без косяков, кроме одного. Фронт импульса от датчика чуть затянут, пришлось подкрутить тайминги. Вроде все нормально, но тут я решил посчитать (вообще, это надо делать еще на этапе идеи).

Вылез первый черт из табакерки.

Планировал питать устройство от 2х щелочных батареек AA. Потребление вроде небольшое. Чуть меньше 8мА. Но и емкость щелочной батарейки в районе 2000 mA/h. Конечно, я хотел потихоньку уменьшать яркость индикаторов при простое, но как не крутил, время работы ограничено 2-3 неделями, что очень мало. Аккумуляторы не вариант. NiCa имеют напряжение 1.2В, то есть надо уже 3, Литиевые дикий оверхед, к которым еще надо контроллеры заряда / разряда делать. Решил питать от сети, хорошо что есть много компактных AC/DC 5V, 800mA преобразователей. Остается один вопрос, как сохранять текущий показатель поведения при отключении питания? К сожалению, встроенного EEPROM данный контроллер не имеет, FLASH сам перешивать не может. Ставить резервную литиевую 3.3V батарейку или ионистор? Вариант хороший, но контроллер должен определять пропадание основного питания, отключить светодиоды и уйти в глубокий сон. А у него уже не осталось свободных выводов.*
*Хорошая мысля приходит опосля.
Пока писал текст, придумал как решить проблему. Если подать питание на ИК приемник и его резистор подтяжки от сетевого источника, поставив обратный диод, то 0 на входе GPIO в течение длительного времени, нескольких сотен миллисекунд, будет сигнализировать про пропадание питания. Так же, ИК приемник не будет потреблять ток от резервной батарейки.

Хотел применить сдвиговый регистр. По ногам хватает, уже можно подключить 8 светодиодов, тем самым добавив анимацию для самой верхней звездочки, но лишние детали сводят на нет основное преимущество мелкого (SO8) контроллера компактность и простоту платы. Решил оставить отладочный PIC16F819, самый маленький, который был в наличии. У него есть встроенная EEPROM, проблема с сохранением состояния после пропадания питания решена.

Чертик второй, от куда не ждали.

Один корпус, состоящий из чаши, крепежа светодиодов и крышки был напечатан. Детали неплохо подошли (это я так думал) друг к другу, можно печатать серию. Учитывая, что все детали печатались разным пластиком, прозрачный SBS для крышки, белый PET-G для держателя и черный PET-G для чаши, решил печатать тем, что было вставлено вчера. Черным PET-G. Единственное, перед очередной печатью серии решил почистить и отрегулировать стол. Дело обычное. Промыл, отрегулировал зазоры, нанес лак для лучшего прилипания и поставил деталь на печать. Не тут то было. Плохая адгезия к столу. Перепроверил калибровку оного все Ок. Печать, если и начиналась, то через несколько слоев деталь отлипала, а кайма разворачивалась в спираль. Такое уже было при недостаточной экструзии. Как с ней воевал даже написал статью. Хорошо, проверил и почистил ролики экструдера, вроде все красиво. Проблема не исчезла. Стал грешить на фильеру (в простонародье сопло). Заменил. Нииихрееенааа. Горло? Вполне. Игрался с пластиками, давно не печатал, забыл поставить очиститель филамента, могла попасть и пригореть пыль. Разбираю, чищу. Пробки нет, все чисто. Собираю обратно. Это писать быстро, а в жизни все делалось в промежутках пока компилируется, короче прошла неделя. А результата 0. Последняя надежда проверка калибровки экструдера. И это сработало. Сбилась уставка шага подачи. Как? Не знаю. Покораптились данные в EEPROM. Как тут в черную магию не поверить??? Ладно, дальше все 3D печатные работы пошли как по маслу.

Китайский чертило, или как он в той мифологии называется?

Пока принтер потихоньку шуршит своими шаговиками, решил потратить время компиляции на сборку светодиодов. Распаковал мешок красных ледиков, стал потихоньку монтировать. Начал с красной пластины. Дело не быстрое, если делать в фоне. Проверить светодиод, если брак установить, все, пластину можно выкинуть. Аккуратно приклеить его суперклеем, после установки всех светодиодов аккуратно припаять токоограничивающие резисторы и вывести точки питания. К концу рабочего дня (много кодил, редко компилил), красная пластина была готова. Решил проверить, как это будет выглядеть в корпусе и измерить ток, на сколько он соответствует расчетному. Так виртуозно матом давно не ругался. Нет, все светодиоды ярко светились, ток почему то был меньше расчетного. Но чистым красным они горели от силы 0.5с, далее переливаясь в зеленый, голубой и промежуточные цвета. Китайский продавец дважды накосячил. Вместо мешочка сверхъярких оранжевых светодиодов положил голубые, на это я успел высказать свое фе, вместо обычных красных переливающиеся со встроенным контроллером, даже не знаю, где их применить, кроме новогодней гирлянды. Но нет худа без бобра. Если с них снимать питание на 100мкс, то контроллер светика успевает сбросится и постоянно горит красный. А ШИМить (312.5Гц период) фонарики все равно собирался. Теперь у меня уже 2 мешка ненужных светодиодов.

На этом основные неприятности закончились. Из мелких: детали не все хорошо подошли. Из небольших углублений держателя светодиодов не удалось полностью извлечь поддержки, что усложнило монтаж. Пришлось высверливать отверстия держателя, а в шипы чаши вплавлять направляющие из медной проволоки, после чего клеить. Корпус для платы не получилось сделать из PLA бронзового цвета. Его остаток протух. Пластик стал ломким и не хотел слипаться. Слетел драйвер цветного принтера, когда собрался распечатать картинки. В заключение сдохла TF карта с G-code файлами моделей для 3D. Но самоделку доделал!

Фото этапов сборки
Собственно, сам корпус индикатора:


Светодиоды приклеивались к плате и к ним припаивались резисторы и проводники:


Отладка прошивки:

Обратите внимание, сетевой источник установлен, но имеется разрыв по + питания. Сделано это по соображениям безопасности, отладка выполнялась при питании от лабораторного источника, подключение сетевого питания осуществлялась перед сборкой в корпус. Желаю не сгорать на pet проектах!

Плата крайне простая, совсем капля МГТФа:


Все готово к сборке:

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

Фикс бага конструкции при помощи проволоки:


Готовый результат в начале статьи.

P.S.

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

Пайка, C, светодиоды часовой стрим Геннадия Крэйла Круглова

12.03.2021 10:04:49 | Автор: admin

Управлять светодиодом это счастье. Ещё большее счастье смотреть на него в микроскоп. Даже просто зажечь светодиод уже приносит радость. Но готов поспорить эта задача окажется сложнее, чем вы думали.

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

О чём я рассказываю в видео

Как выглядит вольт-амперная характеристика светодиода и почему она так важна? Как включить несколько светодиодов, чтобы они горели вечно ну или хотя бы очень долго, в рамках заявленного в документации? Как выглядит светодиод, который много работал под перегрузкой, и чем это плохо?

А как управлять яркостью? Менять напряжение/ток обычно неудобно, поэтому все используют ШИМ. Воспользуемся ей и мы с помощью STM32 и C++. Но и тут не всё просто. Линейное изменение мощности нелинейно воспринимается глазом нужна коррекция.

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

Полная запись пайки

Подробнее..

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

16.04.2021 02:15:22 | Автор: admin

Заказывая много оценочных плат из Китая, я и подумать не мог что всюду будет брак, недоработки и подделка. Всё это ужасно путало в изучении и порой было тяжело понять то ли мой код кривой, то ли контроллер. Примерно в это же время я нашёл микроконтроллеры и другую рассыпуху дешевле чем в Китае при это локально в России. Я сразу загорелся тем, что бы сделать себе платы и забыть о китайских корявых blue pill.

Брак или странная задумка инженеров

Земля на ножках для прошивки висела в воздухе, после доработки всё окей.

Я как раз переезжал, и из-за этого у меня появилось много свободного времени, чем я и воспользовался, когда рисовал платы в EDA. Начать было решено с STM8S003F3U6 потому как очень уж полюбилась мне эта серия микроконтроллеров.

Первые наброски выглядели примерно так:
v1v1

Тут я ещё не знал, что для нормальной прошивки мк нужен pull-up резистор на ногу сброса.

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

Когда приехали платы качество меня порадовало, но был и косяк с моей стороны текст настолько мелкий что кое где не читается.

Детальное фото печатной платы

В итоге у меня было куча плат, с пяток контроллеров и разных вторичных компонентов, выпаянных из разных плат. Всё это вылилось в 3 рабочих прототипа.

В итоге у меня было куча плат, с пяток контроллеров и разных вторичных компонентов, выпаянных из разных плат. Всё это вылилось в 3 рабочих прототипа:

Фото ужасное, но переснять не могу уже раздал их)Фото ужасное, но переснять не могу уже раздал их)

Немного о платах

Остановился на 6 светодиодах. Всего 3 группы: питание, 4 GPIO, 1 GPIO(ШИМ) на обратной стороне. У каждой группы есть маленькая напаиваемая перемычка.

USB только питание, по входу стоит диод, защита usb выхода от обратного напряжения которое может пойти если запитать схему >5в напряжением. Стабилизатор выдерживает пиковые 16в, штатное до 14в.

Контроллер может без проблем работать и от 5в, но расчёт резисторов для светодиодов выполнял для 3.3, да и базово считаю что лучше работать с 3.3, ибо потом по привычке можно что-нибудь спалить.

Продолжаем вакханалию

Это была только половина пути, я ведь хотел много плат и очень не хотел делать их вручную.

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

И так, надо было решать как спаять всё быстро и с минимумом косяков. Трафарета у меня не было и я решил попробовать просто намазать тонким слоем паяльную пасту (благо она была).

Сказано сделано, вот что из этого вышло:

Мелкие капельки припоя что никуда не стекли прилипли прилично, далеко не с первого раза я их смог убрать, так же видно что 2 контроллера немного поплыли и встали криво. Выглядит жуть, но в целом получилось неплохо. Я делал несколько прогонов, первый мк и обвязка, остальное вторым. И по выходу получилось около 70% годных и готовых сразу без танцев плат.

Финальный результат, usb портов к этому времени не подвезли, так что без них.

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

Планы у меня наполеоновские, уже нарисовал и под stm32f0 и под f1 платы, ещё есть идея создать плату на stm32f4(7) с интегрированных ethernet.

Для тех кто дочитал, спойлер след платы!

В следующей статье затрону контроллер и среды, в которых пишу. Ни пуха ни пера и не болейте!

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru