Смарт-контроллеры, без которых не собрать умный дом
Контроллер — это мозг умного дома. Он позволяет добавлять, удалять и настраивать все устройства домашней сети.
Допустим, вы установили в квартире датчики движения, купили умные шторы и чайник. Без контроллера они не смогут работать вместе. Во‑первых, ни у одного из этих устройств нет дисплея или модуля Wi‑Fi — добавить их в сеть не получится. Во‑вторых, вы не сможете задать сценарий их применения: например, сделать так, чтобы утром датчик движения реагировал на ваше пробуждение, а следом автоматически открывались шторы и включался чайник.
Контроллер полностью управляет вашим умным домом. Информация со всех устройств стекается в него, что облегчает вам задачу. Вместо того чтобы «общаться» с каждым отдельным датчиком или прибором, вы можете делать это через привязанное к контроллеру приложение.
Какие бывают контроллеры
Разброс очень велик: от промышленных устройств, устанавливать и настраивать которые могут лишь специалисты, до компактных коробок с приветливым и понятным интерфейсом. Первые пригодятся на больших и сложно спроектированных объектах, например на производстве или в загородном доме. Вторых вполне хватит для обычных квартир.
Главный критерий при выборе контроллера — протокол беспроводной связи, по которому он работает. Wi‑Fi для этих целей, как правило, не подходит. Модуль слишком энергозатратен — приборы и датчики не смогут с ним подолгу работать автономно, их постоянно придётся подзаряжать. Кроме того, сама технология довольно дорогая, и её использование повысило бы стоимость устройств. Также у Wi‑Fi могут быть проблемы с безопасностью и стабильностью покрытия.
Поэтому чаще всего встречаются контроллеры с протоколами Z‑Wave и ZigBee. Принцип работы у них схож: в обоих ячеистая схема сети, когда каждое устройство умного дома становится своеобразным передатчиком. Это увеличивает зону покрытия и делает сеть стабильнее. Если какой‑то элемент выходит из строя, его функции по передаче данных просто перераспределяются между остальными. Так как команды идут не по строго определённому маршруту, ниже риск, что они не дойдут до адресата.
- Z‑Wave — закрытая технология. Поддерживающие её устройства очень строго отбираются и лицензируются. С ней можно быть абсолютно уверенным, что если вы купили, например, лампочку и датчик освещённости от разных производителей, то они будут совместимы. Но и здесь есть один негативный момент. В России Z‑Wave работает на частоте 869 МГц, а в других странах у сети свои частоты. Это значит, что если вы купите умное устройство, предназначенное для работы в другой стране, здесь оно функционировать не будет. Так что стоит заранее убедиться, что ваш прибор сертифицирован для РФ.
- ZigBee — открытый протокол, то есть использовать его может кто угодно и в разных вариациях. Это привело к тому, что разные производители умных устройств стали создавать свои ZigBee‑сети, никак не пересекающиеся с чужими. Например, умные дома от IKEA, Xiaomi и Philips используют один и тот же протокол, однако между собой несовместимы. Кроме того, ZigBee работает на максимально загруженной частоте 2,4 ГГц, и это может приводить к многочисленным помехам в обмене данными между устройствами.
Контроллеры могут работать с одним из протоколов, а лучшие из них — совмещать сразу несколько. Например, вы покупаете контроллер и устройства умного дома, которые вам нужны. Желательно, чтобы они работали по одному протоколу (а в случае с ZigBee ещё и были от одного производителя). К контроллеру подсоединяетесь со своего смартфона через Wi‑Fi, затем в приложении прикрепляете к сети все свои умные устройства — с контроллером они будут работать по отдельному протоколу. И далее уже создаёте нужные сценарии.
На какие контроллеры стоит обратить внимание
Fibaro Home Center 2
В Telegram-канале «Лайфхакер» только лучшие тексты о технологиях, отношениях, спорте, кино и многом другом. Подписывайтесь!
Источник
Контроллеры для LCD
+60°C Габариты контроллера: 139 x 58 x 17 мм Поддерживаемые дисплеи: G065VN01 V2 Экранное меню (OSD): Есть Пульт ДУ: Опция Документация на контроллер в PDF: http://belka.pro/PDF/controller/M.NT68676.2A.pdf
Контроллер HDMI RTD2556_eDP_1H для LM156LF3L01
Контроллер HDMI RTD2556_eDP_1H для N133HSE-EA3
Контроллер HDMI/DVI/VGA M.NT68676.2A для MV270FHM-N20
Контроллер M.NT68676.2A в сборе для G084SN05 V8
250мА Рабочая температура: 0
+40°C Температура хранения: -10
+60°C Габариты контроллера: 139 x 58 x 17 мм Поддерживаемые дисплеи: 8.9
55" до 2048*1152 Экранное меню (OSD): Есть Пульт ДУ: Опция Документация на контроллер в PDF: http://belka.pro/PDF/controller/M.NT68676.2A.pdf
Контроллер M.NT68676.2A в сборе для G084SN05 V9
250мА Рабочая температура: 0
+40°C Температура хранения: -10
+60°C Габариты контроллера: 139 x 58 x 17 мм Поддерживаемые дисплеи: 8.9
55" до 2048*1152 Экранное меню (OSD): Есть Пульт ДУ: Опция Документация на контроллер в PDF: http://belka.pro/PDF/controller/M.NT68676.2A.pdf
Контроллер M.NT68676.2A в сборе для G104SN03 V2
250мА Рабочая температура: 0
+40°C Температура хранения: -10
+60°C Габариты контроллера: 139 x 58 x 17 мм Поддерживаемые дисплеи: 8.9
55" до 2048*1152 Экранное меню (OSD): Есть Пульт ДУ: Опция Документация на контроллер в PDF: http://belka.pro/PDF/controller/M.NT68676.2A.pdf
Контроллер M.NT68676.2A в сборе для G104STN01.0
+80°C Температура хранения LCD: -30
+80°C Габариты ЖК дисплея (LCD): 243×184мм Толщина ЖК дисплея (LCD): 7мм Вес ЖК дисплея (LCD): 365г Размер коробки: 477×290×360 мм Количество в коробке: 20 Вес коробки, кг: 11,5кг
Контроллер M.NT68676.2A в сборе для G190ETN01.0
250мА Рабочая температура: 0
+40°C Температура хранения: -10
+60°C Габариты контроллера: 139 x 58 x 17 мм Поддерживаемые дисплеи: 8.9
55" до 2048*1152 Экранное меню (OSD): Есть Пульт ДУ: Опция Документация на контроллер в PDF: http://belka.pro/PDF/controller/M.NT68676.2A.pdf
Контроллер M.NT68676.2A в сборе для LQ150X1LG92
250мА Рабочая температура: 0
+40°C Температура хранения: -10
+60°C Габариты контроллера: 139 x 58 x 17 мм Поддерживаемые дисплеи: 8.9
55" до 2048*1152 Экранное меню (OSD): Есть Пульт ДУ: Опция Документация на контроллер в PDF: http://belka.pro/PDF/controller/M.NT68676.2A.pdf
Контроллер M.NT68676.2A в сборе для M101GWT9
+50°C Температура хранения LCD: -20
+60°C Габариты ЖК дисплея (LCD): 236.0×174.3 мм Толщина ЖК дисплея (LCD): 7.7 мм Вес ЖК дисплея (LCD): 400±10г Размер коробки: 448x402x350 мм Количество в коробке: 30 Вес коробки, кг: 13 Документация на LCD в PDF: G104SN03 V.2.pdf
Контроллер M.NT68676.2A в сборе для M190PW01 V0
250мА Рабочая температура: 0
+40°C Температура хранения: -10
+60°C Габариты контроллера: 139 x 58 x 17 мм Поддерживаемые дисплеи: 8.9
55" до 2048*1152 Экранное меню (OSD): Есть Пульт ДУ: Опция Документация на контроллер в PDF: http://belka.pro/PDF/controller/M.NT68676.2A.pdf
Контроллер M.NT68676.2A в сборе для M270HGE-L30
250мА Рабочая температура: 0
+40°C Температура хранения: -10
+60°C Габариты контроллера: 139 x 58 x 17 мм Поддерживаемые дисплеи: 8.9
55" до 2048*1152 Экранное меню (OSD): Есть Пульт ДУ: Опция Документация на контроллер в PDF: http://belka.pro/PDF/controller/M.NT68676.2A.pdf
Контроллер M.NT68676.2A в сборе для MV270FHM-N20
250мА Рабочая температура: 0
+40°C Температура хранения: -10
+60°C Габариты контроллера: 139 x 58 x 17 мм Поддерживаемые дисплеи: 8.9
55" до 2048*1152 Экранное меню (OSD): Есть Пульт ДУ: Опция Документация на контроллер в PDF: http://belka.pro/PDF/controller/M.NT68676.2A.pdf
Контроллер PCB800099 V.9 в сборе для G084SN05 V9
250мА Рабочая температура: 0
+40°C Температура хранения: -10
+60°C Габариты контроллера: 90.6 x 65.6 x 12 мм Поддерживаемые дисплеи: 7
22" до 1920*1080 Экранное меню (OSD): Есть Пульт ДУ: Опция Автопереключение на заднюю камеру: Опция Документация на контроллер в PDF: http://belka.pro/PDF/controller/TY2662-V1.pdf
Контроллер PCB800661 V.9 в сборе для B101EW05 V.1
250мА Рабочая температура: 0
+40°C Температура хранения: -10
+60°C Поддерживаемые дисплеи: 7
22" до 1920*1080 Экранное меню (OSD): Есть Пульт ДУ: Опция
Контроллер RTD2261V1.0 в сборе для G170ETN02.1
+50°C Температура хранения LCD: -20
+60°C Габариты ЖК дисплея (LCD): 358.5×296.5 мм Толщина ЖК дисплея (LCD): 18.0 мм Размер коробки: 426x270x375 мм Количество в коробке: 8 Вес коробки, кг: 18,5
Источник
Микроконтроллер + компьютер + своё программное обеспечение
Своё устройство на микроконтроллере я начал «пилить» еще в начале 2019-го. Тогда я даже не думал, что захочу связать его с компьютером, но устройство постоянно эволюционирует, и вот настала пора. Причём нужно не просто связать, а написать своё фирменное ПО, которое будет управлять устройством через USB. С подобной задачей я столкнулся впервые, а беглый поиск в сети выдал такие результаты, после которых появилось ещё больше вопросов и каша в голове. Про свой опыт решения данной задачи «От» и «До» делюсь в этой статье.
Вступление
О моём устройстве расскажу немного позже, сохраним интригу. Предвидя вопрос типа «В чём смысл этого топика?», отвечу, что простого и законченного решения в сети я так и не нашёл. Под простым и законченным решением я подразумеваю дуэт микроконтроллера (далее МК) с компьютером (далее ПК) и заготовки кода с функцией автоматического коннекта, а также мега-функцией «поморгать светодиодом». Пришлось повозиться и собрать все элементы мозайки в единую картину, которую я решил оформить в статью. Надеюсь, она поможет новичкам в вопросе «Как связать микроконтроллер с компьютером через USB» без лишних заумных слов. Уточню, что программированием занимаюсь для удовольствия, поэтому не претендую на образцово-показательный код. Это всего-лишь мой личный опыт, и вам судить, дорогой читатель, насколько он полезен.
Постановка задачи
Обеспечить двусторонний обмен данными между МК и ПК через USB. Никаких плат и софта типа Arduino в готовом решении мы не используем.
Сделать так, чтобы ПО компьютера автоматически определяло наше устройство при подключении его к любому USB-разъему.
USB-устройство должно отображаться в диспетчере устройств под нашим собственным именем (например, под именем нашей компании).
Примечание. Последний пункт я не стал раскрывать в рамках этой статьи, потому что бесконечную простыню текста и картинок читать утомительно. Оставлю материал для будущей статьи, если тема окажется интересной.
Выполнив это, мы получим огромную власть над нашими устройствами. Однако, есть ограничение — скорость передачи данных будет небольшой. Но отправка несложных команд, текста, или легких файлов будет работать быстро.
Что нужно уметь/иметь
Знать C++ хотя бы на начальном уровне.
Уметь работать с любым МК (главное, чтобы у него был интерфейс UART).
Собственно сам МК (я взял Atmega328, т. к. она используется в моём проекте).
Макетная плата и несколько простых радиодеталей для сборки тестовой схемы.
Плата USB/UART преобразователя (о ней скажу ниже).
Как вы понимаете, информации предстоит много, и здесь не будет объяснения того, как прошивать МК или какой компилятор выбрать. Скажу только, что для прошивки я использовал Arduino IDE, а для ПО компьютера — Visual Studio C++ 12.
Не совсем USB-устройство
Проект, для которого я делаю канал связи с ПК, называется «Teslafon». Это название музыкальных катушек тесла с микроконтроллерным управлением (описание их работы тут). Пока катушка является автономным устройством и ни к чему не подключается, но недавно мне пришла идея сделать управление молниями с ноутбука. Несмотря на то, что тема специфическая, в сети можно найти примеры даже на неё, но там всё довольно индивидуально и я решил пойти своим путём.
Так как слона лучше есть по частям, я раздробил задачу на несколько подзадач, первая из которых — тема данной статьи. Но не подумайте, что я хочу подключить катушку тесла напрямую к ноутбуку (мой ноутбук мне дорог). Катушка тесла это генератор адских помех и наводок, а значит между ней и ноутбуком должно быть не только существенное расстояние, но и промежуточное устройство-изолятор на несколько мегавольт. Его-то я и хочу подружить с ПК. Вдаваться в подробности катушек тесла не буду, это уже другая история. Просто скажу, что мы сделаем универсальную заготовку USB-устройства, которую вы сможете использовать в своём проекте, а я в своём.
Теория
Сперва я думал, что всё будет проще простого. Возьму библиотеки типа V-USB и libusb, подключу МК напрямую к USB-разъему, быстренько найду готовый пример кода и будет мне счастье. Но «быстренько» не получилось. Оказывается, там много заморочек — например, дополнительная библиотека кушает ресурсы МК, а моя прошивка предполагается довольно ёмкой. Мне хотелось использовать встроенные аппаратные фишки по максимуму, чтобы не занимать память. Кроме того, настройка всех этих библиотек требует опыта. Рабочая частота МК подойдет не абы какая, а та, что задал автор библиотеки. Но реальный шок был тогда, когда я узнал, что для моего устройства нужны PID (Product ID) и VID (Vendor ID), за которые сегодня надо заплатить, на секундочку, 3500$ организации usb.org. Ох, не туда меня завели поиски, не туда. Наконец до меня дошло, что к чему.
Оказалось, вопрос не в том, как передать данные через USB, а как передать данные через виртуальный COM-порт! Передача данных через COM-порт намного проще, хотя это устаревший вид портов. А раз так, то реального COM-порта у нас не будет, только виртуальный. Физически же мы по-прежнему будем использовать привычный USB. Виртуальный COM-порт будет предоставлен драйвером, о котором мы поговорим ниже. А еще к устройству добавится некая микросхема-посредник, которая снимет целый ворох проблем. Взгляните на схему:
Рис. 1 — Связующие звенья между хостом и микроконтроллером
Между ПО хоста и нашей прошивкой есть целых 4 звена. С аппаратным UART-ом всё понятно, что же с остальными?
Здесь роль посредника будет выполнять микросхема по кличке CP2102, у которой есть также куча аналогов (CH340, PL2303, FT232RL и другие). Её основная задача — преобразование интерфейса UART в USB и обратно. Как это делается, нам не важно, это просто чёрный ящик, имеющий вход и выход. CP2102 используется в некоторых программаторах, возможно на вашем она тоже есть, так как довольно распространена. Изучать распиновку этой микросхемы тоже не будем, потому что есть готовые платки с ней же и со всей обвязкой. И это хорошо, ведь наша задача — чем проще, тем целее нервы. Пример двух платок с CP2102 от компании Silicon Labs:
Рис. 2 — USB/UART преобразователи в разных формфакторах
Купить подобную железку можно, например, здесь. Но чтобы не ждать, можете поискать в местных радиомагазинах, товар не редкий, думаю, найдёте. Далее я начал изучать, как применить этот USB/UART преобразователь. Тут тоже всё обошлось — производитель железки уже позаботился о нас и написал драйвер для контроллера USB (см. рис. 1). Этот драйвер и будет эмулировать виртуальный COM-порт. Вы спросите, а где же брать PID и VID для нашего устройства? Ответ — их предоставляет тот же Silicon Labs бесплатно.
Круто, теперь можно увидеть всю последовательность действий:
Покупаем USB/UART преобразователь и собираем тестовое устройство;
Скачиваем и устанавливаем драйвер;
Пишем прошивку МК;
Макетная плата
Помните, что наше устройство кроме моргания светодиодом ничего пока уметь не будет? Чтобы не было скучно, давайте сделаем три светодиода:
Зелёный — будет гореть, пока связь с хостом установлена (не путать с физическим подключением к порту).
Красный — загорается или гаснет по нажатию ‘r’ на клавиатуре.
Белый — загорается или гаснет по нажатию ‘w’ на клавиатуре.
Нажатие ‘x’ на клавиатуре будет разрывать сеанс передачи данных, гасить зелёный светодиод и завершать работу ПО хоста. Но я забежал немного вперед, вернёмся к схеме устройства:
Рис. 3 — Схема тестового устройства
Думаю, тут всё понятно. Я даже не стал ставить подтягивающий резистор R1, хотя в реальной схеме он нужен. Сейчас нам главное получить минимально рабочую модель. Вот так выглядит макетка:
Рис. 4 — Макетная плата
Кстати, очень удобно использовать витую пару в качестве соединительных проводков, они дешёвые и нарезать их можно разной длины. В жгуте из 5 проводов используются только 4, зелёный провод идёт с контакта DTR преобразователя на макетку и никуда не подключается (оставлен про запас). Atmega328 в корпусе DIP-28 прошла огонь, воду и трубы, но ещё жива — когда-то она была подопытным кролем в создании первой музыкальной катушки тесла. Кварцевый генератор я не ставлю, а использую встроенный на 8 МГц. Для удобства я сделал преобразователь съёмным и слегка подогнул вверх вывод 3.3V, чтобы избежать неправильного подключения.
Примечание. Если у вас другой МК, подключите все пины в соответствии с его даташитом и схемой на рисунке 3.
Установка драйверов
Наш USB/UART преобразователь уже вставлен в ПК, открываем диспетчер устройств и видим:
Рис. 5 — USB/UART преобразователь в диспетчере
Мы могли бы сделать своё красивое имя устройству, но я решил, что это будет тема другой статьи, т. к. материала получается слишком много. Пока ограничимся тем, что есть. Качаем готовый драйвер, устанавливаем и переходим к программированию.
Программное обеспечение хоста
Итак, схема имеет три светодиода: зелёный, красный и белый. Логика работы будет такая: запускаем программу на ПК, если девайс не подключён, то программа будет ждать, пока мы его не подключим. При подключении автоматически будет осуществлён коннект с устройством и загорится зелёный светодиод. Клавиши «w» и «r» будут управлять белым и красным светодиодом соответственно. При вводе «x» произойдёт разрыв связи с нашим устройством и зелёный светодиод погаснет. Как видите, все очень просто.
Сперва я написал программу в процедурном стиле, но если захочется работать сразу с двумя и более устройствами, то такой подход не годится. К тому же, по мере роста программа станет нечитабельной. И тогда я переписал код в стиль ООП. Прошивку МК наоборот, оставим в процедурном стиле, она будет маленькая и простая, оборачивать ее в классы не вижу смысла.
Создадим класс устройства, но на самом деле это будет скорее класс COM-порта, т. к. в нём будут его настройки, функции подключения/отключения и передачи данных. Начало файла tesladevice.h:
Постараюсь максимально комментировать прямо в коде, но некоторые моменты буду выносить отдельно. Так как изначально номер порта мы не знаем, подготовим строку portName из 7 двухбайтовых символов типа wchar_t , где будем перебирать имена в формате «COMxxx». В Windows по умолчанию доступно 256 виртуальных ком-портов, и мы будем перебирать все, пока не найдем своё устройство. Структура dcbParams включает основную массу настроек порта (разбирать её не будем, если интересно, можете загуглить сами). Структура ctParams будет содержать настройки таймаутов, её описание тоже опустим. Далее объявим публичные и приватные функции:
Разберём каждую из них подробно. Функция Connect() самая большая, она делает всю черновую работу по подключению к устройству. Работает она так: запускается цикл перебора всех 256 возможных портов и пробует подключиться к каждому. Если подключение удалось, устройству посылается приветствие, затем в течение заданного таймаута ожидается приветствие в ответ. Если оно не поступило, значит устройство не наше и связь с ним прекращается. Если приветствие поступило, значит устройство распознало своего «хозяина» и приготовилось к работе (при этом загорается зелёный светодиод). Функция Connect() , видя знакомый ответ, завершается и отдает истину в основную программу. Происходит всё это быстро, так как обычно львиная доля портов из 256 возможных просто не существует. Такой способ идентификации устройства мне кажется надёжным.
В коде я дал исчерпывающие пояснения, останавливаться на них не буду. Единственный вопрос, который может возникнуть — как отреагируют другие устройства (если они подключены) к вмешательству со стороны нашей программы? Скорее всего, никак. Я подключал одновременно несколько разных устройств, никаких проблем не было.
Теперь разберём приватную функцию helloFrom() . Чтобы на 100% отличить наше устройство от чужого, будем принимать от него кодовое слово, которое другим устройствам неизвестно. Я взял слово «teslafon», вы можете придумать своё. Вот как это выглядит в коде:
Здесь функция ReadFile() ждёт ответа от устройства в пределах заданных таймаутов, хранящихся в структуре ctParams . Если ответа нет или он не совпадает с ожиданиями, helloFrom() выдаёт false . Далее напишем SendData() , которая вступает в работу после подключения к устройству:
Для простоты мы отправляем один байт, но если надо отправить более сложные данные, можно несколько раз вызвать SendData() в цикле. Следующая функция GetPortNum() просто возвращает номер порта, к которому мы подключились. Конечно, можно было сделать переменную portNum публичной, но правила хорошего тона велят закрывать данные класса от всеобщего доступа:
И последняя функция нашего класса просто завершает работу с портом, возвращая результат операции:
Я решил сэкономить на файле tesladevice.cpp и все тела функций разместил в tesladevice.h. Вы можете разделить их или оставить как есть.
Теперь напишем основное тело нашего хоста. Так как это тестовый проект, я сделал его в консольной программе:
На этом работа с хостом закончена. Это всего лишь заготовка, но вполне рабочая, из которой можно слепить что душе угодно. Осталось написать прошивку для USB-устройства и переходить к долгожданным тестам.
Прошивка
Как уже говорилось выше, моё устройство будет работать на Atmega328, а значит и код я буду строчить для неё. Эксперимент проводился на частоте встроенного генератора 8 МГц, с другими частотами я не работал. В коде используются регистры МК напрямую и глобальные переменные, и вообще попахивает хаосом, но повторюсь — это пример, набросок, может быть не самый лучший, но рабочий. Если у вас другой камень, вам всё равно придется изменить инициализирующую часть кода, так что можете его оформить как вам нравится. Вот мой полный скетч для Arduino IDE:
Ну вот, проделана большая работа. Теперь всё компилируем, прошиваем устройство, втыкаем его в ПК и с замиранием сердца запускаем программу.
Тест всего проекта
Если всё сделано правильно, программа выведет это:
Рис. 6 — Результат
Дальше вводим разные буквы и жмём Enter. Результат работы я продемонстрирую на видео:
Если у вас всё это добро не запускается или запускается криво, придется попыхтеть над отладкой. По крайней мере, я проверял эту систему на трёх разных компьютерах и на двух Windows (7 и 10), и результатами остался доволен. Желаю и вам удачного запуска.
Выводы
Статья получилась объёмной, но некоторые детали так и остались не раскрыты. Однако, поставленные задачи выполнены. Только представьте, какие штуки теперь можно делать, имея такой инструмент. Например, можно сделать пульт ДУ для ПК, или обработку разных датчиков умного дома. Можно придумать и более нестандартные и опасные штуки, как в моём случае — управление катушкой тесла. И даже если кто-нибудь скажет, что всё уже давно придумано, я соглашусь. Наверно, есть и более изящные решения задачи, но мне интересно (а порой и необходимо) разобраться во всём самому. Ведь именно так рождается новое. Надеюсь, что дорогой читатель меня поймёт. Удачных всем разработок!
Источник
Arduino или Raspberry Pi: как выбрать контроллер для проекта
Итак, у вас есть замысел проекта, но вы сомневаетесь, какую плату выбрать в качестве мозга устройства? Попробуем помочь вам определиться.
Если вы просто хотите освоить схемотехнику, программирование, Linux и конкретной цели кроме обучения пока нет — возможно, лучшим выбором станет один из готовых обучающих наборов.
Но если вы уже освоились, и хотите сделать конкретный проект, этот гид поможет определиться с платформой для разработки и сделать взвешенный выбор.
Arduino или Raspberry Pi? Микроконтроллер или микрокомпьютер?
Все платы для разработки можно разбить на две большие категории:
Платы на микроконтроллере (MCU, MicroController Unit) | Одноплатные компьютеры (SoC, System on a Chip) |
Типичный представитель — Arduino | Типичный представитель — Raspberry Pi |
Микроконтроллеры могут одновременно исполнять всего одну задачу и отлично с этим справляются. А одноплатные компьютеры исполняют программы в рамках операционной системы (чаще всего Linux), обладают большей производительностью и широкими мультимедийными возможностями.
Существуют также гибридные платформы, где на одной плате расположен и микроконтроллер, и процессор. Идея в том, чтобы оставить мощному процессору сложные задачи: выход в сеть, обработку медиа, а на микроконтроллер возложить функцию точного управления приводами, реле, сенсорами и другой периферией. Вы можете создать гибрид и сами, если возьмёте по одной плате из каждого семейства. У всех них найдутся общие интерфейсы, через которые можно организовать их взаимодействие.
И в одном, и в другом лагере можно найти специализированные платы, которые сильно выделяются среди прочих какой-нибудь особенностью, но сравнить возможности среднестатистических микроконтроллеров и компьютеров поможет таблица.
Итак, в зависимости от своей задачи вы определились, нужен ли вам микроконтроллер или компьютер. Как решить какая именно плата подойдёт лучше всего?
Так как нет большого смысла сравнивать лицом к лицу микроконтроллеры и микрокомпьютеры, далее мы отдельно приведём преимущества и недостатки конкретных плат в рамках своего семейства.
Сравнение микроконтроллеров
Если рассматривать микроконтроллерные платы в отрыве от задач вашего проекта, сложно в двух словах объективно описать преимущества и недостатки разных платформ. То, что в общем является недостатком, в вашем устройстве может не играть роли, и наоборот.
Мы попытались сравнить платы, отталкиваясь от возможностей флагманской DIY-платформы Arduino Uno, так как платы именно этого семейства дали невероятный пинок развитию хобби-электроники во всём мире. Разные компании выпускают модули, сенсоры, платформы, дополнения с шильдами «Arduino compatible», «Designed for Arduino» и т.д. За этими словами стоит электронная и программная совместимость в первую очередь с Arduino Uno, а уж затем со всем остальным.
Как правило, с помощью ухищрений или дополнительных компонентов можно подключить что угодно и к чему угодно. Но ведь вам хочется сосредоточиться на своём проекте, а не на борьбе с электроникой? Поэтому волей-неволей хочется сравнить любую плату на микроконтроллере именно с Arduino Uno. Так и сделаем.
Arduino Uno
Процессор на 16 МГц, 32 КБ постоянной и 2 КБ оперативной памяти, 20 портов ввода-вывода, 6 аналоговых входов, 6 каналов ШИМ, 2 аппаратных прерывания, может, и не впечатляют, но без балласта в виде операционной системы и интерпретаторов они позволяют решать практически любые задачи по точному дирижированию множеством сенсоров и исполнительных устройств.
Плюсы Arduino Uno
- Тонны документации, уроков и готовых библиотек, огромное сообщество, работа из простой в освоении среды Arduino IDE с языком Arduino C++. Всё это просто не даст вам возможности сказать «не осилил».
- Родное напряжение в 5 вольт, которое является стандартом де-факто, и колодки для установки плат расширения, аналоговые входы, всевозможные аппаратные интерфейсы позволяют подключить практически любую периферию, сенсоры и исполнительные устройства.
Arduino Leonardo
Та же Arduino Uno, но с другим, слегка улучшенным микроконтроллером.
Плюсы Arduino Leonardo
- Большее количество аналоговых входов (12 против 6) для сенсоров, больше каналов ШИМ (7 против 6), больше пинов с аппаратным прерыванием (5 против 2), раздельные независимые Serial-интерфейсы для USB и UART.
- Arduino Leonardo может притворяться клавиатурой или мышью (HID-устройством) для компьютера. Это позволяет легко сделать своё собственное устройство ввода.
Минусы Arduino Leonardo
- Из-за небольших отличий распиновки от Arduino Uno возможна несовместимость с некоторыми платами расширения. Такие случаи, однако, редки, и в нашем магазине мы явно их прописываем.
Iskra Neo
Та же Arduino Leonardo, но произведённая нами, в России.
Плюсы Iskra Neo
- Заметно дешевле оригинала.
Arduino Mini
Та же Arduino Uno, но в другом форм-факторе.
Плюсы Arduino Mini
- Компактная. Всего 30×18 мм.
Минусы Arduino Mini
- Из-за форм-фактора нельзя без ухищрений устанавливать платы расширения Arduino. Предполагается соединение с дополнительными модулями проводами и/или через макетную плату.
- На плате нет USB-порта, поэтому прошивать нужно через отдельный преобразователь USB-Serial
Iskra Mini
Та же Arduino Mini, но произведённая нами, в России.
Плюсы Iskra Mini
- Заметно дешевле оригинала.
- Есть в варианте с распаянными колодками и с незапаянными отверстиями.
Arduino Micro
Та же Arduino Leonardo, но в другом форм-факторе.
Плюсы Arduino Micro
- Компактная. Всего 48×18 мм.
Минусы Arduino Micro
- Из-за форм-фактора нельзя без ухищрений устанавливать платы расширения Arduino. Предполагается соединение с дополнительными модулями проводами и/или через макетную плату.
Arduino Mega 2560
Как Arduino Uno, но на базе более мощного микроконтроллера той же архитектуры. Отличный выбор «на вырост» или на случай, если Arduino Uno перестала справляться.
Плюсы Arduino Mega 2560
- В разы больше памяти: 256 КБ постоянной и 8 КБ оперативной. В разы больше портов: 60 из них 16 аналоговых и 15 с ШИМ.
Минусы Arduino Mega 2560
- Немного длиннее базовой Arduino Uno: 101×53 мм против 69×53 мм.
Arduino Due
Одна из самых производительных плат Arduino на микроконтроллере Cortex-M3, аналогичная по форм-фактору Arduino Mega.
Плюсы Arduino Due
- Процессор на 84 МГц и 512 КБ памяти. 66 пинов ввода-вывода, из которых 12 могут быть аналоговыми входами, 12 поддерживают ШИМ и все 66 могут быть настроены, как аппаратные прерывания.
- Встроенный контроллер шины CAN позволяет создавать сеть из Due или взаимодействовать с автомобильной электроникой. Два канала ЦАП позволяют синтезировать стереозвук с разрешением в 4,88 Гц.
Минусы Arduino Due
- Родным напряжением для платы является 3,3 В, а не традиционные 5 В. Необходимо следить, чтобы выбираемая периферия поддерживала работу с этим уровнем или ставить преобразователи уровней напряжения.
Iskra JS
Плата на ядре Espruino: её программируют на JavaScript.
Плюсы Iskra JS
- JavaScript — язык высокого уровня. Программы писать проще, они компактнее и выразительнее. Особенно, если речь идёт о многочисленных строковых операциях, массивах данных, веб-интерфейсе.
- Мощный микроконтроллер Cortex-M4 на 168 МГц, 1 МБ флеш, 192 КБ оперативной памяти, десятки портов с ШИМ и аналоговых входов, 2 аналоговых выхода, по нескольку I²C, SPI, UART — всё это даёт подключить и одновременно работать с самыми разнообразными сенсорами и модулями.
Минусы Iskra JS
- Несмотря на то, что родной уровень для платы — 3,3 вольта, пины толерантны к 5 вольтам: подключение пятивольтовой периферии тривиально.
- Из-за другой среды и экосистемы для программирования может не существовать готовой библиотеки для выбранной периферии. Её придётся реализовать самостоятельно.
Strela
Робототехническая платформа «всё в одном» содержит в себе большинство тех вещей, которые нужны при создании любого лёгкого мобильного робота. Strela, как и любая другая Arduino, программируется из Arduino IDE, а в основе содержит тот же микроконтроллер, что и Arduino Leonardo.
Плюсы Strela
- Встроенный драйвер для двух двигателей, 4 разъёма для сервоприводов, 4 кнопки и 4 светодиода свободного назначения, зуммер, слоты для ЖК-экрана и модуля беспроводной связи.
- Мощный регулятор питания позволяет без ухищрений использовать множество различных аккумуляторов.
- 11 входов-выходов выведены в виде трёхконтактных разъёмов для лёгкого подключения дополнительных датчиков и модулей. ЖК-экран, кнопки и светодиоды подключены через расширитель портов, поэтому они не занимают входы-выходы общего назначения.
Минусы Strela
- На плате не предусмотрены колодки для установки плат расширения Arduino.
- Из-за изменённой нумерации контактов (в сравнении с базовой Arduino Leonardo) необходимо использовать немного другие функции для работы с пинами платы. Они предоставлены в одноимённой библиотеке.
Arduino Yún
Уникальный гибрид Arduino Leonardo и микрокомпьютера на OpenWRT Linux. Отличный выбор для «интернета вещей».
Плюсы Arduino Yún
- Плата оснащена Ethernet и Wi-Fi, через которые можно общаться с устройством и даже перепрошивать платформу удалённо.
- Мощь Linux позволяет работать с мультимедиа, а его сетевые возможности — легко интегрироваться с социальными сетями и другими веб-сервисами.
Минусы Arduino Yún
- OpenWRT — это порезанный Linux. На микрокомпьютере можно установить не любой Linux-софт. А в качестве скриптовых языков программирования из коробки можно использовать только Bash и Python.
STM32 Nucleo F401RE
Плата с мощным микроконтроллером Cortex-M4. Платформа программируется не через Arduino IDE, а через онлайн-среду mbed.org. Субъективно, она мощнее и стройнее Arduino IDE, хотя и не так распространена. Для пытливого ума — отличный выбор.
Плюсы STM32 Nucleo F401RE
- Процессор на 84 МГц, 512 КБ постоянной и 96 КБ оперативной памяти. 50 портов ввода-вывода, из которых 16 аналоговых и 29 с ШИМ. Родной уровень напряжения — 3,3 В, но все пины толерантны к 5 В, поэтому проблем электронной совместимости с Arduino-периферией возникнуть не должно.
- Колодки для плат расширения по конфигурации совпадают с Arduino Uno, поэтому на Nucleo можно поставить множество плат расширения от Arduino.
- На плате не выведен отдельный SPI-разъём. Платы расширения Arduino, которые используют SPI через ICSP-разъём, без ухищрений не будут работать.
Минусы STM32 Nucleo F401RE
- Из-за другой среды и экосистемы для программирования может не существовать готовой библиотеки для выбранной периферии. Её придётся реализовать самостоятельно.
Teensy 3.2
Компактная плата с мощным микроконтроллером Cortex-M4. Программируется из привычной Arduino IDE.
Плюсы Teensy 3.2
- Меньше Arduino Micro (35×17 мм), но почти столь же мощная, как Nucleo: процессор 72 МГц, 256 КБ постоянной и 64 КБ оперативной памяти, 34 порта ввода-вывода, из которых 21 могут быть аналоговыми, а 12 поддерживают ШИМ.
- Teensy 3.2 очень энергоэффективна. У неё нет регулятора напряжения, но входным может являться любое от 3,3 до 5,5 В. Это же напряжение и будет логическим уровнем. В режиме сна плата потребляет всего 0,25 мА, что даёт возможность работать от аккумулятора несколько месяцев.
- Встроенный контроллер шины CAN позволяет создавать сеть из Due или взаимодействовать с автомобильной электроникой. Два канала ЦАП позволяют синтезировать стереозвук с разрешением в 4,88 Гц.
Минусы Teensy 3.2
- Плата поставляется с нераспаянными контактами. Вам предстоит самостоятельно впаять штырьковые соединители или проводки.
- Из-за большой разницы в архитектуре с классическими Arduino не все библиотеки для сторонней периферии могут работать из коробки.
- Рабочее напряжение равно входному, поэтому плывёт по мере разряда батарейки. Это может оказаться важным при выборе периферии, если она рассчитана на какой-то конкретный вольтаж.
Netduino 2
Плата повторяет форм-фактор Arduino Uno, но имеет мощную начинку, достаточную для исполнения программ, написанных на платформе .NET. Netduino программируется на C# или любом другом .NET-языке в привычной любому .NET-разработчику среде Visual Studio. В качестве стандартной библиотеки предоставляется .NET Micro Framework.
Плюсы Netduino 2
- В Visual Studio работает автодополнение, подсказки, контекстная помощь в MSDN и полноценный отладчик. Вам доступны breakpoint’ы, пошаговое исполнение кода, наблюдение за переменными. Отладка происходит без ухищрений, просто с подключённым USB-кабелем. Благодаря всему этому скорость разработки под Netduino в разы превосходит скорость разработки под другие платформы.
Минусы Netduino 2
- На плате не выведен отдельный SPI-разъём. Платы расширения Arduino, которые используют SPI через ICSP-разъём, без ухищрений не будут работать.
- Из-за другой среды и экосистемы для программирования может не существовать готовой библиотеки для выбранной периферии. Её придётся реализовать самостоятельно.
Netduino Plus 2
Плюсы Netduino Plus 2
- Как Netduino, только мощнее и с Ethernet на борту. Отличный выбор для реализации проектов интернета вещей.
Минусы Netduino Plus 2
- Те же, что и у Netduino 2.
Сравнение одноплатных компьютеров
Законодателем моды среди одноплатных компьютеров является Raspberry Pi. Эта сверхпопулярная платформа в своё время перевернула представление о возможностях, габаритах и стоимости полноценного компьютера для DIY-электронщиков.
Опять же, для каждого проекта может лучше подойти тот или иной одноплатный компьютер, но в силу популярности Raspberry Pi, будем сравнивать другие платформы именно с ней.
Raspberry Pi 3 Model B
Один из самых популярных одноплатников. Четыре ядра по 1200 МГц, 1 ГБ оперативной памяти и полноценный Linux, основанный на Debian, помогут решить множество задач, требовательных к вычислительным ресурсам. Среди них можно выделить компьютерное зрение, обработку звука в реальном времени, создание веб-сервисов.
Плюсы Raspberry Pi 3 Model B
- Тонны документации, уроков и готовых библиотек, огромное сообщество. Всё это просто не даст вам возможности сказать «не осилил».
- Привычные порты HDMI, 3,5 мм аудио, 4 USB помогут с лёгкостью подключить монитор, колонки, клавиатуру, мышь и другие USB-устройства. Модули BLE и Wi-Fi на борту помогут соединить компьютер с другими устройствами без проводов.
Минусы Raspberry Pi 3 Model B
- На плате нет АЦП, поэтому подключение аналоговых сенсоров возможно только с помощью внешних, дополнительных компонентов.
- Предоставляется лишь 1 аппаратный ШИМ-канал, что усложняет работу с периферией, которая управляется ШИМ’ом.
BeagleBone Black
Микрокомпьютер, схожий с Raspberry Pi, который даёт больше благ, привычных для микроконтроллерных плат. Отличный выбор для проектов интернета вещей, когда необходимо управляться с множеством сенсоров и исполнительных устройств.
Источник