УДК 004.02
е.в. Н1К1ТЕНКО* , е.в. риндич*
1НСТРУМЕНТАЛЬНИЙ ЗАС1Б В1ДДАЛЕНОГО СПОСТЕРЕЖЕННЯ ЗА ПОКАЗНИКАМИ ДАТЧИК1В
Чернiгiвський нацюнальний технологiчний yHÎBepcHTeT, м. 4epHiriB, Украша
Анотаця. Розроблено архитектуру инструментального засобу, який дозволяе стежити за станом показниюв датчитв, збирати статистичну тформацт з використанням сучасних мобтьних i бездротових технологий та ршень. Зааб складаеться з програмного й апаратного забезпечення, яке у сукупностi взаемодiе мiж собою за принципом miент-сервер, використовуючи рiзнi прото-коли обмту iнформацiею. Створено випробувальний зразок, який доводить коректтсть роботи тструментального засобу.
Ключов1 слова: USART, Android, C++, ThingSpeak, веб-сервер.
Аннотация. Разработана архитектура автоматизированного средства, которая позволяет следить за состоянием показаний датчиков, собирать статистическую информацию с использованием современных мобильных и беспроводных технологий и решений. Средство состоит из программного и аппаратного обеспечения, которое в совокупности взаимодействует между собой по принципу клиент-сервер, используя различные протоколы обмена информацией. Создан испытательный образец, доказывающий корректность работы инструментального средства. Ключевые слова: USART, Android, C++, ThingSpeak, веб-сервер.
Abstract. It was developed the architecture of the automated tool that allows monitoring the status of the sensors indicators and gathering statistic information using modern wireless and mobile solutions and techniques. The tool consists of hardware and software which interact together with each other on the principle of the client-server model using a variety of communication protocols (HTTP, USART etc.). The test sample proving the correctness of the instrumental tool has been created. Keywords: USART, Android, C++, ThingSpeak, web-server.
1. Постановка проблеми
Комушкацшш мереж мщно увшшли в життя сучасного суспшьства. ïx широке поширення дозволяе використовувати доступш канали зв'язку не тшьки для спшкування та обмшу повщомленнями, але i для управлшня р1зномаштними пристроями, реал1зуючи таким чином концепщю мониторингу або дiагностики приладiв. 1снуе безлiч технологш, техшчних ршень, транспортних прототшв, що дозволяють проектувати на свош основi системи, яю здшснюють обмш керуючою шформащею i орiентованi на бездротове з'еднання. Бшьшють таких рiшень завжди стикаеться з проблемами енергоефективносп, мобiльностi, вщкритосп та вартостi. Як правило, задовольнити вс чотири вимоги - досить складне завдання. У цш статп розглядаеться можливе рiшення перерахованих вище проблем для под!6них систем. Метою статп е розробка прототипу пристрою, що дозволяе вщдалено стежити за показниками датчиюв, використовуючи вщкрит сучасш технологи, комушкацп та бездротовi мережъ
2. Анал1з досл1джень i публжацш
Велике поширення як комушкацп м1ж пристроями отримали Wi-Fi-мережi [1]. Ефектив-ним засобом комушкацп м!ж декшькома пристроями, використовуючи всього лише одну лшю зв'язку, е протокол 1-Wire. Для взаемоди м!ж двома пристроями дуже штенсивно ви-користовуються р1зш послщовш iнтерфейси, такi як RS-232 i UART [2, 3]. У складних системах зазвичай не е можливим застосування якоюь одше'1 технологи. Найкращим компро-мюом дуже часто виявляеться поеднання р1зних прототшв. Так, для мереж датчикiв Ф!р-
© НЫтенко е.В., Риндич е.В., 2018
ISSN 1028-9763. Математичш машини i системи, 2018, № 1
ми Dallas зручно використовувати 1-Wire [4], в той же час для штенсивного обмшу мiж двома пристроями краще використовувати, наприклад, UART або USB. Дуже часто також використовуються Wi-Fi-мережi датчикiв. Як i в будь-якш iншiй мережi, тут розглядають-ся такi показники:
1) надшшсть - операци з передачi шформацп повиннi здiйснюватися з деякою за-здалегiдь заданою ймовiрнiстю успiху;
2) енергоефектившсть - часта замiна батарей живлення в мобшьних пристроях -одна з найважливших проблем у данш областi;
3) масштабованiсть - дуже важливо мати можливiсть легко розширювати i допов-нювати систему новими властивостями та компонентами. Особливо це актуально для великих систем;
4) адаптившсть - бажано, щоб пристрш або систему, що розроблюються, можна бу-ло застосувати в рiзних апаратних i програмних конфiгурацiях;
5) швидкодiя - бiльша швидкодiя забезпечуе кращу iнтерактивнiсть i взаeмодiю з користувачем, дозволяе включити бiльше число функцш [5].
Данi твердження справедливi для бiльшостi пристро'1'в.
3. Основш елементи систем «1нтернету речей»
Будь-яка система - це набiр деяких елементiв i зв'язкiв мiж ними. Для системи, яка реаль зуеться, такими елементами можуть бути, наприклад:
1. Датчики (температури, вологосп). Не можна говорити про те, що система без да-тчиюв е повноцшною. Вона у такому випадку не може взаемодiяти з навколишнiм середо-вищем i реагувати на ii змiни.
2. Керуючi пристро'1 (наприклад, мшроконтролери рiзних виробникiв). Система завжди працюе за закладеними у нш програмами, програмами, якi виконуються на якому-небудь контролерi, i, можливо, пiд управлiнням певно'1 операцшно'1' системи (найчаспше -це ОС, базоваш на ядрi Linux).
3. Кiнцевi пристро'1' (реле, транзистори i т.п.). Система створюеться заради якоюь мети. Вона повинна сформувати керуючi сигнали для виконання роботи. Причому, це не обов'язково може бути управлшня моторами, верстатами. Як результат роботи також мо-жуть бути i сформоваш бази даних.
4. Пристро'1' вводу/виводу (клавiатура, екран). Повнiстю автоматичних систем поки що не юнуе. Будь-яка система передбачае деяку автоматизащю. Проте на даний момент все ще немае можливосп читати думки людини i працювати без втручання користувача або фахiвця в певш моменти часу. Тому взаемодiя з людиною повинна бути органiзована якимось чином за допомогою систем вводу/виводу.
4. Архггектура системи
Будь-яка система обробки i передачi даних повинна забезпечувати масштабовашсть, висо-ку швидкiсть роботи i надiйнiсть. Система, що розробляеться, складаеться з пристрою зняття показниюв датчикiв (включаючи передавальний пристрiй, що мае вихщ у мережу 1нтернет по бездротовiй Wi-Fi-мережi), сервера ThingSpeak i кiнцевих клiентських при-стро'1'в (рис. 1). Пристрiй зняття показниюв датчикiв складаеться з трьох компоненпв: ме-режi датчикiв, мiкроконтролера i передавального пристрою. Мережа датчикiв являе собою набiр пристро'1'в, що дозволяють зшмати показники характеристик навколишнього середо-вища i взаемодiяти з центральним пристроем по шиш 1-Wire. Центральний пристрш - це мшроконтролер Atmega8L, який мае низьку цiну, мале енергоспоживання i достатню про-дуктивнють для поставлених завдань. Виконуючи одну повнощнну iнструкцiю за один такт, ATmega8L досягае продуктивностi 1 MIPS/МГц, дозволяючи досягти оптимального
стввщношення продуктивносп та споживано'1' енерги [6]. Для передачi даних по мереж використовуеться модуль ESP8266, який е вiдносно дешевим i пiдтримуe весь потрiбний спектр можливостей для передачi i прийому даних, взаемодп з сервером. Як сервер використовуеться ThingSpeak - вщкритий сервер, вихщш тексти якого доступнi на GitHub. ThingSpeak може обробляти GET- i POST-запити. Результат запиту сервер може повертати у формат XML, JSON або ж простим текстом з вщповщдю. Як ^ентський пристрiй пе-редбачаеться використання будь-якого пристрою з встановленою версiею ОС Android не нижче 2.2 або будь-якого шшого пристрою, що мае вихiд у мережу 1нтернет, дозволяе ви-конувати i вiдображати результати HTTP-запитiв. Пщтримка платформи Android API 10 забезпечуе сумюшсть з 99% всiх доступних пристро'1'в на платформi Android в цшому.
Рис. 1. Арх1тектура системи
5. ThingSpeak-сервер
Вихiднi тексти сервера доступш на GitHub (https://github.com/iobridge/thingspeak). За допо-могою даного сервiсу i модуля ESP8266 можна створити програмно-апаратний комплекс, який дозволяе реалiзувати вщдалену взаемодiю та управлiння тими чи шшими системами, навiть якщо джерело управлшня i виконавчi пристро'1' знаходяться на протилежних точках земно'1' куль
Можна використовувати вже готовий сервю, який доступний за адресою http://thingspeak.com, або ж його можна встановити локально на свш сервер. ThingSpeak надае зручний i простий штерфейс REST API, спещально розроблений для мЫатюрних пристро'1'в.
Таким чином, використовуючи даний сервiс, можна забезпечити компонентам системи взаемодп мiж собою на будь-якш вiдстанi, використовуючи вже готовi рiшення. Проект документований, вщповщна документацiя доступна на офiцiйному сайт! (https://thingspeak.com/docs).
6. Зв'язки м1ж компонентами
Датчики - пристро!, взаeмодiяти з якими вщносно нескладно i данi з них можуть збирати прост 8-6iTHi контролери. Була написана програма по збору даних i3 датчикiв температури по штерфейсу 1-Wire та пересилання !х на сервер за допомогою Wi-Fi-модуля ESP8266 на 8-бiтному контролерi Atmega8 з 8 Кб пам'ятi програм. Як результат - написана програма займае 64% доступно! пам'ят (або всього лише 5.12 Кб). I це все з урахуванням того, що реалiзацiя штерфейсу 1-Wire на контролерi була програмною. Крiм того, модулi ESP8266 е самодостатнiми i можуть працювати без зовнiшнiх контролерiв. 1снують також готовi прошивки, яю вже можуть працювати з датчиками DHT11/22, BMP085/180, BH1750, DS18B20, AM2321 i деякими iншими i вщправляти данi на сервер.
Програмне забезпечення написано таким чином, щоб у випадку розриву з'еднання модуль ESP переходив у режим Wi-Fi-точки доступу, дозволяючи тдключитися до нього i задати нову конфiгурацiю.
Блок-схему алгоритму представлено на рис. 2.
Рис. 2. Алгоритм одше! ¡терацп циклу програми
У мереж 1нтернет можна зустр^и iнформацiю про високе енергоспоживання Wi-Fi-модуля. Однак, оскшьки система, що розробляеться, не е системою реального часу, то пос-тшна актившсть не потрiбна. ESP8266 споживае менше 0.5 мА в режимi пiдтримки зв'язку з точкою доступу Wi-Fi i менше 60 мкА в режимi глибокого сну з працюючим годинником реального часу.
Взаeмодiя з Wi-Fi-модулем вiдбуваeться по UART. Для зручносп та прискорення роботи з ним у пам'ят контролера був оргашзований кiльцевий буфер прийнятих даних.
char rxUartBuffer[UART_BUFFER_SIZE]; volatile unsigned char bufferPointer = 0;
Таким чином, вщсилка управляючих команд зводиться до таких функцш:
const char AT[] = "AT\0";
const char AT_PREFIX[] = "AT+\0";
void sendCommand(const char *cmd, char *params)( delay ms(10); if (strcmp(cmd, AT) == 0) sendStr(AT); else(
sendStr(AT_PREFIX); sendStr(cmd); if (params != 0){ sendStr("=\0"); sendStr(params);
}
}
}
uchar push(char *patternOk)( resetBuffer(); sendStr("\r\n\0"); uchar times = DEF_TIMES; while (times != 0)(
_delay_ms(DEF_PAUSE);
if (patternOk != 0 && strstr(rxPuartBuffer, patternOk)){ delay ms(50); return OK;
}
times--;
}
return FAIL;
}
Тодi функцп управлiння модулем спрощуються. Наприклад:
uchar espIsConnected()(
sendCommand("CWJAP?\0", 0); return push("OK");
}
uchar espGetMode(){
sendCommand("CWMODE?\0", 0);
return push(":1") == OK ? MODE_STATION : MODE_AP;
}
Запит на збереження даних у базi даних ThingSpeak буде мати такий вигляд:
uchar sendRequest(const char *ip, int port, const char *data, uchar bPush)(
char cmd[] = "CIPSTART\0"; char pars[50]; sprintf(pars, "\"TCP\",\"%s\",%d\0", ip, port); sendCommand(cmd, pars); if (push("Linked") == FAIL)( sendCommand(cmd, pars);
if (push("CONNECT") == FAIL) return FAIL;
}
sprintf(pars, "%d\0", strlen(data)-1); sendCommand("CIPSEND\0", pars); if (push(">") == FAIL) return FAIL; sendStr(data);
if (bPush == PUSH) return push("OK"); else return OK;
}
Приклад запиту/вщповвд:
> AT+CWJAP="<AP Name>","<Password>"
OK
> AT+CWJAP?
+CWJAP:"<AP Name>"
OK
> AT+CIPSTART="TCP","<IP address>",<PORT>
OK
Linked
> AT+CIPSEND=<QUERY LENGTH>
> GET /update?api_key=<API_KEY>&field1=<VALUE>
SEND OK
+IPD,1:1
OK
Unlink
Мiкроконтролер Atmega8L зi зниженим енергоспоживанням може працювати з максимальною частотою, рiвною 8 МГц. Звернення до виконуючого пристрою по шинi 1-Wire складаеться з операцiй скидання, вщповщьприсутносп, щентифшацп, команди i чи-тання/запису даних. Кожна операщя /г складаеться з N бтв, кожен б^ передаеться за один фшсований часовий слот, р1вний Т = 60 мкс. Таким чином, загальний час виконання будь-яко! операци обчислюеться за такою формулою:
i = =T\NCK +Nm +НЩ +NK0M +КД), (1)
/—i
де NCK = 8 - кшьюсть слот1в команди скидання, N/j//l = 1 - кшькють слот1в команди при-
сутност, Ы1Д - 64 - кшьюсть слот1в команди щентифшацп пристрою, NKOM =16 - кшь-
кiсть слотiв опису команди (читання даних), Nд = 60 - кшьюсть слотiв передачi даних (для значення температури DS18B20).
Таким чином, загальний час дорiвнюе
/ = (8 + 1 + 64 + 16 + 10) ■ бОмкс — 99 -60 — 5,9 мс«6мс.
Перевiрка CRC-коду не вiдiграе суттево! ролi, так як виконуеться за частки мшро-секунд. Даш вщ Wi-Fi-модуля по UART обробляються апаратно i зберiгаються в кшьцево-му буферi по перериванню, тому затримки в ньому теж несуттевь Деяку невизначешсть може вносити передача даних у мережу 1нтернет, але ii необов'язково проводити тсля кожного вимiрювання. Кращим способом тут буде накопичення певно! кшькосп вимiряних значень вiд датчикiв у буферi пам'ятi i вiдправка даного буфера за один раз. Це зшмае на-вантаження з мережi i лiнiй UART мiж контролером i Wi-Fi-модулем i забезпечить ще бь льшу швидкодiю. Крiм того, такий метод ще й знизить енергоспоживання Wi-Fi-модуля.
7. Кл1ентське програмне забезпечення
У pa3i вщдаленого управлiння найбiльш прийнятним BapiaHTOM буде використання протоколу НТТР. Кеpуючi команди - це GET- i POST-запити до сервера. ThingSpeak вже забез-печуе можливiсть прийому команд та ïx обробки. Однак бажано написати вщповщне програмне забезпечення (ПЗ). Враховуючи стан ринку 1Т в даний час, можна зробити висно-вок, що практична бшьшють коpистувaчiв використовуе мобiльнi пристро'1 з наперед вста-новленою ОС Android. Тому цшком логiчним виглядае ршення написати клiентське програмне забезпечення саме для ще'1 ОС. До складу Android SDK входить популярна бiблiо-тека Apache, яка значно спрощуе розробку додатюв, що працюють з мережею. Таким чином, на пристро'1, якi завжди знаходяться поруч з користувачем, можна виводити всю не-обxiдну шформащю про стан системи. Користувач може в будь-який час пеpевipити ïï i прийняти необxiднi piшення.
Бшьше того, безумовною перевагою прийнятого пщходу е те, що одне i те ж ПЗ можна використовувати як для локального, так i для вщдаленого управлшня. Для локального управлшня потpiбно всього лише пщ'еднатись до Wi-Fi-точки доступу, в якш працюе пpистpiй.
Можливостi подальшого розвитку та полшшення проекту:
- можливють додавання шифрування, використовуючи протокол HTTPS;
- у майбутньому можна буде вщмовитися вщ бiблiотеки Apache в Android-^ierni на користь нових зaсобiв роботи з мережею, що надаються Android 6.0 Marshmallow;
- виключити використання контpолеpiв Atmega i перенести вс ïx функцп в модулi ESP8266;
- для великих проекпв або для застосування в умовах виробництва можна використовувати, наприклад, Raspberry Pi, який дозволяе пщняти локальний ThingSpeak сервер, забезпечуючи, таким чином, повну автономшсть i працездатшсть системи навт при вщк-люченш вiд мереж 1нтернет. При наступному пщключенш всю iнфоpмaцiю можна буде легко синхрошзувати;
- забезпечити штегращю ThingSpeak з вiдкpитими хмарними платформами, наприклад, OpenShift (якщо потpiбно проводити склaднi обчислення) i Dropbox (якщо потpiбно збеpiгaти великi обсяги даних).
- додати зручний Web-штерфейс.
8. Висновки
Як було показано в данш статп, на сучасному етат розвитку обчислювально'1 теxнiки i за-гального наукового прогресу цшком реально створювати мшатюрш, швидкодiючi, мобь льнi, енеpгоефективнi пристро'1 та системи з мшмальною вapтiстю. Обсяг бшарного коду ПЗ для упpaвлiння датчиками, пеpедaчi даних у мережу 1нтернет та прийняття керуючих команд вщ вiддaленого користувача склав менше 70% вае'1 пам'ят програм мшроконтро-лера Atmega8L. Було використано 8 шжок мiкpоконтpолеpa з 20. Це означае, що спроекто-вану систему можна вдосконалювати i додавати до не'1 додатковий функщонал. Також було розроблено ^ентський додаток для ОС Android. Запуск програми можливий на 99% вах можливих Android-пристрохв. Розроблений пристрш був пеpевipений на практищ i показав стaбiльну роботу. Таким чином, можна зробити висновок, що розроблена система може використовуватися як самостшний пристрш, а також як складова частини шшо'1, складшшо'1 i бшьшо'1 системи.
СПИСОК ДЖЕРЕЛ
1. The best choice for enterprise IoT networking is Wi-Fi [Електронний ресурс]. - Режим доступу: http://searchmobilecomputing.techtarget.com/tip/The-best-choice-for-enterprise-IoT-networking-is-Wi-Fi.
2. 1-Wire ® (Protocol) Dallas Semiconductor/Maxim [Електронний ресурс]. - Режим доступу: coecsl.ece.illinois.edu/ ge423/sensorprojects/1 -wire_full.doc.
3. Serial Communication [Електронний ресурс]. - Режим доступу: https: //learn.sparkfun.com/tutorials/serial -communication.
4. An Introduction to 1-Wire Technology [Електронний ресурс]. - Режим доступу: hivetool .org/w/images/4/40/Intro_to_ 1 -Wire.doc.
5. Design Principles of Wireless Sensor Networks Protocols for Control Applications [Електронний ресурс] . - Режим доступу: https://people.kth.se/~kallej/papers/wsn_design_springer11.pdf.
6. Datasheets (ESP8266, Atmega8, DS18B20 etc.).
Стаття над1йшла до редакцИ' 30.10.2017