
Серия рутери са предназначени да заменят класическата комбинация: компютър с едно плато + модем + рутер. Сега е възможно да се стартира всяка необходима логика прямо на рутера. Благодарение на мощния ARM процесор, 512 MB оперативна памет и ~2GB вградена флеш памет, на рутера може да бъде стартиран дори nodejs сървър!
Последователните интерфейси RS-232/485 също са вградени в рутера и са достъпни незабавно в операционната система с пълен root достъп. Отворена среда за изграждане на собствени програми и C/C++ библиотеки за работа с ниско ниво хардуерно API също са налични.
Функцията на дълбокия сън ще спомогне за икономия на енергия при работа с батерия: рутерът може да се активира само когато свързаността е наистина необходима.
В статията ще разгледаме интересните функции на устройството и ще опитаме практически да работим с интерфейса за вход-изход от shell скриптове.
Технически характеристики
Серия рутери са реализирани на единна хардуерна платформа и са представени в пет модела, които се различават по честотни диапазони на LTE, наличието на Wi-Fi и геолокация (GNSS). Устройствата са позиционирани като замяна на комбинацията от компютър с едно плато и рутер. Мощният процесор и голямото количество оперативна памет позволяват стартиране на ресурсоемки потребителски приложения прямо на рутера.
- Процесор Cortex-A8 — тактова честота 1 GHz, архитектура 32 bit
- 512 MB RAM
- Флеш памет от 1,5 до 4 GB — за съхранение на потребителски данни
- Портове за вход-изход — интерфейсите RS-232/485 и цифровите портове за вход-изход са налични за използване от потребителски програми
Особено внимание заслужава моделът , работещ по стандарта LTE Cat. M1 (). Протоколът LTE Cat. M1 е специално проектиран за M2M решения, предлагаща ниска скорост на предаване на данни (375 kb/s), както и по-голямо разстояние и повишена стабилност при сложни условия на връзка на закрито. Рутерът има вграден , позволяващ устройството да работи кратко време след пълно прекъсване на захранването.
Режим на дълбок сън
Режимът на дълбок сън позволява рутерът да влезе в състояние, когато всички процеси са замразени и хардуерната част е изключена, с цел икономия на енергия, като всички функции на устройството са деактивирани и отстрани то ще изглежда напълно изключено. Консумацията на енергия в този режим е не повече от 10 mW.

В режим на сън рутерът почти не консумира енергия и се събужда за 3 секунди
Когато е необходимо да се събуди рутерът за предаване на данни, той ще се събуди за ~3 секунди. Разбира се, ще е необходимо допълнително време за регистрация на модема в клетъчната мрежа, но това е значително по-бързо от стартирането на рутера от нула. Тази опция е полезна за системи с автономно захранване, които през по-голямата част от времето са в режим на изчакване и се активират от време на време за изпълнение на активни действия, например сигнализация или резервен блок.
Събуждане и заспиване
Управлението на заспиването и събуждането се осъществява чрез модула .
Съществуват 2 начина за управление на режима на сън:
- Чрез цифров вход — в този режим рутерът се управлява от външно устройство, например микроконтролер. При сигнал LOW на цифровия вход рутерът заспива, а при получаване на HIGH — се събужда, или обратното. Може също така да се настрои таймаут за защита от случайни превключвания.
- Чрез вътрешен таймер — рутерът отмерва време и се събужда/засипва в нужното време. Това е удобно за извършване на единични операции или за зареждане на данни за определен период.

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

Рутерът ще изпрати сигнал за авария на електрическото захранване дори след пълно изключване на захранването
За правилно реагиране на събитието на загуба на захранване, е необходимо по някакъв начин да се разбере за това.
Настоящото захранващо напрежение може да се получи или с помощта на 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-скриптовете в този случай за по-бърза реакция. Подробна информация за работата с хардуера е налична в

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

По подразбиране и двата интерфейса са достъпни за работа като стандартни сериен устройства в 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 # ← не разпределен
Всички стандартни библиотеки ще поддържат тези устройства без допълнителни настройки, включително модул и други.
Потребителски модули
Функционалността на устройството може да бъде разширена с помощта на потребителски модули: това е опростен вариант на пакети, само без пакетен мениджър. Пълен списък на наличните модули е наличен на сайта .
Модулите се инсталират ръчно, чрез зареждане на файла на пакета през уеб интерфейса:

Към момента са налични 73 модула. Ето някои интересни от тях:
- — популярен инструмент за обединяване на различни индустриални протоколи в единна система
- — пълноценен сървър nodejs. Голямото количество оперативна памет и мощният процесор позволяват стартиране на ресурсоемки приложения директно на рутера!
- — позволява работа в конзолата чрез браузър.
- — комплект за инструменти за разработка на приложения за 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 и други, тъй като всички тези теми вече са разгледани в друга наша статия: .
- Пример за приложение на рутер може да се намери в нашата първа статия: .
- Цените на продуктите могат да бъдат намерени в общия . Собственият сайт на руски все още не е готов.
Поканваме ви на партньорския форум на Advantech

Форумът на Advantech ще бъде уникална платформа за обсъждане на локалните и глобалните тенденции в областта на Интернет на нещата. Тук ще можете да обмените опит в използването на нови технологични решения и продукти, да намерите нови клиенти и партньори. Ще имате шанс да видите продуктите, които описвахме в статиите и не само. В нашата програма ще участват лидери в индустрията и представители на ключови партньори – NVidia, Intel и други компании, които активно участват в развитието на индустриалния Интернет на нещата през следващите години. Ще се радваме да видим на събитието всички специалисти в сферата на промишлената автоматизация и Интернет на нещата. Участието в събитието е безплатно! Местата са ограничени. .
Източник: habr.com
