Ivan Mishenin
январь 2016.
8172

Стоит ли начинать изучение Arduino, и какие ресурсы или книги наиболее подходят для этого?

Ответить
Ответить
Комментировать
1
Подписаться
6
4 ответа
Поделиться

Вообще я что скажу про Arduino, робототехнику и всё вот это, вокруг чего сейчас столько шума.

Arduino — отличная платформа для школьников с 6 по 9 класс. С единственной целью — заинтересовать и занять руки. Всё, точка, абзац. Это — максимально упрощённый и удешевлённый конструктор из готовых кубиков.

К сожалению, дешевизна и простота освоения приводят к тому, что ардуину тащат дальше 9 класса, и не просто дальше — а её тащат в институты, на хакатоны и в сколковские стартапы.

Как и любой конструктор, для работы Arduino не требует понимания внутренностей этих кубиков — ни софтовых, ни железных. Более того, эти кубики ещё и предельно упрощены и удешевлены — нет ОС, нет многозадачности, железо и датчики представлены предельно дешёвыми образцами, половина из которых тупо непригодна для какой-либо реальной задачи.

Зато курс по Arduino преподаватель может начать, почитав на выходных интернет, а стартап — представить первого робота через неделю после образования. Проблема в том, что это — тупиковый путь, Arduino не является платформой для обучения чему-либо, кроме использования готовых кубиков. Любое реальное обучение означает немедленный выход за пределы возможностей Arduino, а любой выход за них означает, что Arduino больше не нужно. Это просто автоматическое следствие, возникающее в силу примитивности самой платформы и имеющихся для неё средств. То есть, говоря короче, для детей старше 9 класса средней школы Arduino не нужно.

Между тем, Arduino продолжают тащить, тащить и тащить. Через институты и хакатоны, результатом которых являются бессмысленные псевдоспециалисты, единственным умением которых является умение быстрее других псевдоспециалистов собирать конструкции из детского конструктора.

Я не столь давно был в жюри хакатона в ведущем техническом вузе. Студенты четвёртого курса. Знаете, в скольких командах был хотя бы один человек, который умеет развести печатную плату или хотя бы раз в жизни писал программу под любой микроконотроллер, отличный от AVR + Arduino? В одной из пяти примерно. Зато все команды исправно лепили что-то там из готовых кубиков детского конструктора.

Потом они выпустятся и начнут становиться резидентами Сколково, чтобы их купил гугль за охулиард денег. Поглядите вокруг на стартапы, которые делают то, что они называют «робототехникой». Ткните палочкой в ближайший, покажите на HC-SR04 (ультразвуковой дальномер), стоящий на морде их робота, и попросите показать, как они в его прошивке делают фильтрацию ложных импульсов при отсутствии препяствий. Или на каком чипе собран драйвер излучателя и можно ли его перевести на питание от 3,3 В. Или как у них осуществляется защита канала приёмника от перегрузки в моменты работы излучателя.

Они же тупо не знают. Они не только не знают ответов — они даже не знают, что такие вопросы вообще существуют. Они этот HC-SR04 купили в «Амперке» и запустили с готовой библиотекой для Ардуины. Они никогда в жизни не задумывались, что там внутри и как оно работает.

Вот в этом вот главная проблема Ардуины. На ней не написано крупными буквами «ДЛЯ ДЕТЕЙ ОТ 10 ДО 15 ЛЕТ». Чтобы каждый преподаватель, притащивший это в технический вуз, и каждый стартапер, строящий на это робототехнику, знал, что вот это — уровень его развития.

32
-6

Альтернативы?

+5
Ответить

Браво!

+1
Ответить

Борисов В.Г. ,,Юный радиолюбитель''.

Многие сделали первый шаг в мир электроники 

с помощью этой книги.              Успеха!

+1
Ответить
Ещё 7 комментариев

Вы слишком категоричны. Ардуино прекрасно помогает при прототипировании. Тем более, вас никто не обязывает использовать детали из Амперки, или писать на wiring'е.

+2
Ответить

Альтернативы?

Смотря для чего. Для обучения:
1) начальный этап в школе — понятие алгоритмов, визуальные языки, например, Scratch
2) старшие классы — основы программирования, да хоть бы и Arduino
3) вузы — если мы говорим про профильные специальности, то студент должен уметь работать с современными микроконтроллерами и их периферией, прерываниями, операционными системами, уметь писать и отлаживать ПО на C/C++, понимать, как организуется многозадачность, спецкурс — сети, в т.ч. современные радиочастотные, т.е. LoRa, 6LoWPAN, узкополосные. Ассемблер, вопреки распространённому мнению, нужен только зачаточном виде — ну т.е. чтобы студент знал, что такое бывает, и представлял, как выглядит, без сдачи по нему экзамена. Человека, который это всё реально осваивает, работодатели расцелуют курсу к четвёртому гарантированно. Платформа, очевидно, должна чисто технически это всё позволять — то есть это Cortex-M или PIC32 с RTOS и нормальным отладчиком; наиболее распространённая и доступная — STM32 в виде платы Nucleo + RTOS mbed.

Для разработчика, чтобы быть на адекватном сегодняшнему дню уровне:
* Cortex-M, работа на C/C++ с железом и CMSIS, конкретный процессор неважен, но если STM32 — то желательно таки уметь написать именно с CMSIS, не только с StdPeriphLib (ну или понимать, что написано внутри SPL, что эквивалентно)

  • умение работать с RTOS — приветствуется. C++, многозадачность, треды, мьютексы и все остальные прекрасные вещи, которые современные RTOS принесли в нашу жизнь, лишними не будут

  • у разработчика «чисто AVR» или «чисто PIC» (или оба вместе) шансов всё меньше и меньше, потому как оно в индустрии практически умерло. ATMega практического смысла не имеет и осталась только в проектах допиливания прошивки китайского дрона или 3D-принтера, ATTiny и PIC16 живут в крошечных периферийных задачах или узкоспециализированных применениях, в массовой бытовухе массово уступая ещё более дешёвым контроллерам всевозможных фирм третьего эшелона.

Для любителя, чтобы как-то чего-то новое и современное, но непонятно что:

Возьмите любую платформу, которую поддерживает mbed, те же STM Nucleo на любом чипе, зашейте туда mbed и АААУАААЫААААЫАЫАУ ГДЕ Я ЖЕ БЫЛ РАНЬШЕ!!! Не пытайтесь сначала изучить весь даташит, не пытайтесь сразу вручную настроить тактовые частоты (это полстраницы сишного кода), не пытайтесь сделат что-то с нуля. Это, натурально, многозадачная операционная система. На трёхдолларовом микроконтроллере.

После первого шока можно уже изучать периферию STM32 — она там куда развесистее, чем у любого AVR, ковыряться в чём-то на уровне пониже, смотреть на другие RTOS — мы, например, используем RIOT, ну и вообще всячески играться.

Для поиграться с кубиками:

Есть масса платформ, куда более современных с точки зрения ПО и железа, чем 12-летней свежести Arduino. Возьмите ESP8266 и посмотрите на LUA и Node.JS, а потом, например, на DeviceHive. Возьмите STM32 и попробуйте отечественный MexBIOS. Возьмите микрокомпьютер на Linux — они сейчас есть в размере меньше спичечного коробка и по 15-20 долларов — и играйтесь с ним.

+2
Ответить

Ардуино прекрасно помогает при прототипировании

При прототипировании чего? Arduino — это 8-битный микроконтроллер, практически не применяемый ни в каких современных разработках, плюс невероятно убогая среда программирования, позволяющая писать одну портянку без даже минимальных средств отладки.

С тем же успехом можно Turbo Pascal под MS-DOS применять для прототипирования софта для современных компьютеров. Если не смущает, что прототип к конечному продукту никакого отношения не имеет — ну да, можно.

+3
Ответить

Подарил сыну (10 лет) набор Матрешка Z - полный восторг )) в любом случае интереснее Lego. Упомянутые в комментариях альтернативы обязательно рассмотрю на ближайшее будущее )

+1
Ответить

Олег, огромное спасибо за исчерпывающие ответы!

0
Ответить

Слишком безапелляционно. Естественно инженер-электронщик прототипирующий на Arduino это пошло, но вот так ограничивать 15 годами - это глупо. Все равно что ограничивать возрастом игру в Лего только потому что какие-то студенты-архитекторы делают из него эскизы для дипломной работы. Arduino - это именно продвинутый конструктор со всеми плюсами и минусами, начинать конечно с него вполне можно. Вы советуете альтернативы, но ни одна из этих альтернатив не дотягивает по легкости старта, размеру сообщества, количеству библиотек и готовых реализаций до Arduino, более того сама мысль начать изучать микроконтроллеры у многих возникает только благодаря известности Arduino. И да, Arduino это уже давно не только 8-битный AVR.

+1
Ответить

Ну... Автор безсловно в чем-то прав, но не на 100%. Умение программировать на ассемблере или на языке машинных кодов, не заменит объемов выполняемых при помощи языков с ООП. Про Ардуино спорить не буду, но ИМХО - за концепцией кубиков будущее.

0
Ответить
Прокомментировать

Этот ответ написан и доступен на

Этот ответ написан и доступен на Яндекс Кью

Робототехника - актуальная и набирающая обороты тема. Я бы рекомендовал целый цикл книг по ней. У издательства "Лаборатория знаний" есть серия книг, посвященная изучению Arduino. Она представлена, например, по этой ссылке. Начните с "Полного руководства для начинающих" - там теоретические основы, "Первые шаги" введут в курс дела на практике. А дальше книги делятся на разные подтемы. Думаю, когда прочтете первую книгу из серии, уже азы поймете.

3
0
Прокомментировать

Из книг я ничего особо посоветовать не могу. Советую каналы очень крутых ребят на YouTube, которые расставляют все по полочкам, доходчиво объясняют, а порой и идеи крутые подкидывают: AlexGyver, Э+М. Можно ещё посмотреть SuperCrastan, но чувак там больше делает упор на использование ардуино в своих гениальных (порой упоротых) изобретениях.

1
0
Прокомментировать

Хабр вам в помощь https://geektimes.ru/post/273858/
Вообще по этой теме куча материалов и сообществ, да хоть сам сайт разработчика содержит обучение - https://www.arduino.cc/

1
0
Прокомментировать
Ответить
Читайте также на Яндекс.Кью
Читайте также на Яндекс.Кью