Моя USB визитка

в 18:07, , рубрики: DIY, diy или сделай сам, flash, stm32, usb, usb flash drive, визитка, пайка, печатная плата, программирование микроконтроллеров, Производство и разработка электроники, схемотехника

Всем привет!

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

Моя USB визитка - 1

Цель проекта

Сделать максимально дешёвую версию 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 визитка - 2

Моя USB визитка - 3

Все компоненты обвязаны согласно даташитам. Микросхема флэш памяти запускается с контроллера через МДП транзистор.

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

Моя USB визитка - 4

Пайка

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

Программирование

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

Моя USB визитка - 5

Моя USB визитка - 6

Заключение

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

Всех благ!

Автор: big_dig_dev

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js