Я – выпускник специальности «Микроэлектроника и полупроводниковые устройства». За годы обучения я разработал множество устройств на микроконтроллерах, участвовал в конкурсах вместе со своей командой и являлся заведующим лабораторией встраиваемых систем. У меня есть мечта – создать в своей стране условия для разработки роботизированных систем и есть план её достижения, одним из пунктов которого является участие в подготовке большого количества профессионалов в этой области.
Я радуюсь, когда будущие инженеры создают свои устройства и расстраиваюсь, когда слышу, как кто-то говорит об использовании Arduino в них.
Это не первая моя статья на эту тему: у меня возникает желание написать такую сразу после прочтения фразы о безграничных возможностях платформы в DIY-топике на Хабре. У меня возникает желание написать об истинной цене деталей после прочтения статьи о покупке конструктора за $200 почти ничего не содержащего (уж простите, запамятовал где видел).
Дело тут совсем не в том, что я считаю, что Arduino – это плохая идея. Наоборот – благодаря платформе многие познали мир микроконтроллеров, узнали, что собрать небольшое прикольное устройство может даже человек без специального образования, с минимальными познаниями в программировании и с отсутствием познаний в электронике.
Благодаря Arduino увидело свет множество проектов, которые пылились в банках памяти мозга их авторов.
Честно признаюсь, я иногда и сам пользовался кодом, написанным для Ардуино (к примеру, фирма InvenSense производит модуль MPU6050, запустить нормально который получилось только у Jeff Rowberg).
Презираю я тех людей, которые, открыв для себя мир микроконтроллеров, не потрудились осмотреться в нём и тех, кто нагло наживается на подобных людях.
К нам в лабораторию заходил (и работал с нами) студент кафедры информационных технологий — поклонник Arduino. Человек тратил огромные деньги на покупку самих *дуин и модулей к ним. Я не без сожаления наблюдал, как будущий (я всё же надеюсь) создатель роботизированных систем не мог запустить ШИМ нужной частоты, хотя «лётных» часов работы с платформой он намотал немало.
Так вот, этот студент показал мне «измеритель уровня заряда батареи», или как-то так. Я специально нашёл его сейчас на ebay, где он называется «High Sensitivity Voltage Sensor Module -Arduino Compatible» и продаётся за $8.58. Вот он, на рисунке:
Кстати, центральный провод, который «+» — он просто висит в воздухе – всё сделано для максимального удобного подключения простого делителя напряжения, красная цена которому 2 цента за резисторы и 20 центов за разьём – это если в розницу покупать.
Это не единственный случай обмана нашего брата, ниже я приведу ещё несколько. Сейчас же, для любителей структурирования, я напишу основные недостатки Arduino.
На Hobbyking, где любителей различных моделизмов обманывают так-же как и в других магазинах любителей ардуино, продавался как-то обычный конденсатор, под видом какого-то фильтра. Не смог его сейчас уже найти. С трёхпиновым разьёмом, естественно. Всего за 3 доллара.
Arduino Compatible Mini Motor Speed counter Sensor AVR PIC – заменяется светодиодом и фототранзистором, подключающимися к центральному контроллеру и двадцатью строчками кода. Он не стоит 7.98.
2*4 Matrix Keyboard Push Buttons AVR ARM Arduino Compatible – это просто кнопки, которые можно купить по цене 10 штук за доллар.
Есть один девайс в мире, который я ненавижу больше чем Arduino – это mbed. Его разработчики взяли контроллер LPC1768 (есть ещё на LPC11U24), припаяли его на плату с двумя стабилизаторами (о качестве разводки платы я говорить не буду), вывели половину ног наружу (вторая половина никуда не подключена, что очень раздражает), написали онлайн недо-IDE (впрочем, чуть лучше, чем у Arduino, хоть и требует подключения к интернету) и продают его за $64. Простите, но это уже совсем.
Что делать, если вы, вдруг, решили перестать топтаться на месте, и начать изучать микроконтроллеры?
Вообще знаете, что странно? Среди пользователей Arduino есть даже те, кто презирают Apple за их «направленность нанедалёкого занятого-для-таких-мелочей юзера».
Я не хочу никого обидеть или переубедить. Но я буду рад, если хоть один человек, дочитавший статью до этого момента, поменяет Arduino на простой микроконтроллер – может быть, из него получится хороший разработчик встраиваемых систем в будущем.
Я радуюсь, когда будущие инженеры создают свои устройства и расстраиваюсь, когда слышу, как кто-то говорит об использовании Arduino в них.
Это не первая моя статья на эту тему: у меня возникает желание написать такую сразу после прочтения фразы о безграничных возможностях платформы в DIY-топике на Хабре. У меня возникает желание написать об истинной цене деталей после прочтения статьи о покупке конструктора за $200 почти ничего не содержащего (уж простите, запамятовал где видел).
Дело тут совсем не в том, что я считаю, что Arduino – это плохая идея. Наоборот – благодаря платформе многие познали мир микроконтроллеров, узнали, что собрать небольшое прикольное устройство может даже человек без специального образования, с минимальными познаниями в программировании и с отсутствием познаний в электронике.
Благодаря Arduino увидело свет множество проектов, которые пылились в банках памяти мозга их авторов.
Честно признаюсь, я иногда и сам пользовался кодом, написанным для Ардуино (к примеру, фирма InvenSense производит модуль MPU6050, запустить нормально который получилось только у Jeff Rowberg).
Презираю я тех людей, которые, открыв для себя мир микроконтроллеров, не потрудились осмотреться в нём и тех, кто нагло наживается на подобных людях.
К нам в лабораторию заходил (и работал с нами) студент кафедры информационных технологий — поклонник Arduino. Человек тратил огромные деньги на покупку самих *дуин и модулей к ним. Я не без сожаления наблюдал, как будущий (я всё же надеюсь) создатель роботизированных систем не мог запустить ШИМ нужной частоты, хотя «лётных» часов работы с платформой он намотал немало.
Так вот, этот студент показал мне «измеритель уровня заряда батареи», или как-то так. Я специально нашёл его сейчас на ebay, где он называется «High Sensitivity Voltage Sensor Module -Arduino Compatible» и продаётся за $8.58. Вот он, на рисунке:
Кстати, центральный провод, который «+» — он просто висит в воздухе – всё сделано для максимального удобного подключения простого делителя напряжения, красная цена которому 2 цента за резисторы и 20 центов за разьём – это если в розницу покупать.
Это не единственный случай обмана нашего брата, ниже я приведу ещё несколько. Сейчас же, для любителей структурирования, я напишу основные недостатки Arduino.
- Библиотеки. Я люблю библиотеки – я пишу свои классы и функции, или использую грамотно написанный код моих коллег – это существенно ускоряет мою работу. Библиотеки Arduino просты в освоении, но на этом их плюсы заканчиваются. К примеру, вы можете всю жизнь формировать задержки с помощью delay-функций и не иметь простейшего представления, как работает таймер на микроконтроллере — из таких минусов состоят все библиотеки Arduino.
Я имею в виду то, что таймер и другая периферия в микроконтроллере реализована так, чтоб компенсировать его однопоточность прерываниями. А люди тратят процессорное время на декрементацию неиспользуемой переменной.
Деление и использование чисел с плавающей точкой на восьмибитных контроллерах AVR – это то, к чему надо прибегать только в самых крайних случаях, когда без этого обойтись никак нельзя.
Строка в последовательный порт не посылается с помощью конечного автомата с множеством пустых циклов ожидания флага опустошения буфера в основном теле программы – это опять же пустое расходование ресурсов – ведь есть прерывания.
Да, в Arduino можно включить прерывания, но кто это делает?
На Хабре есть хорошая статья о том, как ускорить работу библиотек Arduino. Меня она, если честно, поразила тем, что даже работники оборонной промышленности скатились до работы с платформой, но дать общие понятия о скорости работы этих библиотек она может. - Среда разработки. Микроконтроллеры можно программировать в IAR, Eclipse, Keil и других, менее известных средах.
А IDE Arduino является кроссплатформенным и с подсветкой синтаксиса.
- Мощность. Причём, как аппаратная, так и рассеиваемая. Разработка любой встраиваемой системы начинается с выбора компонентов в зависимости от требуемых функций. Для моргания диодом Atmega328 (или 2560) – слишком мощно, а для создания системы реального времени с алгоритмами обработки изображений – слишком слабо.
- Расхолаживание программистов. Программирование микроконтроллера не требует особых навыков и умений, но потратить пару часов и изучить работу нескольких периферийных устройств, тем самым размяв свои мозги, всё же придётся. Зачем это делать, если можно написать что-то вроде analogRead и digitalWrite?
- Цена. Тут уже вопрос не только к производителям Arduino и клонов: цены на контроллеры AVR в целом завышены. К примеру, Atmega2560 обойдётся вам в $10. За такие же деньги можно купить два STM32F103. Так получилось потому – что людям лень учить другие контроллеры, а по этим кругом множество материалов и примеров.
На Hobbyking, где любителей различных моделизмов обманывают так-же как и в других магазинах любителей ардуино, продавался как-то обычный конденсатор, под видом какого-то фильтра. Не смог его сейчас уже найти. С трёхпиновым разьёмом, естественно. Всего за 3 доллара.
Arduino Compatible Mini Motor Speed counter Sensor AVR PIC – заменяется светодиодом и фототранзистором, подключающимися к центральному контроллеру и двадцатью строчками кода. Он не стоит 7.98.
2*4 Matrix Keyboard Push Buttons AVR ARM Arduino Compatible – это просто кнопки, которые можно купить по цене 10 штук за доллар.
Есть один девайс в мире, который я ненавижу больше чем Arduino – это mbed. Его разработчики взяли контроллер LPC1768 (есть ещё на LPC11U24), припаяли его на плату с двумя стабилизаторами (о качестве разводки платы я говорить не буду), вывели половину ног наружу (вторая половина никуда не подключена, что очень раздражает), написали онлайн недо-IDE (впрочем, чуть лучше, чем у Arduino, хоть и требует подключения к интернету) и продают его за $64. Простите, но это уже совсем.
Что делать, если вы, вдруг, решили перестать топтаться на месте, и начать изучать микроконтроллеры?
- На Хабре был цикл статей «STM32F1xx — лечимся от ардуинозависимости вместе» — статьи хорошие и достаточно понятные, жаль, что автор забросил написание новых статей.
- Всех новичков посылают на easyelectronics.ru, где товарищ DIHALT публиковал учебный курс по микроконтроллерам AVR.
- «Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С» С. Ф. Баррет, Д. Дж. Пак – супер книга, помогает понять основы программирования на C для микроконтроллеров. Единственная проблема – вы вряд ли достанете микроконтроллеры Freescale, поэтому примеры придётся самостоятельно портировать примеры на AVR, PIC, MSP430 или любой другой контроллер.
- Перед покупкой чего бы то не было для своих устройств, почитайте об этом хотя-бы в Википедии — возможно эту же деталь можно купить дешевле, если назвать её по-другому.
Вообще знаете, что странно? Среди пользователей Arduino есть даже те, кто презирают Apple за их «направленность на
Я не хочу никого обидеть или переубедить. Но я буду рад, если хоть один человек, дочитавший статью до этого момента, поменяет Arduino на простой микроконтроллер – может быть, из него получится хороший разработчик встраиваемых систем в будущем.