Raspberry Pi 3

IoT хардуер – по какво да го познаем и как да изберем

Основната градивна единица на IoT архитектурите са “нещата”, които събират и обработват данни.
Напоследък има толкова много производители и устройства, че това как да изберете подходяща комбинация между функционалност, цена и качество става все по-труден. Затова решихме да споделим кои функции са ключови, без кои можете да живееш спокойно и кои са напълно безполезни, но са толкова забавни, че няма да можете да им устоите 🙂

Създаването на IoT приложения е по-достъпно от всякога, благодарение на все по-разрастващият се асортимент от евтин хардуер за разработчици. Модулните хардуерни платформи осигуряват и много голяма гъвкавост. Можете лесно да добавяте допълнителни компоненти или да тествате сензори с различни характеристики. Дори можете да добавите мрежова свързаност и памет за съхранение или обработка на данни, за да го пригодите към променените си изисквания.
Много от комерсиалните готови решения като микроконтролери  или едноплаткови компютри (SBC – Single Board Computer) обаче се базират на т.нар. SoC (System on a chip) интегрални схеми. SoC схемите представляват единичен чип, в който са събрани всички основни компоненти на една компютърна система – процесор, памет, USB, Ethernet, сигнални преобразуватели, захранване и др. Посредством подобна конфигурация за сметка на гъвкавостта (много рядко такива системи имат възможност за сериозно надграждане) печелите удобството да вземете всичко наготово. За щастие на пазара има достатъчно на брой подобни устройства, за да задоволят почти всички шантави идеи. По-долу ще разгледаме няколко от най-известните към момента микроконтролери за прототипиране на IoT, както и най-популярните едноплаткови компютри.

 

Микроконтролерни платформи за разработка

Микроконтролерът е SoC, която има вградена функционалност за съхранение и обработка на данни. Обикновено подобни устройства имат едно или повече процесорни ядра, работна памет (RAM) и енергонезависима памет (EPROM или Flash) за съхранение и изпълнение на софтуерните приложения в контролера. Микроконтролерните платформи за разработка физически представляват платка с допълнително свързани компоненти освен микроконтролера. Тези компоненти осигуряват по-лесно програмиране и свързване към външни устройства и улесняват развойната дейност.
Сензорите и изпълнителните механизми, за които стана дума и във въвеждащата ни статия за IoT, се свързват с микроконтролерите чрез т.нар. входоизходи с общо предназначение – GPIO (General Purpose Input/Output) или чрез комуникационна шина. Стандартни комуникационни протоколи като I2C и SPI служат за вътрешна комуникация между отделните компоненти. Съответствието с тези стандарти на продукти от различни производители прави изключително лесни замяната и добавянето на допълнителни устройства в съществуваща система.

Arduino е платформа с отворен код и отворен хардуер, която се поддържа от голям брой активни потребители, създаващи различни хардуерни и софтуерни инструменти за разработка. Възможностите на платформата са различни при различните модели и при десетките ардуино-съвместими компоненти на трети производители. Дори Intel и Samsung разработват хардуер за развойна дейност, базиран на Ардуино.

Arduino UNO board

Източник: Adafruit

Подобно на Ардуино, ESP8266 има огромна база потребители, които го развиват. Някои от по-известните развойни платки, базирани на ESP8266 са NodeMCU, WeMos, Feather Huzzah и още много. Именно на наличието на този чип се дължи и бумът в последните години на всякакъв тип безжично управлявани устройства – ключове за лампи, контакти, електрически крушки, кафемашини, кукли, прахосмукачки и много много други. Отвореното общество, което поддържа ESP8266-базираните хардуерни платформи непрестанно подобрява и създава софтуерни библиотеки за работа с Lua, Python, JavaScript. Това позволява интеграцията на WiFi функционалност и сравнително проста логика в системи с изкуствен интелект като Amazon Alexa, Google Home, Melissa, както и в редица по-прости локални системи за домашна автоматизация.

Стандартният подход за разработка на софтуер за Ардуино и подобните на него микроконтролери е да се използва C или C++ през Arduino IDE средата за програмиране. Все пак съществуват и графични инструменти за програмиране, базирани на функционални блокове (напр. FProg). Ардуино-съвместимите платки, имащи еднакво разположение на хардуерните входоизходи, могат да бъдат лесно разширявани с функции като SD карта, Ethernet или Bluetooth посредством т.нар. шийлд (разширителна платка). Въпреки, че Ардуино е най-широко използваният хоби микроконтролер и развойна среда, има и няколко негови големи конкурента, които заслужават внимание. Tessel и Particle.io поддържат JavaScript по подразбиране, а Python се поддържа от други продукти като PyBoard. Платки като WeIO освен с Python могат да се програмират и графично с HTML5 базиран софтуер.

Все пак ако изберете да работите с Ардуино имате възможността да използвате вече готови програми, разработени за друга ардуино-съвместима платформа и да ги пригодите към вашата задача. Въпреки, че Ардуино се базира на чип на Atmel е възможно и използването на софтуер, написан за коренно различна хардуерна платформа като ChipKit, базирана на PIC микроконтролер, благодарение на множеството универсални библиотеки в Arduino IDE. Когато приложението налага използването на функции от много ниско ниво, като например вградените в самите микроконтролери режими за екстремно пестене на енергия (deep sleep) или комуникацията по строго специфични за производителя на чипа протоколи, най-вероятно ще загубите и част от универсалността на кода. Освен на софтуерната съвместимост е важно да обърнем внимание и на хардуерната. Например Ардуино използва 0 волта за ниско ниво и 5 волта за високо ниво на сигнала на цифровите входове, докато ESP8266 и Particle например, използват съответно 0V и 3.3V. Това най-вероятно ще повлияе и върху избора ви на сензор или разширителна платка, защото дори и привидно малки, подобни разлики в напрежението могат да повредят микроконтролера или крайното устройство. Има и вариант за използване на конвертор на логически нива, който ще уеднакви нивата, но и ще оскъпи крайния продукт.

 

Едноплаткови компютри

Едноплатковите компютри (SBC) са с едно ниво по-висока функционалност от микроконтролерите, защото позволяват свързването на периферни устройства като клавиатури, мишки, харддискове и монитори, като имат и значително по-голяма процесорна мощ – например четириядрен 1.2 GHz 32 битов ARM базиран процесор, в сравнение с едноядрен 0.016 GHz 8 битов Atmel микроконтролер.
Някои от моделите, които владеят първите места по функционалност, цена и качество са Raspberry Pi 3BeagleBone BlackDragonBoard 410c, Banana Pi и едно българско попълнение, с което се гордеем – Olinuxino.

IoT хардуер - Raspberry Pi 3

Разликата между микроконтролер и SBC се размиват в устройства като Onion Omega 2, които са много мощни микроконтролери и се приближават като възможности до ниския клас SBC. Най-доброто от двата свята се интегрира в UDOO или Intel Galileo, които са ARM базирани линукс системи с вграден ардуино-съвместим микроконтролер.
Подобно на микроконтролерите, едноплатковите компютри могат да се разширяват посредством допълнителни платки. Наричат се hats при Raspberry Pi и capes при BeagleBone. Добавянето на модули за управление на двигатели или аналогово-цифрови преобразуватели значително увеличават възможностите за създаване на IoT приложения.

Много едноплаткови компютри приличат повече на мини персонални комютри – имат дори операционна система като Linux или Windows 10. В резултат на това има много по-голям избор от езици и софтуер за разработка на приложения за вградени системи, IoT, изпълнителни устройства и устройства за съхранение на данни в сравнение с микроконтролерите. Минусите на SBC са няколко – значително по-сложни са за първоначална настройка, по-големи са, консумират в пъти повече енергия и са по-податливи на проблеми като повреда на SD картата или паметта, съхраняваща данни и приложения.

 

Микроконтролер или едноплатков компютър?

Въпреки, че както микроконтролерите, така и едноплатковите компютри могат да ви послужат само в една част от реализацията на IoT платформа, те са основната градивна единица на IoT – хардуера. Един от начините да изберете подходящ хардуер е да преценим каква функционалност искаме да постигне вашето приложение и най-важното – дали планирате да го разширявате. След това можете да следвате тези уточняващи въпроси:

  • Уточнете типа и броя на периферните сензори и други външни компоненти. Ако е необходимо потърсете и схеми на свързване на въпросните компоненти.
  • Изберете микроконтролер или SBC за четене на данни и управление на крайните устройства. Най-често се използва централен едноплатков компютър, който координира множество микроконтролери, което може да създаде проблем при спиране на централното устройство. Затова препоръчваме множество SBC, които да споделят натоварването и отпадането на едно устройство да не влияе на работоспособността на системата.
  • Изберете комуникационни протоколи, които ще използвате за комуникация между компонентите на устройството – например I2C за четене на данни от сензори.
  • Какъв хардуер и протоколи ще използвате за комуникация между отделните устройства и към облачните услуги?

За създаването на система за домашна автоматизация с малък бюджет ние бихме избрали Raspberry Pi Zero W, защото е малко и супер евтино решение (с цена около $25) с учудваща за размерите си изчислителна мощ (1GHz процесор и 512 MB RAM памет), достатъчна за осъществяване на голяма част от необходимите изчисления директно в устройството. Поддържа и SD карта за запис на данни до 64 GB. Има и 40 универсални входоизхода и поддържа SPI и I2C протоколи. Може да се захрани както през микро USB с външна батерия, така и чрез обикновено зарядно за телефон.

С напредването на прототипирането на IoT устройства и вграден софтуер, както и съпътстващите ги приложения и услуги, не е лоша идея периодично да преглеждате функционалността на прототипите си, както и тяхното бързодействие, надеждност и сигурност и да променят избора на хардуер ако е необходимо. Нови версии на платките с разширени възможности се появяват средно между 6 и 12 месеца.

 

Как интеграцията в IoT променя изискванията към хардуера?

Raspberry Pi 3 например може да се използва както за гледане на филми, така и за управление на роботи, защото е достатъчно универсална платформа. Понеже IoT устройствата обикновено са силно специализирани и са създадени да работят в много ограничени и специфични условия, хардуерните изисквания към тях могат да варират в прекалено широки граници. Докато при започване на проекта универсален хардуер може да свърши работа, след няколко итерации и уточняване на изискванията може да се насочите и към създаване на специализирани платки или компоненти с цел повишаване на бързодействието или подобряване на цената. Като част от този процес ще трябва да съобразите следното:

  • Изисквания към сигурността
  • Удобство при разработката
  • Изисквания за събиране, съхранение и обработка на данните
  • Изисквания за свързаността
  • Изисквания към захранването и времето на автономност
  • Физически размери на устройството
  • Бюджет за разработка и себестойност на крайния продукт

Изисквания към сигурността

Сигурността е критичен елемент за IoT и трябва да се съблюдава във всички стадии на създаване на една IoT архитектура, като се започне от хардуера. Целостта и сигурността на данните, събирани от устройствата трябва да остане защитена и незасегната, дори и по време на прототипирането. Сигурността се отнася както към самите устройства, така и към комуникационните мрежи, които ги свързват, а също и към съответните облачни услуги и приложения. Затова трябва да сме сигурни, че всяко отделно устройство има достатъчно изчислителна мощност както да криптира данните преди и по време на изпращане, така и да декриптира пристигащите съобщения със скоростта, която приложението изисква. Всички софтуерни библиотеки, които имат връзка с по-горно ниво услуги трябва да поддържат и съответното ниво на оторизация и контрол на достъпа. Тук е значително по-лесно и евтино да изберем готово универсално решение, което поддържа сигурна регистрация на допълнителни устройства и сигурен достъп за отдалечен софтуерен ъпгрейд при нужда.

Удобство при разработката

Докато създавате прототип е изключително важно да се вземе предвид удобството на работа както с хардуера, така и със софтуера, за да може бързо и лесно IoT устройството да започне да събира, обработва и изпраща данни в облака. Обърнете внимание на достъпността, наличието и качеството на документацията и инструментите за разработка, предлагани от производителя на хардуера или от поддръжниците на платформата. Избирайте устройства, които са бързи и лесни за препрограмиране и изискващи минимална конфигурация, за да спестите време и разходи по стартирането IoT решението.

Изисквания за събиране, съхранение и обработка на данните

Броят свързаните сензори, типът и честотата на събиране на данните определят размерите на данните, които ще бъдат обработени. Това от своя страна влияе на хардуерните изисквания за съхранение на данни. Количеството данни, които ще се наложи да събира всяко устройство зависи от това колко често то се свързва с по-горните нива в IoT архитектурата, за да ги изпрати. Например ако имаме устройство, свързано с кабел в умна сграда, то ще може да изпраща малки обеми сурови данни директно към постоянно наличен сървър, то ще има много малки изисквания към процесор и памет. Устройство, което трябва да обработи големи обеми от данни накуп, да ги криптира и изпрати би имало много по-големи изисквания. Отдалечените устройства на батерия, които събират данни и ги изпращат през няколко часа, трябва да имат същевременно много малка консумация на енергия и голям капацитет памет.

Изисквания за свързаността

Главните изисквания към безжичните мрежи са обхватът, или колко далече можем да изпратим информация, и количеството данни, което можем да изпратим за определен период от време. Тук е много важно да заложим на протоколи и апаратура, които поддържат толеранс към грешки от комуникацията и възможност за автоматично свързване и повторно изпращане при нужда. Избраният хардуер може да има вградени функции като Bluetooth или WiFi, но може и да се наложи добавянето на разширителни модули за тях. Въпреки по-високата цена, разширителните модули позволяват гъвкавостта да се изпробват различни начини на комуникация и различни производители по време на прототипирането. Така може да се определи по-точно обхватът и консумацията на енергия например.

Изисквания към захранването и времето на автономност

Всички по-горе изброени изисквания – броят сензори, обработката на данните, свързаността – влияят върху захранването и времето на автономност. Тук най-важното решение е дали ще се насочите към постоянно свързано към електрическата мрежа устройство или ще заложите на захранване от батерии или суперкондензатори. Наличието на батерии повдига няколко допълнителни въпроса – какви са техния тип, капацитет, размер, тегло и изискване за околна температура, дали ще са презареждаеми, сменяеми или цялото устройство ще се подменя след изчерпването им. Ако са презареждаеми – колко често и как ще се зареждат? Имайте предвид всички тези изисквания при проектирането на IoT с отдалечени точки, за да се избегнат неприятните изненади.

Физически размери на устройството

Дизайнът на крайния продукт включва както външният вид, така и размерите. Влиянието на околната среда на мястото, където ще се използва устройството също не трябва да се пренебрегва – ще има ли нужда от влагозащитен или усилен корпус срещу кал, удар, вибрации, електромагнитни смущения? Може да се окаже, че след поставянето на подобно IoT устройство в силно защитена кутия, обхватът му намалява наполовина. Ако подмените антената с по-мощна ще срещнете проблем и в захранването или батерията. Ако подмените и тях, може да се промени физическия размер и да се наложи да правите нова кутия. Все емоции, които можете да си спестите с правилно планиране.

Бюджет за разработка и себестойност на крайния продукт

Цената на хардуера включва както началната инвестиция за основните и допълнителни функции, сензори и др., така и последващите разходи за енергия, поддръжка, подмяна на дефектни части. Все по-разпространен е и разходът за лицензи или периодична софтуерна и хардуерна поддръжка. Както вече споменахме, в началото най-вероятно ще ви бъде много лесно да използвате готов SBC (едноплатков компютър), за да докажете, че идеята ви работи. По-късно обаче ще се окаже, че не използвате голяма част от фукнциите му, за които първо плащате, а след това харчат излишна енергия. Обикновено в този момент е по-вероятно да преминете към по-евтин вариант с по-малко функции или към създаване на изцяло ваш хардуер. Ако сте късметлии, в периода на развойна дейност може технологиите да напреднат и цената на SBC да падне достатъчно, за да не се наложи да променяте нищо. Тогава обаче може би разработката ви е отнела твърде много време.

 

Заключение

Както виждате няма един начин и един универсален размер хардуер за всички IoT проекти. Въпреки това ако се насочите към вече готови едноплаткови компютри или микроконтролери ще си спестите много главоболия покрай дизайна и сертифицирането на продукта, без да губите функционалност и гъвкавост. Това, което ще научите във фазата на прототипиране може да ви помогне в следващите етапи на създаване на IoT решението. И все пак имайте предвид, че това е едва началната фаза на създаването на IoT продукт, но същевременно и най-важната. В следващите статии ще обърнем внимание на различните IoT протоколи за комуникация и готовите библиотеки и инструменти, които могат да ви помогнат при изграждането на IoT архитектури.

Междувременно ако имате нужда от помощ при избора на платформа, интеграцията на даден сензор или други въпроси, можете да попитате в нашата Фейсбук страница или във Форума.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *