Умен дом на базата на Arduino контролери: проектиране и организация на управляемо пространство
Развитието на средствата за автоматизация доведе до създаването на комплексни системи, които подобряват качеството на живот на човека. Много известни производители на електроника и софтуерни среди предлагат готови типови решения за различни обекти.
Да разработите самостоятелни проекти и да сглобите според своите потребности “умен дом” на Ардуино може дори и неопитен потребител. Основното е да разберете основите и да не се страхувате да експериментирате.
В тази статия ще разгледаме принципа на създаване и основните функции на автоматизирания дом на базата на устройства Ардуино. Също така ще разгледаме използваните видове платки и основните модули на системата.
Съдържание на статията:
Създаване на системи на платформата Ардуино
Arduino е платформа за разработка на електронни устройства с автоматично, полуавтоматично или ръчно управление. Тя е изградена по принципа на конструктор с ясно определени правила за взаимодействие между елементите. Системата е отворена, което позволява на трети производители да участват в нейното развитие.
Класическият “умен дом” се състои от автоматизирани блокове, които изпълняват следните функции:
- събират нужната информация чрез сензори;
- анализират данните и вземат решения с помощта на програмируем микропроцесор;
- реализират приетите решения, като подават команди на различни устройства.
Платформата Arduino е добра точно защото не се ограничава до определен производител, а позволява на потребителя сам да подбере подходящите за него компоненти. Изборът им е огромен, затогава могат да се реализират почти всякакви идеи.
Препоръчваме да се запознаете с най-добрите умни устройства за дома.

Освен многообразието на свързваните устройства, вариативността добавя и програмната среда, реализирана на езика C++. Потребителят може не само да използва създадените библиотеки, но и сам да програмира реакцията на компонентите на системата към възникващи събития.
Основни елементи на платки
Основният елемент на “умния дом” е една или няколко централни (майчини) платки. Те отговарят за взаимодействието на всички елементи. Едва след като определите задачите, които трябва да бъдат решени, можете да пристъпите към избора на основния възел на системата.
Майчината платка обединява следните елементи:
- Микроконтролер (процесор). Основното му предназначение е да подава и измерва напрежение в портовете в диапазон 0-5 или 0-3.3 V, да запомня данни и да извършва изчисления.
- Програматор (не всички платки го имат). С помощта на това устройство в паметта на микроконтролера се записва програмата, според която ще работи “умният дом”. Към компютър, таблет, смартфон или друго устройство се свързва чрез USB-интерфейс.
- Стабилизатор на напрежение. Необходимо е устройство на 5 волта, изисква се за захранване на цялата система.
Под марката Arduino се произвеждат няколко модела платки. Те се различават един от друг по форм-фактор (размер), брой портове и обем памет. Именно по тези показатели трябва да изберете подходящото устройство.

Съществуват два вида портове:
- цифрови, които са обозначени на платката с букви “d”;
- аналогови, които са обозначени с буква “a”.
Благодарение на тях микроконтролерът осъществява връзка с подключените устройства. Всеки порт може да работи както за получаване на сигнал, така и за неговото предаване. Цифровите портове с обозначение “pwm” са предназначени за въвеждане и извеждане на сигнал от типа ШИМ (широчинно-импулсна модулация).
Ето защо, преди да закупите платка, е необходимо поне приблизително да оцените нивото на нейната натовареност с различни устройства. Това ще позволи да се определи необходимият брой портове от всички видове.
При това трябва да се разбира, че системата “умен дом” не е задължително да е свързана в блок за управление на базата на една майчина платка. Такива функции като например включване на изкуствено осветление на прилежащата територия в зависимост от времето на денонощието и поддържане на резерв вода в акумулационния резервоар са независими една от друга.
От гледна точка на осигуряване на надеждност на работата на електронната система е по-добре да се разпределят несвързаните помежду си задачи в различни блокове, което концепцията на Arduino позволява лесно да се осъществи. Ако на едно място се обединят много устройства, тогава е възможно прегряване на микропроцесора, конфликт на програмни библиотеки и усложнения при търсенето и отстраняването на програмни и хардуерни неизправности.

Всеки микропроцесор е оборудван с три вида памет:
- Flash Memory. Основната памет, където се съхранява кодът на програмата за управление на системата. Незначителна част от нея (3-12 %) заема вградената програма за зареждане (bootloader).
- SRAM. Оперативна памет, където се съхраняват временни данни, необходими при работата на програмата. Отличава се с висока скорост на работа.
- EEPROM. По-бавна памет, където също могат да се съхраняват данни.
Основната разлика между видовете памет за съхранение на данни е, че при изключване на електрозахранването информацията, записана в SRAM, се губи, а в EEPROM остава. Но енергонезависимият тип има и недостатък – ограничен брой цикли на запис. Това трябва да се помни при създаването на собствени приложения.
За разлика от използването на Arduino в роботиката, за повечето задачи на “умния дом” не е необходима много памет нито за програми, нито за съхранение на информация.
Видове платки за сглобяване на умен дом
Нека разгледаме основните видове платки, които най-често се използват при изграждане на система за умен дом.
Вид #1 — Arduino Uno и неговите производни
Най-често в системите “умен дом” се използват платките Arduino Uno и Arduino Nano. Те притежават достатъчна функционалност за решаване на типични задачи.

Основни параметри на Arduino Uno Rev3:
- процесор: ATMega328P (8 bit, 16 MHz);
- брой цифрови портове: 14;
- от тях с функция ШИМ: 6;
- брой аналогови портове: 6;
- flash memory: 32 KB;
- SRAM: 2 KB;
- EEPROM: 1 KB.
Неотдавна излезе модификация – Uno Wi-Fi, която съдържа интегриран модул ESP8266, позволяващ обмен на информация с други устройства по стандарта 802.11 b/g/n.
Разликата на Arduino Nano от по-големия му аналог се състои в липсата на собствен гнездо за захранване от 12 V. Това е направено, за да се постигне по-малък размер на устройството, което позволява лесно да се скрие в малко пространство. Също така за тези цели стандартната USB връзка е заменена с чип с mini-USB кабел. Arduino Nano има с 2 аналогови порта повече в сравнение с Uno.
Има още една модификация на платката Uno – Arduino Mini. Тя е още по-малка от Nano и с нея се работи много по-трудно. Първо, липсата на USB порт създава проблем с програмирането, тъй като за това ще трябва да се използва USB-Serial Converter. Второ, тази платка е по-взискателна по отношение на захранването – необходимо е да се осигури диапазон на входното напрежение 7-9 V.
Поради изброените по-горе причини платката Arduino Mini рядко се използва за работа на “умния дом”. Обикновено тя се прилага или в роботиката, или при реализация на вече готови проекти.
Вид #2 — Arduino Leonardo и Micro
Платката Arduino Leonardo прилича на Uno, но е малко по-мощна. Също интересна особеност на този модел е, че при свързване към компютър се определя като клавиатура, мишка или джойстик. Затова често я използват за създаване на оригинални игрови устройства и симулатори.

Основните параметри на Arduino Leonardo са следните:
- процесор: ATMega32u4 (8 bit, 16 MHz);
- брой цифрови портове: 20;
- от тях с функция ШИМ: 7;
- брой аналогови портове: 12;
- flash memory: 32 KB;
- SRAM: 2,5 KB;
- EEPROM: 1 KB.
Както се вижда от приведения списък с параметри, Leonardo има повече портове, което позволява да се натоварва този модел с голям брой сензори.
Също така за Leonardo съществува абсолютно идентичен по характеристики миниатюрен аналог с името Micro. При него липсва захранване от 12 V и вместо пълноценен USB вход има чип за mini-USB кабел.
Модификацията на Leonardo с име Esplora – чисто игров модел и не подхожда за нуждите на “умния дом”.
Вид #3 — Arduino 101, Arduino Zero и Arduino MKR1000
Понякога за работата на системите за “умен дом”, реализирани на базата на Arduino, е необходима голяма изчислителна мощност, която 8-битовите микроконтролери не са в състояние да осигурят. Такива задачи като разпознаване на глас или изображения изискват бърз процесор и значителен за такива устройства обем оперативна памет.
За решаване на подобни специфични задачи се прилагат мощни платки, работещи според концепцията на Arduino. Броят на портовете при тях е приблизително същият като при платките Uno или Leonardo.

Една от най-лесните за използване, но мощни платки – Arduino 101 има следните характеристики:
- процесор: Intel Curie (32 bit, 32 MHz);
- flash памет: 196 KB;
- SRAM: 24 KB;
- EEPROM: няма.
Допълнително платката е оборудвана с BLE функционалност (Bluetooth Low Energy) с възможност за лесно свързване на готови решения, като сензор за сърдечен ритъм, получаване на информация за времето навън, изпращане на текстови съобщения и т.н. Също така в устройството са интегрирани жироскоп и акселерометър, но те се използват основно в роботиката.
Още една подобна платка – Arduino Zero има следните характеристики:
- процесор: SAM-D21 (32 bit, 48 MHz);
- флаш памет: 256 KB;
- SRAM: 32 KB;
- EEPROM: няма.
Отличителна особеност на този модел е наличието на вграден дебъгер (EDBG). С негова помощ е много по-лесно да се откриват грешки при програмиране на платката.

Arduino MKR1000 – още един модел, подходящ за мощни изчисления. Той има микропроцесор и памет, аналогични на Zero. Основната му разлика е наличието на интегриран Wi-Fi чип с протокол 802.11 b/g/n и крипто чип с поддръжка на алгоритъм SHA-256 за защита на предаваните данни.
Вид #4 — модели от семейството Mega
Понякога е необходимо да се използва голям брой сензори и да се управлява значителен брой устройства. Например, това е необходимо за автоматичното функциониране на системи за разпределено климатизиране, които поддържат определена температура за отделни зони.
За всяка локална област е необходимо да се проследят показанията на два температурни сензора (вторият се използва като контролен) и в съответствие с алгоритъма да се извърши регулиране на положението на клапата, която определя обема на постъпване на топъл въздух.
Ако такива зони в къщата са повече от 10, то за управление на цялата система са необходими повече от 30 порта. Разбира се, може да се използват няколко платки от тип Uno под общото управление на една от тях, но това създава допълнителни сложности при комутацията. В този случай е целесъобразно да се използват модели от семейство Mega.

Платката Arduino Mega е изградена на базата на доста прост 8-битов 16-мегахерцов микропроцесор aTMega1280.
Тя разполага с голям обем памет:
- флаш памет: 128 KB;
- SRAM: 8 KB;
- EEPROM: 4 KB.
Но основното ѝ предимство е наличието на множество портове:
- брой цифрови портове: 54;
- от тях с функция ШИМ: 15;
- брой аналогови портове: 16.
При тази платка съществуват две модерни разновидности:
- Mega 2560 е базирана на микропроцесор aTMega2560, отличаващ се с голям обем флаш памет – 256 KB;
- Mega ADK освен микропроцесора aTMega2560 е оборудвана с USB интерфейс с възможност за свързване към устройства на базата на операционна система Android.
При модела Arduino Mega ADK съществува една особеност. При свързване на телефона към USB входа е възможна следната ситуация: ако на телефона му трябва зареждане, той ще започне да го “дърпа” от платката. Поради това има допълнително изискване към източника на електроенергия – той трябва да осигури сила на тока от 1,5 ампера. При осъществяване на захранване чрез батерийки това условие трябва да се вземе предвид.

Due – още един модел от Ардуино, който съчетава мощта на микропроцесора и голям брой портове.
Характеристиките му са следните:
- процесор: Atmel SAM3X8E (32 бита, 84 MHz);
- брой цифрови портове: 54;
- от тях с функция ШИМ: 12;
- брой аналогови портове: 14;
- флаш памет: 512 KB;
- SRAM: 96 KB;
- EEPROM: няма.
Аналоговите контакти на тази платка могат да работят както в обичайната за Ардуино 10-битова разделителна способност, която е направена за съвместимост с предишните модели, така и в 12-битова, която позволява получаването на по-точен сигнал.
Особености на взаимодействието на модулите чрез портове
Всички модули, които ще бъдат свързани към платката, имат поне три изхода. Два от тях са захранващи проводници, т.е. “земя”, както и напрежение 5 или 3.3 V. Третият проводник е логически. По него се осъществява предаване на данни към порта. За свързване на модулите се използват специални проводници, групирани по 3, които понякога се наричат джъмпери.
Тъй като при моделите Ардуино обикновено има само 1 порт с напрежение и 1-2 порта с “земя”, за да свържете няколко устройства, ще трябва или да спойвате проводниците, или да използвате макетни платки (breadboard).

Спояването е по-надеждно и се използва в устройства, които са подложени на физическо въздействие, например платки за управление на роботи и квадрокоптери. За умен дом е по-добре да се използват макетни платки, тъй като това е по-лесно както при инсталиране, така и при премахване на модула.
При някои модели (например Ардуино Zero и MKR1000) работното напрежение е 3.3 V, затова ако на портовете се подаде по-голяма стойност, е възможно повреда на платката. Цялата информация за захранването е достъпна в техническата документация на устройството.
Платки за допълнение (шилдове)
За увеличаване на възможностите на основните платки се използват шилдове (Shields) – разширяващи функционалността допълнителни устройства. Те се изработват за конкретен форм-фактор, което ги отличава от модулите, които се свързват към портовете. Шилдовете са по-скъпи от модулите, но работата с тях е по-лесна. Също така те са снабдени с готови библиотеки с код, което ускорява разработката на собствени програми за управление за “умен дом”.
Шилдове Proto и Sensor
Тези два стандартни шилда не добавят някакви специални функции. Те се използват за по-компактно и удобно свързване на голям брой модули.
Proto Shield представлява почти пълно копие на оригинала по отношение на портовете, а в средата на модула може да се залепи макетна платка. Това улеснява сглобяването на конструкцията. Такива допълнения съществуват за всички пълноформатни платки Arduino.

Но ако устройствата са много (повече от 10), по-добре е да се използват по-скъпите комутационни платки Sensor Shield.
Те нямат предвиден breadboard, обаче към всички изводи на портовете индивидуално са подведени захранване и земя. Това позволява да не се обърквате в проводниците и джъмперите.

Също на тази платка има колодки за лесно свързване на няколко модула: Bluetooth, SD карта, RS232 (COM порт), радио и ултразвук.
Свързване на допълнителния функционал
Шилдовете с интегрирана функционалност са предназначени за решаване на сложни, но типични задачи. При необходимост от реализиране на оригинални идеи е по-добре да се избере подходящ модул.
Motor Shield. Той е предназначен за управление на скоростта и въртенето на маломощни двигатели. Оригиналният модел е оборудван с един чип L298 и може да работи едновременно с два постояннотокови мотора или с един серво. Съществува и съвместима част от външен производител, която има два чипа L293D с възможност за управление на два пъти повече задвижвания.
Relay Shield. Често използван модул в системите "умен дом". Платка с четири електромеханични релета, всяко от които допуска преминаване на ток със сила до 5 А. Това е достатъчно за автоматично включване и изключване на киловатни уреди или осветителни линии, предназначени за променлив ток 220 V.
LCD Shield. Позволява извеждане на информация на вградения екран, който може да бъде надграден до TFT устройство. Това разширение често се използва за създаване на метеостанции с показания за температура в различни жилищни помещения, пристройки, гараж, както и за температура, влажност и скорост на вятъра навън.

Щит за запис на данни (Data Logging Shield). Основната задача на модула е да записва данни от сензорите на пълноформатна SD-карта с обем до 32 Gb с поддръжка на файлова система FAT32. За записване на микро-SD карта трябва да закупите адаптер. Този щит може да се използва като хранилище за информация, например, при записване на данни от видеорегистратор. Производство на американската фирма Адафрут Индъстрийс.
Щит за SD-карта (SD-card Shield). По-проста и по-евтина версия на предишния модул. Такива разширения се произвеждат от много производители.
EtherNet Shield. Официален модул за свързване на Arduino с интернет без участието на компютър. Има слот за микро-SD карта, което позволява записване и изпращане на данни чрез световната мрежа.
Wi-Fi Shield. Позволява да се осъществява безжичен обмен на информация с поддръжка на режим на криптиране. Служи за свързване с интернет и устройства, които могат да се управляват чрез Wi-Fi.
GPRS Shield. Този модул, като правило, се използва за свързване на “умния дом” със собственика по мобилен телефон чрез SMS съобщения.
Модули на “умния дом”
Свързването на модули от външни производители и възможността за работа с тях, използвайки вградения език за програмиране – основното предимство на отворената система Arduino в сравнение с “фирмените” решения за “умния дом”. Основното е модулите да имат описание на сигналите, които получават или предават.
Начини за получаване на информация
Въвеждането на информация може да се осъществи чрез цифрови или аналогови портове. Това зависи от типа на бутона или сензора, който получава информация и я предава на платката.

Сигналът към микропроцесора може да бъде изпратен от човек, който използва два начина за това:
- Натискане на бутон (клавиш). Логическият проводник в този случай отива към цифровия порт, който получава стойност “0” при отпускане на бутона и “1” при натискане.
- Завъртане на капачка на въртящ потенциометър (резистор) или преместване на лоста на плъзгач. В този случай логическият проводник отива към аналоговия порт. Напрежението преминава през аналогово-цифров преобразувател, след което данните постъпват в микропроцесора.
Бутоните се използват за стартиране на някакво събитие, например, включване и изключване на осветлението, отоплението или вентилацията. Въртящите се копчета се прилагат за промяна на интензитета – увеличаване или намаляване на яркостта на светлината, силата на звука или скоростта на въртене на лопатките на вентилатора.

За автоматично определяне на параметрите на средата или произхода на някакво събитие се използват сензори.
За работата на “умния дом” най-търсени са следните техни разновидности:
- Сензор за звук. Цифровите варианти на това устройство се използват за активиране на някакво събитие с помощта на пляскане или подаване на глас. Аналоговите модели позволяват разпознаване и обработка на звука.
- Сензор за светлина. Тези устройства могат да работят както във видимия, така и в инфрачервения диапазон. Последните могат да бъдат използвани като система за оповестяване при пожар.
- Сензор за температура. За дома и улицата се използват различни модели, тъй като външните са по-добре защитени от въздействието на влага. Има също изнесени устройства на проводник.
- Сензор за влажност на въздуха. За помещение ще подхожда модел DHT11, а за улица – по-скъпият DHT22. И двете устройства също могат да дават показание за температура. Подключват се към цифров порт.
- Сензор за налягане на въздуха. За съвместна работа с платки Arduino добре са се препоръчали аналоговите барометри на фирма Bosh: bmp180, bmp280. Те също измерват температура. Моделът bme280 може да бъде наречен метеостанция, тъй като той дава допълнително и стойност на влажността.
- Сензори за движение и присъствие. Те се използват за охранителни цели или за автоматично включване на осветлението.
- Сензор за дъжд. Реагира на попадане на вода върху неговата повърхност. Той може да бъде също използван за задействане на сигнализация за течове на водопроводния или отоплителния контур.
- Сензор за ток. Те се прилагат за откриване на неработещи електроуреди (прегорели лампи) или за анализ на напрежението, за да се избегне претоварване.
- Сензор за изтичане на газ. Прилага се за откриване и реагиране на повишена концентрация на пропан.
- Сензор за въглероден диоксид. Той се използва за определяне на концентрацията на въглероден диоксид в жилищни стаи и в специални помещения, като винени изби, където протича ферментация.
Съществуват още много различни сензори за специфични задачи, например за измерване на тегло, скорост на водния поток, разстояние, влажност на почвата и т.н.

Много сензори могат да се направят самостоятелно, като се използват по-прости компоненти. Това ще излезе по-евтино. Но, за разлика от използването на серийни устройства, ще трябва да се отдели време за калибриране.
Управление на уреди и системи
Освен събирането и анализа на информация, “умният дом” трябва да реагира на възникващи събития. Наличието на модерна електроника в съвременните домакински уреди позволява директното им управление чрез Wi-Fi, GPRS или EtherNet. Обикновено за системите Arduino се реализира комутация на микропроцесора и високотехнологични устройства посредством Wi-Fi.
За да включите климатика с помощта на Arduino при висока температура в дома, да блокирате телевизора и интернета през нощта в детската стая или да пуснете бойлера за отопление преди пристигането на собствениците, е необходимо да изпълните три действия:
- Инсталирайте модула Wi-Fi на дънната платка.
- Намерете незаетите честотни канали, за да избегнете конфликт на системите.
- Запознайте се с командите на уредите и програмирайте действията (или използвайте готови библиотеки).
Освен “общуването” с компютъризирани уреди, често възникват задачи, свързани с извършването на механични действия. Например, към платката може да се свърже сервозадвижка или малък редуктор, който ще се захранва от нея.

В случай на необходимост от свързване на мощни устройства, работещи от външен източник на захранване, се използват два варианта:
- Включване на реле във веригата.
- Свързване на силов ключ и симистор.
Включеното в електрическата верига електромагнитно или твърдотелно реле затваря и отваря един от проводниците по команда, идваща от микропроцесора. Основната им характеристика е максимално допустимата сила на тока (например 40 A), която може да премине през този уред.
Що се отнася до свързването на силов ключ (мосфет) за постоянен ток и симистор за променлив ток, те притежават по-малка стойност на допустимата сила на тока (5-15 A), но могат плавно да увеличават натоварването. Именно за това на платките са предвидени ШИМ портове. Това свойство се използва при регулиране на яркостта на осветлението, скоростта на въртене на вентилаторите и т.н.
С помощта на релета и силови ключове може напълно да се автоматизират всички електрически вериги в дома и да се стартира генератор при липса на ток. Ето защо на базата на Arduino е реално да се осъществи автономно захранване на апартамент или сграда, включително всички особено важни функции – отопление, водоснабдяване, отвеждане на отпадъчни води, вентилация и охранителна система.
Искате ли домът ви да стане по-умен, но сте на “Вие” с програмирането? В такъв случай препоръчваме да разгледате готови решения от Xiaomi и Apple, които дори начинаещ може лесно да инсталира и настрои. А да задавате команди и да контролирате изпълнението им може дори от своя смартфон.
Повече за умния дом от Xiaomi и Apple в следващите статии:
- Умна къща Ксиаоми: особености на проектирането, преглед на основните възли и работни елементи
- Умен дом Apple: тънкости при организирането на системи за управление на дома от „ябълковата“ компания
Изводи и полезно видео по темата
Пример самостоятелно сглобена заготовка от начално ниво за “умна къща”:
Отвореността на платформата Arduino позволява да се използват компоненти от различни производители. Това позволява лесно да се конструира “умна къща” според изискванията на потребителя. Затова, ако имате поне минимални познания в областта на програмирането и свързването на електронни устройства, на тази система си струва да обърнете внимание.
Вие на практика сте запознати с платформата Arduino и искате да споделите своя опит с начинаещи в тази област? Може би искате да допълните изложения по-горе материал с полезни препоръки или забележки? Пишете вашите коментари под тази публикация.
Ако имате въпроси относно проектирането на система за автоматизиран дом на базата на Ардуино, задайте ги на нашите експерти и на други посетители на сайта в блока по-долу.
