▍Как все начиналось
Начну немного издалека, чтобы было понятно с чего все изначально началось.
Электронику я люблю с детства, родители военные и они же инженеры привили любовь не только к морзянке, но и к электронике. За что им отдельное спасибо.
После окончания ВУЗа, работаю по сей день ведущим инженером на одной из атомных станций. Работа веселая и ответственная, но дома надо чем-то занять вечера, не пиво же пить и лежать у телевизора. Для поддержания на должном уровне своей квалификации освоил Ардуино, Attiny, STM, ESP32. Вспомнил давно забытую Java и C++. Освоил заново Easyeda, Altium, Eagle. Свободно работаю во многих программах CAD моделирования. Теоретически я подготовлен хорошо, но нужна была практика в электронике и желательно по очень высоким стандартам.
▍Практика в разработке электроники
А где её ПРАКТИКУ искать если не во фрилансе?
Перечитав множество статей на сайтах посвященных фрилансу, сайтах по поиску работы, проведя анализ полезности выхлопа и совпадения целей и моих возможностей, мой выбор пал на сайт фрилансеров — Upwork.com.
Как с этим сайтом работать рассказывать не буду, есть много статей которые это уже сделали самым, что ни наесть качественным и показательным способом, например — вот.
Мои цели полностью совпадали с возможностями: изобилие идей для разработки, свобода мысли и полет фантазии, участие в проектах в других городах и странах где сам никогда не бывал и даже не видел заказчика и за выполненную работу еще и деньги платят. Чудеса, да и только.
Свой первый заказ на разработку электроники я получил из США, нужно было разработать максимально возможную миниатюрную плату клавиатуры 3*4. Работа была приятная и полезная, т.к. заказчик очень доброжелателен и готов объяснить, что ему нужно хоть сто раз подряд, даже если вы говорите заикаясь и только с Гугл переводчиком.
При заказе печатных плат со сборкой на Jlcpcb.com у заказчика возникли проблемы, т.к. элементы оказались очень маленькими. Заказчик быстро сориентировался и нашел того изготовителя которых смог сделать печатную плату со сборкой. Имея положительный опыт первой выполненной работы, последовали и другие работы. Очень быстро мы с моим первым Заказчиком нашли общий язык и понимали уже друг друга с полуслова.
— Вот какие клавиатуры получились в конечном варианте:
Хорошо выполненные работы очень положительно сказались на следующем проекте. Заказчик порекомендовал меня своему партнеру в качестве исполнителя следующей работы.
Работа по срокам длительная, более 6 месяцев.
Задача: с нуля создать специфическое устройство под требования заказчика. Устройство батарейного типа (литиевый аккумулятор), с зарядкой и стабилизатором на борту. Микроконтроллер желательно с WiFi, Bluetooth и BLE. Управление светодиодами и вибромотором. Плюс к этому устройство должно уметь считывать RFID метки по стандарту ISO 15693 на частоте соответственно 13,56 МГц.
И все это нужно расположить на плате размерами не более 70 на 30 мм. По высоте ограничение 10 мм вместе с аккумулятором. По токовым нагрузкам, устройство должно работать минимум 10 часов без подзарядки, т.е. все лишнее должно быть выключено. И, пожалуй, самое главное и сложное условие Заказчика — устройство должно пройти процедуру сертификации FCC — Федеральная комиссия по связи США, т.к. устройство предполагается распространять в США, у них с этим очень строго.
Процедура не дешевая, поэтому все компоненты нужно максимально совместить не только в различных диапазонах, но и при необходимости провести экранирование слишком “шумящих” элементов.
“Скурив” множество манов на множество чипов со встроенным и отдельными элементами для данного устройства, по контроллеру выбор пал на ESP32-WROOM — умеет работать с блютузом в режиме экономии (BLE), 2 ядра, портирован на FREERTOS, SPI, I2C и много чего еще в наличии и на борту плюс ко всему сертифицирован FCC. RFID читалка — PN5180 от NXP, неприхотливая, рабочая лошадка, при наличии векторного анализатора вполне успешно настраивается под любую антенну, достаточно полное описание внутренностей, портирован на С, много примеров на сайте NXP (правда под LPC контроллеры) и самое главное — пришлось Заказчику покупать их в США, т.к. с последней прошивкой PN5180 в Россию не поставляются, от слова “совсем”.
Программирование велось под MS Visual Studio с плагинами VMicro под ESP32, операционка FREERTOS (т.к. работает в многозадачной режиме). Чтение RFID, управление светодиодами и вибромотором — предполагало передачу данных по блютузу на Android и Iphone — нужна была среда для разработки приложения — выбор пал на x.thunkable.com — что полностью себя оправдало.
Первая стадия проекта включала в себя проработку схемных решений, опробование различных вариантов подключения, распределения ресурсов, обоснованного отказа от использования того или иного чипа или решения. Еще до заключения контракта мы больше недели по вечерам — общались и обсуждали, это было незабываемо. Заказчик по нашему контракту заказал всю элементную базу для фазы проработки, тестирования и отладки. Пока все путешествовало через полмира из США в Россию, я сидел за манами:
- esp32-wroom ESP32 WROOM DevKit v1: распиновка, схема подключения и программирование
- ESP32WROOM32E & ESP32WROOM32UE
- GAP API — ESP32 — — ESP-IDF Programming Guide latest documentation
и рисовал начальный вариант схемы в Easyeda.com
Схема контроллера должна автоматически перезапускаться после окончания прошивки, что тоже было учтено в последней версии схемы и печатной плате.
Для прошивки и отладки был использован мост USB-to-UART CP2104 — маленький, шустрый, полностью покрывающий потребности.
Корпус QFN EP-24 Паяется отлично, главное все правильно сделать.
При разводке печатной платы было необходимо учесть рекомендации разработчиков модулей, все данные есть в даташитах, что и как располагать, как учитывать взаимное расположение деталей при разных видах монтажа, сколько слоев должно быть в минимальном варианте печатной платы. Маны великая вещь, не ленитесь их читать — очень помогает.
▍А не развести ли нам печатную плату?
Разводка печатной платы под устройство отдельная история. От автоматической разводки отказался даже после применения правил. При разводке каждый производитель электроники — печатных плат, закладывает определенные допуски на расстояния между дорожками, между отверстиями и много еще разных иногда малопонятных параметров.
Но … лучше человеческого
Тот, кто пользуется Sprint layout меня поймет. Когда сделал лучше, чем автомат.
Easyeda.com — постоянно обновляет свой функционал, что хорошо, но есть недостатки (проксирование входа под оперу так и не исправили или это только у меня так), поэтому приходится работать в нем и делать бэкапы, что бы ничего не потерять. Оффлайн версия редактора — не может жить без инета, компоненты все подтягиваются только через инет и не хранятся на компе локально.
Вот так Easyeda показывает 3D модель печатной платы.
Заказ печатных плат для устройства — 4 слойные с повышенной точностью совместимости по слоям за счет применения материала стеклотекстолита FR-4 TG-155.
▍Компонентная база — наше всё
Отдельно скажу о компонентах, в манах приводятся компоненты которые рекомендует производитель, лучше придерживаться рекомендаций или брать лучше. Мне повезло, я долгое время работаю по компонентам с Electronshik.ru.
База огромная, цены адекватные если не ниже. 95 процентов всех элементов, доступно немедленно, т.е. после оплаты заказа, отправка сегодня-завтра. Доставка DHL до двери 280 рублей (До моей двери именно так). Меня это очень поразило в первые разы. Приятно работать с такой компанией, это вам не чипдип.
Так же некоторые элементы заказывались у партнера Easyeda — Lcsc.com при заказе плат, можно прикрепить к заказу и элементы, купленные у партнера. Экономия на доставке.
▍Пайка, всякая и разная
На эту тему написано и снято видео столько что можно библиотеку создать. Корпуса элементов маленькие от 0402 до 0805. Плата тестовая была зафлюсована, залужена, потом сама пайка. Нюансы пайки на ютьюбе. И да, я паяю под микроскопом.
▍Первое включение или порядок сборки
Порядок пайки у меня такой:
- USB разъем
- микропереключатель
- CP2104 с обвязкой
- Подача питания от блока питания
- определение компьютером нового USB устройства
- Пайка чипа зарядки литиевой батареи и стабилизатора с обвязкой
- Проверка в связке CP2104, зарядки и стабилизатора
На очереди ESP32. Нюанс с пайкой корпуса на 39 ножке, ребят не ленитесь его паять, так написано в мане, не зря же вы его разводили на плате. Аккуратненько запаиваем как по учебнику все ножки ESP32 и его обвязку. Проверяем работу зарядки, стабилизатора и ESP32.
Первая прошивка контроллера тестовой прошивкой — проверка WiFi и блютуз. … но не происходит сброса перед прошивкой. Забыл на плате, схему сброса развести (в последней версии исправлено этот недочет и еще парочку не критичных), припаялся прямо к ESP32, прошил успешно.
Остается самое сложное по железу, пайка PN5180 и его обвязки под радиочастотную часть. Частота небольшая — 13.56МГц, но требования к аккуратности пайки еще никто не отменял. Все должно быть красиво и радовать глаз.
До пайки PN5180 сделал дополнительные расчеты в RFSim99, а также в фирменной программе NXP NFC Antenna Tool, чтобы точнее попасть по параметрам согласования антенны и радиочастотной части PN5180.
Программы помогли, но настраивать под реальные условия все равно пришлось с помощью векторного анализатора OSA-103 (Заказчик закупил на этап настройки). КСВ антенны получил 1.17. Оса-103 отечественная разработка, отличного качества, целая лаборатория в одном приборе. Дополнительные конденсаторы и резисторы Электронщик доставил очень быстро, так что никаких задержек с дальнейшей пайкой не было.
Все запаяно, несколько раз проверено, включение микропереключателя, определение как USB устройства, компиляция теста для проверки PN5180 попытка заливки прошивки. Заливка прошивки. Чтение данных с RFID NFC карточки. Ура… с железом закончили, все работает, как и планировалось.
▍Программная часть, последняя
Написание программной части — это как порыв страсти, как дзен. Садишься за клавиатуру и по заранее написанному алгоритму, пишешь код. Строчка за строчкой, программа обрастает задачами, функциями, процедурами, тестовыми модулями.
Весь код писался под FREERTOS из-за его гибкости. Каждой задаче — таске — свое время будет выделено. Планировщик все сделает для этого. Под чистый Ардуино-код это сделать сложно, т.к. есть основная задача которая крутится в цикле loop не сможет управлять периферией, слушать окружение антенны NFC и обмениваться данными по блютузу. Вернее так, можно, но не так красиво и изящно, как под FREERTOS.
Устройство закончено, остались нюансы по прошивке для уточнения под требования Заказчика.
В заключении, своего повествования хочу сказать, что разработка электроники даже на фрилансе — это реальность. Это возможно и это нужно. Ведь в мире столько нового и интересного. И заметьте мне всего 47 лет :) Жизнь — движение.
P.S. Если у кого-то возникли вопросы пишите в комментариях.
Автор: Alexey Nickolaevich Zolotarev