В сфере промышленной автоматизации существует негласная парадигма, в которой многие производители промышленного оборудования делают контроллеры отдельно, а модемы отдельно. Как правило, каждое устройство помещается в свой корпус, имеет своё питание, большие габариты и высокую стоимость. Такой вариант разделения функционала имеет свои преимущества и недостатки, но, по нашему мнению, он ведет, скорее, к бóльшей коммерциализации, чем обусловлен какими-то объективными причинами. Поэтому мы решили пойти немного по другому пути и сделали универсальное устройство, которое представляет из себя свободно программируемый контроллер на базе Linux с модемом в едином корпусе. Это нам позволило в своих проектах практически совсем отказаться от привычных всем щитов автоматизации и прийти к более мобильным решениям.
В этой статьи мы поделимся с Вами тонкостями настройки модема и несколькими полезными скриптами для более стабильного 3G-соединения.
Предпосылки и решения
При разработке своего устройства мы руководствовались тем, что оно должно выходить в мобильный интернет, чтобы подключаться к облачным платформам. Было два пути: напаивать модем на плату, либо использовать mPCIe-разъемы. Мы остановились на втором варианте и предусмотрели сразу два mPCIe-разъема (рисунок 1), поскольку такой вариант нам показался более интересным и гибким. Ведь установка и замена модема занимает считанные секунды, плюс для пользователя появляется необходимая вариативность и он может использовать такие комбинации mPCIe-модулей, которые ему необходимы под конкретный проект. Кроме 3G-модема это может быть LoraWan или Wi-Fi модули. Плюс ко всему mPCIe-решения зарекомендовали себя как достаточно надежные и качественные.
Рисунок 1 — mPCIe-разъемы
В качестве основного 3G-модуля для нашего устройства мы рассматривали следующие варианты:
- MikroTik R11e-LTE6
- Quectel EC25-E
- YUGA CLM920 TE5
- HUAWEI MU709s-2p
Однако после проведения тестов наиболее предпочтительным для нас в плане надежности и соотношения цена-качество оказался модем фирмы HUAWEI (рисунок 2). Мы взяли его за основу и устанавливаем опционально в наши устройства. Поэтому в дальнейшем мы будем рассматривать настройку и скрипты относительного модема этой модели. Возможно, этот скрипт будет универсальным и будет полезен для других модемов, однако стабильность работы с другими моделями не гарантируется. Для Rasbian Buster и HUAWEI MU709s-2p всё работает отлично.
Рисунок 2 — Модем HUAWEI MU709s-2p, установленный на плату устройства
Использование скрипта для перезагрузки 3G-модема
Для более устойчивой и безотказной работы мы написали скрипт, который будет пинговать заданный IP-адрес, а если же определенное в настройках количество пингов не прошло, то GSM-модем перезагрузится, тем самым восстанавливая зависшее сетевое соединение. Стоит отметить, что модем определяется в системе как сетевая карта lan1.
Архив со всеми необходимыми файлами можно скачать по этой ссылке. Также текст самих скриптов представим ниже.
Файл check_inet.sh необходим для проверки наличия интернет соединения. Если заданный IP-адрес не пингуется, то мы дергаем 19 ногу и перезапускаем модем по питанию.
Файл start_inet.sh запускает check_inet.sh после перезагрузки устройства.
Также в архиве находится файл конфигурации igate.conf
Последовательность настройки:
1. Добавьте правило соответствия физического подключения COM-порта модема к концентратору USB. Для этого поправьте файл по следующему пути:
sudo nano /etc/udev/rules.d/99-com.rules
2. Добавьте в файл следующую строку:
KERNEL==”ttyUSB*”, KERNELS==”1-1.5:2.4″, SYMLINK+=”GSM”
3. Сохраните правила и перезагрузите устройство. Теперь порт Вашего модема будут определять по удобному псевдониму /dev/GSM;
4. Скачайте архив по предложенной выше ссылки, либо самостоятельно создайте файлы
check_inet.sh, start_inet.sh и igate.conf;
5. Скопируйте файл check_inet.sh в папку:
/home/pi/
6. Сделайте файл check_inet.sh исполняемым:
sudo chmod +x /home/pi/check_inet.sh
7. Скопируйте файл start_inet.sh в папку:
/etc/init.d/
8. Сделайте файл start_inet.sh исполняемым:
sudo chmod +x /etc/init.d/start_inet.sh
9. Обновите конфигурацию автозагрузки выполнив команду:
sudo update-rc.d start_inet.sh defaults
10. Скопируйте файл igate.conf в папку:
/home/pi/
11. Настройте файл конфигурации igate.conf.
Управление скриптом
Запуск в фоновом режиме файла скрипта check_inet.sh:
/etc/init.d/start_inet.sh start
Остановить check_inet.sh:
/etc/init.d/start_inet.sh stop
Скрипт также автоматически запускается после перезагрузки устройства.
Варианты применения устройства
Рассмотрим основные задачи, под которые можно использовать устройство:
1. Контроллер с выходом в интернет для передачи данных в облако;
2. 3G-роутер для задач в «поле»;
3. Контроллер для умного дома с резервирующим каналом 3G. То есть можно использовать LAN-порт как основной канал связи, а 3G в качестве резервного, чтобы всегда был доступ к устройству;
4. Базовая станция LoRaWAN, то есть опрос устройств по LoRaWAN и передача данных в облако через сеть 3G или LTE;
5. Устройство для мониторинга транспорта (подключение по CAN и стыковка с различными сервисами)
На самом деле, вариантов применения такого устройства может быть очень много и несомненным его плюсом является законченность, универсальность и мобильность. Одно устройство может заменить привычный шкаф автоматизации и стать незаменимым решением в Ваших проектах.