Это четвертая статья серии, посвященной модулю GSM/GPRS/GNSS Bluetooth HAT, способному добавить в ваше IoT-устройство или другое оборудование функции мобильного телефона.
Настало время превратить модуль GSM/GPRS/GNSS Bluetooth HAT, созданный на базе SIM868, в самый настоящий телефон, способный звонить и принимать звонки. Мы расскажем о том, как это можно делать из программы, составленной на языке Python, а также опишем соответствующие AT-команды. Вы проверите их в работе с помощью терминала minicom.
В процессе изучения данного материала Вы так же научитесь работать с определителем номера вызывающего абонента, создавать белый список номеров, с которых разрешен прием звонков и сообщений SMS, выбирать мелодию, которая будет звучать при вызове и ее громкость. Вы сможете управлять громкостью динамика, подключенного к модулю и чувствительностью микрофона.
Из первой статьи серии, посвященной модулю GSM/GPRS/GNSS Bluetooth HAT, вы узнали, как обмениваться данными между микрокомпьютером Repka Pi с JSON-сервисом, доступным в интернете, по каналу GPRS.
Вторая статья рассматривает такой обмен глубже, на уровне AT-команд, передаваемых в модуль через UART.
В третьей статье подробно рассказано об отправке и приеме коротких текстовых сообщений SMS (Short Message Service). Рассмотрен текстовый режим, а также режим PDU (Protocol Data Unit), в котором можно отправлять и принимать сообщения с символами кириллицы.
У меня зазвонил телефон.
— Кто говорит?
— Слон.
— Откуда?
— От верблюда.
— Что вам надо?
— Шоколада.
К. И. Чуковский, 1924.
Содержание данной статьи:
- Сборка макета
- Установка необходимых библиотек
- Звонок из командной строки
- Отвечаем на звонок из командной строки
- Управление на уровне AT-команд
- Звоним с помощью AT-команды
- Отвечаем на звонок AT-командой
- Управление громкостью звука
- Управление микрофоном
- Запрет и фильтрация входящих вызовов
- Обнаружение DTMF для автоответчика
- Полезные ссылки
- Итоги
Что же, давайте приступим.
Сборка макета #
Для работы с этой статьей соберите простой макет, подключив модуль GSM/GPRS/GNSS Bluetooth HAT непосредственно к разъему GPIO микрокомпьютера Repka Pi как «шляпу» (рис. 1).
Рис. 1. Подключение GSM/GPRS/GNSS Bluetooth HAT к Repka Pi через GPIO
Вам также потребуется гарнитура с микрофоном. Вставьте ее разъем в модуль, как это показано на рис. 1.
Перед подключением модуля GSM/GPRS/GNSS Bluetooth HAT к GPIO Repka Pi установите перемычки желтого цвета на пины B, и вставьте SIM-карту мобильного оператора.
Вам также нужно будет отключить вывод сообщений на UART0 с помощью программы repka-config. Для этого запустите repka-config, и, когда появится окно с текущей максимальной частотой процессора, щелкните в нем кнопку Ok. Далее в меню настраиваемых опций выберите Включить / отключить вывод сообщений на UART0. После этого отключите вывод сообщений (рис. 2).
Рис. 2. Отключение вывода сообщений на UART0
При выходе из программы repka-config перезагрузите Repka OS. Когда Repka OS перезагрузится, включите питание модуля кнопкой PWRKEY, нажав ее примерно на одну секунду. После этого на плате модуля GSM/GPRS/GNSS Bluetooth HAT должны замигать светодиоды красного цвета.
Вам потребуется доступ к консоли Repka OS, установленной на Repka Pi, через сеть или через оконный интерфейс Repka OS. В наших примерах мы будем использовать доступ к консоли через терминал SSH.
Если вы часто работаете в темное время суток, и вам мешает очень яркое мигание синего светодиода на плате Repka Pi, добавьте такую строку в crontab:
@reboot echo 0 > /sys/class/leds/rbs\:red\:status/brightness
Это можно сделать командой crontab -e. По этой команде откроется окно редактора заданий crontab. Добавьте с его помощью указанную выше строку в конец файла и сохраните изменения. Теперь после каждой перезагрузки синий светодиод будет отключаться.
Установка необходимых библиотек #
Программы из этой статьи используют библиотеки Python SIM800L и RoverConnect.
Сначала вам нужно установить библиотеку SIM800L, сайт которой находится по адресу https://pypi.org/project/sim800l-gsm-module/1.0.0/. Установка описана здесь https://github.com/Ircama/raspberry-pi-sim800l-gsm-module:
# apt update
# apt install python3-pip
# python3 -m pip install sim800l-gsm-module
Запустите эти команды с правами пользователя root в консоли SSH, подключившись к микрокомпьютеру Repka Pi с работающей там Repka OS.
Вслед за установкой SIM800L скопируйте в рабочий каталог библиотеки RoverConnect:
# git clone git@github.com:AlexandreFrolov/rover_connect2.git
Если вы работали с библиотекой RoverConnect при чтении предыдущих статей этой серии, выполните клонирование повторно, так как там появились новые функции.
Звонок из командной строки #
Чтобы позвонить на заданный телефонный номер из модуля GSM/GPRS/GNSS Bluetooth HAT, установите в этот модуль SIM-карту, а потом запустите программу phone_dial.py (листинг 1).
Листинг 1. https://github.com/AlexandreFrolov/rover_connect2/blob/main/phone_dial.py
import traceback
import pdb
import serial
import time
from sim800l import SIM800L
from rover_connect import RoverConnect
rover = RoverConnect('/dev/ttyS0', 'internet.mts.ru')
power_status = rover.power_current_status()
print("Питание: " + power_status)
creg_status = rover.creg_status()
print(creg_status)
cpin_stat = rover.cpin_status()
print(cpin_stat)
#pdb.set_trace()
phone_number = input('Позвонить на номер телефона (+7XXXXXXXXXX):\n')
rc = rover.dial_phone_number(phone_number)
print(rc)
После запуска программа проверит, включено ли питание модуля с помощью функции rover.power_current_status. Если включено, функция вернет нулевое значение.
Далее программа phone_dial.py проверяет регистрацию SIM-карты в сети функцией creg_status, выдающей в модуль команду AT+CREG:
def creg_status(self):
creg_data = self.command_data_ok('AT+CREG?')
value_0 = None
value_1 = None
if creg_data.startswith("+CREG: "):
creg_params = creg_data.split(':')[1].strip()
split_result = creg_params.split(',')
value_0 = split_result[0].strip()
value_1 = split_result[1].strip()
return value_0, value_1
Если все нормально, функция вернет значения (0,1). Если SIM-карта зарегистрирована, значение второго параметра будет равно единице. Подробнее о команде AT+CREG мы расскажем ниже, при описании AT-команд, предназначенных для работы со звонками.
Далее программа проверяет, находится ли SIM-карта в состоянии готовности с помощью функции cpin_status:
def cpin_status(self):
cpin = self.command_data_ok('AT+CPIN?')
status = None
if cpin.startswith("+CPIN: "):
pin = cpin.split(':')[1].strip()
return pin
Если карта находится в состоянии готовности, функция возвращает ответ «READY».
Далее программа выводит на консоль приглашение для ввода номера телефона и вызывает функцию rover.dial_phone_number. При вводе используйте формат +7XXXXXXXXXX:
phone_number = input('Позвонить на номер телефона (+7XXXXXXXXXX):\n')
rc = rover.dial_phone_number(phone_number)
Функция rover.dial_phone_number использует для вызова команду ATD:
def dial_phone_number(self, phone_number):
buf = None
rc = self.command_ok('ATD' + phone_number + ';')
if(rc):
try:
while True:
while self.ser.inWaiting() > 0:
buf = self.ser.readline()
buf = buf.decode('gsm03.38', errors="ignore").strip()
if buf != None:
break
except KeyboardInterrupt:
if self.ser != None:
self.ser.close()
return(buf)
После того как программа совершит звонок командой ATD, она будет ждать получения строк BUSY или NO CARRIER (соответственно, при отклонении или завершении звонка). Функция rover.dial_phone_number вернет вызывающей программе полученную строку.
Также работу программы можно прервать с клавиатуры комбинацией клавиш Ctrl+C.
Отвечаем на звонок из командной строки #
Для приема звонков, поступающих на номер SIM-карты, вставленной в модуль GSM/GPRS/GNSS Bluetooth HAT, мы подготовили программу phone_responce.py (листинг 2).
Листинг 2. https://github.com/AlexandreFrolov/rover_connect2/blob/main/phone_responce.py
import traceback
import pdb
import serial
import time
from sim800l import SIM800L
from rover_connect import RoverConnect
rover = RoverConnect('/dev/ttyS0', 'internet.mts.ru')
print("Call waiting...")
rc = rover.responce_phone_call()
print("Call from: " + rc)
Эта программа очень простая. После создания объекта класса RoverConnect и установки соединения с модулем она переходит в состояние ожидания звонка, вызывая функцию rover.responce_phone_call:
def responce_phone_call(self):
buf = ""
phone_number = ""
self.ser.flushInput()
try:
while True:
while self.ser.inWaiting() > 0:
data = self.ser.readline()
buf = data.decode('gsm03.38', errors="ignore").strip()
if "RING" in buf:
break
if '+CLIP:' in buf:
print(buf)
rc = self.command_ok('ATA')
split_result = buf.split(',')
phone_number = split_result[0].split(': ')[1].strip('"')
break;
while True:
data = self.ser.readline()
buf = data.decode('gsm03.38', errors="ignore").strip()
if buf != None:
break
time.sleep(1)
except KeyboardInterrupt:
rc = self.command_ok('ATH')
if self.ser != None:
self.ser.close()
return(phone_number)
Когда функция rover.responce_phone_call получает управление, она очищает буфер последовательного порта, а затем ожидает, когда модуль вернет строку «RING». Это произойдет, когда на номер SIM-карты поступит телефонный вызов.
Если вызов поступил, функция ищет в прочитанном буфере строку «+CLIP:» и «снимает трубку» AT-командой ATA. Теперь соединение установлено, а номер вызывающего абонента записан в переменную phone_number.
Если следующий цикл ожидания был прерван при помощи клавиатуры, подключенной к Repka Pi, то функция rover.responce_phone_call прерывает соединение командой ATH.
Управление на уровне AT-команд #
Из этого раздела вы узнаете, как использовать AT-команды для того, чтобы позвонить через модуль GSM/GPRS/GNSS Bluetooth HAT или принять звонок, а также настроить многочисленные параметры, имеющие отношение к телефонным звонкам.
Вам будет полезна подробная документация по AT-командам SIM868, которую можно скачать с сайта SIMCom, если там зарегистрироваться. В частности, пригодится файл SIM800 Series_AT Command Manual_V1.12.pdf с руководством SIM800 Series_ AT Command Manual.
Изучение AT-команд мы будем выполнять с помощью терминальной программы minicom. Ее можно установить и запустить в Repka OS следующим образом:
# apt install minicom
# minicom -D /dev/ttyS0
В консоли SSH появится окно программы minicom для ввода AT-команды и просмотра результатов их выполнения.
При работе над этой статьей удобно включить эхо-режим командой ATE1. Если вы ввели команду AT, увидели ее и ответ на команду OK, эхо-режим включен. Команда ATE0 выключает эхо-режим.
Звоним с помощью AT-команды #
Когда вы создаете программу, выполняющую звонки через модуль с SIM-картой, то перед попыткой сделать звонок имеет смысл проверить состояние модуля, а также готовность и наличие регистрации SIM-карты.
Проверка питания модуля GSM/GPRS/GNSS Bluetooth HAT #
На модуле GSM/GPRS/GNSS Bluetooth HAT имеется кнопка включения питания. Чтобы включить модуль, ее нужно нажать и через секунду отпустить.
С помощью команды AT+CGNSPWR? можно проверить, включился ли модуль:
AT+CGNSPWR?
+CGNSPWR: 0
Если команда вернула нулевое значение, питание включено.
Проверка готовности SIM-карты #
Ваша SIM-карта может быть заблокирована PIN-кодом. С помощью команды AT+CPIN? можно проверить, требуется ли вводить PIN-код:
AT+CPIN?
+CPIN: READY
Если PIN-код введен правильно или не требуется, то карта находится в состоянии готовности и мы получаем ответ «+CPIN: READY».
Возможны следующие значения:
- READY — модуль не ожидает ввода пароля;
- SIM PIN — нужно ввести код SIM PIN;
- SIM PUK — нужно ввести код SIM PUK;
- PH_SIM PIN — нужен пароль от телефона к SIM-карте (функция «антивор»);
- PH_SIM PUK — нужен код SIM PUK (функция «антивор»)
Если требуется ввести код или изменить его, воспользуетесь такой командой:
AT+CPIN=[,<новый pin>]
Подробнее о PIN-кодах и командах для смены паролей вы можете прочитать в упомянутой ранее документации SIM800 Series_ AT Command Manual.
Если не предъявляется повышенных требований к безопасности, PIN-код можно не устанавливать.
Проверка регистрации в сети мобильного оператора #
Чтобы проверить, зарегистрирована ли ваша SIM-карта, вставленная в модуль GSM/GPRS/GNSS Bluetooth HAT, в сети мобильного оператора, используйте такую команду:
AT+CREG?
+CREG: 0,1
Первый параметр, равный нулю, означает, что отправка кодов результатов при регистрации в сети отключена командой AT+CREG=0. Другие возможные значения:
- 0 — автоматическая отправка кодов результатов при регистрации в сети отключена;
- 1 — автоматическая отправка кодов результатов при регистрации в сети включена;
- 2 — автоматическую отправка кодов результатов при регистрации в сети с информацией о местоположении включена
Здесь нас интересует больше всего вторая цифра, равная единице. Вот все возможные значения:
- 0 — не зарегистрирован, устройство в настоящий момент не ищет нового оператора для регистрации;
- 1 — зарегистрирован, домашняя сеть;
- 2 — не зарегистрирован, но устройство в настоящий момент ищет нового оператора для регистрации;
- 3 — регистрация отклонена;
- 4 — состояние регистрации неизвестно;
- 5 — Зарегистрирован, находится в роуминге
Если SIM-карта зарегистрирована, значение второго параметра будет равно единице.
Совершение звонка #
Для того чтобы позвонить по заданному телефонному номеру, используйте команду ATD:
ATD+79251234567;
OK
Здесь мы звоним на номер +79251234567 (этот номер приведен только для примера). Не забудьте добавить точку с запятой к номеру абонента.
Если абонент не стал отвечать на звонок, модем возвращает такой ответ:
BUSY
Если же абонент взял трубку, а потом завершил соединение, модуль возвратит строку:
NO CARRIER
Завершение звонка со стороны модуля #
Модуль может завершить соединение по своей инициативе с помощью команды ATH:
ATH
OK
Когда будете ее тестировать, то сначала установите соединение, введите команду ATH и нажмите клавишу Enter. Соединение будет разорвано.
Повтор предыдущего вызова #
Чтобы повторить предыдущий вызов, используйте команду:
ATDL
OK
При этом модуль будет звонить на номер, который был задан команде ATD при предыдущем звонке.
Отвечаем на звонок AT-командой #
Если позвонить на номер SIM-карты, установленной в модуле, на консоли появятся сообщения вида:
RING
+CLIP: "+79251234567",145,"",0,"",0
…
RING
+CLIP: "+79251234567",145,"",0,"",0
Чтобы ответить на звонок, передайте в модуль команду ATA и нажмите клавишу Enter:
ATA
OK
Для завершения звонка воспользуйтесь описанной выше командой ATH.
Определитель номера звонящего абонента #
По умолчанию в модуле включен определитель номера звонящего абонента. Этот номер, также его формат передаются через первый и второй параметры после «+CLIP:».
Формат написания номера может быть таким:
- 161 — национальный номер;
- 145 — международный номер (+7,+3, и так далее);
- 129 — остальные номера (такие как 8XXX);
- 177 — формат, специфический для данной мобильной сети
Управление идентификацией вызывающего абонента #
С помощью команды AT+CLIP? можно узнать, включен ли в вашем модуле определитель номера звонящего абонента (идентификация вызывающего абонента).
Чтобы получить текущий режим идентификации вызывающего абонента, введите команду:
AT+CLIP?
+CLIP: 1,1
Первое число в полученной строке указывает, была ли включена идентификации:
- 0 — идентификация отключена;
- 1 — идентификация включена
Проверяя второе число, можно определить, возможна ли идентификация для SIM-карты, установленной в модеме, и для текущего мобильного оператора:
- 0 — идентификация недоступна;
- 1 — идентификация доступна;
- 2 — нет информации о доступности идентификации (например, если недоступна мобильная сеть)
Чтобы отключить определитель номера, используйте команду:
AT+CLIP=0
После этого при поступлении звонка модуль отправит в терминальную программу только строку «RING», без строки «+CLIP:».
Для обратного включения определителя введите:
AT+CLIP=1
После этого после строки «RING» терминалом будет получена строка «+CLIP:» с номером вызывающего абонента.
Управление громкостью звука #
С помощью AT-команд можно управлять громкостью звука в гарнитуре, подключенной к модулю GSM/GPRS/GNSS Bluetooth HAT, а также чувствительностью микрофона.
Отключение звука при вызове #
Команда AT+CALM? позволяет определить текущий режим звука, когда абонент звонит по номеру SIM-карты, вставленной в модуль:
AT+CALM?
+CALM: 0
Эта команда может вернуть такие значения:
- 0 — нормальный режим;
- 1 — режим тишины
Для изменения режима воспользуйтесь такой командой:
AT+CALM=
Здесь режим mode, равный нулю, соответствует обычному режиму, а равный единице — режиму тишины.
Выбор мелодии при вызове #
У вас есть возможность выбирать мелодию, которая будет звучать при поступлении вызова в гарнитуре, подключенной к модулю. За это отвечает команда AT+CALS.
С помощью следующей команды можно узнать доступные номера мелодий:
AT+CALS=?
+CALS: (0-19),(0,1)
В данном случае можно выбирать из 20 мелодий.
Команда AT+CALS? покажет номер текущей мелодии, а также режим предварительного прослушивания:
AT+CALS?
+CALS: 3,0
Здесь при поступлении вызова будет играть мелодия с номером 3.
Чтобы прослушать по очереди доступные мелодии, используйте такую команду:
AT+CALS=4,1
Здесь первый параметр задает номер мелодии, а второй, равный единице, запускает проигрывание мелодии сразу после ввода команды.
Если вам понравилась мелодия, скажем, с номером 19, установите ее так:
AT+CALS=19,0
Теперь она будет проигрываться при поступлении вызова.
Регулировка громкости мелодии вызова #
AT-команда AT+CRSL позволяет узнать и отрегулировать громкость мелодии, которая проигрывается в гарнитуре при поступлении вызова. Громкость определяется в виде числа в диапазоне [0, 100].
Команда AT+CRSL? выводит в терминал текущий уровень громкости:
AT+CRSL?
+CRSL: 24
Чтобы изменить громкость, задайте новое значение из диапазона [0, 100]:
AT+CRSL=50
OK
AT+CRSL?
+CRSL: 50
Регулировка громкости динамика #
AT-команда AT+CLVL позволяет определять и регулировать уровень громкости динамика. Значение громкости динамика представляется числом в диапазоне [0,100].
Чтобы узнать текущий уровень громкости, используйте команду AT+CLVL?:
AT+CLVL?
+CLVL: 50
А так можно установить другой уровень громкости:
AT+CLVL=100
Здесь устанавливается максимальная громкость.
Управление микрофоном #
При необходимости вы можете изменять чувствительность микрофона, а также отключать его во время вызова.
Отключение микрофона при вызове #
Если при вызове нужно отключить микрофон, то это можно сделать так:
AT+CMUT=1
OK
Чтобы включить микрофон снова, используйте команду:
AT+CMUT=0
OK
Заметим, что обе эти команды работают, если соединение уже установлено.
Регулировка чувствительности микрофона #
С помощью команды AT+CMIC? можно узнать текущие значения усиления для каналов, к котором может быть подключен микрофон:
AT+CMIC?
+CMIC: (0,6),(1,6),(2,6),(3,6)
В данном случае значение усиления, которое может лежать в диапазоне [0,15], установлено для всех четырех каналов, доступных на SIM868:
- 0 — главный аудиоканал;
- 1 — вспомогательный аудиоканал;
- 2 — главный аудиоканал в режиме hands-free;
- 3 — вспомогательный аудиоканал в режиме hands-free
Ниже приведены доступные значения коэффициента усиления:
- 0: 0dB
- 1: +1.5dB
- 2: +3.0 dB
- 3: +4.5 dB
- 4: +6.0 dB
- 5: +7.5 dB
- 6: +9.0 dB
- 7: +10.5 dB
- 8: +12.0 dB
- 9: +13.5 dB
- 10: +15.0 dB
- 11: +16.5 dB
- 12: +18.0 dB
- 13: +19.5 dB
- 14: +21.0 dB
- 15: +22.5 dB
Чтобы установить уровень усиления для заданного канала, используете такую команду:
AT+CMIC=0,15
OK
AT+CMIC?
+CMIC: (0,15),(1,15),(2,15),(3,15)
Здесь было установлено максимальное усиление +22.5 dB для всех каналов. Теперь микрофон способен уловить даже очень тихие звуки.
Запрет и фильтрация входящих вызовов #
Наверное, вас раздражают рекламные звонки, которые могут поступать на ваш мобильный телефон. Однако если телефон встроен в промышленное оборудование, то нежелательные вызовы могут привести к неприятным последствиям.
С помощью AT-команд вы можете вообще запретить входящие вызовы, или ограничить их белым списком разрешенных номеров.
Режим запрета входящих вызовов #
Команда AT+GSMBUSY позволяет запретить поступление любых входящих звонков:
AT+GSMBUSY=1
При попытке сделать звонок на номер SIM-карты, вставленной в модуль, абонент услышит сигнал «занято».
Можно разрешить звонки снова следующим образом:
AT+GSMBUSY=0
Белый список номеров #
С помощью команды AT+CWHITELIST можно создать список белых номеров, с которых разрешено поступление звонков, а также сообщений SMS.
По умолчанию белый список отключен:
AT+CWHITELIST?
+CWHITELIST: 0
Чтобы его включить, используйте команду AT+CWHITELIST=, где param может принимать одно из значений:
- 0 — отключить белый список вызовов;
- 1 — включить только белый список вызовов;
- 2 — включить только белый список SMS;
- 3 — включить белый список вызовов и SMS
Если нужно включить белый список и добавить в него номер, задайте команде AT+CWHITELIST дополнительно индекс номера в диапазоне [1,30], а также телефонный номер:
AT+CWHITELIST=3,1,"+79251234567"
Здесь мы разрешили прохождение звонков и получение SMS только для номера "+79251234567" (номер приведен только в качестве примера). Попытки позвонить на номер SIM-карты, установленной в модуле, или отправить на этот номер SMS с других номеров, будут отвергнуты.
Отключить белый список можно так:
AT+CWHITELIST=0
Обнаружение DTMF для автоответчика #
Возможно, вы еще помните старые автоответчики, в которых для записи входящих и исходящих сообщений использовались кассеты с магнитной лентой (рис. 3).
Рис. 3. Автоответчик с кассетами
Если вы делаете современный автоответчик на базе Repka Pi и SIM868, вам пригодится функция обнаружения двухтоновых многочастотных звуковых сигналов DTMF (Dual-Tone Multi-Frequency). Эти сигналы применяется для ввода команд в автоматизированных голосовых меню и системах голосового ответа.
Вспомните:
— нажмите 1 для соединения с отделом продаж, 2 — для соединения со службой поддержки…" и так далее
По умолчанию обнаружение DTMF отключено, что можно определить с помощью следующей команды:
AT+DDET?
+DDET: 0,0,0,0
Включите обнаружение DTMF следующим образом:
AT+DDET=1
OK
AT+DDET?
+DDET: 1,0,0,0
Теперь позвоните с мобильного телефона на номер SIM-карты, установленной в модуле и после появления в терминале строки RING установите соединение командой ATA.
Когда соединение будет установлено, откройте на смартфоне клавиатуру и нажимайте цифры, а также символы # и *. В консоли будут появляться сообщения следующего вида:
+DTMF: 1
+DTMF: 2
+DTMF: 3
…
+DTMF: 9
+DTMF: #
+DTMF: *
Ваша программа автоответчика может выделять эти цифры и символы из сообщения «+DTMF:», запуская, например, для проигрывания соответствующие звуковые файлы.
Подобный автоответчик описан в статье Интерактивный автоответчик на Raspberry Pi и GSM модуле SIM800L.
Полезные ссылки #
- Передаем данные от Repka Pi и Raspberry Pi в интернет по GSM связи через модуль SIM868 и GPRS
- Изучаем передачу данных через GPRS с помощью SIM868 и Repka Pi (продолжение, часть 2)
- Отправляем и принимаем SMS с помощью SIM868 на Repka Pi
- Библиотека SIM800L
- Проект Raspberry Pi SIM800L GSM module
- Библиотека RoverConnect
- Документация по AT-командам SIM868
- Интерактивный автоответчик на Raspberry Pi и GSM модуле SIM800L
Итоги #
Работая над этой статьей, мы с Вами использовали модуль GSM/GPRS/GNSS Bluetooth HAT, созданный на базе SIM868 в качестве мобильного телефона. С помощью Python и библиотеки RoverConnect вы научились звонить по заданному номеру, а также принимать внешние звонки.
Определитель номера, встроенный в модуль, помог вам узнать номер абонента, звонящего на SIM-карту, установленную в GSM/GPRS/GNSS Bluetooth HAT.
С помощью терминала minicom вы изучили набор AT-команд, предназначенный для выполнения всех основных функций телефона.
Теперь вы умеете создавать белый список номеров, с которых разрешен прием звонков и сообщений SMS, выбирать мелодию, которая будет звучать при вызове и ее громкость. Также вам доступно управление громкостью динамика, подключенного к модулю и чувствительностью микрофона, а также временное отключение микрофона.
Также вы научились получать сообщения DTMF, что позволит вам создавать собственный автоответчик.
Обладая всеми этими знаниями, вы сможете добавить функции мобильного телефона в свое устройство, оснащенное микрокомпьютером Repka Pi и модулем GSM/GPRS/GNSS Bluetooth HAT.
Использованные изображения #
https://commons.wikimedia.org/wiki/File:Waehlscheibe-kurzwahlnummern.jpg