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

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

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

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

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

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

  • Процесор Cortex-A8 — тактова честота 1 GHz, архитектура 32 bit
  • 512 MB RAM
  • Флеш памет от 1,5 до 4 GB — за съхранение на потребителски данни
  • Портове за вход-изход — интерфейсите 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:

$ status sys
Firmware Version : 6.1.10 (2019-07-02)
Serial Number    : ACZ1100000623519
Profile          : Standard
RTC Battery      : Ok
Supply Voltage   : 12.3 V # ← захранващо напрежение
Temperature      : 37 C   # ← температура вътре в кутията
Time             : 2019-08-16 16:21:18
Uptime           : 0 days, 11 hours, 43 minutes

Или чрез хардуерно 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
Usage: io [get ] | [set  ]

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