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

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

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

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

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

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

21 комментарий 👇
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 - редкий класс, не могут толком ни в схемотехнику, ни в программирование, но постоянно занимаются и тем и другим, но в основном пребывают где-то между миром софта и железа там где важны высокие скорости и строгие тайминги. Встречается обычно там где разрабатывают крутое специализированное железо мелкими сериями (измериловка, радио, етц), либо там где разрабатывают новые микросхемы, но вообще сейчас программируемая логика дешевеет и все чаще встречается в более мещанских девайсах, а не только тех где надо охуенно, а на цену не смотрят. Ничего не посоветую ибо не шарю, но есть дешевая отладка Марсоход и вменяемые по цене китайские борды.

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

Dmitry Gurinovich, Синьор Быкендер 16 сентября 2020

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Но всё же :)

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

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

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

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

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

  Развернуть 1 комментарий
Vlad Zaitsev, Architect & Product Owner 17 сентября 2020

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

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

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

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

@Floppycatman, а СВЧ, так вообще, сплошное чёрное колдовство.

  Развернуть 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 комментарий

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

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

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

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

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

  Развернуть 1 комментарий
Pavel Galeev, SW Embedded Designer 17 сентября 2020

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

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

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

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

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

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

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

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

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

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

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

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

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

Я тут рекомендовал одну книжку в клубе. Может быть, раз, уже паяли-лудили уже не так интересно будет, но я в довольно взрослом возрасте её прочитал.

Еще хочу посоветовать всякие элек ронные конструкторы. Из попклярных - Знаток, но это слишком лайтово.

Я вот помню в детстве у нас с братом конструктор был на прущинках, но я такие в последнее время не встречал(но и не искал).

Есди конструкторы слишком просто, есть комплекты из рассыпухи DIY, обычно с самостоятельными заданиями, типа лабораторки.

Успехов!

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

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

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

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

😎

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

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


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