Задать вопрос
  • С чего начать в программировании микроконтроллеров?

    @dsd_corp
    Привет. Все верно комментаторы говорят - начинать с Ардуино вполне резонно. И не слушайте тех, кто говорит, что Ардуино гуано потому что [и тут разные расплывчатые аргументы]. Ардуинщики в большинстве вырастают в говнокодеров не потому, что Ардуино плоха, а потому что даже не пытаются развиваться дальше. Типичная проблема низкого порога входа(как у 1С, например). То есть проблема в самих человеках, а не в Ардуине.
    У вас же, судя по тексту вопроса, мотивация развиваться есть )

    Для Ардуины действительно существует куча шилдов и примеров кода на своем упрощенном языке(хотя это по-прежнему C++), что для старта очень даже неплохо - при наличии желания можно разобраться в том, как все устроено еще до того, как возьмете в руки паяльник.
    И никто не мешает вам, при достижении определенного уровня, перейти на программирование контроллеров с помощью других компиляторов, исключая Arduino IDE и lazy coding. При этом на первых порах по-прежнему можно использовать Arduino-загрузчик и не париться со всеми проблемами сразу.

    Сразу же рекомендую кроме Ардуино купить на будущее что-нибудь типа STM32 Nucleo. У этой платы есть совместимость с Arduino-шилдами, mbed-загрузчик(заливка прошивки происходит простым копированием на виртуальную USB-флешку), а так же полноценный STLink-программатор с пинами для программирования внешних контроллеров - это значит, что в последствии вы можете собрать собственный девайс на STM32 микроконтроллере и с помощью встроенного в Nucleo SLink-программатора его запрограммировать, просто подсоединив пару проводков(SWD).

    И впоследствии, если не растеряете желание расти, вполне сможете создавать уже свою электронику и при этом, к примеру если остановитесь на STM32 контроллерах, все еще использовать STLink от Nucleo для программирования своих девайсов.
    Выглядеть это будет приблизительно так: 5.101.107.156/Habr/IMG_1235.JPG
    Здесь две Nucleo-платы слева используются как STLink-программаторы для двух плат справа соответственно )

    Ну а дальше все зависит только от вас.
    Удачи )
    Ответ написан
    Комментировать
  • Какие книги/ресурсы посоветуете для изучения программирования микроконтроллеров?

    32bit_me
    @32bit_me
    Программист, встраиваемые системы
    Книг, которые можно порекомендовать, практически нет.
    Если вы не знаете С, то начните с обычных учебников по С. Если знаете - то все даташиты на ваш микроконтроллер. Если планируете использовать ОСРВ - то соответственно, документацию на неё.
    Ответ написан
    Комментировать
  • Книги по электронике и программированию под микроконтроллеры?

    vagrantnotes
    @vagrantnotes
    Embedded-разработчик
    Сам работаю с микроконтроллерами и пару лет назад так же столкнулся с задачей поиска толковых обучающих материалов. Вот несколько советов (разумеется, субъективных) на этот счёт:

    1. Большая часть книг в стиле "Разработка встраиваемых приложений" или "Пишем на ассемблере под PIC" - пустая трата времени. Не то что бы они совсем бесполезны, но зачастую они сильно устарели, а информация в них избыточна и излишне детализирована. Я не нашёл ни единой книги, которую не захотелось бы забросить после пары десятков страниц.

    2. Я очень рекомендую цикл статей "AVR. Учебный курс" на сайте easyelectronics.ru. Там и железо, и ассемблер, и регистры - простым и доступным языком. Очень рекомендую, даже если работаешь не с AVR. Там изложены основные принципы и самих контроллеров и периферии - то, с чем каждый день сталкиваешься в реальных проектах.

    3. Без знания C в микроконтроллерах - никуда, поэтому рекомендую книгу Кернигана и Ритчи - "ANSI C". Это и учебник, и справочник под одной обложкой. Рассказывается всё просто, кратко и без лишних рассусоливаний.

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

    5. Не ограничивайся только книгами. Сейчас доступно множество открытых онлайн-курсов о встраиваемых системах на любой вкус. Это потрясающая форма обучения, которая совмещает в себе текстовый материал, видеолекции и практические лабораторные работы. Минус - всё это удовольствие на английском языке. Пожалуй, лучший пример, это Embedded Systems - Shape The World - встраиваемые системы - от самых азов, до ретро-игр на контроллере. В комплекте дают доступ к хорошему интерактивному учебнику C. Прекрасный курс с упором на практическую составляющую. Сессия совсем скоро завершится, но доступ к видеоматериалам ещё должен остаться.
    Ответ написан
    Комментировать
  • С чего начать изучать программирование микроконтроллеров?

    @sled
    Ардуино -> AVR -> STM32

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

    Итак ищем на Али:
    Arduino UNO
    Arduino Nano
    Digispark (ATtiny85)
    AVR USBASP (программатор для avr)
    STM32F103C8T6 + ST-Link V2 (программатор-отладчик)
    Ответ написан
    Комментировать
  • Стоит ли начинать с Ардуино, если хочешь познать мир микроконтроллеров на хорошем уровне?

    ilyazh
    @ilyazh
    Инженер-программист
    Начинайте с Ардуино, если есть. Ничего страшного в этом нет. Я сам когда-то с него начинал, ныне работаю инженером-разработчиком и не считаю, что опыт Ардуино был ущербным. Главное не начать строить на Ардуино серьёзное железо. У Ардуино есть большой плюс для начинающих - можно пощупать и попробовать многие вещи, чтоб понять действительно ли это вам интересно. А потом когда поймете что на этом уровне ваш интерес угасает - пойти глубже, и, например, отказавшись от среды Ардуино, программировать ту же плату "напрямую" - без библиотек и оберток, используя регистры контроллера. После этого у вас не будет сложностей с переездом на другое семейство МК, т.к. вы уже будете иметь представление что и как это устроено в общих чертах, что искать и куда копать у других МК. А далее углубляясь и улучшая навыки в смежных областях: схемотехника, физика и прочие инженерные навыки - будете развиваться.

    П.с. Также Ардуино иногда может быть полезно, когда надо быстро сделать какую-то единичную экспериментальную железку или замакетировать что-либо по-быстрому.
    Ответ написан
    Комментировать
  • С чего начать изучение робототехники?

    @Nikolajich
    Начните от простого к сложному.
    Микроконтроллеры, программирование, механика.
    1. Электроника для начинающих.
    2. Изучаем Arduino. Инструменты и методы технического волшебства.
    3. Программируем Arduino. Основы работы со скетчами.
    4. Проекты с использованием контроллера Arduino.
    5. Основы робототехники.
    6. Введение в робототехнику. Механика и управление.
    7. Механика миниатюрных роботов.
    cyberdive.ru/?page_id=141
    Ответ написан
    Комментировать
  • Стоит ли начинать с Ардуино, если хочешь познать мир микроконтроллеров на хорошем уровне?

    @janikc
    Отвечу немного спорными словами. Я прочитал ответы авторов. Я бы посоветовал не слушать их.
    Погружение в мир микроконтроллеров (МК) очень размытая цель. Первое что нужно, это понимания нам и вам для чего это вам? В качестве карьеры? Хобби? и т.п.?
    Кроме того большинство авторов бросилось советовать вам конкретные МК, что неверно.
    Мир МК тесно связан с другими инженерными отраслями: конструирование, схемотехника, СВЧ, обработка информации, алгоритмы и т.п. По мимо этого нужны знания и понимания: интерфейсов, современной электронной элементной базы, операционных систем, и т.п.
    Поэтому, чтобы ограничить изучение всего и вся нужно очертить ваши текущие знания(от обычных фундаментальных дисциплин(английский, алгебра) до прикладных) и ваши цели.

    Это в качестве предисловия. Выбор платы для начала? Многие начитавших инетов советуют stm32.
    Во-первых, на каком основании они советую именно его не ясно. Есть много других производителей с данным ядром cortex.
    Во-вторых, это МК довольно сложный. Вы бросите его изучать на этапе чтения технической литературы и настройки среды. Т.к. сей час много инструментов автоматизации настройки МК, то вы даже не поймете, как и что вы настроили. Просто нажали кноки, как на ютубе и вот он мигает...
    Поэтому бросьте это. Никто детей не учит алфавиту по Шекспиру.

    Берите ардуино. Во-первых, на плате есть все чтобы работать. Во-вторых, много примеров. Дальше, пока вы настроите другой МК и плату на обмен с ПК вам это наскучит. А тут есть готовые шаблоны для обмена с пк информацией.
    Дальше, есть много книг по avr, в частности на сайте easyelectronics курс есть шикарный. Т.е. можете брать ардуино и прогать, как avr.

    Поэтому советую брать ардуино и, если не наскучит, прогать авр на нем. А дальше, когда придет опыт, вы уже с более-менее понимаем перейдете на тот кристал(МК) который вам уже понравиться и не посоветам в интернетах, которые просто с бухты барахты советую не пойми что.

    PS. Сорри за ошибкив тексте. Лень править
    PS/PS ничего не имею против авторов других ответов
    Ответ написан
    5 комментариев
  • Какой набор посоветуете новичку для ардуино? Или как собрать самому?

    @kalapanga
    Здесь проблема в противоречии. С одной стороны не хочется сразу закупаться кучей всего не будучи уверенным, что Вы не забросите всё это занятие через месяц. А с другой стороны бегать в магазин или на алиэкспресс за каждым проводком или резистором - не велико удовольствие. Оптимум каждый сам ищет для себя.
    Рекомендую найти на просторах интернета пару каких-нибудь несложных проектов, которые Вам было бы интересно повторить, и закупитесь деталями конкретно под них. Посмотрите например сайт Гайвера или Instructables.com - наверняка сможете выбрать что-то по своим интересам. Берите с некоторым запасом из расчёта часть спалить/испортить. Для примера, нет смысла покупать одну Nano, берите минимум пару-тройку, всякие резисторы-конденсаторы тоже брать кучками.
    Кроме непосредственно ардуино и модулей для него Вам обязательно нужны ещё ряд вещей. Для начала можно самых простых и недорогих. Это мультиметр, паяльник с принадлежностями, бокорезы, пинцет, отвёртки всякие. Если в хозяйстве это уже есть - ну и хорошо! Неплохо бы иметь отдельный источник питания для Ваших опытов.
    По поводу упомянутых серий микроконтроллеров. У классических ардуино на микроконтроллерах Atmega существенно ниже порог вхождения чем у других, что собственно платформа ардуино и хотела достичь. Микроконтроллеры STM и ESP сложнее в освоении, но существенно более мощные при сравнимой стоимости. Рекомендую всё-таки "для попробовать" начать с "классики". Перейти на другие серии всегда успеете.
    Ответ написан
    Комментировать
  • Самая лучшая книга для начинающих по Arduino?

    "Конспект хакера" от амперки. Вполне успешно учили с его помощью пятиклассников
    Ответ написан
    Комментировать
  • Какую литературу стоит прочесть по электронике\электротехнике и программированию микроконтроллеров?

    @WorldEn
    Я тоже новичок и вот мой план:

    - По электронике выше советуют Свореня. Она хорошая, но лично мне по нраву Чарльз Плат: Электроника для начинающих. Саму книгу можно бесплатно в pdf найти в интернете. В книге прекрасно сочетаются теория и практика. Основной упор на практику, т.е много экспериментов нужно будет проделать. Для проведения экспериментов необходимы компоненты, которые указаны в книге и их можно найти на той же амперке например тут 1 и тут 2. В книге всё разжевывается доступным, понятным языком так, что поймет любой школьник и детсадовец, а что уж говорить про взрослого человека? ))

    - Параллельно с ней я изучаю язык Си, потому что 99% микроконтроллеров программируются именно на нём. И да, именно Си, а не С++ (недавно я задавал вопрос на эту тему и спасибо всем, кто ответил).
    По Си я выбрал эту книгу: Ствен Прат: Язык программирования Си. Есть ещё замечательная книга Кернигана и Ритчи, но мне она показалась сложноватой, хотя может ты потянешь.

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

    Вот, в принципе, примерный мой план. Надеюсь тебе это поможет.

    Да, кстати, ещё очень полезный сайт

    PS: Согласен, наборы для книги стоят дороговато, но нигде дешевле я их не нашёл... ((((
    Ответ написан
    1 комментарий
  • Книги по электронике с нуля?

    @pollino
    shop.oreilly.com/product/9780596153755.do

    Для самых новичков, продается вместе со электроникой. Есть на русском и даже можно скачать для ознакомления.

    eax.me/electronics-first-steps

    Ну и физику школьную вспомнить https://cloud.mail.ru/public/5ZK7/Yjhb5DJBf
    Ответ написан
    Комментировать
  • Предложите хорошую литература по электронике (в основном цифровой) для новичков?

    @altai2013
    На сегодня лучшее, что есть, это Чарльз Платт, "Электроника для начинающих". Пошагово, доступно, масса примеров, с картинками и всё на современной базе, со светодиодами и транзисторами, которые вы купите в ближайшем магазине.
    Сворень - очень-очень хорош, но слишком устарел. Вся элементная база, на которой построены его примеры, отсутствует в продаже, а без практики толку мало.
    Ответ написан
    3 комментария
  • Почему некоторые программисты на GO работают с бд на голом SQL без ORM?

    @igaraev
    Я работаю DBA, и вот что я вам могу рассказать об ОРМ из своей практики, язык особо роли тут не играет. SQL как язык программирования декларативный, то есть мы ему говорим какую информацию он должен нам дать а метод извлечения он придумывает сам, и далеко не всегда он это делает оптимально, на это есть много веских причин. Опытный программист может написать оптимальный sql запрос, а orm зачастую нет. Ещё из минусов орм это сложный поиск источника проблем. Был случай база нереально стала тормозить, Я нашел проблемный запрос который ддосил базу. Запрос был с синтаксической ошибкой, и его таким сгенерировано орм, программисты откатили сборку и отказывались верить что это их программа. Через месяц они нашли место где орм генерирует этот sql.
    Ответ написан
    Комментировать
  • Почему некоторые программисты на GO работают с бд на голом SQL без ORM?

    @Superclip
    1. В случаях, когда данных много и запросы тяжелые. Требуется оптимизация, управление джойнами, хинты и прочее.
    2. К п1. Чтобы перенести обработку поближе к данными.
    3. В случаях, когда бизнес логика размазана и ее часть приходится на БД (всякое в жизни бывает). Тогда SQL становятся большими и сложными - их проще писать на SQL. ORM в этом случае приносит лишнюю сложность.
    Ответ написан
    2 комментария
  • Почему некоторые программисты на GO работают с бд на голом SQL без ORM?

    opium
    @opium
    Просто люблю качественно работать
    А зачем когда ты сам можешь все контролировать
    Тут два основных паттерна
    1 когда запросов мало и они простые и ты понимаешь как они работают и никаких косяков со странными данными из вне прийти не должно или ты это уже сам экранироовал , реально намного быстрее напрямую сделать чем вникать в орм
    2 когда тебе в каких то частях нужен перформанс или когда орм генерит еретические запросы там где у тебя сложная логика и приходится их переписывать напрямую
    Ну и забыл третье вкусовщина
    Ответ написан
    Комментировать
  • Почему некоторые программисты на GO работают с бд на голом SQL без ORM?

    @calculator212
    Почему некоторые решают рабоатать с бд на чистом sql
    В целом есть несколько причин:
    1) В целом ORM в го не очень удобные, тот же gorm особо не даёт выигрыша в простоте относительно sql
    2) В целом запросы могут быть относительно простыми и ORM не нужна
    3) Нет стандартной ORM по типу Hibernate, SQLAlchemy
    4) В го у ORM есть ограничения,
    5) Если ORM на основана на рефлексии то она будет медленно работать (привет gorm) даже для средненагруженных проектов, не говоря про highload

    В целом многие используют штуки по типу sqiurell, и sqlc, т.к. они легче чем ORM и для ряда вещей упрощают код. Для миграций в большинстве проектов хватит go-migrate
    Ответ написан
    Комментировать
  • Почему некоторые программисты на GO работают с бд на голом SQL без ORM?

    Не гошник, но расскажу в целом.
    1. На 1 уровень абстракции меньше. При работе с ORM нужно думать одновременно и об особенностях твоей ORM-ки и об особенностях базы.
    2. На сыром SQL некоторые вещи сделать проще, чем с ORM-ками.
    3. Лучше сырой SQL, чем тупая ORM-ка.
    4. Некоторые ORM-ки могут негативно влиять на производительность.

    Если тебе приходится при работе с ORM писать куски SQL-я (например для WHERE), передавать названия колонок в параметрах, и при этом ты не можешь использовать специфику твоей базы не опускаясь до уровня сырого SQL, то это плохая ORM.

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

    Нормальные ормки я пока видел только:
    1. В C# из-за Linq
    2. В Rust из-за макросов.
    Ответ написан
    8 комментариев
  • Mutex RWMutex отличия?

    RWMutex нужен, когда у нас есть объект, который нельзя параллельно писать, но можно параллельно читать. Например, стандартный тип map.
    Перед записью в защищаемый мьютексом объект делается .Lock(), а вызовы .Lock() и .RLock() в других горутинах будут ждать, пока вы не отпустите мьютекс через .Unlock().
    Перед чтением защищаемого объекта делается .RLock() и только вызовы .Lock() в других горутинах блокируются, вызовы .RLock() спокойно проходят. Когда отпускаете мьютекс через .RUnlock(), ждущие вызовы .Lock() по-очереди могут забирать мьютекс на себя.
    Таких образом обеспечивается параллельное чтение объекта несколькими горутинами, что улучшает производительность.
    Ответ написан
    4 комментария
  • Где можно создать виртуальную машину чтобы использовать андроид студио на ней?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Попробуй создать виртуальный игровой. рублей 300 для теста хватит. Выбирай те где есть услуга сохранения твоей машины и свобода с установкой приложений. Если понравиться то оптом час где-то полтиник будет стоить.
    Но мое имхо получишь печатную машинку. Пробросить USB порты на нее наверное не получиться.
    Если только еще дополнительно замитить впнку, чтобы отладку по tcp поднять.
    Но если комп будет использоваться хотя бы 4 часа в день за 9 мясяцев заплатишь цену б/у ноута, который тянет студию
    Ответ написан
    Комментировать
  • Где можно создать виртуальную машину чтобы использовать андроид студио на ней?

    @rPman
    С вероятностью 99.(9)% облачные сервисы, позволяющие запускать приложения android не предоставляют возможности отладки.

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

    При наличии хорошего канала (либо сервер прямо в твоем городе) можно так работать почти без лагов, я рекомендую linux машину с x2go сервером (клиенты есть по до все) это очень дешево (но не будет поддержки видеоускорителя ни в каком виде, но тут с эмулятором android и так проблемы)
    Ответ написан
    3 комментария