4G рутер в роля на универсален сървър за IoT

4G рутер в роля на универсален сървър за IoT
Серия рутери ICR-3200 са предназначени да заменят класическата комбинация: едноплатен компютър + модем + рутер. Сега може да се стартира всяка необходима логика директно на рутера. Благодарение на мощния ARM процесор, 512 МБ оперативна памет и ~2ГБ вградена флаш памет, на рутера може дори да се стартира nodejs сървър!

Последователните интерфейси RS-232/485 също са вградени в рутера и са налични веднага в операционната система с пълен root достъп. Откритата среда за изграждане на собствени програми и библиотеките C/C++ за работа с нискоуровневото хардуерно API също са налични.
Функцията за дълбок сън ще спести енергия при работа от акумулатор: рутерът може да се активира само когато връзката наистина е необходима.

В статията ще разгледаме интересни функции на устройството и ще опитаме на практика да работим с интерфейса за вход-изход от shell скриптове.

Технически характеристики

Серия рутери ICR-3200 са осъществени на единна хардуерна платформа и са представени в пет модела, които се различават по диапазони на LTE честота, наличие на Wi-Fi и геолокация (GNSS). Устройствата се позиционират като заместители на комбинацията едноплатен компютър и рутер. Мощният процесор и голямото количество оперативна памет позволяват стартиране на ресурсоемки потребителски приложения директно на рутера.

  • Процесор Cortex-A8 — тактова честота 1 ГХц, архитектура 32 бита
  • 512 МБ RAM
  • Флаш памет от 1,5 до 4 ГБ — за съхранение на потребителски данни
  • Портове за вход-изход — интерфейси RS-232/485 и цифрови портове за вход-изход са налични за употреба от потребителските програми

Отделно заслужава да се спомене моделът ICR-3211B, работещ по стандарта LTE Cat. M1 (NB-IoT). Протоколът LTE Cat. M1 е специално разработен за M2M решения, има ниска скорост на предаване на данни (375 kb/s), както и голям обхват и повишена стабилност в сложни условия на свързване в закрити помещения. Рутерът има вграден ионен кондензатор (суперкондензатор), позволяващ на устройството да работи кратко време след пълно изключване на захранването.

Режим на дълбок сън

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

4G рутер в роля на универсален сървър за IoT
В режим на заспиване рутерът почти не консумира енергия и се събужда за 3 секунди

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

Събуждане и заспиване

Управлението на заспиване и събуждане се извършва чрез модула Режим на заспиване.

Съществуват 2 начина за управление на режима на заспиване:

  • Чрез цифров вход — в този режим рутерът се управлява от външно устройство, например микроконтролер. При сигнал LOW на цифровия вход рутерът заспива и когато получи HIGH — се събужда, или обратно. Може също така да се настрои таймаут за защита от случайни превключвания.
  • Чрез вътрешен таймер — рутерът отмерва времето и се събужда/заспива в нужния момент. Това е удобно за извършване на еднократни операции или за зареждане на данни за определен период.

4G рутер в роля на универсален сървър за IoT
Интерфейс за настройка на режима на дълбок сън

Функция „последен дъх“

Неочакваното прекъсване на захранването на отдалечен обект може да бъде особено неприятно, защото не е ясно, поради какво е недостъпна връзката с обекта. Функцията „Последен дъх“ позволява на рутера да работи известно време след напълно изключено захранване и да изпрати съобщение за инцидента, че е настъпило аварийно прекъсване и резервното захранване не е включено. Благодарение на вградения кондензатор, чийто ресурс е значително по-голям от този на акумулаторните батерии, той не изисква поддръжка и смяна. Това е полезно за системи за резервно захранване, при които може да се случат сривове и е важно да се проследи моментът на пълна загуба на напрежение.

4G рутер в роля на универсален сървър за IoT
Рутерът ще изпрати сигнал за авария на захранването дори след пълно прекъсване на захранването

За да реагирате правилно на събитието на загуба на захранване, трябва да разберете за него.
Текущото напрежение на захранването може да се получи или чрез shell-команда status sys:

$ статус sys
Версия на фърмуера : 6.1.10 (2019-07-02)
Сериен номер     : ACZ1100000623519
Профил          : Стандартен
RTC батерия     : Ок
Напрежение      : 12.3 V # ← напрежение на захранването
Температура     : 37 C   # ← температура вътре в корпуса
Време           : 2019-08-16 16:21:18
Време на работа  : 0 дни, 11 часа, 43 минути

Или с помощта на хардуерен контрол на Unix I/O (ioctl) и програма на C/C++ или друг език.
В таблицата са показани адресите на нужните хардуерни регистри. Текущото напрежение на захранването се връща под формата на цяло число, в миливолтове. Използването на нискоуровневото API е за предпочитане пред shell-скриптовете в този случай за по-бърза реакция. Подробна информация за работа с хардуера е налична в ръководството за разработчици.

4G рутер в роля на универсален сървър за IoT
Запитване ioctl, което връща текущото напрежение на захранването.

Последователни интерфейси

В рутера са вградени два последователни интерфейси: RS-232 и RS-485. Те позволяват да се свързват периферни устройства директно към рутера, без използването на допълнителна свързаност. В същото време на рутера може да бъде стартиран пълноценен сървър Node-RED или Nodejs, което позволява да разполагате с едно устройство за разгръщане на проста система за автоматизация, без нуждата от допълнителни компютри и контролери.

4G рутер в роля на универсален сървър за IoT

По подразбиране и двата интерфейса са налични за работа като стандартни сериен устройства в Linux:

ls -la /dev/ttyS*
crw-------    1 root     root      251,   0 Jan  1  1970 /dev/ttyS0 # ← порт rs-232
crw-------    1 root     root      251,   1 Jan  1  1970 /dev/ttyS1 # ← порт rs-485 
crw-------    1 root     root      251,   5 Jan  1  1970 /dev/ttyS5 # ← не разпределен

Всички стандартни библиотеки ще поддържат тези устройства без допълнителни настройки, включително модула Modbus-RTU2TCP и други.

Потребителски модули

Функционалността на устройството може да бъде разширена с помощта на потребителски модули: това е опростен вариант на пакетите, само без пакетен мениджър. В списъка на наличните модули можете да намерите на сайта https://advantech-bb.cz/products/software/user-modules.

Модулите се инсталират ръчно, чрез качване на файл с пакет през уеб-интерфейса:

4G рутер в роля на универсален сървър за IoT

Към този момент са налични 73 модула. Ето някои интересни от тях:

  • Node-RED — популярен инструмент за свързване на различни индустриални протоколи в единна система
  • Nodejs — пълноценен сървър nodejs. Голямото количество оперативна памет и мощният процесор позволяват да се стартират ресурсоемки приложения направо на рутера!
  • Python2/3
  • Уеб-shell — позволява работа в конзолата през браузър.
  • Azure IoT SDK Python — комплект инструменти за разработка на приложения за Microsoft Azure IoT Hub.

Тъй като фърмуерът на рутерите е отворен, разработчиците могат да пишат свои собствени модули, включително и с уеб интерфейс. Ръководства и ресурси са налични в ръководството за писане на модули и и секцията за разработчици на уебсайта на компанията. За удобство при сглобяване на пакети е налична готова среда за крос-компилация.

Хардуерните ресурси чрез shell скриптове

За простите автоматизационни задачи е удобно да се използват shell скриптове, с които може да се управлява светлинната индикация и да се получава/задава състоянието на цифровите пинове.

Светлинната индикация е удобен начин да се покаже текущото състояние на изпълнението на командите. Например, индикацията за предаване на данни — често мигане, опит за свързване — рядко мигане, просто — светва непрекъснато. Нека разгледаме командата led. На входа тя приема само един аргумент — тип мигане на светодиода.

# led
led on|off|fast|slow

Ето как изглежда в реалния живот:


Демонстрация на режимите на работа на потребителския индикатор чрез shell команди

За работа с цифровите пинове се използва командата io.

$ io
Използване: io [get <pin>] | [set <pin> <value>]

io set out0 1 # Задаване на цифровия изход OUT0 в състояние 1 (LOW)
io get bin0   #  Получаване на стойността на цифровия вход BIN0

Важно е да се помни, че логиката в този случай е инвертирана. Съответно 1=LOW, 0=HIGH. Използвайки командата io можем лесно да работим с цифровите пинове от bash скриптове и да изградим проста логика за автоматизация и управление.

Като демонстрация на простотата при работа с цифровите входове и индикацията, ще напишем безполезен скрипт, който показва статуса на цифровия вход с помощта на светодиод.

#!/bin/bash
while true
do
	[ $(io get bin0) -eq 0 ] && led fast || led on
done

Принципът на работа на скрипта е прост: ако BIN0 е в състояние 0, диодът мига често, в противен случай свети непрекъснато. Ето как изглежда в реално време:


Демонстрация на работата на bash скрипт, показващ състоянието на цифровия вход с помощта на индикатор.

Въпреки примитивността на този скрипт, той ясно показва как с една команда, без допълнителен софтуер, библиотеки и настройки, могат да се получават входни данни от цифровите входове и да се реагира на тях.

Връзки

  • В тази статия не се разглеждат мрежовите функции на рутерите, като балансировка, failover, VPN и други, тъй като всички тези теми вече са разгледани в друга наша статия: Промишлени 4G рутери SmartMotion.
  • Пример за приложение на рутера ICR-3211B можете да намерите в нашата първа статия: Здравей, Хъбр, ние сме Advantech.
  • Цените на продуктите можете да намерите в общия онлайн магазин. Собственият сайт на руски все още не е готов.

Каним ви на партньорския форум на Advantech

4G рутер в роля на универсален сървър за IoT
Форумът на Advantech ще бъде уникална платформа за обсъждане на локални и глобални тенденции в областта на Интернет на нещата. Тук ще можете да споделите опит с нови технологични решения и продукти, да намерите нови клиенти и партньори. Ще имате шанс да видите продуктите, които описвахме в статиите, и не само. Участници ще бъдат лидери в индустрията и представители на ключови партньори – NVidia, Intel и други компании, които активно участват в развитието на индустриалния Интернет на нещата за следващите години. Ще се радваме да видим всички специалисти в сферата на индустриалната автоматизация и Интернет на нещата на събитието. Участието в мероприятието е безплатно! Броят на местата е ограничен. Регистрирайте се навреме.

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster