Ttl usb что это

Конвертер USB-TTL на микросхеме CH340. Схема, характеристики. Установка драйвера.

USB-TTL конвертер построенный на микросхеме CH340G

Это – преобразователе интерфейса USB в UART. Эта микросхема приобретает все большую популярность, успешно конкурируя с конвертером интерфейсов PL2303.

CH340 уже стала стандартным преобразователем интерфейсов для китайских клонов контроллеров Ардуино. На базе этой микросхемы был разработан модуль, аналог модуля PL2303 USB UART BOARD. Вернее несколько типов модулей. В этом материале будет рассказано о самом популярном варианте конвертера CH340.

Ttl usb что это. 2. Ttl usb что это фото. Ttl usb что это-2. картинка Ttl usb что это. картинка 2

С помощью модуля CH340 легко подключить любое устройство, имеющее интерфейс UART к компьютерному порту USB. При несложной доработке (требуются только преобразователи уровней сигналов) к компьютеру могут быть подключены устройства с интерфейсами: COM, RS232, RS422, RS485, IrDA. Схемы подключения к некоторым из этих интерфейсов приведены в предыдущей публикации о микросхеме CH340G.

Самое приятное, что такой способ преобразования интерфейсов не требует изменения кода программ верхнего уровня. Даже программы, разработанные для компьютерного COM порта в те времена, когда интерфейс USB еще не существовал, работают с мостами интерфейса USB.

Конвертер эмулирует работу стандартного COM порта. На компьютер устанавливается драйвер микросхемы CH340. При каждом подключении модуля к USB порту компьютера в системе появляется виртуальный COM порт. Программа для стандартного COM порта может работать с этим портом, не подозревая, что он виртуальный. Таким образом, в системе появляется еще один COM порт, физически расположенный вне компьютера.

Ttl usb что это. knopka skachat 5 1. Ttl usb что это фото. Ttl usb что это-knopka skachat 5 1. картинка Ttl usb что это. картинка knopka skachat 5 1

Сигналы интерфейса UART модуля.

На разъеме модуля 6 контактов, через которые подключается UART устройство.

Ttl usb что это. 3. Ttl usb что это фото. Ttl usb что это-3. картинка Ttl usb что это. картинка 3Ttl usb что это. 4. Ttl usb что это фото. Ttl usb что это-4. картинка Ttl usb что это. картинка 4

Для подключения UART устройства к модулю необходимо:

Выбрать режим питания;

Ttl usb что это. 5. Ttl usb что это фото. Ttl usb что это-5. картинка Ttl usb что это. картинка 5

Рядом с разъемом модуля размещены светодиоды отображающие:

Принципиальная схема модуля CH340.

Самая распространенная схема выглядит так.Ttl usb что это. 6. Ttl usb что это фото. Ttl usb что это-6. картинка Ttl usb что это. картинка 6

Микросхема CH340G включена по стандартной схеме. Питание 3,3 В формируется из сигнала 5 В интерфейса USB за счет падения напряжения на открытых диодах LL4148. Больше пояснять нечего.

Установка драйвера преобразователя интерфейсов CH340.

Под Windows 7 драйвер устанавливается в следующей последовательности.

Открываем закладку Порты (COM и LPT).

Ttl usb что это. 11. Ttl usb что это фото. Ttl usb что это-11. картинка Ttl usb что это. картинка 11

Подключаем модуль CH340 к порту USB компьютера. В диспетчере устройств появляется новое устройство USB.2-Serial с предупреждающим желтым знаком. Операционная система не смогла установить драйвер для модуля.

Ttl usb что это. 8. Ttl usb что это фото. Ttl usb что это-8. картинка Ttl usb что это. картинка 8

Скачиваем и запускем файл установщика драйвера ch341ser.exe. Файлы автоматически разархивируются. Появляется окно.

Ttl usb что это. 9. Ttl usb что это фото. Ttl usb что это-9. картинка Ttl usb что это. картинка 9

Нажимаем кнопку INSTALL.

После непродолжительной установки появляется сообщение об ее успешном завершении.

Ttl usb что это. 10. Ttl usb что это фото. Ttl usb что это-10. картинка Ttl usb что это. картинка 10

В диспетчере устройств появляется новое устройство USB-SERIAL CH340. Это и есть новый COM порт, в примере это порт с номером 5.

Ttl usb что это. 11. Ttl usb что это фото. Ttl usb что это-11. картинка Ttl usb что это. картинка 11

При желании номер порта можно изменить.

Для этого нужно нажать на нужный COM порт в «Диспетчере оборудования» правой кнопкой мыши, выбрать пункт Свойства.

Ttl usb что это. 12. Ttl usb что это фото. Ttl usb что это-12. картинка Ttl usb что это. картинка 12

Дальше переходим на вкладку Параметры порта.

Ttl usb что это. 13. Ttl usb что это фото. Ttl usb что это-13. картинка Ttl usb что это. картинка 13

Нажимаем кнопку Дополнительно

Ttl usb что это. 14. Ttl usb что это фото. Ttl usb что это-14. картинка Ttl usb что это. картинка 14

Теперь остается выбрать сыободный номер порта.

Теперь при каждом подключении модуля CH340 к компьютеру в системе будет появляться виртуальный COM порт.

Внимание. Надо только помнить, что при подключении модуля к другому USB порту может измениться номер и виртуального COM порта.

Рекомендуемые товары

Ttl usb что это. usbttl2. Ttl usb что это фото. Ttl usb что это-usbttl2. картинка Ttl usb что это. картинка usbttl2

Многофункциональный переходник USB-TTL на основе микросхемы CH340G. Имеет выходы 3.3В и 5В для питан..

Источник

Обзоры USB TTL конвертеров

USB TTL конвертер – небольшой адаптер-программатор, который используется для передачи на компьютер информации с разных типов датчиков – температуры, влажности, движения и прочих. Также может использоваться для обновления прошивки различных устройств, платы которых работают на микроконтроллерах ARM, так что является своеобразной «универсальной шиной» для передачи данных.

Чтобы пользоваться адаптером USB TTL, его подключают к соответствующему порту компьютера, в результате чего устройство определяется как USB to Serial COM Port. Далее автоматически начинается поиск и установка драйверов для конвертера, но рекомендуется предварительно самостоятельно скачать подходящие, так как в автоматическом режиме процесс не всегда имеет положительный результат.

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

На плате USB TTL конвертера есть 4 вывода:
• TXD для передаваемых данных;
• RXD – принимаемые данные;
• GND – общий контакт;
• 5V для выходного напряжения 5 В.

При необходимости передачи других сигналов на плате конвертера предусмотрены отдельные контактные площадки.

Ttl usb что это. 2pc lot USB UART CP2102 E15 USB T2 CDSENET UART USB to TTL 3 3V 5V. Ttl usb что это фото. Ttl usb что это-2pc lot USB UART CP2102 E15 USB T2 CDSENET UART USB to TTL 3 3V 5V. картинка Ttl usb что это. картинка 2pc lot USB UART CP2102 E15 USB T2 CDSENET UART USB to TTL 3 3V 5V

Ttl usb что это. USB 2 0 to TTL RS485 Serial Converter Adapter FTDI FT232RL SN75176 double function double protection. Ttl usb что это фото. Ttl usb что это-USB 2 0 to TTL RS485 Serial Converter Adapter FTDI FT232RL SN75176 double function double protection. картинка Ttl usb что это. картинка USB 2 0 to TTL RS485 Serial Converter Adapter FTDI FT232RL SN75176 double function double protection

Ttl usb что это. . Ttl usb что это фото. Ttl usb что это-. картинка Ttl usb что это. картинка

Ttl usb что это. be82d4. Ttl usb что это фото. Ttl usb что это-be82d4. картинка Ttl usb что это. картинка be82d4

Ttl usb что это. 98721e. Ttl usb что это фото. Ttl usb что это-98721e. картинка Ttl usb что это. картинка 98721e

Ttl usb что это. 1400213365 4498. Ttl usb что это фото. Ttl usb что это-1400213365 4498. картинка Ttl usb что это. картинка 1400213365 4498

Ttl usb что это. sku 224704 1. Ttl usb что это фото. Ttl usb что это-sku 224704 1. картинка Ttl usb что это. картинка sku 224704 1

Обзор конвертера USB — UART TTL на CP2102

Зачем он нужен

Программировать различные ардуино- и не адуино- образные контроллеры, получать информацию на компьютер со всего, что имеет последовательный интерфейс с TTL логикой.
Я в своих проектах использую его с Arduino Pro MIni, Gboard/Iboard и самодельными контроллерами.

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

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

Дополнительными выводами (дырками под контакты) на плате, например, позволяющими уводить USB в энергосберегающий режим.

Интересной возможностью менять VID, PID и текст, с которым опознается плата, собирать свой драйвер со требуемыми параметрами, что довольно интересно в коммерческих проектах. Об этом я расскажу дальше.

Тех, кого заинтересовал, пожалуйста под кат

Источник

Программаторы, ISP, фьюзы

Ttl usb что это. isp. Ttl usb что это фото. Ttl usb что это-isp. картинка Ttl usb что это. картинка isp

Загрузка прошивки

В этом уроке мы рассмотрим загрузку прошивки в ардуино через внешние “программаторы”. Давайте вспомним, о чем уже говорили в одном из первых уроков: загрузка прошивки в Arduino возможна двумя способами:

Загрузчик (bootloader)

Загрузчик живёт в самом конце Flash памяти МК и позволяет записывать прошивку, отправляемую через UART. Загрузчик стартует при подаче питания на МК, ждёт некоторое время (вдруг кто-то начнёт слать код прошивки по UART), затем передаёт управление основной программе. И так происходит каждый каждый раз при старте МК.

Программатор

Помимо записи прошивки во flash память, программатор позволяет:

Программатор – ваш единственный друг при работе с “голым” микроконтроллером, то есть для его низкоуровневой настройки и загрузки прошивки.

USB-TTL (UART)

Этот способ реализован прямо на платах Arduino при помощи USB-TTL (USB-UART) преобразователя, именно поэтому мы можем подключить плату к компьютеру и загрузить код. USB-TTL позволяет только загрузку данных во flash, остальные возможности (как у ISP программатора) ему недоступны. В то же время он ограничен только возможностями загрузчика, но в этом уроке мы рассматриваем только стандартные. Также USB-TTL мост позволяет микроконтроллеру общаться с компьютером по последовательному соединению (тот самый Serial и монитор com порта). Есть платы без бортового USB-TTL, например Arduino Pro Mini. Для работы с ними нужно купить внешний USB-TTL преобразователь. Также загрузка прошивки через UART возможна и в “голый” микроконтроллер при условии наличия там загрузчика, который запишет принятый код во flash. Про запись загрузчика мы поговорим ниже. UART “загружатор” подключается к пинам RX и TX Ардуино (или микроконтроллера), RX->TX и TX->RX, также обязательно подключается земля GND. Если у прошиваемой платы нет своего питания, то подключается и питание. Загрузчик отрабатывает при запуске МК, поэтому непосредственно перед загрузкой прошивки МК должен быть сброшен (перезагружен), и для этого на платах USB-UART есть вывод DTR (Data Terminal Ready), который подключается к пину RST Reset и собственно выполняет сброс перед перед загрузкой прошивки. На платах Pro Mini есть отдельный пин DTR.

USB-TTLArduino
DTRDTR
RXTX
TXRX
GNDGND
VCC/5V/3.3VVCC

Ttl usb что это. blank. Ttl usb что это фото. Ttl usb что это-blank. картинка Ttl usb что это. картинка blank Китайцы выпускают USB-TTL модули в широком ассортименте, но в целом они все одинаковые по своей сути. Ссылка на результат поиска на aliexpress, и ссылка на все USB-TTL в моём любимом магазине WAVGAT. Что использую я? В основном платку на CP2102. Перед заказом модуля обязательно убедитесь в том, что у него есть выход DTR, иначе этот модуль можно будет использовать только для “общения” с контроллером через COM порт. Ttl usb что это. usbttl. Ttl usb что это фото. Ttl usb что это-usbttl. картинка Ttl usb что это. картинка usbttl Для работы с таким преобразователем нужно установить драйвер для чипа, на базе которого собран модуль, это может быть CP2102, CH340/341, FT232, PL2303 и другие. Прошивка загружается как обычно: выбираем порт, на котором сидит преобразователь, версию загрузчика и жмём загрузить, всё! Важный момент: на некоторых китайских версиях плат Arduino Pro Mini не распаян пин DTR, т.е. он не идёт на RST и автоматический сброс перед загрузкой прошивки не выполняется. В этом случае сброс нужно производить вручную, кнопкой RST, непосредственно перед загрузкой прошивки… Загрузка прошивки посредством загрузчика (bootloader) возможна с любого UART устройства, даже через Bluetooth. Но об этом мы поговорим в отдельном уроке.

Фьюзы (Pro)

Фьюзы (фьюз-биты) являются низкоуровневыми настройками микроконтроллера, которые хранятся в специальном месте в памяти и могут быть изменены только при помощи ISP программатора. Это такие настройки как выбор источника тактирования, размер области памяти под загрузчик, настройка отсечки по напряжению и прочее. Фьюз-биты собраны по 8 штук в байты (т.н. байты конфигурации), как типичный регистр микроконтроллера AVR. Таких байтов может быть несколько, они называются low fuses, high fuses, extended fuses. Для конфигурации байтов рекомендуется использовать калькулятор фьюзов (например, вот такой), в котором просто ставятся галочки на нужных битах, и на выходе получается готовый байт в hex виде. Рассмотрим на примере ATmega328p:

Ttl usb что это. fuses 1. Ttl usb что это фото. Ttl usb что это-fuses 1. картинка Ttl usb что это. картинка fuses 1

Важный момент: в AVR биты у нас инверсные, то есть 1 это выкл, 0 это вкл. Расставляя галочки в калькуляторе, мы формируем байт, галочка стоит – бит включен, но в результирующем байте включенные биты являются нулями. Об этом стоит задумываться при ручном составлении фьюз-байта, при использовании калькулятора можете об этом даже не вспоминать. Что позволяют настроить биты?

* – прошивка возможна при помощи высоковольтного программатора

Лок-биты (Pro)

Лок-биты (lock-bits) позволяют управлять доступом к памяти микроконтроллера, что обычно используется для защиты устройства от копирования. Лок-биты собраны опять же в конфигурационный лок-байт, который содержит: BOOTLOCK01, BOOTLOCK02, BOOTLOCK11, BOOTLOCK12, LOCKBIT1, LOCKBIT2 (для ATmega328). Калькулятор лок-битов можно использовать этот. BOOTLOCK биты позволяют запретить самому МК запись (самопрограммирование) во flash память (область программы и область загрузчика)

Ttl usb что это. blb. Ttl usb что это фото. Ttl usb что это-blb. картинка Ttl usb что это. картинка blb

А вот локбиты LOCKBIT позволяют запретить запись и чтение flash и EEPROM памяти извне, при помощи программатора, т.е. полностью защитить прошивку от скачивания и копирования:

Ttl usb что это. lockbits. Ttl usb что это фото. Ttl usb что это-lockbits. картинка Ttl usb что это. картинка lockbits

Таким образом включив LOCKBIT1 (лок-байт будет 0x3E) мы запретим внешнюю запись во Flash и EEPROM память, т.е. при помощи ISP программатора, а включив LOCKBIT1 и LOCKBIT2 (лок-байт: 0x3C) полностью заблокируем заодно и чтение данных из памяти микроконтроллера. Повторюсь, всё описанное выше относится к ATmega328p, для других моделей МК читайте в соответствующих даташитах.

ISP программатор

USBasp

Дешёвые ISP программаторы также есть в ассортименте у китайцев, рекомендую брать USBasp как самый распространенный. Поискать на алиэкспресс, мне нравится версия в корпусе. USBasp имеет не очень удобный выход 10-пин на шлейфе, поэтому рекомендуется купить также переходник 10-пин на 6-пин, который позволяет сразу подключаться к ISP header’у, который есть на большинстве плат Arduino. Внимание! Очень часто встречается брак в виде непропая контактов, поэтому во избежание проблем рекомендуется пропаять переходник и отмыть флюс (зубная щётка + бензин калоша).

Ttl usb что это. usbasp10. Ttl usb что это фото. Ttl usb что это-usbasp10. картинка Ttl usb что это. картинка usbasp10

Решение проблем

Решение большинства проблем с загрузкой через программатор (независимо от того, что написано в логе ошибки):

Для прошивки микроконтроллера, тактирующегося низкой частотой (менее 1 МГц внутренний клок):

Основные ошибки в логе Arduino IDE

avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor=’www.fischl.de’ product=’USBasp’ Причина – компьютер не видит USB ASP

avrdude: error: program enable: target doesn’t answer. Причина – usbasp не видит подключаемый микроконтроллер

Arduino as ISP

Почти любая другая плата Arduino может стать ISP программатором, для этого нужно просто загрузить в неё скетч ArduinoISP:

Ttl usb что это. arduasisp. Ttl usb что это фото. Ttl usb что это-arduasisp. картинка Ttl usb что это. картинка arduasisp

ISP программатор подключается к четырем пинам микроконтроллера, не считая питания: один из пинов передает сброс, остальные – для передачи данных. Чтобы плата-программатор не сбрасывалась при загрузке, на неё нужно:

Ttl usb что это. usbaspcap 1. Ttl usb что это фото. Ttl usb что это-usbaspcap 1. картинка Ttl usb что это. картинка usbaspcap 1

Решение проблем

Для прошивки микроконтроллера, тактирующегося низкой частотой (менее 1 МГц внутренний клок):

Работа в Arduino IDE

Прошивка загрузчика

Из Arduino IDE при помощи ISP программатора мы можем записать другой загрузчик (по факту загрузчик + фьюзы) и загрузить скетч, а также настроить/прошить фьюзы и лок-биты, но не очень удобным способом. Когда мы выбираем плату в Инструменты > Плата и загрузчик в Инструменты > Плата (загрузчик, bootloader), Arduino IDE автоматически делает “активным” нужный загрузчик. Нажимая Инструменты > Записать загрузчик мы прошиваем загрузчик, соответствующий выбранной плате и её настройкам. Также одновременно с загрузчиком прошиваются фьюзы и лок-биты, соответствующие выбранной плате в Arduino IDE. Как и где их поменять, смотрите чуть ниже. Рассмотрим на примере записи загрузчика для atmega328, стоящей на китайской плате Arduino NANO. На данный момент китайцы прошивают в МК старую версию загрузчика, которая называется old bootloader в меню платы. Оригинальные платы идут с более современным загрузчиком, поэтому при работе с китайскими платами нам приходится выбирать old bootloader для загрузки прошивки через бортовой usb порт. Подключим usbasp по схеме выше, выберем его как программатор в Инструменты > Программатор, выберем плату Arduino NANO, загрузчик для atmega328 (первый в списке). Нажмём записать загрузчик. Всё! Теперь плату можно шить через бортовой usb порт, выбирая первый загрузчик. Он кстати легче, быстрее “прошивает” и сама прошивка быстрее “запускается”.

Как убрать загрузчик?

В стандартном “ядре” Arduino не предусмотрен вариант “без загрузчика”. Для того, чтобы вручную убрать поддержку загрузчика, нужно уметь работать с boards.txt и фьюзами: нужно будет изменить фьюз BOOTRST и подправить максимальный размер скетча. Есть более простой вариант – найти и установить ядро, в котором реализован выбор загрузчика с вариантом “без загрузчика”, например для ATmega328 это miniCore и наше GyverCore. Нужно установить поддержку ядра по рассмотренной ранее инструкции, выбрать плату, указать вариант “без загрузчика” и нажать “Записать загрузчик”. В МК будут прошиты соответствующие фьюзы.

Загрузка скетча

Фьюзы

Файл конфигурации называется boards.txt и найти его можно в папке с ядром Arduino: C:\Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt. Документацию на boards.txt можно почитать здесь. При желании можно вывести нужные фьюзы через калькулятор (читайте выше), изменить их в boards.txt (главное не запутаться, для какой выбранной конфигурации платы делается изменение) и прошить в МК, нажав Инструменты > Записать загрузчик.

Ttl usb что это. boards. Ttl usb что это фото. Ttl usb что это-boards. картинка Ttl usb что это. картинка boards

Такая работа с фьюзами максимально неудобна, но есть и другие варианты:

Avrdudeprog

Ttl usb что это. avrdudeprog. Ttl usb что это фото. Ttl usb что это-avrdudeprog. картинка Ttl usb что это. картинка avrdudeprog

Видео



Источник

6-ти пиновый конвертер USB/UART для тех кто не любит давить ресет на Arduino

Обзор конвертера USB — UART TTL на CP2102

Зачем он нужен

Программировать различные ардуино- и не адуино- образные контроллеры, получать информацию на компьютер со всего, что имеет последовательный интерфейс с TTL логикой.
Я в своих проектах использую его с Arduino Pro MIni, Gboard/Iboard и самодельными контроллерами.

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

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

Дополнительными выводами (дырками под контакты) на плате, например, позволяющими уводить USB в энергосберегающий режим.

Интересной возможностью менять VID, PID и текст, с которым опознается плата, собирать свой драйвер со требуемыми параметрами, что довольно интересно в коммерческих проектах. Об этом я расскажу дальше.

Тех, кого заинтересовал, пожалуйста под кат

Товар ехал целых 54 дня. Ну к нашей почте я уже привык, чего не скажешь о курсе доллара к рублю (((

Обычный желтый пакет. Внутри платки в запаянных прозрачных пакетиках. Все как обычно.
Ttl usb что это. a55a91. Ttl usb что это фото. Ttl usb что это-a55a91. картинка Ttl usb что это. картинка a55a91

Ttl usb что это. 77c0c8. Ttl usb что это фото. Ttl usb что это-77c0c8. картинка Ttl usb что это. картинка 77c0c8

На плате есть дополнительные отверстия, куда можно впаять выводы дополнительного модемного контроля и перевода USB в режим SUSPENDED
Ttl usb что это. 935616. Ttl usb что это фото. Ttl usb что это-935616. картинка Ttl usb что это. картинка 935616

Характеристики

Плата FOCA 2.2 взята для коммерческого проекта с GBoard и IBoard

Перед использованием платы необходимо установить драйвера с официального сайта Si-Labs

Для соединения к контроллеру нужны 5 проводов:
GND — GMD
VCC — V5.0 (V3.3) в зависимости от используемой платы
TX — RX
RX — TX
RESET контроллера — DTE

Ttl usb что это. 4cbedb. Ttl usb что это фото. Ttl usb что это-4cbedb. картинка Ttl usb что это. картинка 4cbedb
Теперь контроллер можно программировать не нажимая кнопку RESET.

Плата опознается в системе как
Silicon Labs CP210X USB to UART Bridge (COM35)
Ttl usb что это. 60a7a4. Ttl usb что это фото. Ttl usb что это-60a7a4. картинка Ttl usb что это. картинка 60a7a4

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

Для начала скачиваем и запускаем Утилита для конфигурирования параметров EEPROM CP1202″> (мне для запуска утилиты потребовалось еще скачать Java Runtime)

И после нехитрого мастера-диалога получаем дистрибутив драйверов с требуемым набором VID и PID и желаемым названием в системе
Ttl usb что это. 87e395. Ttl usb что это фото. Ttl usb что это-87e395. картинка Ttl usb что это. картинка 87e395

Данная плата одна из самых дешевых конвертеров USB/UART не использующих поддельные чипы.
Имеет вывод DTR, позволяющий автоматически посылать RESET для загрузки ПО в контроллер
Позволяет настраивать VID, PID и драйвера под свои проекты
К покупке рекомендую

Полезные ссылки

О всех моих проектах можно прочитать в моем блоге

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *