Как вкатиться в электронику?

 Публичный пост

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

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

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

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

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

Связанные посты
27 комментариев 👇
LexsZero Embedded Software Engineer 17 сентября 2020

Что почитать:

  • Для самых маленьких: канализационная электроника от дихалта - примерно первый курс университетского ТОЭ на примере говна несущегося по трубам.
  • Хоровица с Хиллом тут уже упомянули, плюсую, хорошая практическая книжка.
  • Книжка про хардваре хакинг - не расскажет как работает транзистор, зато расскажет о бэкстейдже разработки и производства электроники (и не только). Это скорее leisure reading, чем учебный материал, но я его советую буквально всем.
  • Cтаковерфлоу! Да, google driven engineering тут тоже работает. Кстати, электронная часть ютуба - это не унылые индусы бубнящие про сарвар, а дым, агонь и всратость.
  • Ну и конечно даташиты, референс мануалы, аппноуты и прочая официальная документация. Относиться следует как к документации от библиотек которые собираешься использовать, только они гораздо многограннее.

Никакого вкатывания не выйдет без практики. Начать можно с малого - починить наушники, например. Даже эта задача требует наличия минимального набора инструмента (паяльник с причиндалами, кусачки, пинцет, мультиметр) и минимального представления о том что должно быть. Потом сделать какой-нибудь простенький проект на ардуине или esp8266/esp32 (если совсем нет идей - повторить чье-то железо и написать свой код тоже пойдет).

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

  • Железо: разработка схем, разводка плат, войны паяльника и осциллоскопа сражающиеся с неидеальностью этого мира и энтропией. Там тоже есть свои специализации (силовуха/электропривод, чувствительный аналог, свч-сатанизм, радиосвязь, аудио, етц). Сюда же я бы отнес и ремонт, который (точнее, траблшутинг) скорее набор эвристик и лайфхаков передаваемых от дедов к молодняку и жопное чутье, нежели какое-то систематизированное учение (уау прямо как с отладкой софта).
  • Программирование под МК - сишка и AVR если вы дед, Lua/JS и ESP32 если вы школьник, C++ и STM32 если ровный поцык, Rust и RISC-V если аутист модный хипстор (возможны различные сочетания). Обычный софтвар энжинеринг, только с нюансом что баги могут приводить к материальному ущербу и травмам, а без мамки-ОС (если ты ее не принесешь сам) стрелять себе в ноги можно новыми изощренными способами. По наблюдениям, опыт любого более другого софтвар инжениринга здесь важен, люди пришедшие из железа зачастую пишут очень плохой или очень странный код и иногда впервые слышат про гит. Кейворды для вкатывания - stm32 discovery (девборда), esp8266/esp32 (мк с вайфаем за 2 бакса любимый диайвайщиками), platformio (экосистема чтоб писать под примерно любой мк и фреймворк не повесившись на этапе настройки тулинга), freertos (мы же хотим нормальный многопоточный код писать, а не лапшу из стейт-машин). Про ардуину даже не пишу, но стоит упомянуть что сейчас это не только серия платок с аврками, а фреймворк для начинающих работающий на куче разного железа и все либы для периферии которые будут попадаться на гитхабе скорее всего будут заточены под него.
  • Embedded Linux - наиболее знакомая мне отрасль. Наиболее близко к обычному программированию под линукс, берем опенсурс и любимый высокоуровневый ЯП и хуяк-хуяк из этого продукт, но значительная часть усилий идет на возню с билд-системой. Нужно не бояться лезть по локоть в ядро и ковыряться в драйверах, а то и писать свои - это не так страшно как звучит. Боевое крещение наступает когда брикните борду за несколько килобаксов прожиганием неправильных фьюзов из-за ошибки в документации. Для вкатывания - разобраться как происходит запуск вашей борды от отпускания reset'а до линуксового промпта. Для начала - Raspberry Pi (популярность, но несколько всратый броадкомовский чипсет), Beaglebone (более древний, но менее всратый SoC от TI, часто берется за основу кастомных железок), потыкать U-Boot и прийти к осознанию что линукс не очень-то и нужен, но с ним проще, если хочется в серьезную разработку - потыкать Yocto (экосистема для сборки фирмварей, неба и аллаха. поначалу будет казаться что это какой-то оверинжинирнутый пиздец, но это все реально пригождается, правда-правда).
  • FPGA - редкий класс, не могут толком ни в схемотехнику, ни в программирование, но постоянно занимаются и тем и другим, но в основном пребывают где-то между миром софта и железа там где важны высокие скорости и строгие тайминги. Встречается обычно там где разрабатывают крутое специализированное железо мелкими сериями (измериловка, радио, етц), либо там где разрабатывают новые микросхемы, но вообще сейчас программируемая логика дешевеет и все чаще встречается в более мещанских девайсах, а не только тех где надо охуенно, а на цену не смотрят. Ничего не посоветую ибо не шарю, но есть дешевая отладка Марсоход и вменяемые по цене китайские борды.

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

@LexsZero, не обижай FPGA. Все они могут. Приходят то туда с какой-то из сторон, обычно.

  Развернуть 1 комментарий

@LexsZero, Топ описание)
Про Embedded linux добавлю - в него входит не только разработка борды с софтом, но и условный "прототип" конечного устройства, точнее как сделать так чтоб этот прототип работал и над ним могли измываться те кто софт написали.

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

  Развернуть 1 комментарий

Так Ардуино - и есть микроконтроллер :) Если ты умеешь прогать под Ардуино - то умеешь программировать микроконтроллеры :)

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

Я в последнее время много чего изучаю на ютубе. Поэтому я бы, наверное, начал смотреть разные ролики на ютубе и собирать общую картину, например тут.

Начиная с закона Ома, тока, напряжения, сопротивления, ёмкости, индуктивности.

Затем элементная база, свойства каждого элемента. Например, диод пропускает ток только в одном направлении, на нём падает всегда постоянное напряжение, используется в выпрямителях тока, стабилизаторах напряжения. Конденсатор накапливает заряд, постоянный ток не пропускает, пропускает только переменный, используется в фильтрах частот. И так далее. RC-, LC-цепи, фильтры. Индуктивности, трансформаторы, катушки, реле...

Полупроводники: диоды, транзисторы всякие. Какие бывают, варианты их включения. Например, включения транзисторов с общей базой, общим коллектором, общим эммитером. В каких юзкейсах используется. Например, с общим эммитером - в схемах усиления сигнала. С общей базой, кажется - стабилизатор тока. Сам уже забыл :) И тому подобное.

Затем разные микросхемы и сборки: стабилизаторы напряжения, выпрямители тока, операционные усилители и т.п. Схемы их включения и свойства таких схем, в каких юзкейсах применяются. Обычно это более высокоуровневые блоки, выполняющие определённую фукнцию.

Затем узнать как строятся какие-либо типичные штуки типа усилителя звука, блока питания, примочки для электрогитары и т.п.

Это всё было про аналоговую схемотехнику.

Цифровая схемотехника состоит в основном из логических элементов.

Начать надо с примитивных элементов И/ИЛИ/НЕ, регистров, JK-, RS-, T-, D-триггеров, мультиплексоров, дешифраторов, генераторов, счётчиков и т.п.

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

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

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

Логические элементы выполняются в виде цифровых микросхем. Надо смотреть их спецификации, что внутри них реализовано, что она может и как её соединять с чем-то ещё.

Микроконтроллеры есть разного уровня абстракции: низкоуровневые где можно запрограммировать примитивное поведение, и высокоуровневые - как Ардуино, для которой уже даже сделали машинное обучение.

Распбери пай, я думаю, вряд ли научит схемотехнике, так как он по-сути, уже готовый компьютер. Эдакий чёрный ящик внутри которого происходит магия.

Ещё, нужно научиться читать принципиальные схемы.

Без них лезть куда-то с паяльником бессмысленно. Разве что, если ты знаком с устройством типичных блоков и знаешь примерно где что. Или знаешь типичные болячки, наподобие пересохших/сгоревших конденсаторов.

Ещё полезно изучить какие-то основы обработки сигналов, ЦАП, АЦП, преобразование Фурье и прочие импульсные характеристики :)

Из инструментов что надо - зависит от задач. Обычно паяльная станция, пинцеты всякие, мультиметр, осциллограф, россыпь разных деталей :)

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

Не знаю был ли полезен такой высокоуровневый обзор :)
Сегодня спонсоры данного комментария, кажется, пиво и ностальгия :)

  Развернуть 1 комментарий

@hackman, За фразу про " программируешь Аржуино = программируешь контроллеры" Эмбеддед инженер бьет граблями))
А так в целом и да, и нет)))

  Развернуть 1 комментарий

@gapel, так а чем ардуино не контроллер? :)))

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

Но всё же :)

А, ну разве что, у каких-то контроллеров нет компилятора с Си и приходится на ассемблере программировать.

  Развернуть 1 комментарий

@hackman, тем, что Ардуино - это плата с микроконтроллером Atmega и отладочная среда для нее. "Arduino - микроконтроллер" - это то же самое, что "Lada Granta - это рядная четверка". Если ты умеешь водить "Гранту", то умеешь программировать режимы работы автомобильных двигателей.

  Развернуть 1 комментарий

А, это. Та я уже на автомате ATmega 328 называю Ардуино.
Как все называют любой копировальный автомат "Ксероксом".

  Развернуть 1 комментарий

Предустерегу от вливания в ряды ардуинщиков — это когда человек учится на платформе, предназначенной для обучения, а потом начинает на этой же платформе пилить боевые проекты. Выглядит плохо, работает тоже.
Начать с ардуины это неплохо, закончить можно тоже ей, если не стоит задача делать что-то в продакшен (под продакшеном я понимаю не столько серию, сколько состояние "не стыдно похвастаться на хабре"), а хочется просто развлекаться в свободное время.
Но если хочется действительно вкатиться и делать хорошие проекты — то надо держать в голове, что после ардуины лучше взять ESP8266/32 c FreeRTOS, или STM32 c любым из поддерживаемых ртосов.
Собственно, разница между ардуиной и этими вариантами — это разница между написанием монолита под дос на 386 (причем написание кода на этой же машине в текстовом редакторе под дос) и микросервисов под линукс на i5. Вроде смысл тот же самый, но боги, насколько приятнее и проще решать те же задачи с нормальными инстурментами — RTOS, нормальной системой сборки, нормальной средой разработки, нормальными инструментами для отладки и прошивки.

  Развернуть 1 комментарий

Как радиоинженер, могу сказать, что аналоговая электроника полна магии.

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

@VBodrov, exactly.

  Развернуть 1 комментарий

@Floppycatman, но есть хорошие учебники. Магии много, но вполне можно стать Гарри Поттером. Если повезет - то даже Гэндальфом, но я пока на стадии Гарри Поттера.

  Развернуть 1 комментарий

@VBodrov, https://www.amazon.com/High-Speed-Digital-Design-Handbook/dp/0133957241 книжечку вот даже написали. есть еще Advanced Black Magic.

  Развернуть 1 комментарий

@LexsZero, это жалкие притворщики, хай спид диджитал - не настоящая черная магия, хоть там интересного и хватает.

  Развернуть 1 комментарий

@amartology, это да. Но сколько волшебного дыма можно спустить из чипов, пока научишься.

  Развернуть 1 комментарий

Начни с покупки Raspberry pi. И всякий мусор к ней, типо лампочек и плат для проектирования. Кодить можно на Python, JS etc. В инете полно уроков и примеров. Надоест - поставишь на нее linux и будет тебе как миникомп или сервер.

Это конечно не уровень "понять зачем где какой резистор", но хотя бы для начала овладеть цифровыми и аналоговыми I/O.
Потом можно начать покупать более лоулвл вещи - ардруино и конкретные микропроцессоры.

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

Потом для более реальной практики, вот как ты пишешь про починить машинку - можешь попробовать собрать свою. Там все банально просто. Я писал на эту тему - https://habr.com/ru/post/469659/, https://habr.com/ru/post/469733/

  Развернуть 1 комментарий

@MrDmitry, статьи про машинки огонь!

  Развернуть 1 комментарий

А если по теме, то сам задавался этим вопросом недавно. Купил Pi Zero W, паяльник, платы, посмотрел туториалы, как паять, что такое транзисторы, вспомнил закон Ома, разобрался с GPIO И ТЕПЕРЬ МЕНЯ НЕ ОСТАНОВИТЬ ГАЛЯ ТЫ ЩАС УМРЕШЬ У МЕНЯ ТЕПЕРЬ УМНЫЙ ХОЛОДИЛЬНИК.

  Развернуть 1 комментарий
Valeriy Shunkov Разработчик микросхем для космолетов 17 сентября 2020

Если надо прогать микроконтроллеры,умныед ома и вот это все, то лучшее начало - Raspberry Pi и дальше смотреть в сторону STM32.

Если надо паять и разбираться в резисторах - то нужна книга "The Art of Electronics" Horowitz & Hill. Крайне желательно - в оригинале, переводы хромают, в том числе множественными ошибками в формулах. Хотя нет, начать будет лучше с кгиги "Электроника шаг за шагом" Рудольфа Свореня, а "искусством схемотехники" продолжить.

Ну и практика, пока достаточно диодов не сожжешь, ничего не будет.

  Развернуть 1 комментарий

@amartology, кстати, Свореня перевыпустили совсем недавно.

  Развернуть 1 комментарий

Мда, границы ТЗ очерчены нечетко))
Как инженер, который пришел в программисты скажу, что область сия обширна и велика и нало бы знать чего именно хочется.
Пример.

  • силовая электроника (без ее понимания например умынй дом и все эти управляемые релешки лучще не лезть). В платах нужно учитывать токи, помехи и прочую фиготень. Паять надежно, разъемы ставить правильные.
  • слаботочная электроника питание (хотя бы не боишься что убьет или спалит полдома, зотя умельцы есть) тут надо знать как работают диоды транзисторы, опять же помехи и вот это все.
  • слаботочная электроника управление. Снова транзисторы но с другой стороны. Ножки-подтяжки, это все. ЦАП/АЦП, протоколы от уарты до усб3 в зависимости от степени упоротости. Паяльник уже другой. Развока плат тоже меняется.
  • радиоэлектроника. включая блутуз вайфай, НФС, рфид. Новый вид магии, но простой
  • СВЧ - тут магия и сложный инструменты моделирования

При этом существует класс устройств типа той же малинки, где почти все вышеперечисленное не надо.

Чего барин изволит? Потому как тут либо основательно в науку и моделирование посылать, либо на сайт easyelectronics.

Из общего могу посоветовать любой учебник со схемами типа того же Сквореня плюс Микрокап (у него свободная версия), где можно накидать простенькую схему и увидеть как она работает, поиграться параметрами, посмотреть АЧХ (ах да, фильтры тоже надо знать)
Только надо помнить, что микрокап тоже врет и в реальности все работать может по другому.

  Развернуть 1 комментарий
Сергей Буглаков iOS developer, мистер "шило в жопе" 19 сентября 2020

рекомендую не слушать хэйтеров ардуино – можно сколько угодно говорить о том , что ардуино/эксель/вордпресс/лом не подходит для солидной фирмы, вам нужно сделать своё Кастомное Решение©®, но если твоя задача решается в лоб за один вечер программирования и втыкания проводов в макетку, то arduino goes brrrrrr. у меня дома есть полсотни пустых микроконтроллеров на десятке разных ядер, два swd- и один jtag-программатор, четыре виде одноплатников, но если мне что-то надо быстро запрототипировать, то с 90% вероятностью я возьму одну из ардуин. при этом я тоже хэйтер ардуино :)

короче, инстумент надо выбирать исходя из задачи и доступного свободного времени на изучение

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий
Yan D. Ruby Software Developer 8 августа 2021

Советую, придумать устройство для дома или для какого-нибудь своего использования, и по компонентам собирать. Так будет интересно, и в итоге получится полезная штука.

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

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

@dottedmag, общего ответа на эти вопросы нет, только знания и опыт.

Индуктивность к AVCC, по-моему, прям в даташите рекомендована, вместе с номиналом. Вы бы и сами её туда довольно быстро сообразили поставить, обнаружив, как показания АЦП прыгают при изменениях потребления тока микроконтроллером.

В цифровой электронике вообще часто номиналы не принципиальны и просто берутся с потолка (можно поставить в 100 раз больше, в 10 раз меньше - пофигу), транзисторы работают в ключевом режиме и можно любой заменить на любой другой и т.п.

4 конденсатора на 100 uF вместо одного на 400, скорее всего, стоят из-за требований к размеру корпуса/платы - 4 маленьких "бочонка" влазят, а 1 побольше уже нет. Либо, возможно, так делают, чтобы уменьшить ESR (ёмкости-то складываются, а вот сопротивления, как у резисторов, делятся) и, соответственно, выжать из них больший ток.

Остальное я и сам не знаю :(

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

@dottedmag, вряд ли, конденсаторами такой ёмкости (и соответствующей индуктивности) никакие помехи не отфильтровать. Аж самому интересно стало, нашёл лекцию, где названы ДЕВЯТЬ возможных причин такого включения:

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

@dottedmag, если ХиХ мало, то попробуйте посмотреть книги Бэйкер "Что нужно знать цифровому разработчику об аналоговой электронике" и Кестер "Аналого-цифровое преобразование" - глава 9 посвящена практическим аспектам проектирования электроники. По интересующим темам смотреть статьи, aplication notes, white papers у конкретных производителей микросхем (analog devices, TI, microchip, maxim integrated). Часто, на страничке сайта производителя интересующей микросхемы помимо даташита есть много полезных мануалов с рекомендациями по подключению и работе.

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

  2. Узел MCU Oscillator. 4 разных посадочных места под кварцевые резонаторы нужны для того, чтобы упростить жизнь человеку, который собирает эту плату. Какой из резонаторов есть в наличии (или в ближайшем магазине), тот можно установить.

  3. Диод Шоттки необходим для предотвращения протекания тока в обратном направлении от цепи +5V (если подключен к этой точке внешний источник питания) к стабилизатору U3.

  4. "Гирлянда конденсаторов" - каждому пину питания на микросхеме по собственному конденсатору. Для каждого пина свой собственный конденсатор является локальным источником энергии и фильтром помех. В данном конкретном случае выбор номиналов на совести автора платы. Обычно, в даташите на микросхему есть рекомендации по фильтрации питания.

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

Могу порекомендовать книжку Хоровиц П., Хилл У. Искусство схемотехники. Она довольно обстоятельная. Но не без минусов, издаётся уже лет 30 и местами порядком устарела. Так же, некоторые находят её душноватой

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб