Arduino
Что такое Arduino
Arduino легко умещается на ладони и несет на себе микроконтроллер (очень слабенький компьютер), предназначенный для подключения разнообразных внешних устройств и управления ими с помощью программы. При необходимости устройства можно изготавливать самостоятельно, но в продаже есть уже готовые и приспособленные для Arduino:
- Датчики: температуры, влажности, освещенности, растяжения, угла поворота, задымления, и так далее.
- Исполнительные устройства: шаговые двигатели, двигатели со встроенными редукторами, сервоприводы, помпы для перекачки жидкостей, реле для управления внешними устройствами на 220 вольт, маломощные лазеры, дисплеи, и так далее.
- Модули связи: ZigBee, ethernet, bluetooth, смс.
С кратким видеообзором Arduino можно ознакомиться на канале Pro Hi-Tech (YouTube).
Для чего Arduino уместно использовать
Для быстрого прототипирования
То есть в ситуации, когда у вас есть идея какого-то электронного устройства, и вы хотели бы испытать или проверить эту идею на практике. Быстрота достигается за счет того что:
- Многие части будущего устройства можно найти в уже готовом виде, не тратить время и силы на их изготовление и сопряжение друг с другом.
- Микроконтроллер позволяет очень гибко экспериментировать с поведением (с логикой работы) будущего устройства, без перепайки электрической схемы.
Для низкого порога вхождения
То есть в ситуации, когда вы хотите изготавливать электронные устройства, но не имеете глубоких познаний в области электроники и не можете позволить себе услуги профессионального электронщика. Низкий порог вхождения достигается за счет того что:
- Есть готовая электрическая обвязка вокруг микроконтроллера и вокруг многих периферийных устройств. Изготовление стабильно работающей, не зависящей от внешней среды схемы требует опыта и квалификации: нужно обеспечить защиту от ЭМИ, учесть влияние топологии печатной платы (длину и ширину дорожек, их форму и так далее) и множество прочих мелких деталей. В случае Arduino эта задача частично решена за вас.
- Arduino SDK, среда для написания программ, очень высокоуровневая. Она скрывает от вас детали работы аппаратуры и тем самым упрощает воплощение вашей идеи.
- Можно найти много готовых библиотек для взаимодействия с периферией и много примеров программ.
Критика и альтернативы
Arduino hardware
Arduino как аппаратная платформа острой критики не вызывает. Тем не менее, имеются следующие претензии:
- Завышенная цена. Обычная AVR продается по цене cortex-a8 с гигом памяти.
- Расстояние между контактами таково, что не получится «просто воткнуть» Arduino в макетную плату.
- Привычка использовать готовые компоненты, вместо того чтобы пытаться делать всё самому и собирать на этом пути все возможные грабли, замедлит ваш рост как электронщика.
В качестве альтернативной аппаратной платформы можно рассмотреть STM Discovery Board.
Смотрите также:
Arduino software
Высокоуровневый Arduino SDK, самопальный язык программированияwut? и качество библиотек вызывают в сообществе неоднозначную реакцию: одни их резко критикуют, другие считают что изъяны Arduino software отчасти компенсируются возможностью получить конечный результат быстро и с меньшими усилиями на освоение.
Проблема с высокоуровневостью SDK состоит в том, что разработчик теряет понимание происходящих в действительности процессов. В некоторых случаях это ухудшает характеристики устройства и ограничивает круг решаемых задач. Например, в Arduino SDK есть функция analog output. Допустим, вы захотели использовать её для плавного управления яркостью мощного светодиода. Подключили транзистор, к нему светодиод, всё работает, всё правильно. При этом вы не догадываетесь, что если убрать конденсатор из фильтрующей цепи analog output, то на небольшой яркости ваше устройство будет жить от батареек в несколько раз (!) дольше, а транзистор почти что не будет греться. Но это было бы несложно понять, если такую задачу вы решали бы прямой работой с железом, а не через Arduino SDK.
В некоторых случаях Arduino SDK не удается запустить под управлением Linux.
Способ отказаться от Arduino software, потеряв в легкости освоения и по сути превратив свою Arduino в «просто плату с AVR-кой»:
- Использовать avrdude, avr-libc и общепринятый язык программирования — Си.
- Чтобы самому не париться с мейком и прочим, можно попробовать вот это: http://github.com/nekromant/antares. Оно почти стабильно, есть примеры для msp430, avr, stm32, 8051. Для STM32F1X есть все необходимые перифлибы, скоро будет и USB стек. Для AVR есть vusb.