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

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

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

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

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

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