Последнее обновление 27 апреля 2021

Умный дом на Arduino своими руками

Сегодня наблюдается рост интереса пользователей к внедрению в домах и квартирах если не полноценных систем «умного дома», то некоторых элементов Home Automation (домашней автоматизации).

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

blank

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

Что такое Arduino

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

blank

Аппаратные средства Arduino позволяют получить сигналы от сенсоров (например, уровень температуры, наличие света, нажатие на кнопку) или более сложных систем, таких как html-страницы.

Программный код обрабатывает их и выдает сигналы на исполнительные механизмы, например, включает сервопривод, замыкает контакты реле или сервисы, способные выполнять весьма сложные операции – от отправки сообщений на e-mail до размещения контента на страницах.

Основными преимуществами платформы являются:

  • Полная открытость. Это касается как аппаратных модулей (приводятся схемы и для большинства – печатные платы), так и программного обеспечения. В результате сторонние разработчики имеют возможность создавать полностью совместимые устройства. Сообществом создано множество программных проектов и модулей для решения различных задач автоматизации. Все они находятся в свободном доступе, так что подобрать нужный софт и адаптировать его под собственные потребности труда не составляет. Существует достаточно большое число и российских проектов, которые упоминаются на страницах официального сайта.
  • Широкий выбор. В ассортименте предлагаемых продуктов – решения для любого уровня, от плат на 8-битных контроллерах с минимумом функциональных возможностей для начальных шагов и простых проектов, до мощных контроллеров на 32-битных чипах. Возможности подбора нужной конфигурации расширяет богатый ассортимент собственных модулей расширения и аппаратных продуктов сторонних разработчиков. Кроме того, приобрести продукты Arduino можно практически в любом виде – от печатной платы с набором компонентов для сборки своими руками, до готовых контроллеров и Starter Kits – специализированных наборов.
  • Кроссплатформенность. Софт Arduino работает под всеми ОС для ПК – Windows, Linux, MacOS, сохраняя полную функциональность, а готовые программные наработки вообще являются платформенно независимыми.
  • Гибкость подхода. На платах Arduino реализован весь необходимый функционал, – от стабилизатора питания и программатора для контроллера, до набора портов ввода/вывода и конкретных интерфейсов, например BlueTooth, Wi-Fi, управления двигателями и пр. Однако представленная система не ограничивает разработчика в выборе, например, прошивку микроконтроллера можно выполнить не только при помощи штатных средств, но также и с помощью совместимости программаторов других производителей, а набор портов и интерфейсов легко расширить.
  • Простота освоения. Прозрачные схемотехнические решения, качественная документация позволяют работать с модулями платформами без серьезного опыта и знаний электроники. Этому способствует и программная среда, требующая лишь базовых знаний C++. Более того, проект предлагает и средства графического проектирования, освоить которые могут даже дети и подростки.
  • Стоимость. Микроконтроллеры Arduino на сегодняшний день являются одним из самых более доступных в ценовой среде вариантов среди множественных более модифицированных аналогов – даже самый мощный микроконтроллер обойдется покупателю не дороже 50 долларов. На рынке можно найти множество разнообразных расширений и компонентов, которые выпускаются различными производителями, в том числе и азиатскими, которые при достаточно достойном качестве изготовления стоят весьма недорого.
alt
Словом, пытаться решить задачи домашней автоматизации на этой платформе – хороший вариант и для новичков, и для опытных разработчиков. Конечно, полноценный «умный дом» на Arduino своими руками не построить, но подавляющее большинство повседневных функций home automation реализовать будет достаточно просто.

Как сделать умный дом на Arduino своими руками

blank

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

Разработка эскизного проекта

blank

Мнение эксперта
Яковлев Алексей Сергеевич
Электрик с 20 летним стажем и богатым опытом
На первом этапе составляется подробный проект будущей системы. При создании системы для собственных дома или квартиры, хозяин выступает и заказчиком, и исполнителем. Соответственно, этот этап включает и составление подробного ТЗ и эскизное проектирование.

Соответственно, разработчику придется решить несколько задач.

Формулировка задания

Задание для проекта должно быть определено максимально точно и подробно. Например, решается одна из частных home automation – включить освещение крыльца, когда в темное время к нему приближается человек. Это общее описание задачи нуждается в более конкретных формулировках для проектирования.

blank

blank

Они описывают:

  1. Основные условия для срабатывания автоматики – триггеры (triggers) в терминах home automation. В рассматриваемой задаче такой триггер один – приближение человека к крыльцу.
  2. Дополнительные условия (conditions). Они задают разрешения на срабатывание триггера и, в большинстве случаев, определяют длительность их действия. Для данной задачи дополнительное условие – темное время. Действительно, включать свет на крыльце днем смысла не имеет. Нет необходимости делать это и когда крыльцо освещено – свет уже включен или задействованы другие источники. Соответственно, дополнительные условия можно задать в нескольких вариантах: наступило темное время суток, и свет на крыльце не включен. Практически полное описание условий, но не учитывает возможность освещения от других источников, освещенность на крыльце ниже порогового значения. Хотя условие и выглядит проще, но учитывает практически все случаи.
  3. Действия (actions). Описывает реакцию системы на триггеры и дополнительные условия. Для текущего примера система должна выполнить единственное действие – включить свет.
  4. Действия в случае отсутствия триггеров и/или невыполнения условий. Здесь необходимо рассматривать 2 случая: ни основные, ни дополнительные условия не были выполнены. Наиболее логичное поведение – бездействие, триггер и условия были выполнены, произошло срабатывание, затем ситуация изменилась (т.н. post-action действия). Поведение проектируемой системы должно выглядеть следующим образом – не включать свет до срабатывания триггера и выполнения условий, выключить после того, как он перестал быть нужен.

Таким образом, результат – подробное описание задания:

  1. Проверять, есть ли у крыльца человек.
  2. Бездействовать, пока его нет.
  3. Если человек подошел – проверить освещенность.
  4. Если она ниже заданной – включить свет.
  5. Проверять, остается ли нужен свет.
  6. Если да – оставаться в текущем состоянии, если нет – выключить свет.

Выбор способов реализации алгоритма

На этом этапе определяется набор сенсоров для получения данных (триггеров и условий) и исполнительных механизмов для выполнения действий.

blank

Даже в простейшем рассматриваемом случае возможны несколько вариантов реализации. Например, определять присутствие человека у крыльца можно:

  • по сигналу стандартного инфракрасного датчика;
  • разместив под площадкой у крыльца датчики, реагирующие на давление (например, тензодатчики на основе пьезоффекта);
  • получая с работающего в квартире Wi-Fi-роутера сигнал о подключении нового/конкретного абонента к домашней беспроводной сети и т.д.

Аналогичным образом рассматриваются ситуации с определением уровня освещенности и включением света на крыльце.

alt
Еще один обязательный момент, требующий учета на данном этапе – определение обмена данными между устройствами. Здесь также возможны несколько вариантов – обмен по сигнальным проводникам, беспроводная передача сигналов (в этом случае потребуется выбрать соответствующий стандарт, например, BlueTooth, Wi-Fi, ZigBee или др.).

Завершает этап запись алгоритма с учетом принятых решений, например:

  1. Опрашивать проводной ИК-датчик.
  2. Если сигнала нет – ничего не делать.
  3. При появлении сигнала, проверить состояние проводного датчика освещенности.
  4. При наличии сигнала – ничего не делать.
  5. При отсутствии сигнала – выдать на ZigBee хаб команду на включение выключателя по соответствующему адресу (отвечающему за освещение на крыльце).
  6. Опрашивать ИК датчик.
  7. Пока есть сигнал (человек на крыльце) – ничего не делать.
  8. Если сигнала нет – отключить свет, т.е. выдать на ZigBee выключатель команду на отключение.
  9. Вернуться к началу цикла.

Еще один результат этого этапа – перечень необходимого оборудования и материалов. Для сборки системы потребуются:

  • Контроллер с возможностью опроса проводных каналов связи (минимум, двух, для датчика освещенности и ИК-датчика).
  • ZigBee выключатель.
  • ZigBee хаб (без него моно обойтись, если контроллер имеет интерфейс для прямого управления ZigBee устройствами).
Мнение эксперта
Яковлев Алексей Сергеевич
Электрик с 20 летним стажем и богатым опытом
Не следует забывать о проводах для прокладки сигнальных линий, источниках питания для всех устройств, возможно – ретрансляторах или усилителях сигналов, если расстояния окажутся велики. Лучший вариант оформить результаты этапа – составить структурную схему системы и блок-схему алгоритма. Это существенно упростит работу в дальнейшем.

Выбор оборудования

blank

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

Выбор контроллера Arduino

blank

Поскольку базовая платформа – Arduino, определена ранее, остается выбрать конкретную модель контроллера и, при необходимости, расширение. Задача не сложная, поскольку ассортимент устройств достаточно обширен и включает модели для большинства практических задач.

В список оборудования входят:

Контроллер
Чип
Память (ОЗУ/ПЗУ)
Порты ввода/вывода и интерфейсы
Дополнительно
Due
32-битный Cortex-M3 ARM SAM3U4E,, 84 МГц
64+36Кб/256+256Кб (возможна прямая адресация всего пространства)
54 цифровых IO (некоторые со специальными функциями, например, ШИМ)

12 аналоговых входов (с АЦП)

2 аналоговых входа

Питание контроллера 3.3В
Uno
8-бит ATmega328 или ATmega8U2 (в новой версии), 16 МГц
2Кб/32Кб+1Кб EEPROM
14 цифровых IO (6 могут использоваться как ШИМ)

6 аналоговых входов с АЦП

UART TTL

USB

Разъемы для модулей расширения

Leonardo
8-бит ATmega32u4, 16МГц
2.5кБ/32Кб+1Кб EEPROM
20 цифровых IO (7 с функциями ШИМ)

12 аналоговых входов (могут работать как цифровые)

USB

расширения

Встроенная поддержка USB позволяет настраивать видимость при связи с ПК (как клавиатуру, мышь, виртуальный последовательный порт)

Функционально и конструктивно аналогичен Uno

Duemilanove,

Decimila

8-бит ATmega168, 16МГц
1Кб/16Кб+512б EEPROM
В остальном полностью аналогичны Uno на базе ATmega328
Mini
8-бит ATmega168, 16МГц
1Кб/16Кб+512б EEPROM
14 цифровых IO (6 могут использоваться как ШИМ)

6 аналоговых входов с АЦП

Для программирования требуется адаптер MiniUSB

Компактное решение для макетирования

Micro
8-бит ATmega32u4, 16МГц
Компактный контролер, по функциональности и аналогичный Leonardo, для подключения и программирования используется кабель microUSB
Nano
8-бит ATmega168 или ATmega328, 16МГц
Компактный вариант Duemilanove, отличающийся только габаритами и отсутствием разъема для подключения внешнего источника питания
Mega
8-бит ATmega1280, 16МГц
8Кб/128Кб+4Кб EEPROM
54 цифровых IO (14 с функциями ШИМ)

16 аналоговых входов с АЦП

4 порта UART

USB

расширения

Mega 2560

Mega ADK

8-бит ATmega2560, 16МГц
Отличаются от Mega увеличенным до 256Кб объемом ПЗУ для хранения программ и реализацией USB-интерфейса на ATMega8U2. В Mega ADK сконфигурирован USB host, который моет работать с другими устройствами, в частности, смарифонами
Pro
8-бит ATmega328, 16МГц (3.3В) или

ATmega168, 8МГц (5В)

2 или 1 Кб/32 или 16 Кб + 1 Кб или 512б EEPROM
14 цифровых IO (6 могут использоваться как ШИМ)

6 аналоговых входов с АЦП

UART TTL

USB

Разъемы для модулей расширения

Разъемы ввода/вывода и интерфейсов не установлены, разработчик может использовать собственные
Pro Mini
Аналогична Mini, но как и в полномасштабной Pro требуется установка разъемов
alt
Внимание! Для работы с платами, не содержащими встроенных USB-интерфейсов применяют адаптеры Adapter Mini USB или USB Serial Light Adapter.

blank

Кроме стандартных контроллеров разработаны и поставляются специализированные, с дополнительными интерфейсами на борту:

  • Yun – устройство по возможностям (чип, выводы) аналогичное Leonardo, но со встроенным Wi-Fi модулем на базе Atheros AR9331.
  • BT – платформа со встроенным BlueTooth интерфейсом.
  • Fio – контроллер, аналогичный Uno по функциональности, но без установленных разъемов на портах ввода/вывода. Предназначен для работы в беспроводной сети ZigBee.
  • Serial – функционально аналогична базовой Uno с интегрированным стандартным последовательным интерфейсом RS232.

Кроме того, для работы с различными стандартами связи и устройствами можно использовать стандартные платы расширения:

  • Wi-Fi с поддержкой протокола 802.11 b/g;
  • Xbee Shield, с интегрированным модулем Maxstream Xbee Zigbee, поддерживающим до 32 устройств ZigBee (35/90 м в помещении и на открытом пространстве соответственно);
  • Ethernet Shield – с установленным портом стандарта Ethernet 10/100 Base-T для проводного сетевого соединения;
  • Motor Shield – с портами для управления двигателями постоянного тока и получения сигналов обратной связи от датчиков положения.

При необходимости можно найти и другие конфигурации полностью совместимых контроллеров, выпускаемые сторонними разработчиками. Полный список одобренного оборудования размещен на странице https://playground.arduino.cc/Main/SimilarBoards/ официального сайта.

При выборе контроллера необходимо учитывать:

  1. Производительность;
  2. Наличие необходимого количества портов ввода/вывода, цифровых и аналоговых;
  3. Объем памяти для хранения программ и данных (все платы Arduino используют небогатые ресурсы микроконтроллера и не предполагают расширений);
  4. Удобство работы – программирования, отладки программ, установки готового устройства в корпус.

blank

alt
Для решения рассматриваемой задачи с освещением на крыльце вполне достаточно компактным Micro, Nano или Mini, но с базовой Uno работать гораздо удобнее. Кроме того, понадобится плата расширения Xbee Shield для работы c ZigBee устройствами.

Выбор периферии

blank

При выборе датчиков и исполнительных механизмов нет значительных ограничений. Единственное требование – обеспечить совместимость с портами Arduino по уровням сигналов и нагрузке.

Однако, при желании, и это требование легко обходится за счет сборки собственных или использования готовых плат согласования.

Разработка принципиальной схемы

blank

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

alt
К сведению! Поменять выводы на этапе разработки программы не сложно – достаточно откорректировать буквально 2 строки кода.

Работа с программным обеспечением

blank

Когда принципиальная схема готова, начинается важнейший этап проектирования – написание программы для контроллера. Для этого необходимо скачать среду разработки Arduino IDE.

Загрузка, установка, проверка ПО

blank

Программное обеспечение скачивают со страницы официального сайта https://www.arduino.cc/en/software.

Стабильная версия – Arduino IDE 1.8.13 поддерживает:

  • Windows 7 и более новые версии ОС, х86 и х64;
  • MacOS 10.10 и новее;
  • 32- и 64-битные версии Linux и Linux ARM.

Для работы под Windows можно скачать установщик или ZIP-архив софта. Использовать установщик для неопытных пользователей предпочтительнее – установка драйверов будет произведена автоматически вместе с установкой программы.

blank

При использовании ZIP-архива достаточно развернуть программу на жестком диске ПК и запустить IDE. В этом случае программа также попытается установить драйвера, но, возможно, придется обновить их вручную в Панели управления. Все необходимые .inf файлы входят в комплект поставки.

alt
К сведению! Опытные пользователи могут попробовать бета-версию Arduino IDE 2.0 с улучшенной функциональностью, поддержкой Win 10, 32- или 64-разрядных Linux-систем, MacOS 10-14.

Возможности среды разработки Arduino IDE:

  • Создание проектов (скетчей, от англ. sketch – набросок).
  • Их проверка и компиляция для загрузки в контроллер;
  • «Заливка» готового машинного кода в контроллеры;
  • Поддержка всех версий плат;
  • Подключение библиотек, не входящих в комплект поставки.
alt
После установки софта следует проверить работоспособность купленного контроллера и целостность софта.

Для этого достаточно выполнить входящий в комплект поставки простейший скетч с управлением светоиодом.

blank

Пошагово процесс выглядит следующим образом:

  1. Подключить плату Arduino Uno (именно на ней остановился выбор для реализации предложенной задачи) кабелем к USB-порту компьютера.
  2. Запустить Arduino IDE.
  3. В среде разработки открыть готовый скетч – в меню File выбрать папку Examples-1.Basic, в ней файл Blink.
  4. Выбрать плату контроллера для работы – меню Tools-Board.
  5. Указать порт для связи с платой (как правило COM3 или другой COM с бОльшим номером). Если этих портов нет, следует проверить, подключена ли плата или установить вручную драйверы.
  6. Откомпилировать скетч через меню Sketch-Verify/Compile или нажатием на соответствующую кнопку в панели инструментов под строкой меню.
  7. Загрузить готовый скетч в контроллер (Sketch-Upload) или нажатием кнопки панели инструментов. На этом этапе можно наблюдать мигание светодиодов Rx и Tx , которое свидетельствует об обмене с ПК.
  8. После окончания загрузки через несколько секунд начнет мигать светодиод на плате Uno. Это говорит о том, что и контроллер и среда разработки полностью работоспособны.
alt
Внимание! Если скетч не загружается, следует нажать кнопку Reset на плате контролера и повторить процедуру загрузки. Аналогичным образом следует поступать перед каждой новой загрузкой, особенно на платах типа Mini.

blank

После проверки можно приступать к разработке собственной программы.

Программирование скетчей

blank

Программирование скетча можно выполнить непосредственно в редакторе среды разработки или в любом другом удобном текстовом редакторе (в последнем случае не забыть сохранить работу в файле .ino). Встроенный язык программирования Arduino является клоном языка C++ с некоторыми упрощениями и дополнительными функциями и библиотеками для обращения к функционалу контроллера.

Для работы с программой в IDE необходимо:

  1. Создать новый скетч (File-New).
  2. Подключить необходимые библиотеки. Стандартные библиотеки функций входят в комплект поставки, нестандартные нужно разместить в соответствующих папках папки Libraries. После этого их имена станут доступны разработчику в меню Sketch-Import Library. Достаточно выбрать нужные имена, и они будут включены для обработки препроцессором.
  3. В функции setup() прописать все необходимые действия для инициализации системы. Эта функция выполняется один раз перед стартом. Как правило, в ее тексте достаточно ограничиться назначением функций пинам ввода/вывода.
  4. В функции loop() прописать код, реализующий алгоритм автоматизации – опрос сенсоров, анализ условий, выдачу сигналов на исполнительные механизмы. Функция выполняется в бесконечном цикле, операторы прерывания этого цикла не предусмотрены.
  5. Откомпилировать написанный скетч.
  6. Загрузить его в контроллер.

Отличия языка Arduino от стандарта C++

  • Не требуется включения заголовочных файлов (хидеров, файлов с расширением .h)в текст программы, препроцессор добавит их автоматически в соответствии с импортированными для скетча библиотеками.
  • Добавлены предопределенные константы для уровней (HIGH и LOW) и функций выводов портов ввода/вывода (INPUT и OUTPUT).
  • Добавлены функции для работы:
    • c цифровыми портами ввода/вывода pinMode(), digitalWrite(), digitalRead();
    • с аналоговыми пинами analogReference(), analogRead(), analogWrite();
    • дополнительными IO функциями, например, побитного вывода со сдвигом shiftOut();
    • временем mills() – время в мс, micros() время в мкс, delay() – задержка в мс, delayMicroseconds – задержка в мкс;
    • внешними прерываниями attachInterrupt() и detachInterrupt();
    • последовательным портом.
  • В комплект поставки включены библиотеки для сервоприводов (Servo), шаговых двигателей (Steps), EEPROM, SPI-интерфейса.

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

blank

Со всеми платами контролеров и расширений поставляются необходимые библиотеки для работы со всем аппаратным обеспечением. Кроме того, в сети доступны тысячи готовых библиотек разработанных сообществом. Подобрать нужную (с документацией) можно по ссылкам на официальном сайте https://playground.arduino.cc/Main/LibraryList/ и https://www.arduinolibraries.info/ или на GitHub.

Соответственно, для реализации поставленной задачи разработчику нужно:

  1. Создать скетч.
  2. Скачать и подключить библиотеку для работы с Xbee (ZigBee).
  3. Выполнить назначение портов для опроса датчиков в функции setup();
  4. Инициализировать работу с интерфейсом ZigBee в setup();
  5. Прописать опрос датчиков и выдачу команды управления по условиям в loop().

Работать с Arduino можно и без установки IDE. Для этого удобно использовать:

  • Web-редактор на официальном сайте. Полностью поддерживает синтаксис (с подсветкой), включает все необходимые для работы библиотеки. Альтернативный вариант – любой тестовый редактор.
  • Компилятор avr-gcc.
  • Программатор, поддерживающий чипы микроконтроллеров, используемых на платах Arduino,

Для пользователей, далеких от программирования на любых языках, созданы альтернативные варианты разработки проектов – визуальные. Среди наиболее известных:

Таким образом, умный дом на Arduino своими руками – решение, доступное практически каждому. Ассортимент аппаратных средств позволяет решать задачи от простейших до максимально сложных (в том числе, за счет взаимодействия нескольких контролеров).

Способствует этому и накопленный сообществом богатый опыт, и полная открытость проекта, благодаря которой можно найти готовые программные разработки для большинства процессов home automation.

Часто спрашивают

Как решать вопрос с недостатком памяти контроллера для хранения программ?
Переносятся ли готовые скетчи с оного контроллера на другой?
Где найти подробную документацию для Arduino?
Не будет ли проблемой покупка совместимых сенсоров и исполнительных механизмов?
Рационально ли останавливаться на Arduino, когда есть более мощные открытые платформы, поддерживающие большее количество устройств и стандартов (например, Home Assistant)?

Автор статьи
Яковлев Алексей Сергеевич
Электрик с 20 летним стажем и богатым опытом
Написано статей
75
Помогла статья? Оцените её

Рекомендуем по теме

blank
Системы Умный дом
Устройства Умного дома Яндекса. Плюсы и Минусы

Ваши знакомые уже автоматизировали дом, а вы не знаете, с чего начать? Умный дом не так сложен, как кажется с […]

Читать далее
blank
Системы Умный дом
Умный дом: из чего состоит и как его сделать в квартире?

Ещё совсем недавно система с общим названием «Умный дом» была настоящей экзотикой и была по карману немногим владельцам жилья. Сегодня […]

Читать далее
Обсудим?
4
Подписаться
Уведомить о
guest
4 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
КириллТроицк
КириллТроицк
23 дней назад

Полная открытость, всё-так немного настораживает. Если одному программисту или электронику легко собрать модуль, то другой легко его и вскроет.

Anno-Dominie
Anno-Dominie
22 дней назад

Имея навыки компьютерщика и необходимое оборудование, не составит труда самостоятельно смонтировать это и настроить.

Olga2020
Olga2020
22 дней назад

Показала своему парню эту статью, он у меня отлично разбирается в программировании. Сказал, ничего сложного здесь нет.

Светланка
Светланка
18 дней назад

Не представляю себя с паяльником, собирающая электронную схему. Наверное, это не моё. Но дом умный безумно нравится.

Как решать вопрос с недостатком памяти контроллера для хранения программ?
Есть несколько путей решения этой проблемы – например, переход на другую версию платы или использование нескольких связанных между собой контролеров, отвечающих за отдельные части проекта. Можно найти в списке совместимых продуктов такие, которые не имеют ограничений, например Galleo от Intel или Arduino 101.
Переносятся ли готовые скетчи с оного контроллера на другой?
Без проблем. При наличии исходного кода достаточно в IDE выбрать нужную плату и перекомпилировать скетч. Однако нужно учесть назначение выводов (например, из 54 выводов на Mega не все доступны на Uno), и использование других аппаратных средств.
Где найти подробную документацию для Arduino?
Необходимая документация обязательно поставляется с платами. Кроме того, она полностью (в том числе, с обучающими материалами) опубликована на официальном сайте. Найти нужные документы на русском языке можно как в материалах сообщества, так и на специализированных сайтах, например http://arduino.ru/.
Не будет ли проблемой покупка совместимых сенсоров и исполнительных механизмов?
Нет, приобрести их достаточно просто. Во-первых, на официальном сайте https://store.arduino.cc/ предлагаются целые стартовые наборы с комплектами датчиков и исполнительных механизмов. Во-вторых там же можно найти отдельные периферийные устройства. В-третьих, список производителей совместимых устройств со ссылками опубликован на странице https://playground.arduino.cc/.
Рационально ли останавливаться на Arduino, когда есть более мощные открытые платформы, поддерживающие большее количество устройств и стандартов (например, Home Assistant)?
Этот вопрос каждый решает для себя. Так Arduino – это очень бюджетное решение (самый мощный контроллер обходится не дороже 50 долларов), а поддержка большинства устройств вполне квалифицированно решается сообществом.