- Обязательные компоненты:
- Рабочее объяснение:
- Объяснение четырех функций мобильного телефона Raspberry Pi:
- Принципиальная схема и пояснения:
- Объяснение программирования:
В этом проекте DIY мы собираемся создать простой мобильный телефон с использованием Raspberry Pi, в котором модуль GSM используется для совершения или ответа на вызов и отправки или чтения SMS , а также в этом телефоне Raspberry Pi есть микрофон и динамик, чтобы разговаривать по этому Телефон . Этот проект также будет служить надлежащим интерфейсом модуля GSM с Raspberry Pi со всем кодом, необходимым для работы основных функций любого телефона. Ранее мы создали такой же простой мобильный телефон с использованием Arduino, проверьте здесь
Обязательные компоненты:
- Raspberry Pi 3 (любая модель)
- GSM модуль
- ЖК-дисплей 16x2
- Клавиатура 4x4 (пользователь может использовать мембранную клавиатуру)
- 10к банк
- Макетная плата
- Подключение перемычки
- Источник питания
- Оратор
- MIC
- Сим-карта
- Оратор
- Схема звукового усилителя (опция)
Рабочее объяснение:
В этом проекте мобильного телефона Raspberry Pi мы использовали модуль GSM и Raspberry Pi 3 для управления функциями всей системы и взаимодействия всех компонентов в этой системе. 4x4 Цифровая клавиатура используется для принятия всех видов входов, таких как: Введите номер мобильного телефона, сообщения типа, сделать вызов, получить вызов, отправить SMS, чтение SMS и т.д. GSM модуль SIM900A используется для связи с сетью для звонков и сообщений цель. Мы также подключили микрофон и динамик для голосового вызова и звука звонка, а ЖК-дисплей 16x2 используется для отображения сообщений, инструкций и предупреждений.
Буквенно-цифровой - это метод ввода цифр и букв с использованием одной и той же клавиатуры. В этом методе мы подключили клавиатуру 4x4 к Raspberry Pi и написали код для приема алфавитов, проверьте раздел «Код в коде» ниже.
Работа над этим проектом проста. Все функции будут выполняться с использованием буквенно-цифровой клавиатуры. Ознакомьтесь с полным кодом и демонстрационным видео ниже, чтобы правильно понять процесс. Здесь мы собираемся объяснить все четыре особенности представленных ниже проектов.
Объяснение четырех функций мобильного телефона Raspberry Pi:
1. Сделайте звонок:
Чтобы позвонить с помощью нашего телефона на базе Raspberry Pi, нам нужно нажать «C», а затем ввести номер мобильного телефона, на который мы хотим позвонить. Номер будет вводиться с буквенно-цифровой клавиатуры. После ввода числа нам снова нужно нажать «C». Теперь Raspberry Pi обработает соединение вызова с введенным номером с помощью AT-команды:
ATDxxxxxxxxxx;
2. Принять звонок:
Ответить на звонок очень просто. Когда кто-то звонит на номер SIM-карты вашей системы, который указан в модуле GSM, ваша система покажет на ЖК-дисплее сообщение «Incoming…» с номером входящего абонента. Теперь нам просто нужно нажать «А», чтобы принять участие в этом звонке. Когда мы нажимаем «A», Raspberry Pi отправляет данную команду модулю GSM:
ATA
3. Отправьте SMS:
Когда мы хотим отправить SMS с помощью нашего телефона на базе Raspberry Pi, нам нужно нажать «D». Теперь система запросит номер получателя, означает «кому» мы хотим отправить SMS. После ввода номера нам нужно снова нажать «D», и теперь ЖК-дисплей запросит сообщение. Теперь нам нужно ввести сообщение, как мы вводим на обычном мобильном телефоне, с помощью клавиатуры, а затем после ввода сообщения нам нужно снова нажать «D», чтобы отправить SMS. Для отправки SMS Raspberry Pi отправляет следующую команду:
AT + CMGF = 1
И отправьте 26 в GSM для отправки SMS.
4. Получение и чтение SMS:
Эта функция тоже проста. При этом GSM будет получать SMS и сохранять их на SIM-карте. А Raspberry Pi постоянно отслеживает полученное SMS-сообщение по UART. Всякий раз, когда появляется новое сообщение, ЖК-дисплей будет показывать текст «Новое сообщение», и тогда нам просто нужно нажать «B», чтобы прочитать SMS. Индикация полученного SMS:
+ CMTI: «SM», 6 Где 6 - место хранения сообщения на SIM-карте.
Когда Raspberry Pi получает это сообщение «SMS получено», он извлекает место хранения SMS и отправляет команду в GSM для чтения полученного SMS. И покажите на ЖК-дисплее текст «Новое сообщение».
AT + CMGR =
Теперь GSM отправляет сохраненное сообщение в Raspberry Pi, а затем Raspberry Pi извлекает основное SMS и отображает его на ЖК-дисплее.
Примечание: кодировка для микрофона и динамика отсутствует.
Ознакомьтесь с полным кодом и демонстрационным видео ниже, чтобы правильно понять процесс.
Принципиальная схема и пояснения:
Контакты LCD 16x2 RS, EN, D4, D5, D6 и D7 подключены к контактам GPIO 18, 23, 24, 25, 8 и 7 Raspberry Pi соответственно. Контакты Rx и Tx модуля GSM напрямую подключены к контактам Tx и Rx Raspberry Pi соответственно (Земля Raspberry Pi и GSM должны быть соединены друг с другом). Клавиатура 4x4 Контакты ряда R1, R2, R3, R4 напрямую связаны с контактами GPIO с номерами 12, 16, 20, 21 Raspberry Pi, а столбцы с контактами клавиатуры C1, C2, C3, C4 связаны с контактами GPIO с номерами 26, 19, 13 и 6 из Raspberry Pi. Микрофон подключается непосредственно к микрофонам + и микрофон- модуля GSM, а динамик подключается к контактам sp + и sp- для модуля GSM с помощью этой схемы аудиоусилителя для усиления выходного звука. Эта схема аудиоусилителя является дополнительной, и вы можете напрямую подключить динамик к модулю GSM без этого аудиоусилителя.
Объяснение программирования:
Часть программирования этого мобильного телефона Raspberry Pi немного сложна для новичков. Здесь для Программы мы используем язык Python. Если вы новичок в Raspberry Pi, вам следует ознакомиться с нашими предыдущими руководствами по началу работы с Raspberry Pi и Установка и настройка Raspbian Jessie OS в Pi.
В этом коде мы создали функцию def keypad (): для взаимодействия с простой клавиатурой для ввода чисел. А для ввода алфавитов мы создали def alphaKeypad (): так, что ту же клавиатуру можно использовать и для ввода алфавитов. Теперь мы сделали эту клавиатуру многофункциональной, как и библиотека клавиатуры Arduino. Используя эту клавиатуру, мы можем вводить символы и целые числа, используя всего 10 клавиш.
Например, если мы нажмем клавишу 2 (abc2), она покажет 'a', и если мы нажмем ее снова, она заменит 'a' на 'b', и если мы снова нажмем три раза, то на том же месте будет отображаться 'c' в ЖК-дисплее. Если мы подождем некоторое время после нажатия клавиши, курсор автоматически переместится в следующую позицию на ЖК-дисплее. Теперь мы можем ввести следующий символ или число. Такая же процедура применяется для других ключей.
def keypad (): для j в диапазоне (4): gpio.setup (COL, gpio.OUT) gpio.output (COL, 0) ch = 0 для i в диапазоне (4): если gpio.input (ROW) = = 0: ch = MATRIX вернуть ch while (gpio.input (ROW) == 0): передать gpio.output (COL, 1)
def alphaKeypad (): lcdclear () setCursor (x, y) lcdcmd (0x0f) msg = "" while 1: key = 0 count = 0 key = keypad () if key == '1': ind = 0 maxInd = 6 Key = '1' getChar (Key, ind, maxInd)……………………
Прежде всего, в этот скрипт Python мы включили некоторые необходимые библиотеки и определили контакты для ЖК-дисплея, клавиатуры и других компонентов:
import RPi.GPIO as gpio import serial import time msg = "" alpha = "1! @.,:? ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 * #" x = 0 y = 0 MATRIX =,,,] ROW = COL =………………
Пришло время задать направление булавкам:
gpio.setwarnings (False) gpio.setmode (gpio.BCM) gpio.setup (RS, gpio.OUT) gpio.setup (EN, gpio.OUT) gpio.setup (D4, gpio.OUT) gpio.setup (D5, gpio.OUT) gpio.setup (D6, gpio.OUT) gpio.setup (D7, gpio.OUT) gpio.setup (led, gpio.OUT) gpio.setup (buz, gpio.OUT) gpio.setup (m11, gpio.OUT) gpio.setup (m12, gpio.OUT) gpio.setup (кнопка, gpio.IN) gpio.output (led, 0) gpio.output (buz, 0) gpio.output (m11, 0) gpio. выход (m12, 0)
Затем инициализируйте последовательную связь, как показано ниже:
Serial = serial.Serial ("/ dev / ttyS0", скорость передачи = 9600, тайм-аут = 2)
Теперь нам нужно написать некоторую функцию для управления LCD. Функция def lcdcmd (ch): используется для отправки команды на ЖК-дисплей, а функция def lcdwrite (ch): используется для отправки данных на ЖК-дисплей. Наряду с этими функциями def lcdclear (): используется для очистки ЖК-дисплея, def setCursor (x, y): используется для установки положения курсора на ЖК-дисплее, а def lcdprint (Str): используется для печати строки на ЖК-дисплее.
def lcdcmd (ch): gpio.output (RS, 0) gpio.output (D4, 0) gpio.output (D5, 0) gpio.output (D6, 0) gpio.output (D7, 0) if ch & 0x10 == 0x10: gpio.output (D4, 1)………………
def lcdwrite (ch): gpio.output (RS, 1) gpio.output (D4, 0) gpio.output (D5, 0) gpio.output (D6, 0) gpio.output (D7, 0) if ch & 0x10 == 0x10: gpio.output (D4, 1), если ch & 0x20 == 0x20: gpio.output (D5, 1)………………
def lcdclear (): lcdcmd (0x01) def lcdprint (Str): l = 0; l = len (Str) для i в диапазоне (l): lcdwrite (ord (Str)) def setCursor (x, y): if y == 0: n = 128 + x elif y == 1: n = 192 + x lcdcmd (n)
После этого нам нужно написать несколько функций для отправки SMS, получения SMS, совершения звонка и сопровождения звонка.
Функция def call (): используется для вызова. А функция def receiveCall (data): используется для отображения входящего сообщения и номера на ЖК-дисплее. Наконец, deftendCall (): используется для присутствия на звонке.
Функция def sendSMS (): используется для записи и отправки сообщения с помощью функции alphaKeypad () . А функция def receiveSMS (data): используется для получения и получения местоположения SMS. Наконец, def readSMS (index): используется для отображения сообщения на ЖК-дисплее.
Вы можете найти все вышеперечисленные функции в приведенном ниже коде.
Вот как вы можете превратить Raspberry Pi в мобильный телефон с помощью модуля GSM. Также проверьте этот смартфон с сенсорным экраном Raspberry Pi.