Как использовать 3G и GPS на Raspberry Pi с платой расширения ThaiEasyElec 3G HAT

Venus Supply — компания из Бангкока (Таиланд), специализирующаяся на embedded-системах. Она реализует продукцию через бренд ThaiEasyElec и выступает локальным дистрибьютором популярных DIY-электронных компонентов. Ранее тестировалась их плата ESPino32 на ESP32 , а сейчас был предоставлен новый продукт — «3G HAT Expansion for Raspberry Pi» на базе модуля Quectel UC20-G , поддерживающего глобальные сети 3G и GPS/GLONASS. Устройство работает в любой стране с покрытием 2G или 3G.

После перечисления характеристик, распаковки и сборки с Raspberry Pi 2/3, представлено краткое руководство по использованию GPS и подключению к 3G с SIM-картой Hologram .

Характеристики платы расширения 3G HAT для Raspberry Pi

  • Беспроводной модуль Quectel UC20-G с поддержкой:
    • Сотовая связь
      • 3G – UMTS @ 800/850/900/1900/2100 МГц
      • 2G – GSM @ 850/900/1800/1900 МГц
      • Данные – HSPA+ до 14.4 Мбит/с (прием), 5.76 Мбит/с (передача), EDGE, GPRS
      • SIM-карта Push-Pull с защитой от ESD
      • Основной + разнесенный RP-SMA антенные разъемы
    • GNSS
      • Двигатель Qualcomm gpsOne Gen8
      • GPS, ГЛОНАСС
      • RP-SMA антенный разъем
  • Интерфейс хоста – USB и UART
  • Аудио – Аудиокодек, 3.5 мм разъем для микрофона и монофонического звука
  • Дополнительно
    • Перемычка автостарта (J3)
    • Программный старт/стоп через GPIO17 или GPIO18, настраивается перемычкой «P8»
    • Выключатель питания
    • Светодиоды – статуса, сети, питания
    • Резервная батарея для ускорения фиксации GPS

       

  • Совместимость с 40-контактным разъемом Raspberry Pi Hat

Распаковка

Комплект поступил в картонной коробке с тремя пакетами: плата с аксессуарами, GPS/ГЛОНАСС и 3G антенны (последние две опциональны).

Нажмите для увеличения

Антенна GPS оснащена 3-метровым кабелем, что подходит для установки в автомобилях. В комплект HAT входят стойки, винты, гайки и 40-контактный разъем. Указанный 25-см micro USB кабель отсутствовал в поставке.

Нажмите для увеличения

На плате центрально расположен модуль Quectel UC20GB, три антенных разъема RP-SMA (DIV, GNSS, MAIN), micro USB для питания/данных, 3.5 мм аудиоразъем. В правом верхнем углу: 2-контактная перемычка J3 (автостарт), 3-контактная P8 (выбор GPIO 17/18 для ПО включения), кнопка ручного запуска/остановки модуля.

Нажмите для увеличения

40-контактный разъем RPi выведен штыревыми контактами, включая 4-контактный UART.

На обратной стороне: аудиокодек Nuvoton NAU8814Y , слот для SIM-карты с заглушкой, резервная батарея CR1220 для GPS, 40-контактный разъем для подключения к Raspberry Pi.

Нажмите для увеличения

Резервная батарея питает внутренний тактовый генератор модуля, ускоряя фиксацию GPS за счет использования данных за последние 3 дня.

Сборка и конфигурация 3G HAT с Raspberry Pi 2/3

Сборка довольно проста. Сначала установите четыре стойки на плату Raspberry Pi и зафиксируйте их гайками с нижней стороны. Вместо 40-контактного гнездового разъема  на плате Raspberry Pi разместите 3G HAT сверху. Затяните оставшиеся четыре винта.
 
 
 
Подключите антенну сотовой связи к разъему MAIN, а GPS-антенну  к разъему GNSS. Также потребуется записать Raspbian на micro SD карту. Мы будем использовать тот же образ Raspbian Stretch Lite, что и в стартовом комплекте ANAVI Light pHAT .
 
Если вы хотите следовать инструкции от ThaiEasyElec (пока только на тайском, но они достаточно понятны; английская версия скоро появится), вам понадобится графический интерфейс (GUI), поэтому рекомендуем установить полную версию Raspbian Stretch image и подключить HDMI-дисплей. Впрочем, можно также использовать VNC-клиент. Мы же пойдем по другому и настроим систему без монитора (headless), используя в основном Ethernet и SSH. Однако для тестирования 3G Ethernet будет отключен, поэтому дополнительно подключим USB-UART кабель, как показано ниже, чтобы получить доступ к консоли через последовательный порт.
 
Нажмите для увеличения

Требуется micro USB кабель для подключения платы расширения к USB-порту Raspberry Pi. Заглушка SIM-карты заменяется на активную карту контактами к плате. После установки карта выступает на ~3 мм — это нормально. Управление питанием: кнопка, перемычка J3 (автостарт) или GPIO 17/18. Для теста выбрана перемычка J3; для батарейного питания предпочтительнее GPIO.

Проверка распознавания 3G HAT в Linux

После запуска Raspberry Pi и входа в терминал (SSH, serial, GUI) модуль Quectel UC20 должен отображаться через lsusb с VID:PID 05c6:9003:

lsusb
Bus 001 Device 004: ID 05c6:9003 Qualcomm, Inc. Quectel UC20

При отсутствии: проверить подключение USB и питание модуля. Рекомендуется активировать перемычку J3. После распознавания появятся четыре устройства ttyUSB:

ls /dev/ttyUSB*
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3

Назначение устройств:

  • /dev/ttyUSB0 – DM-интерфейс (диагностика, не используется)
  • /dev/ttyUSB1 – NMEA-интерфейс (вывод GPS NMEA, только чтение)
  • /dev/ttyUSB2 – AT-интерфейс (для GPS)
  • /dev/ttyUSB3 – Модемный интерфейс для PPP и AT-команд

Управление GPS и обработка данных

ThaiEasyElec использует Putty, но для headless-режима установлен picocom:

sudo apt install picocom

Подключение к /dev/ttyUSB2 на 115200 8N1 для отправки AT-команд:

picocom /dev/ttyUSB2 -b 115200
picocom v1.7
...

Terminal ready
AT+QGPS=1
OK
AT+QGPSEND
OK

Команда AT+QGPS=1 включает GNSS, AT+QGPSEND — выключает.

При активном GNSS подключение к /dev/ttyUSB1 @ 9600 бод выводит NMEA-данные (обновляются ежесекундно):

pi@raspberrypi:~ $ picocom /dev/ttyUSB1 -b 9600
picocom v1.7
...

Terminal ready
$GPGSV,1,1,01,14,,,44*7D
$GPVTG,,T,,M,,N,,K,N*2C
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGGA,,,,,,0,,,,,,,,*66
$GPRMC,,V,,,,,,,,,,N*53
$GPGSV,1,1,03,14,,,44,31,,,36,33,,,39*72
$GPVTG,,T,,M,,N,,K,N*2C
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGGA,,,,,,0,,,,,,,,*66
$GPRMC,,V,,,,,,,,,,N*53
$GPGSV,1,1,04,03,,,37,14,,,44,31,,,37,33,,,40*7D
$GPVTG,,T,,M,,N,,K,N*2C
$GPGSV,2,1,08,26,63,009,42,01,01,246,,03,31,299,,16,74,250,*7C
$GPGSV,2,2,08,22,43,278,,23,04,320,,27,27,168,,29,00,047,*78
$GPVTG,,T,,M,,N,,K,N*2C
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGGA,,,,,,0,,,,,,,,*66
$GPRMC,,V,,,,,,,,,,N*53
$GPGSV,3,1,09,14,,,44,26,63,009,43,01,01,246,,03,31,299,*4B
$GPGSV,3,2,09,16,74,250,,22,43,278,,23,04,320,,27,27,168,*73
$GPGSV,3,3,09,29,00,047,*48
$GPVTG,,T,,M,,N,,K,N*2C
$GPGSA,A,1,,,,,,,,,,,,,,,*1E

Расшифровка полей:

  • GPGGA – Фиксация, время, позиция
  • GPRMC – Минимальные навигационные данные
  • GPGSV – Данные о спутниках
  • GPGSA – Общая информация о спутниках
  • GPVTG – Вектор и скорость перемещения

Отсутствие GPGSA в выводе вызвано незавершенной фиксацией GPS.

Автоматический запуск GNSS при включении модуля:

AT+QGPSCFG="autogps",1
OK

Для отключения: заменить 1 на 0. Статус «autogps» проверяется командой без параметра:

AT+QGPSCFG="autogps"
+QGPSCFG: "autogps",1

OK

Подробности AT-команд для GPS/ГЛОНАСС в   руководстве Quectel UC20 GNSS AT Commands Manual (pdf).

Для удобного отображения данных вместо чтения NMEA используются GPS Daemon (gpsd) и клиент (cgps). После остановки picocom устанавливаются пакеты:

sudo apt install gpsd gpsd-clients python-gps

Демон gpsd запускается автоматически, поэтому его останавливают:

sudo systemctl stop gpsd.socket

… и перезапускают с параметрами (интерфейс /dev/ttyUSB1):

sudo gpsd /dev/ttyUSB1 –F /var/run/gpsd.sock

Запуск клиента:

cgps –s

Через несколько секунд отображается фиксация с деталями (слева) и данными о спутниках (справа).

Ранее тестировался модуль NavSpark mini GPS (Arduino-совместимый) , где фиксация достигалась внутри помещения. Здесь потребовалось вынести антенну на улицу. Для интеграции в приложения рекомендуется изучить исходный код cgps .

Координаты также получаются через /dev/ttyUSB2 командой QGPSLOC в трех режимах:

  • Режим 0 – формат = ddmm.mmmmN/S, dddmm.mmmmE/W
  • Режим 1 – формат = ddmm.mmmmmmN/S, dddmm.mmmmmmE/W
  • Режим 2 – формат = (-d)dd.ddddd,(-)ddd.ddddd
AT+QGPSLOC=0
+QGPSLOC: 075825.0,1111.0856N,01111.5670E,0.7,300.8,2,0.00,0.0,0.0,100218,09

OK
AT+QGPSLOC=1
+QGPSLOC: 075850.0,1111.085526,N,01111.566956,E,1.0,300.3,2,0.00,0.0,0.0,100218,08

OK
AT+QGPSLOC=2
+QGPSLOC: 075921.0,11.83475,011.99278,0.8,299.2,2,0.00,0.0,0.0,100218,09

OK

Поля (слева направо): <UTC время>,<широта>,<долгота>,<hdop>,<высота>,<фиксация>,<cog>,<spkm>,<spkn>,<UTC дата>,<nsat>

Пояснения:

  • <hdop> – Горизонтальная точность, 0.5-99.9 (из GPGGA)
  • <fix> – Режим позиционирования (из GNGSA/GPGSA): 2 = 2D, 3 = 3D
  • <cog> – Направление относительно севера. Формат: ddd.mm (из GPVTG)
  • <spkm> – Скорость (км/ч). Формат: xxxx.x (из GPVTG)
  • <spkn> – Скорость (узлы). Формат: xxxx.x (из GPVTG)
  • <nsat> – Количество спутников (00-24) (из GPGGA)

Работа 3G HAT с SIM-картой Hologram

Тестирование сотовой связи выполнено с IoT SIM-картой Hologram для разработчиков , подойдет любая 3G SIM-карта.

Способ 1: Sakis3G и UMTSkeeper

В документации ThaiEasyElec для установки PPP-подключения 3G

  • используются:
  • Sakis3G – контроллер параметров и оборудования для подключения к интернету.

UMTSkeeper – переподключение через Sakis3G при обрыве связи.

mkdir umtskeeper
cd umtskeeper/
wget http://mintakaconciencia.net/square/umtskeeper/src/umtskeeper.tar.gz
tar xvf umtskeeper.tar.gz

Оба включены в пакет umtskeeper, устанавливаемый из tarball:

sudo apt install usb-modeswitch ppp

Дополнительные пакеты:

sudo ./sakig3G --interactive


Интерактивная настройка Sakis3G (интерфейс зависит от типа терминала). В SSH-терминале: Выбрать 1. Connect with 3G , затем 3. Custom tty…

, указать /dev/ttyUSB3 для CUSTOM_TTY.

Автоопределение APN (HOLOGRAM) прошло успешно. Для APN_USER и APN_PASS (не требуются Hologram) введено 0. Sakis3G подключился.

В главном меню доступна Connection Information с деталями.

После отключения и выхода запускается umtskeeper с аналогичными параметрами:

sudo ./umtskeeper --sakisoperators "OTHER='CUSTOM_TTY' CUSTOM_TTY='/dev/ttyUSB3' APN='CUSTOM_APN' CUSTOM_APN='HOLOGRAM' APN_USER='0' APN_PASS='0'" --sakisswitches "--sudo --console" --devicename 'Quectel' --log --nat 'no'

Первоначальный вывод содержит ошибку «no modem connected»:

2018-02-11 08:01:32 Start: ver. 2.07 20151004; PID = 5259; Python v. 2.7.13
 stats period = 8s, connection check period = 32s 
 Internet status: 
 Cell network: No modem plugged or modem not set up. 
2018-02-11 08:01:32 Sending SIGTERM signal to running program instance with PID=31984.
2018-02-11 08:01:32 Found version 1.xx statfile, converting to new format.
 Reading main stats file returned an error: "name 'currHour' is not defined".
 Main stats file is incomplete. This happens in rare cases when UMTSkeeper is killed in the wrong moment. Trying to load backup file. This can cause slight inacurracies in the stati.
 stats period = 8s, connection check period = 32s
2018-02-11 08:01:40 Program startup. Calling Sakis3G connect, to be sure...
 Sakis3G cmdLine: nice /home/pi/umtskeeper/sakis3g connect --sudo --console OTHER='CUSTOM_TTY' CUSTOM_TTY='/dev/ttyUSB3' APN='CUSTOM_APN' CUSTOM_APN='HOLOGRAM' APN_USER='0' APN_PASS'
 Sakis3G says...
 UC20 connected to Hologram (52000).
2018-02-11 08:01:49 Testing connection...
2018-02-11 08:01:57 Success... we are online!

Через некоторое время подключение устанавливается. Статус интернета:

Internet status:
 Network link status on ppp0: unknown
 Cell network: Connected.

Способ 2: Скрипт PPP Creator

В качестве альтернативы (при неудаче первого способа) использован скрипт ppp-creator.sh от Sixfab для их щита RPi 3G/4G (тоже на Quectel).

Загрузка и выполнение скрипта на Raspberry Pi:

wget https://raw.githubusercontent.com/sixfab/rpiShields/master/tutorials/tutorial3/ppp-creator.sh
chmod +x ppp-creator
sudo ./ppp-creator.sh HOLOGRAM ttyUSB3

Установка соединения командой:

sudo pppd call gprs
pppd options in effect:
debug		# (from /etc/ppp/peers/gprs)
nodetach		# (from /etc/ppp/peers/gprs)
dump		# (from /etc/ppp/peers/gprs)
noauth		# (from /etc/ppp/peers/gprs)
remotename 3gppp		# (from /etc/ppp/peers/gprs)
/dev/ttyUSB3		# (from /etc/ppp/peers/gprs)
115200		# (from /etc/ppp/peers/gprs)
lock		# (from /etc/ppp/peers/gprs)
connect chat -s -v -f /etc/chatscripts/quectel-chat-connect -T HOLOGRAM		# (from /etc/ppp/peers/gprs)
disconnect chat -s -v -f /etc/chatscripts/quectel-chat-disconnect		# (from /etc/ppp/peers/gprs)
nocrtscts		# (from /etc/ppp/peers/gprs)
modem		# (from /etc/ppp/peers/gprs)
asyncmap 0		# (from /etc/ppp/options)
lcp-echo-failure 4		# (from /etc/ppp/options)
lcp-echo-interval 30		# (from /etc/ppp/options)
hide-password		# (from /etc/ppp/peers/gprs)
novj		# (from /etc/ppp/peers/gprs)
novjccomp		# (from /etc/ppp/peers/gprs)
ipcp-accept-local		# (from /etc/ppp/peers/gprs)
ipcp-accept-remote		# (from /etc/ppp/peers/gprs)
ipparam 3gppp		# (from /etc/ppp/peers/gprs)
noipdefault		# (from /etc/ppp/peers/gprs)
ipcp-max-failure 30		# (from /etc/ppp/peers/gprs)
defaultroute		# (from /etc/ppp/peers/gprs)
usepeerdns		# (from /etc/ppp/peers/gprs)
noccp		# (from /etc/ppp/peers/gprs)
noipx		# (from /etc/ppp/options)
abort on (BUSY)
abort on (NO CARRIER)
abort on (NO DIALTONE)
abort on (ERROR)
abort on (NO ANSWER)
timeout set to 30 seconds
send (AT^M)
expect (OK)
AT^M^M
OK
 -- got it

send (ATE0^M)
expect (OK)
^M
ATE0^M^M
OK
 -- got it

send (ATI;+CSUB;+CSQ;+CPIN?;+COPS?;+CGREG?;&D2^M)
expect (OK)
^M
^M
Quectel^M
UC20^M
Revision: UC20GQBR03A14E1G^M
^M
SubEdition: V01^M
^M
+CSQ: 21,99^M
^M
+CPIN: READY^M
^M
+COPS: 0,0,"True Move Hologram",6^M
^M
+CGREG: 0,5^M
^M
OK
 -- got it

send (AT+CGDCONT=1,"IP","HOLOGRAM",,0,0^M)
expect (OK)
^M
^M
OK
 -- got it

send (ATD*99#^M)
expect (CONNECT)
^M
^M
CONNECT
 -- got it

Script chat -s -v -f /etc/chatscripts/quectel-chat-connect -T HOLOGRAM finished (pid 8861), status = 0x0
Serial connection established.
using channel 1
Using interface ppp0
Connect: ppp0 <--> /dev/ttyUSB3
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x10623c2f> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x0 <asyncmap 0x0> <auth pap> <magic 0x73462b62> <pcomp> <accomp>]
No auth is possible
sent [LCP ConfRej id=0x0 <auth pap>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x10623c2f> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x73462b62> <pcomp> <accomp>]
sent [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x73462b62> <pcomp> <accomp>]
sent [LCP EchoReq id=0x0 magic=0x10623c2f]
sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
rcvd [LCP DiscReq id=0x2 magic=0x73462b62]
rcvd [LCP EchoRep id=0x0 magic=0x73462b62 10 62 3c 2f]
rcvd [proto=0x3] 01 00 04
Unsupported protocol 0x3 received
sent [LCP ProtRej id=0x2 00 03 01 00 04]
rcvd [IPCP ConfReq id=0x0]
sent [IPCP ConfNak id=0x0 <addr 0.0.0.0>]
rcvd [IPCP ConfNak id=0x1 <addr 10.170.40.106> <ms-dns1 212.9.0.135> <ms-dns2 212.9.0.136>]
sent [IPCP ConfReq id=0x2 <addr 10.170.40.106> <ms-dns1 212.9.0.135> <ms-dns2 212.9.0.136>]
rcvd [IPCP ConfReq id=0x1]
sent [IPCP ConfAck id=0x1]
rcvd [IPCP ConfAck id=0x2 <addr 10.170.40.106> <ms-dns1 212.9.0.135> <ms-dns2 212.9.0.136>]
Could not determine remote IP address: defaulting to 10.64.64.64
not replacing default route to eth0 [192.168.0.1]
local  IP address 10.170.40.106
remote IP address 10.64.64.64
primary   DNS address 212.9.0.135
secondary DNS address 212.9.0.136
Script /etc/ppp/ip-up started (pid 8869)
Script /etc/ppp/ip-up finished (pid 8869), status = 0x0

Подключение успешно. Скрипт требует корректировки при необходимости указания логина/пароля APN.

Тестирование подключения

При использовании любого способа проверяется статус ppp0:

ifconfig ppp0
ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.170.40.106  netmask 255.255.255.255  destination 10.64.64.64
        ppp  txqueuelen 3  (Point-to-Point Protocol)
        RX packets 5  bytes 55 (55.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 58 (58.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Тест выполнен при активном Ethernet. После его отключения скрипт запущен в фоне:

sudo ifconfig eth0 down
sudo pppd call gprs &amp;

Подтверждение активного подключения ppp0:

ifconfig                                                      
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536                                    
        inet 127.0.0.1  netmask 255.0.0.0                                       
        inet6 ::1  prefixlen 128  scopeid 0x10<host>                            
        loop  txqueuelen 1  (Local Loopback)                                    
        RX packets 22986  bytes 7354748 (7.0 MiB)                               
        RX errors 0  dropped 0  overruns 0  frame 0                             
        TX packets 22986  bytes 7354748 (7.0 MiB)                               
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0              
                                                                                
ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500              
        inet 10.170.40.106  netmask 255.255.255.255  destination 10.64.64.64    
        ppp  txqueuelen 3  (Point-to-Point Protocol)                            
        RX packets 26  bytes 2892 (2.8 KiB)                                     
        RX errors 0  dropped 0  overruns 0  frame 0                             
        TX packets 25  bytes 1659 (1.6 KiB)                                     
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0              
                                                                                
wwan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500                             
        ether da:4d:8c:1e:d0:81  txqueuelen 1000  (Ethernet)                    
        RX packets 0  bytes 0 (0.0 B)                                           
        RX errors 0  dropped 0  overruns 0  frame 0                             
        TX packets 3  bytes 270 (270.0 B)                                       
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Проверка исходящего трафика ping:

ping cnx-software.com 
PING cnx-software.com (104.28.18.95) 56(84) bytes of data. 
64 bytes from 104.28.18.95: icmp_seq=1 ttl=52 time=601 ms 
64 bytes from 104.28.18.95: icmp_seq=2 ttl=52 time=558 ms 
64 bytes from 104.28.18.95: icmp_seq=3 ttl=52 time=555 ms 
64 bytes from 104.28.18.95: icmp_seq=4 ttl=52 time=605 ms 

ping google.com 
PING google.com (216.58.208.238) 56(84) bytes of data. 
64 bytes from par10s22-in-f14.1e100.net (216.58.208.238): icmp_seq=1 ttl=49 tims
64 bytes from par10s22-in-f14.1e100.net (216.58.208.238): icmp_seq=2 ttl=49 tims
64 bytes from par10s22-in-f14.1e100.net (216.58.208.238): icmp_seq=3 ttl=49 tims

Успешно. Попытка SSH-подключения:

ssh pi@10.170.40.106

Завершилась ошибкой (возможно, из-за локального IP 10.170.40.106 и удаленного 10.64.64.64, как указано в логе pppd call gprs).

SSH-туннелирование с SIM-картой Hologram

Для доступа по SSH через 3G/4G Hologram требуется настройка туннелирования (через SpaceBridge или CLI), описанная на соответствующей странице Hologram .

Использован SpaceBridge. Клиент скачивается для Windows/Linux/macOS. Действия для Ubuntu 16.04:

wget http://downloads.hologram.io/spacebridge/spacebridge-0.4.2-x86_64-pc-linux-gnu.tar.bz2
tar xvf spacebridge-0.4.2-x86_64-pc-linux-gnu.tar.bz2
cd spacebridge-0.4.2-x86_64-pc-linux-gnu/bin
./spacebridge

Включение туннелирования для устройства в панели Hologram и генерация API-ключа в личном кабинете .

После выбора устройств указан порт Raspberry Pi (например, 22 для SSH) и локальный порт для доступа.

Нажатие Done активирует туннель через несколько секунд.

Подключение по SSH:

ssh -p 5000 pi@127.0.0.1

Дополнительно получены GPS-координаты через cgps.

Остановка подключения, запущенного через pppd call gprs:

sudo kill 10678                                               
Terminating on signal 15                                                        
Connect time 3.4 minutes.                                                       
Sent 5885 bytes, received 6313 bytes.                                           
Script /etc/ppp/ip-down started (pid 10828)                                     
sent [LCP TermReq id=0x3 "User request"]                                        
pi@raspberrypi:~$ rcvd [LCP TermAck id=0x3]                                     
Connection terminated.                                                          
abort on (ERROR)                                                                
abort on (NO DIALTONE)                                                          
unterminated quote (line 4)                                                     
Script chat -s -v -f /etc/chatscripts/quectel-chat-disconnect finished (pid 1081
disconnect script failed                                                        
Script /etc/ppp/ip-down finished (pid 10828), status = 0x0

В рабочих проектах управление подключением осуществляется через initd или systemd.

Благодарность Venus Supply / ThaiEasyElec за предоставленный образец. Плата доступна за 2350 THB (~$75) , антенна GSM/3G — за 120 THB (~$4) , антенна GNSS — за 350 THB (~$12) .

Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments