У меня зазвонил Репка-фон. Делаем телефон на базе Repka Pi 3 с применением модуля SIM868

477fddf929b892ab3b79b092154dda12.jpg

Это четвертая статья серии, посвященной модулю GSM/GPRS/GNSS Bluetooth HAT, способному добавить в ваше IoT-устройство или другое оборудование функции мобильного телефона.

Настало время превратить модуль GSM/GPRS/GNSS Bluetooth HAT, созданный на базе SIM868, в самый настоящий телефон, способный звонить и принимать звонки. Мы расскажем о том, как это можно делать из программы, составленной на языке Python, а также опишем соответствующие AT-команды. Вы проверите их в работе с помощью терминала minicom.

Также вы научитесь работать с определителем номера вызывающего абонента, создавать белый список номеров, с которых разрешен прием звонков и сообщений SMS, выбирать мелодию, которая будет звучать при вызове и ее громкость. Вы сможете управлять громкостью динамика, подключенного к модулю и чувствительностью микрофона.

Это четвертая статья серии, посвященной модулю GSM/GPRS/GNSS Bluetooth HAT, способному добавить в ваше IoT-устройство или другое оборудование функции мобильного телефона.

Из первой статьи серии, посвященной модулю GSM/GPRS/GNSS Bluetooth HAT, вы узнали, как обмениваться данными между микрокомпьютером Repka Pi с JSON-сервисом, доступным в интернете, по каналу GPRS.

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

В третьей статье подробно рассказано об отправке и приеме коротких текстовых сообщений SMS (Short Message Service). Рассмотрен текстовый режим, а также режим PDU (Protocol Data Unit), в котором можно отправлять и принимать сообщения с символами кириллицы.

У меня зазвонил телефон.
— Кто говорит?
— Слон.
— Откуда?
— От верблюда.
— Что вам надо?
— Шоколада.

К.И. Чуковский, 1924.

Содержание данной статьи:

Сборка макета

Для работы с этой статьей соберите простой макет, подключив модуль GSM/GPRS/GNSS Bluetooth HAT непосредственно к разъему GPIO микрокомпьютера Repka Pi как «шляпу» (плата функционального расширения для 40 pin разъёма аналогичного на Repka Pi с Raspberry Pi) как показано на рис. 1.

Рис. 1. Подключение GSM/GPRS/GNSS Bluetooth HAT к Repka Pi через GPIO.

Рис. 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.

Рис. 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

Первое число в полученной строке указывает, была ли включена идентификации:

Проверяя второе число, можно определить, возможна ли идентификация для 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

Эта команда может вернуть такие значения:

Для изменения режима воспользуйтесь такой командой:

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. Автоответчик с кассетами.

Рис. 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 и модуль 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

https://commons.wikimedia.org/wiki/File: Dual_endless_cassette_tapes_in_National_Easa-Phone_20130722.jpg

Если данная статья Вам понравилась и показалась интересной, то пишите, какие бы ещё модули плат функционального расширения Вы хотели бы попробовать применять или уже применяете и считаете, что об этом нужно рассказывать на Хабре.

© Habrahabr.ru