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

Freertos

Фриланс-разработка электроники. Что, Как и Зачем?

27.05.2021 12:14:32 | Автор: admin

Как все начиналось


Начну немного издалека, чтобы было понятно с чего все изначально началось.
Электронику я люблю с детства, родители военные и они же инженеры привили любовь не только к морзянке, но и к электронике. За что им отдельное спасибо.
После окончания ВУЗа, работаю по сей день ведущим инженером на одной из атомных станций. Работа веселая и ответственная, но дома надо чем-то занять вечера, не пиво же пить и лежать у телевизора. Для поддержания на должном уровне своей квалификации освоил Ардуино, 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 что полностью себя оправдало.

Первая стадия проекта включала в себя проработку схемных решений, опробование различных вариантов подключения, распределения ресурсов, обоснованного отказа от использования того или иного чипа или решения. Еще до заключения контракта мы больше недели по вечерам общались и обсуждали, это было незабываемо. Заказчик по нашему контракту заказал всю элементную базу для фазы проработки, тестирования и отладки. Пока все путешествовало через полмира из США в Россию, я сидел за манами:


и рисовал начальный вариант схемы в 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. Плата тестовая была зафлюсована, залужена, потом сама пайка. Нюансы пайки на ютьюбе. И да, я паяю под микроскопом.



Первое включение или порядок сборки


Порядок пайки у меня такой:

  1. USB разъем
  2. микропереключатель
  3. CP2104 с обвязкой
  4. Подача питания от блока питания
  5. определение компьютером нового USB устройства
  6. Пайка чипа зарядки литиевой батареи и стабилизатора с обвязкой
  7. Проверка в связке 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. Если у кого-то возникли вопросы пишите в комментариях.


Подробнее..

ESP32-C3 первое знакомство. Заменим ESP8266?

12.02.2021 18:18:50 | Автор: admin

Новая игрушка

В ноябре 2020 года Espressif анонсировала новую SoC под названием ESP32-C3. Они разослали несколько инженерных прототипов для тестирования и первого ознакомления.

Так довелось, что мне попался один из них на руки и я успел немного поиграться с ним. Надеюсь, мой краткий опыт будет интересен сообществу, так как тут есть на что посмотреть и ESP32-C3 имеет хороший шанс получить свою нишу в мире встраиваемых систем, так и в области DIY. Меня как раз больше интересует подход со стороны DIY, поэтому статья будет больше с этим уклоном.

В чём разница?

ESP32-C3 пытается занять нишу между ESP32/ESP32-S и нашим старым другом ESP8266. Даже больше хочет вытеснить ESP8266, чем быть дополнением к линейке ESP32.

Не знаю что там будет с ценами, но переход на RISC-V, упрощение периферии и прочее может сделать ESP32-C3 достаточно привлекательным, что бы он смог заменить ESP8266 полностью. В итоге мы получим достойную замену старичку, с которым мы вместе с 2014 года.

В таблице ниже я привёл основные отличия ESP32-C3 от предыдущих ESP32 и ESP32-S2. Так же у Espressif недавно был анонсирован ESP32-S3 с двумя ядрами, но я пока не буду его приводить ниже в силу отсутствия его в широкой продаже.

ESP32

ESP32-S2

ESP32-C3

CPU

Xtensa LX6

Xtensa LX7

RISC-V (RV32IMC)

Частота CPU

160 / 240 MHz

160 / 240 MHz

160 MHz

Количество ядер CPU

2 / 1

1

1

ULP CPU

ULP-FSM

ULP-RISC-V

ULP-FSM

-

SRAM

520 KB

320 KB

400 KB

RTC SRAM

16 KB

8 KB

8 KB

WiFi

802.11bgn

150 Mbit

802.11bgn, 802.11mc

150 Mbit

802.11 bgn, 802.11mc

150 Mbit

Bluetooth

4.2 BR/EDR BLE

-

Bluetooth 5

GPIO

34

43

22

12-bit ADC

1

18 каналов

2

20 каналов

2

6 каналов

8-bit DAC

2

2

-

Touch sensor

10

14

-

SPI

4

4

3

I2S

2

1

1

I2C

2

2

1

UART

3

2

2

SDIO

1

-

-

Ethernet MAC

1

-

-

PWM

16

8

6

USB OTG

-

1

-

Потребление

До 240 мА

До 310 мА

До 325 мА

Modem sleep

27 - 68 мА

12 - 19 мА

15 - 20 мА

Light sleep

0,8 мА

0,45 мА

0,13 мА

Deep sleep

0,01 - 0,15 мА

0,02 - 0,19 мА

0,005 мА

Корпус

48 выводов

56 выводов

32 вывода

Как ESP8266, но не все выводы такие же

DevKit плата

ESP32-C3 приехал ко мне в виде платы ESP32-C3-DevKitM-1, на которой установлен модуль ESP32-C3-Mini-1 со встроенной 4 МБ флеш-памятью.

Так же на этой плате стоит USB-Serial конвертер CP2102 для подключения и прошивки по USB. На GPIO подключен RGB светодиод WS2812.

Сам модуль ESP32-C3-Mini-1 физически по размеру заметно меньше того же ESP-12E на базе ESP8266. И в то же время ESP32-C3 имеет намного больше возможностей.

"Engineering Sample Notes"

С платой была одностраничное приложение с некоторыми пометками.

Например, там написано, что потребление на DevKit'е ещё не достаточно оптимизировано и потому не рекомендуется для оценки в Deep-sleep режиме.

Так же сказано, что в данной версии чипа поддержка USB Serial/JTAG отсутствует, но она будет присутствовать в финальной версии.

Текущая версия ESP-IDF в процесс работы по добавлению поддержки ESP32-C3. Работа в этом направлении ведётся в ветках "master" и "release/v4.3".

Поддержка ESP-IDF

ESP-IDF является официальным фреймворком для разработки под ESP32. Сама среда поддерживает всю линейку ESP32. Большинство примеров можно собрать под Xtensa LX6/LX7, так и под RISC-V. Переключение сводится к одной команде "idf.py set-target esp32c3", которая выставляет riscv32-esp-elf- и прочие параметры в sdkconfig. Теперь после компиляции у нас готова прошивка для нового ESP32-C3.

Предварительно надо подготовить окружение в зависимости от ОС: Windows, Linux или macOS.

git clone --recursive https://github.com/espressif/esp-idf.gitcd esp-idf# Linux/macOS./install.sh# Windowsinstall.ps1

Установочный скрипт скачает компиляторы и дополнительные пакеты для ESP-IDF. После этого надо импортировать окружение для начала работы:

# Linux/macOS. ./export.sh# Windowsexport.bat

Рекомендую для проверки собрать "hello world":

cd examples/get-started/blink# По-умолчанию настроено для ESP32, но если надо собрать прошивку для ESP32-S2idf.py set-target esp32s2# Или для ESP32-C3idf.py set-target esp32c3# Сборка, прошивка, USB консольidf.py build flash monitor

Не все примеры собираются под ESP32-C3, но Espressif активно работает над ESP-IDF для поддержки этого чипа.

CoreMark

Ради интереса запустил CoreMark бенчмарк для оценки производительности нового RISC-V ядра и сравнил эти данные с предыдущим ESP32 (к сожалению, у меня нет ESP32-S2 для более широкого сравнения).

Ниже приведены попугаи для разной частоты процессора и для общего ознакомления добавлены значения при компиляции с выключенными оптимизациями (-O0):

CoreMark 1.0

GCC

Частота CPU

ESP32-C3

388

GCC8.4.0 -O3

160 МГц

98

GCC8.4.0 -O0

160 МГц

ESP32 (одно ядро)

313

GCC8.4.0 -O3

160 МГц

77

GCC8.4.0 -O0

160 МГц

469

GCC8.4.0 -O3

240 МГц

115

GCC8.4.0 -O0

240 МГц

Я сделал измерения ESP32-C3 на 80 МГц, но значения получились ровно в два раза ниже, что и предполагалось и поэтому в таблице не привожу.

В попугаях RISC-V получился примерно на 24% быстрее. Конечно, обычные задачи, которыми мы загружаем такие микроконтроллеры будут сильно отличаться от синтетических бенчмарков, но было интересно посмотреть.

Надо так же не забывать, что ESP32 поддерживает работу на частоте 240 МГц, а у ESP32-C3 максимальная частота только 160 МГц. Так же ESP32 имеет два ядра, которые можно задействовать в зависимости от задач.

Но повышенная частота 240 МГц так же скажется на потреблении устройства. То есть, ESP32-C3 за каждый попугай будет просить меньше электронов (я не измерял потребление, но есть несколько замеров других наблюдателей).

ESP RainMaker

Вместе с этой новой платой Espressif продвигает платформу ESP RainMaker. Это некая среда, которая позволяет быстро создавать концепты и прототипы для IoT устройств.

На ESP32-C3-DevKitM-1 плате уже была прошивка ESP RainMaker, с которой можно получить общее представление об этом платформе.

Идея примерно такова:

На плате настроен обычный бинарный переключатель. При подключении платы через USB консоль мы получаем QR код, который надо отсканировать в приложении ESP RainMaker (доступно для Android и iOS) для первоначальной конфигурации настроек WiFi и добавлении этого устройства в приложение.

После этого можно управлять встроенным RGB светодиодом на плате через Espressif облако, которое находится на Amazon AWS.

ESP RainMaker SDK позволяет создавать разнообразные устройства, не только бинарный переключатель как в примере. Это может быть датчик измерения температуры или влажности, LCD экран, несколько выключателей сразу или много разных устройств вместе сразу. В последнем случае одна плата будет показана как несколько устройств в приложении.

Для того, что бы поиграться с ESP RainMaker не обязательно ждать когда можно купить ESP32-C3. Сама платформа замечательно работает на ESP32 и ESP32-S2. Для сборки прошивки достаточно иметь настроенный ESP-IDF:

git clone --recursive https://github.com/espressif/esp-rainmaker.gitcd esp-rainmaker/examples/switch# По-умолчанию настроено для ESP32, но если надо собрать прошивку для ESP32-S2idf.py set-target esp32s2# Или для ESP32-C3idf.py set-target esp32c3# Сборка, прошивка, USB консольidf.py build flash monitor

В консоле появится QR код и дальше уже всё в приложении.

Выводы

Большее количество микроконтроллеров для фанатов DIY всегда позитивно, так как при большем выборе можно подобрать более подходящий МК и плату в зависимости от того, что более важно в новом проекте.

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

Отдельное спасибо Espressif за то, что сделали WiFi доступным для встраиваемых устройств 7 лет назад. А там и другие производители подтягиваются. Мы только в плюсе.

Подробнее..

Категории

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

  • Имя: Макс
    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