[Разработка под Linux, Разработка на Raspberry Pi, Компьютерное железо, Интернет вещей, DIY или Сделай сам] Встраиваемый компьютер AntexGate + 3G-модем. Полезные настройки для более стабильного интернет-соединения
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В сфере промышленной автоматизации существует негласная парадигма, в которой многие производители промышленного оборудования делают контроллеры отдельно, а модемы отдельно. Как правило, каждое устройство помещается в свой корпус, имеет своё питание, большие габариты и высокую стоимость. Такой вариант разделения функционала имеет свои преимущества и недостатки, но, по нашему мнению, он ведет, скорее, к бóльшей коммерциализации, чем обусловлен какими-то объективными причинами. Поэтому мы решили пойти немного по другому пути и сделали универсальное устройство, которое представляет из себя свободно программируемый контроллер на базе 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 ногу и перезапускаем модем по питанию. Код из себя представляет следующий вид:
#!/bin/bash
#count=0;
#echo "Start script"
#echo 19 > '/sys/class/gpio/export'
while [ true ]; do
# sleep 30
. /home/pi/igate.conf
#echo $usb_port
#echo 'AT^NDISDUP=1,1,''"'$apn'"''\r\n'
#echo 'AT^NDISDUP=1,1,"internet.mts.ru"\r\n'
flag=0
for ((i = 1; i <= $ping_count; i++)); do
#for i in {1..$ping_count}; do #делаем 5 пингов до сервера
#ping -I eth1 -c 1 8.8.8.8 > /dev/null || flag=$(($flag+1))
ping -I $interface -c 1 $ping_ip || flag=$(($flag+1))
sleep 1
done
if [ "$flag" -ge "$ping_error" ]; then #если потерь пакетов больше 3х
#echo "рестарт модема - начало"
#count=$((count+1))
#echo $count
#рестарт модема
sudo ifconfig eth1 down
echo 19 > '/sys/class/gpio/export'
echo out > '/sys/class/gpio/gpio19/direction'
echo 0 > '/sys/class/gpio/gpio19/value'
sleep 1
echo 1 > '/sys/class/gpio/gpio19/value'
sleep 15
sudo ifconfig eth1 up
sleep 1
#echo -en 'AT^NDISDUP=1,1,"internet.mts.ru"\r\n' > /dev/ttyUSB3
#АТ команда для записи настроек точки доступа APN
echo -en 'AT^NDISDUP=1,1,''"'$apn'"''\r\n' > $usb_port
#echo "рестарт модема - конец"
fi
sleep $timeout
done
Файл start_inet.sh запускает check_inet.sh после перезагрузки устройства:
#!/bin/bash
### BEGIN INIT INFO
# Provides: start_inet
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Example initscript
# Description: This service is used to manage a servo
### END INIT INFO
case "$1" in
start)
echo "Starting check_inet"
sudo /home/pi/check_inet.sh > /dev/null 2>&1 &
#/home/pi/check_inet.sh
;;
stop)
echo "Stopping check_inet"
#killall servod
sudo kill -USR1 $(ps ax | grep 'check_inet' | awk '{print $1}')
;;
*)
echo "Usage: /etc/init.d/check_inet start|stop"
exit 1
;;
esac
exit 0
Также в архиве находится файл конфигурации 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. Настройте файл конфигурации. Ниже представлен файл конфигурации с комментариями:
#ip-адрес пинга. Скрипт будет пытаться пинговать этот ip-адрес, если определенное в параметре [ping_error] количество пингов не прошло, скрипт будет перезагружать GSM-модем, тем самым восстанавливая зависшее сетевое соединение.
ping_ip=”8.8.8.8″
#точка доступа APN. Это адрес точки доступа Вашего интернет-провайдера, он выдается вместе с сим-картой.
apn=”internet.mts.ru”
#период проверки соединения 3G (период пинга). Период выполнения скрипта. Каждые 30 секунд будет осуществляться проверка пингов.
timeout=30
#количество пингов. Общее количество пингов.
ping_count=5
#количество неуспешных пингов для рестарта модема. Количество неуспешных пингов, после которых необходимо выполнять перезагрузку модема. Не может быть больше чем [ping_count]. Процент потерянных пакетов нужно подбирать индивидуально в зависимости от качества покрытия сети.
ping_error=3
#LAN интерфейс модема. Сетевой интерфейс модема, обычно на устройстве AntexGate определяется как [eth1], посмотреть название можно выполнив команду ifconfig
interface=eth1
#USB порт модема. Физический USB порт к которому подключена сетевая карта, обычно на устройстве AntexGate определяется как [ttyUSB4]
usb_port=”/dev/GSM”
Управление скриптом
Запуск в фоновом режиме файла скрипта check_inet.sh:
/etc/init.d/start_inet.sh start
Остановить check_inet.sh:
/etc/init.d/start_inet.sh stop
Скрипт также автоматически запускается после перезагрузки устройства.
Варианты применения устройства
Рассмотрим основные задачи, под которые можно использовать устройство:
- Контроллер с выходом в интернет для передачи данных в облако;
- 3G-роутер для задач в «поле»;
- Контроллер для умного дома с резервирующим каналом 3G. То есть можно использовать LAN-порт как основной канал связи, а 3G в качестве резервного, чтобы всегда был доступ к устройству;
- Базовая станция LoRaWAN, то есть опрос устройств по LoRaWAN и передача данных в облако через сеть 3G или LTE;
- Устройство для мониторинга транспорта (подключение по CAN и стыковка с различными сервисами)
На самом деле, вариантов применения такого устройства может быть очень много и несомненным его плюсом является законченность, универсальность и мобильность. Одно устройство может заменить привычный шкаф автоматизации и стать незаменимым решением в Ваших проектах.
===========
Источник:
habr.com
===========
Похожие новости:
- Релиз ядра Linux 5.8
- [Производство и разработка электроники, Электроника для начинающих] О том, как на завод министр приезжал
- [Игры и игровые приставки, Киберспорт, Разработка игр] Чего не хватает современным шутерам?
- [Unity, Игры и игровые приставки, Разработка игр, Разработка мобильных приложений] Сказ о разработке амбициозного проекта 16-ти летним парнем (file547)
- [JavaScript, Разработка веб-сайтов] Чем «фрагменты» могут помочь в Веб-разработке на примере Malina.js (перевод)
- [DIY или Сделай сам, Лайфхаки для гиков, Научно-популярное, Физика, Электроника для начинающих] Точечная сварка под микроскопом
- [*nix, Настройка Linux] Последнее обновление CentOS ломает GRUB2-efi загрузчики
- [Будущее здесь, Гаджеты, Интерфейсы, Компьютерное железо, Лайфхаки для гиков] Как использовать десктоп без десктопа? Обзор Samsung Dex
- [Гаджеты, Краудсорсинг] Flipper Zero собрал $1 млн за полтора дня на Kickstarter
- [Информационная безопасность, Тестирование мобильных приложений] Kali Linux NetHunter на Android Ч.3: нарушение дистанции
Теги для поиска: #_razrabotka_pod_linux (Разработка под Linux), #_razrabotka_na_raspberry_pi (Разработка на Raspberry Pi), #_kompjuternoe_zhelezo (Компьютерное железо), #_internet_veschej (Интернет вещей), #_diy_ili_sdelaj_sam (DIY или Сделай сам), #_raspberry_pi, #_raspberry, #_raspbian, #_raspberry_pi_3, #_iot, #_internet_of_things, #_openhab, #_homeassistant, #_iridium, #_iridium_mobile, #_nodered, #_scada, #_codesys, #_smart_home, #_umnyj_dom (умный дом), #_umnyj_gorod (умный город), #_umnyj_avtomobil (умный автомобиль), #_internet_veschej (интернет вещей), #_asu_tp (асу тп), #_asutp (асутп), #_linux, #_mqtt, #_rs485, #_rs232, #_can_shina (can шина), #_canbus, #_1wire, #_razrabotka (разработка), #_diy_diy_ili_sdelaj_sam (diy diy или сделай сам), #_diy, #_oblachnye_servisy (облачные сервисы), #_oblachnye_tehnologii (облачные технологии), #_promyshlennaja_avtomatizatsija (промышленная автоматизация), #_promyshlennyj_internet_veschej (промышленный интернет вещей), #_razrabotka_pod_linux (
Разработка под Linux
), #_razrabotka_na_raspberry_pi (
Разработка на Raspberry Pi
), #_kompjuternoe_zhelezo (
Компьютерное железо
), #_internet_veschej (
Интернет вещей
), #_diy_ili_sdelaj_sam (
DIY или Сделай сам
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:40
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В сфере промышленной автоматизации существует негласная парадигма, в которой многие производители промышленного оборудования делают контроллеры отдельно, а модемы отдельно. Как правило, каждое устройство помещается в свой корпус, имеет своё питание, большие габариты и высокую стоимость. Такой вариант разделения функционала имеет свои преимущества и недостатки, но, по нашему мнению, он ведет, скорее, к бóльшей коммерциализации, чем обусловлен какими-то объективными причинами. Поэтому мы решили пойти немного по другому пути и сделали универсальное устройство, которое представляет из себя свободно программируемый контроллер на базе Linux с модемом в едином корпусе. Это нам позволило в своих проектах практически совсем отказаться от привычных всем щитов автоматизации и прийти к более мобильным решениям. Под катом этой статьи мы поделимся с Вами тонкостями настройки модема и несколькими полезными скриптами для более стабильного 3G-соединения. Предпосылки и решения При разработке своего устройства мы руководствовались тем, что оно должно выходить в мобильный интернет, чтобы подключаться к облачным платформам. Было два пути: напаивать модем на плату, либо использовать mPCIe-разъемы. Мы остановились на втором варианте и предусмотрели сразу два mPCIe-разъема (рисунок 1), поскольку такой вариант нам показался более интересным и гибким. Ведь установка и замена модема занимает считанные секунды, плюс для пользователя появляется необходимая вариативность и он может использовать такие комбинации mPCIe-модулей, которые ему необходимы под конкретный проект. Кроме 3G-модема это может быть LoraWan или Wi-Fi модули. Плюс ко всему mPCIe-решения зарекомендовали себя как достаточно надежные и качественные. Рисунок 1 — mPCIe-разъемы В качестве основного 3G-модуля для нашего устройства мы рассматривали следующие варианты:
Однако после проведения тестов наиболее предпочтительным для нас в плане надежности и соотношения цена-качество оказался модем фирмы HUAWEI (рисунок 2). Мы взяли его за основу и устанавливаем опционально в наши устройства. Поэтому в дальнейшем мы будем рассматривать настройку и скрипты относительного модема этой модели. Возможно, этот скрипт будет универсальным и будет полезен для других модемов, однако стабильность работы с другими моделями не гарантируется. Для Rasbian Buster и HUAWEI MU709s-2p всё работает отлично. Рисунок 2 — Модем HUAWEI MU709s-2p, установленный на плату устройства Использование скрипта для перезагрузки 3G-модема Для более устойчивой и безотказной работы мы написали скрипт, который будет пинговать заданный IP-адрес, а если же определенное в настройках количество пингов не прошло, то GSM-модем перезагрузится, тем самым восстанавливая зависшее сетевое соединение. Стоит отметить, что модем определяется в системе как сетевая карта lan1. Архив со всеми необходимыми файлами можно скачать по этой ссылке. Также текст самих скриптов представим ниже. Файл check_inet.sh необходим для проверки наличия интернет соединения. Если заданный IP-адрес не пингуется, то мы дергаем 19 ногу и перезапускаем модем по питанию. Код из себя представляет следующий вид: #!/bin/bash
#count=0; #echo "Start script" #echo 19 > '/sys/class/gpio/export' while [ true ]; do # sleep 30 . /home/pi/igate.conf #echo $usb_port #echo 'AT^NDISDUP=1,1,''"'$apn'"''\r\n' #echo 'AT^NDISDUP=1,1,"internet.mts.ru"\r\n' flag=0 for ((i = 1; i <= $ping_count; i++)); do #for i in {1..$ping_count}; do #делаем 5 пингов до сервера #ping -I eth1 -c 1 8.8.8.8 > /dev/null || flag=$(($flag+1)) ping -I $interface -c 1 $ping_ip || flag=$(($flag+1)) sleep 1 done if [ "$flag" -ge "$ping_error" ]; then #если потерь пакетов больше 3х #echo "рестарт модема - начало" #count=$((count+1)) #echo $count #рестарт модема sudo ifconfig eth1 down echo 19 > '/sys/class/gpio/export' echo out > '/sys/class/gpio/gpio19/direction' echo 0 > '/sys/class/gpio/gpio19/value' sleep 1 echo 1 > '/sys/class/gpio/gpio19/value' sleep 15 sudo ifconfig eth1 up sleep 1 #echo -en 'AT^NDISDUP=1,1,"internet.mts.ru"\r\n' > /dev/ttyUSB3 #АТ команда для записи настроек точки доступа APN echo -en 'AT^NDISDUP=1,1,''"'$apn'"''\r\n' > $usb_port #echo "рестарт модема - конец" fi sleep $timeout done Файл start_inet.sh запускает check_inet.sh после перезагрузки устройства: #!/bin/bash
### BEGIN INIT INFO # Provides: start_inet # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Example initscript # Description: This service is used to manage a servo ### END INIT INFO case "$1" in start) echo "Starting check_inet" sudo /home/pi/check_inet.sh > /dev/null 2>&1 & #/home/pi/check_inet.sh ;; stop) echo "Stopping check_inet" #killall servod sudo kill -USR1 $(ps ax | grep 'check_inet' | awk '{print $1}') ;; *) echo "Usage: /etc/init.d/check_inet start|stop" exit 1 ;; esac exit 0 Также в архиве находится файл конфигурации 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. Настройте файл конфигурации. Ниже представлен файл конфигурации с комментариями: #ip-адрес пинга. Скрипт будет пытаться пинговать этот ip-адрес, если определенное в параметре [ping_error] количество пингов не прошло, скрипт будет перезагружать GSM-модем, тем самым восстанавливая зависшее сетевое соединение.
ping_ip=”8.8.8.8″ #точка доступа APN. Это адрес точки доступа Вашего интернет-провайдера, он выдается вместе с сим-картой. apn=”internet.mts.ru” #период проверки соединения 3G (период пинга). Период выполнения скрипта. Каждые 30 секунд будет осуществляться проверка пингов. timeout=30 #количество пингов. Общее количество пингов. ping_count=5 #количество неуспешных пингов для рестарта модема. Количество неуспешных пингов, после которых необходимо выполнять перезагрузку модема. Не может быть больше чем [ping_count]. Процент потерянных пакетов нужно подбирать индивидуально в зависимости от качества покрытия сети. ping_error=3 #LAN интерфейс модема. Сетевой интерфейс модема, обычно на устройстве AntexGate определяется как [eth1], посмотреть название можно выполнив команду ifconfig interface=eth1 #USB порт модема. Физический USB порт к которому подключена сетевая карта, обычно на устройстве AntexGate определяется как [ttyUSB4] usb_port=”/dev/GSM” Управление скриптом Запуск в фоновом режиме файла скрипта check_inet.sh: /etc/init.d/start_inet.sh start
Остановить check_inet.sh: /etc/init.d/start_inet.sh stop
Скрипт также автоматически запускается после перезагрузки устройства. Варианты применения устройства Рассмотрим основные задачи, под которые можно использовать устройство:
На самом деле, вариантов применения такого устройства может быть очень много и несомненным его плюсом является законченность, универсальность и мобильность. Одно устройство может заменить привычный шкаф автоматизации и стать незаменимым решением в Ваших проектах. =========== Источник: habr.com =========== Похожие новости:
Разработка под Linux ), #_razrabotka_na_raspberry_pi ( Разработка на Raspberry Pi ), #_kompjuternoe_zhelezo ( Компьютерное железо ), #_internet_veschej ( Интернет вещей ), #_diy_ili_sdelaj_sam ( DIY или Сделай сам ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:40
Часовой пояс: UTC + 5