Подключение Raspberry Pi к сети интернет с помощью GSM модуля SIM800L
Все вы наверняка знаете, что платы Raspberry Pi имеют возможность подключения в сети Интернет с помощью технологии Wi-Fi. Но как быть, если технология Wi-Fi недоступна в данный момент? В этом случае обеспечить выход платы Raspberry Pi в сеть интернет можно с помощью GSM модуля, использующего для соединения с сетью интернет технологию GPRS.
В данной статье мы рассмотрим подключение платы Raspberry Pi к сети интернет с помощью GSM модуля SIM800L. Для соединения с интернетом мы будем использовать протокол PPP (Point to Point Protocol, протокол передачи от точки к точке) и будем передавать данные последовательно с помощью технологии GPRS.
Ранее на нашем сайте мы также рассматривали проект автоответчика на основе платы Raspberry Pi, в котором подключали к плате GSM модуль.
Необходимые компоненты
- Плата Raspberry Pi 3 (или любая другая подходящая модель платы) (купить на AliExpress).
- GSM модуль SIM800L (купить на AliExpress).
- SIM карта.
- Преобразователь постоянного тока (buck converter) 2596 (купить на AliExpress) и адаптер питания.
- Соединительные провода.
В данном проекте мы используем преобразователь постоянного тока (buck converter) 2596 для обеспечения постоянного напряжения 4.2 Вольта поскольку GSM модуль SIM800L отличается достаточно большим энергопотреблением, кроме того, в режиме GPRS потребляемый им ток возрастает. Вместо модуля 2596 вы можете использовать любой другой аналогичный модуль.
Схема проекта
Схема подключения GSM модуля SIM800L к плате Raspberry Pi представлена на следующем рисунке.
Схема соединений между GSM модулем SIM800L и платой Raspberry Pi приведена в следующей таблице.
GSM модуль SIM800L | Плата Raspberry Pi |
Rx | Tx of the Raspberry Pi |
Tx | RX of the Raspberry Pi |
GND | GND of the Raspberry Pi, GND of the Buck |
VCO | 4.2 V (2596 Ic output) |
Внешний вид собранной конструкции проекта приведен на следующем рисунке.
Объяснение программы для Raspberry Pi
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Перед началом написания программы нам необходимо проверить корректно ли GSM модуль обрабатывает AT команды. Для этого необходимо выполнить следующую последовательность действий:
- активировать (Enable) последовательный порт;
- проверить последовательный порт;
- запустить на выполнение ниже приведенный скрипт check_commands.py;
- во время выполнения данного скрипта GSM модуль должен ответить вам ‘OK’. Если этого не происходит, проверьте соединения в схеме.
Примечание : поскольку автор проекта (ссылка на оригинал приведена в конце статьи) использовал язык python 3 на плате Raspberry Pi, то перед ним также стояла проблема кодирования и декодирования данных из формата “utf-8”.
Представленный фрагмент кода будет передавать команду из вашего терминала и показывать ответ модуля в терминале. Вначале напишите “AT”, после чего нажмите ‘Enter’, в ответ вы должны увидеть сообщение “OK”. Вы можете попробовать передавать модулю и другие AT команды.
Теперь мы должны установить библиотеку для работы с протоколом PPP, которая поможет нам в доступе в сеть интернет с использованием GSM модуля. Но перед установкой данной библиотеки обновим программное обеспечение платы Raspberry Pi до последней версии.
С помощью представленной команды вы скачаете и установите библиотеку ppp. После этого введите в терминале команду sudo -i . Далее необходимо перейти в каталог peers с помощью следующей команды:
Затем напечатайте “ nano rnet ” чтобы создать файл с именем ‘ rnet ’ в каталоге ‘ peers ’. Далее необходимо ввести следующие строки кода (можете просто скопировать и вставить их).
Поскольку автор проекта использовал sim карту оператора Airtel ему необходимо было знать APN (Access Point Name, имя точки доступа) данной сети. В его случае оно было равно “airtelgprs.com”. Для своего оператора связи вы можете найти APN с помощью Яндекса или Google.
Вам необходимо изменить APN на свой в строке ‘connect’. В нашем случае это “airtelgprs.com”. Последовательный порт мы используем “ttyS0”. Бодовую скорость передачи можно не изменять. После этого можно сохранить и закрыть окно нажав “Ctrl+X”.
Затем необходимо перезапустить терминал, напечатать в нем “ ifconfig ” и нажать enter.
После этого можно приступить к тестированию работы проекта. Например, введем команду “ sudo pon rnet ”. На экране при этом ничего не изменится, но состояние светодиода на GSM модуле должно измениться – частота его включения/выключения должна увеличиться. Остановить доступ к сети интернет можно введя команду “ sudo poff rnet ”. Таким образом, вы можете наслаждаться доступом к интернету с помощью технологии GPRS. Конечно, скорость соединения будет не очень высокой, но для многих проектов тематики интернета вещей она будет вполне достаточной.
Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.
Плата GSM/GPRS/GNSS/Bluetooth 3.0 для Raspberry Pi 2b/3b/zero w
Это позволяет вашей raspberry легко сделать телефонный звонок, отправить сообщения, подключиться к беспроводному интернету, определить глобальную позицию, передача данных через Bluetooth, и так далее.
Плата расширения GSM/GPRS/GNSS/Bluetooth 3.0 для Raspberry Pi
- Raspberry Pi подключение, совместимость с Raspberry Pi 2b/3b/zero w
- Поддерживает смс, телефонный звонок, gprs, DTMF, HTTP, FTP, MMS, email и др.
- Поддержка GPS, компаса, ГЛОНАСС, LBS базовая станция позиционирования, omni-позиционирование
- Bluetooth 3.0, поддерживает данные передачи через Bluetooth
- Встроенный USB в UART конвертер CP2102 для отладки UART
- 6x светодиоды для указания статуса рабочего модуля
- Слот для sim-карт для 1.8 В/3 В SIM-карта
- RTC с резервным держателем батареи
- Автообнаружение BaudRate (1200bps
115200bps)
GSM/GPRS функции
- Группа
- GSM 850/EGSM 900/DCS 1800/шт 1900 мГц
- Четырехдиапазонный Авто поиск
- Совместимость с GSM фазовой 2/2 +
- Мощность излучения
- Класс 4 (2 Вт @ GSM 850/EGSM 900 мГц)
- 1 класс (1 Вт @ DCS 1800/шт 1900 мГц)
- GPRS подключения
- GPRS мульти-слот класс 12 (по умолчанию)
- GPRS Multi-слот класса 1
12 (настраиваемая)
- Данных gprs Функция
- Скорость спуска: макс 85.6 кбит/с
- Скорость соединения: max 85.6 кбит/с
- Схемы кодирования: Cs-1 \ cs-cs-cs-cs-cs-cs-4
- Поддерживает PAP (протокол аутентификации пароля) для соединения PPP
- Поддерживает PBCCH
- Поддержка USSD
- SMS
- Поддержка: mt/mo/cb/текст/PDU Mode
- Sms-Хранение: SIM карта
- Аудио
- Режим голоса ENCODE/decode: Половина скорости \ полная ставка \ Улучшенная полная ставка \ Адаптивное значение muti
- Поддержка эха
- Поддерживает подавление шума
GNSS функции
- Тип приемника
- 33 каналов слежения
- 99 каналов сбора
- GPS L1 C/A код
- Чувствительность
- Отслеживание:-165 дБм
- Холодное Начало:-148 дБм
- Время-в-First-Fix
- Холодное начало: 28 s (тип.)
- Горячее Начало: Соответствие требованиям Bluetooth specifation3.0 + EDR
- Поддерживает SPP, opp, HFP/HSP и др.
Параметры платы расширения
- Рабочее напряжение: 5 В
- Рабочая температура:-40 °C
85 °C
Температура хранения:-45 °C90 °C
- Размеры: 30.2 мм x 65 мм
- SIM868 модуль
- ZMM5V1: регулятор диод
- SMF05C: TVS диод
- CP2102: USB в UART конвертер
- MP1482: чип питания
- NDC7002N: уровень напряжения Переводчик
- GPS индикатор состояния
- Чистая индикатор:
- Вспышки быстро, когда модуль запускается
- Мигает медленно, после того, как gsm регистр преуспеет
- Индикатор рабочего состояния sta модуль
- Sim868 UART TX/RX индикатор
- Мощность индикатор
- Sim868 кнопка управления: нажмите кнопку и удерживайте на 1 S, для запуска/выключения sim868
- Raspberry Pi GPIO разъем
- Слот sim-карты
- USB к UART интерфейс
- 3.5 мм наушники/микрофон Jack
- GNSS разъем антенны
- Bluetooth Разъем антенны
- Разъем антенны GSM
- RTC резервного держатель батареи
- UART переключатель выбора
- A: управление sim868 через USB-UART
- B: управление sim868 через Raspberry Pi
- C: доступ к Raspberry Pi через USB-UART
- GSM/GPRS/GNSS плата расширения x1
- Gsm антенна x1
- Антенна GPS внешняя (b) x1
- Bluetooth антенна x1
- Штекер USB типа A x1
- винты (2шт) x1
Raspberry Pi GSM Module – Mobile Internet (LTE, 3G, UMTS)
The Raspberry Pi can be connected to the Internet very quickly and easily via the local network. But what if you also need a mobile Internet connection outside your own WLAN? There are GSM modules / Surfsticks (mostly from Huawei), which can be connected via USB. Sometimes are such GSM modules, which support 3G, UMTS and sometimes even LTE, given free with a mobile phone contract which includes an Internet option.
This tutorial shows how to connect Raspberry Pi to the internet using GSM modules.
Required Hardware Parts
The procedure is the same for the vast majority of Huawei Internet Sticks, but I only tested it with two models:
- Huawei E303 Stick, which is very common.
- Huawei E3531s Stick, which I got with a contract that included data volume.
- In addition, there are some LTE Surf Sticks, which can be used in a corresponding contract. With both GSM sticks that I’ve tested, the maximum connection is HSDPA +, which is usually sufficient on the go.
You also need a SIM Card for the Raspberry Pi, preferably with a flat rate. Of course, the traffic should not be too low depending on requirements.
As soon as your Raspberry Pi is first connected to the Internet, it is also possible to receive SMS online and to remotely control the Pi (similar to the Telegram app).
Set up Surf Stick on the Raspberry Pi
If there is not something like Bus 001 Device 008: ID 12d1:1f01 Huawei Technologies Co., Ltd. standing, the GSM module on the Raspberry Pi has not yet been recognized. So we need to install appropriate drivers.
If the stick is already recognized, you can skip this step.
If we execute lsusb again, the Raspberry Pi should recognize the GSM module. If not, remove the stick from the USB port and reconnect it. One line should show the following:
After the Internet Stick is recognized, the Pi needs to be restarted.
Now we can look at all the network interfaces, where the device usb0 has been detected (in some it is also called wwan0 or eth1 ).
This leads to the following output (possibly different if no WLAN adapter / Ethernet is connected):
Now we need to access the browser of the Raspberry Pi and visit the page for entering the PIN code. If you’re connecting via console, you can either enter startx or log in via the Remote Desktop Connection.
In the browser of the Raspberry Pi we call the address 192.168.1.1. If you are still connected to the local network, you may only see the router panel and not access to the USB surf stick. The easiest way is (if you work directly on the Pi, without RDV or VNC), to briefly disconnect Ethernet cable or Wi-Fi stick and call the page again. With my stick, I was forwarded to the address 192.168.8.1, which also worked with the existing network connection. Maybe it works for you too, it is worth to try it – otherwise, just disconnect from the network.
Depending on the surf stick provider you can get a page like this:
After entering your PIN code and pressing enter, you will be redirected to the main menu.
Now we navigate to Settings> Connection> Profile Management.
Then we create a new profile. The profile name does not matter (for example “raspi”), username and password are left blank and as APN we select “Dynamic”. Then it is saved.
After that being saved, we navigate under Connection> Mobile Connection. If the connection is not activated here, we activate it. For me, it was already activated by default. If you want, you can also enable data roaming here (which can incur higher costs).
You can now try and open any website like Google (preferably tutorials-raspberrypi.com ;-)) to verify that the connection works. Alternatively, you can just try opening a page like google.com and see if it works.
Automatically detect the GSM Module on the Raspberry Pi
So far, so good: but to have our interface load automatically on reboot, we need to edit a file of the operating system, otherwise, the steps from the top would have to be executed each time.
This file should already contain a few lines. In iface eth0 inet manual we add the following two lines ( wwan0 or eth1 instead of usb0 , please adjust):
With CTRL + O and CTRL + X, you can save the file and return to the console.
At the next restart, the connection should now be established automatically, if the GSM surf stick with active SIM card is connected via USB.
If you want to be connected again via WLAN / Ethernet, you just need to take these two lines out again (delete or comment out with a rhombus #).
Raspberry Pi as a 3G/ UMTS Router / Access Point?
Maybe you have asked yourself if you can set up a Raspberry Pi WLAN hotspot with the now established mobile internet. The answer is yes, that works! As with an Ethernet / LAN connection, you can create a Raspberry Pi access point. How this works is explained on eLinux.