Какую Arduino выбрать? Перечисление всех плюсов и минусов каждой платформы

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

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

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

Введение

Торжественно открываю новый блог на Хабре, посвящённый Arduino! Блог об универсальном opensource-микроконтроллере Arduino, который будет интересен всем любителям микроэлектроники, самодельных гаджетов и всем, кто не боится взять в руки паяльник.


Arduino представляет собой линейку электронных блоков-плат, которые можно подключать к компьютеру по USB, а в качестве периферии — любые устройства от светодиодов до механизмов радиуоправляемых моделей и роботов. Программы для него пишутся на простом и интуитивно понятном си-подобном языке Wiring (c возможностью подключения сторонних библиотек на C/C++, например, для управления LCD-дисплеями или двигателями), компилируются и загружаются в устройство одной кнопкой, после чего вы тут же получаете работающий автономный гаджет. Никакого ассемблера, никаких лишних проводов и дорогущих деталей и программаторов — чистое творчество, включай и работай!

Подводя итоги

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

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

Доступный язык программирования обладает возможностью установки дополнительных компонентов и библиотек. Модули добавляют возможность работы с Java. Покупайте комплект Ардуино для начинающих и реализовывайте ваши задумки! Ваша фантазия безгранична, а Arduino позволит её воплотить.

Применение

После короткого рассказа друзьям и знакомым про Arduino («это типа электронного конструктора, микро-ЭВМ, в который можно загрузить любую программу и получить любое другое устройство») самый часто задаваемый вопрос «А зачем это всё?» или «Какая мне от этого выгода?» Скучные люди, не правда ли? Неужели среди ваших знакомых нет ни одного радиолюбителя, а может вы и сами радиолюбитель? Применение Arduino очень простое — не забавы ради, а развития мозга для. Интересно же линуксоидам ковыряться в коде ядра? Какая от этого польза? Почему бы вам не заняться «железным» (в противовес «софтовому») творчеством? Вот прямо сейчас рядом со мной сидит коллега-дизайнер и разбирается… с нейронными сетями. В общем что говорить, забыт дух технического творчества, забыты радиокружки и авиамодельные клубы. Все только сидят у своих компьютеров и сделать ничего путного в железе, кроме как воткнуть вилку в розетку, не могут :) Соберите свой веб-сервер, цветомузыкальную установку или прикольного робота! Сообщество любителей Arduino уже знает об успешных примерах: GPS-трекер с записью на SD-карту, простой аудиоплеер, Twitter-дисплей, электронные игры с дисплеем и тачскрином… Попробуйте купить радиодеталей и сделать что-то своё! Есть даже готовый набор для создания четырёхъядерного Arduino-кластера…

Что умеет Ардуино

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

Этих возможностей хватает для реализации сложных устройств, таких как беспилотные летательные аппараты, 3D-принтеры, роботизированные манипуляторы, радиоуправляемые машинки, лодки, вездеходы и т. д. Возможности Ардуино ограничены только воображением. Если вам будет не хватать возможностей Ардуино, то существуют более мощные микроконтроллеры такие как Ардуино Мега, NodeMCU, STM32, Wemos, Raspberry Pi, Orange Pi.

Технические характеристики

Arduino Diecimila представляет собой небольшую электронную плату (далее просто плата) ядром которой является микроконтроллер ATmega168. На плате есть: 14 цифровых входов/выходов, 6 из которых могут работать в режиме ШИМ (PWM) (а следовательно управлять аналоговыми устройствами вроде двигателей и передавать двоичные данные), 6 аналоговых входов (исходной информацией служат не логические 0/1, а значение напряжения), тактовый генератор на 16 МГц, разъёмы питания и USB, ICSP-порт (что-то вроде последовательного интерфейса для цифровых устройств), несколько контрольных светодиодов и кнопка сброса. Этого вполне достаточно, чтобы подключить плату к USB-порту компьютера, установить нужный софт и начать программировать.
Краткая спецификация

  • Микроконтроллер: ATmega168
  • Рабочее напряжение: 5 В
  • Входное напряжение (рекомендуемое): 7-12 В
  • Входное напряжение (пределы): 6-20 В
  • Цифровые порты ввода/вывода: 14 портов (из них 6 с ШИМ-сигналом)
  • Аналоговые порты ввода: 6 портов
  • Ток для портов: 40 мА
  • Ток для 3.3В источника: 50 мА
  • ППЗУ (Flash Memory): 16 KB (из них 2 Кб используются загрузчиком)
  • ОЗУ (SRAM): 1 Кб
  • ПЗУ (EEPROM): 512 байт
  • Тактовая частота: 16 МГц

Питание Питание платы осуществляется двумя способами: по кабелю USB (при этом никаких других ухищрений делать не нужно, используется в процессе отладки), либо по специальному разъёму вроде того, что у ноутбуков. В радиомагазине можно купить такой разъём и присоединить к нему аккумулятор или 9-тивольтовую батарейку типа «Крона». Источники питания можно менять перемычкой на плате.

ПОКУПКИ

Упаковка — коробка из плотного картона, обмотанная традиционным желтым скотчем. Ниток и кожзама нет, поэтому ничего не торчит и не пахнет. Внутри коробки все уложено довольно плотно, и без дополнительной защиты/амортизации. Плохо или нет — не знаю, доехало целым. Открытки для фанатов анпакинга
Arduino Uno

Что характерно, на плате надпись Arduino, хотя у продавца картинка c Funduino. С другой стороны, я все равно оригинал от копии не отличу. Да и не надо это — функционально они идентичны.

Ethernet-шилд Wiznet W5100, $9.87

Удобно, что он без проблем встает на посадочные места Uno. Что касается слота SD, то это вещь с одной стороны полезная, с другой стороны — для меня пока абстрактная, поскольку до ее рабочего применения я еще не дошел.

комплект из двух блоков по 4 реле, $13.88 за комплект

Как видите, реле уже с управляющим каскадом на борту, поэтому управляются Arduno напрямую, без дополнительных компонентов. Достаточно общей земли и цифрового выхода контроллера. Каждое реле можно использовать в режимах NO/NC (нормально разомкнут/замкнут). И у каждого реле — светодиод-индикатор включения.

Питать от выхода Arduino, несмотря на совпадение напряжения (5В) мне кажется не лучшей идеей, поскольку на одно реле заявлен ток порядка 80 мА. Так что если включить все четыре, то получится под 400 мА, а это для встроенного стабилизатора уже слишком. Резюме — управлять можно с Arduino, а вот для питания катушек реле нужен отдельный источник (ну, в том или ином виде).

Зачем мне 8 реле? Я не был уверен, что разберусь с управлением по радиоканалу, поэтому рассчитывал на то, что прицеплю реле к кнопкам существующих пультов ДУ. Восемь каналов на первое время должно было хватить. К тому же, под этот проект уже было готовое решение Eight Control.

комплект из двух пар приемник-передатчик, $5.99 за комплект

Очень спартанские вещи. Передатчик, если я правильно понял, состоит практически из резонатора и ВЧ-транзистора. В приемнике вместо транзисторов усилитель. Поставляются без антенн, так что пришлось заняться творчеством и сделать из проводочков требуемое. Для диапазона 433 МГц длина антенны — около 17,3 см. Для экономии места можно свернуть в трубочку, но это же ухудшит характеристики.

Передатчик:

По субъективному ощущению, передатчики неплохие. По крайней мере, при своих 5В питания они довольно надежно переключают все, что я хочу. И делают это явно лучше, чем штатные пульты розеток при 12В питания.

Приемники ничем выдающимся не отличаются. Сигнал «своего» передатчика принимают на отлично, но, скажем, метеостанцию четко видят только если беспроводной датчик положить рядом с антенной.

Приемник:

макетные проводочки мама-папа. Две «ленты» по 40 штук длиной по 20 см. $8.68 за комплект.

Преимущества и недостатки

  • Цена. В Москве Arduino Diecimila можно купить меньше чем за 1000 руб. При этом вы покупаете законченное (ну почти) устройство, не требующее дополнительного оборудования, такого, как дорогостоящие программаторы и отладочные стенды, и не требует платного софта.
  • Кроссплатформенность. Программное обеспечение Arduino работает на Windows, Macintosh OS X, Linux и других операционных системах, поскольку является открытым и работает на Java. Большинство микроконтроллерных систем ограничиваются Windows.
  • Простая среда программирования. Программная оболочка является простой в использовании для новичков, но достаточно гибкой для продвинутых пользователей, чтобы быстро достичь нужного результата. Особенно это удобно в образовательной среде, где студенты могут с лёгкостью разобраться с платформой, а преподаватели — разработать учебный курс и задания.
  • Открытый исходный код. Язык может быть расширен с помощью C++ библиотек, более продвинутые специалисты могут создать свой собственный инструментарий для Arduino на основе компилятора AVR C.
  • Открытые спецификации и схемы оборудования. Arduino основан на микроконтроллерах Atmel ATMEGA8 и ATMEGA168. Схемы модулей опубликованы под лицензией Creative Commons, поэтому опытные схемотехники могут создать свою собственную версию модуля для своих нужд. Даже сравнительно неопытные пользователи могут сделать макетную версию модуля, чтобы понять, каким образом он работает и сэкономить деньги.

Из недостатков отмечу, пожалуй, довольно убогую программную оболочку, низкую частоту процессора (чего на самом деле достаточно выше крыши и, кроме того, снижает энергопотребление) и малое количество «дисковой» (флэш) памяти для программ. При такой тактовой частоте и объёме памяти вряд ли получится собрать простой mp3-плеер. Однако вряд ли кто будет пытаться сделать на основе Arduino, скажем, управляемую крылатую ракету :) Кроме того, мне не удалось найти вменяемых исходников для сборки avr-gcc. Ну и само собой, придётся знать (или изучить в процессе) основы электроники на уровне «плюс/минус, резистор/конденсатор» — без этого точно никак.

Официальный сайт Ардуино

Изначально команда преподавателей, разработавших ардуино, открыли сайт arduino.cc. Но из-за разногласий, в коллективе произошел раскол в 2008 году. Отделившаяся часть создала другой сайт arduino.org. Это повлекло путаницу, из-за одинаковых названий для разных Ардуинок, программ и прошивок.

Только в 2022 году конфликт разрешился полностью. Так остался только один официальный сайт arduino.cc.

Официальный сайт Arduino на русском

Arduino — полностью открытая платформа. Разработчиком и производителем может стать абсолютно любой человек. А значит официальных сайтов существует не мало.

Постскриптум

В дальнейшем я постараюсь публиковать и другие заметки, расскажу, как собрать простые устройства при помощи Arduino и радиодеталей, купленных в магазине, а также опубликую демо-ролики готовых устройств. Ещё мне очень хотелось бы услышать мнение хабралюдей о данном явлении, узнать, о чём вы хотели бы почитать в следующих постах, перевести для данного блога ряд статей и быть может собрать небольшое русскоязычное сообщество фанатов Arduino. Да, и в связи с отсутствием нормального интернета дома не смогу ответить всем желающим сразу… приношу извинения.

Для чего нужно Arduino

Ардуино создавалось для обучения студентов и школьников электротехнике, программированию, радиоэлектронике, системам автоматизации. С помощью микроконтроллеров можно делать не только учебные проекты, но и действительно полезные устройства. На Arduino создаются проекты автоматизации, устройства умного дома, портативные метеостанции, роботизированные манипуляторы и множество других полезных устройств.

Первоначальная цель Ардуино — это обучение. Детям гораздо интереснее учиться, если они могут сразу применять новые знания на практике, да еще и увидеть и потрогать плоды своих трудов. Гораздо интереснее обучаться экспериментируя, а не слушая сухую теорию.

УПРАВЛЕНИЕ РАДИОВЫКЛЮЧАТЕЛЯМИ

Речь идет о радиовыключателях Livolo, приобретенных около года назад и замечательно описанных Online_buyer.
Я не особенно надеялся на собственный интеллект в решении этой проблемы, так что сначала попробовал самый простой способ.

Одна из идей была аналогична тому, как давным давно поступали с сигналами ИК-пультов. Т.е. записать сигнал в качестве звука и потом его воспроизводить. Но выяснилось, что Arduino не обладает достаточной производительностью для воспроизведения звука с необходимым качеством, хотя для платформы существует WAV-плеер и воспроизведение действительно работает (для этой цели очень кстати пришелся слот SD на Ethernet-шилде).

Поэтому я перешел к следующему пункту программы. А именно — решил попробовать повторить форму сигнала, не вдаваясь в декодирование. Исходил из того, что в пультах стоят PIC16F690, т.е. примерно такие же по производительности кристаллы, что и у меня в Arduino и обычный OOK/ASK передатчик (PT4450). Из этого я сделал вывод, что если правильно посчитать длину импульсов в команде, то шансы повторить ее довольно высоки: модуляция совпадает, скорость микроконтроллера, несмотря на высокоуровневое программирование, — тоже.

Так что подключил приемник через делитель к микрофонному входу ноутбука, запустил Audacity и несколько раз, с интервалом в 2-3 секунды нажал одну и ту же кнопку на пульте. Это было нужно, чтобы убедиться в идентичности команд, или понять, что команды меняются и без декодирования задача не решается.

Начало передачи определяется довольно легко даже при минимальном масштабе. Если чуть увеличить — уже можно прикинуть длину командного пакета: около секунды. Причем в отличие от пультов розеток, здесь нет четко выраженных пауз синхронизации, разделяющих повторяющиеся команды.

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

Видно, что в данном случае физический уровень представлен пятью различными импульсами (длинный вниз, короткий вверх, короткий вниз, средний вверх, средний вниз). Повторюсь, про логику я ничего не знаю, моя задача — имитация сигнала в радиоканале.

Поэтому на следующем шаге последовательно увеличивал каждый интересующий меня импульс и буквально на глаз определял его длительность по линейке Audacity. В качестве вспомогательного инструмента можно использовать ProtocolAnalyzer, но там сигнал выглядит немного по-другому, и длину самого короткого импульса с ним прикинуть не удалось. Зато по относительно длинным импульсам (от 300 мксек) есть шансы посмотреть ориентировочные величины, которые помогают при расшифровке в Audacity.

Здесь красным и синим выделены возможные границы импульсов, причем истина также может быть где-то между, потому что в цифровом сигнале фронты вертикальные, а здесь — косые из-за особенностей аналоговой передачи.

Для примера смотрим на длинный вниз, ориентируемся по красным линиям. Получается: 2,11680 — 2,11624 = 0,56 мс. Умножаем на 1000 и получаем 560 микросекунд. Я это округлил до 550. Кстати, округление — тоже на глаз, в пределах разумного. Т.е. 10 мксек можно округлить, а вот 50 — уже чревато тем, что принимающая сторона не поймет.

После того, как прикинул длины импульсов, записал их последовательность в «сыром» виде. То есть — если вверх короткий, значит так и пишем — “вверх короткий”, а не “1” или “не знаю, что за хрень такая, вроде и не ноль, и не единица”. В этом деле очень, кстати, помогает зубочистка, которой удобно указывать на импульсы, потому что иначе у меня просто глаза в кучку собираются при попытке пересчитать пики и спады.

Когда есть длины импульсов и их последовательность, написал простой код для Arduino, подключил передатчик, и передал сигнал. Одновременно записал его через описанную выше конструкцию в Audacity, чтобы сравнить два пакета — оригинальный Livolo и только что сгенерированный. Лампочка не среагировала, зато в Audacity стали заметны расхождения между длительностью импульсов, которые я снова подкорректировал на глаз.

В целом, такая корректировка может происходить до полного удовлетворения. Но мне повезло: буквально на второй итерации я оказался в полной темноте, т.е. свет выключился по сигналу уже моего передатчика, подключенного к Arduino.

Осталось только записать в Audacity сигналы всех нужных кнопок, переписать их последовательности импульсов и, в общем, все.

Вот тестовый код для Livolo с командами одиннадцати кнопок моего пульта (0 — 9 и «Выключить все»). Так как выключатели Livolo обучаются, думаю, можно их запросто обучить этим командам — нужно только перевести выключатель в режим обучения, и «нажать» нужную кнопку.

Рейтинг
( 1 оценка, среднее 4 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]