- Необхідні компоненти:
- Робоче пояснення:
- Пояснення чотирьох особливостей мобільного телефону Raspberry Pi:
- Електрична схема та пояснення:
- Пояснення програмування:
У цьому проекті "зроби сам" ми збираємося створити простий мобільний телефон за допомогою 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, ваша система покаже повідомлення "Вхідне…" на РК-дисплеї із вхідним номером абонента. Тепер нам просто потрібно натиснути "А", щоб взяти участь у цьому дзвінку. Коли ми натискаємо "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 і відображає його на РК-дисплеї.
Примітка: Немає кодування для мікрофона та динаміка.
Перевірте повний код та демонстраційне відео нижче, щоб правильно зрозуміти процес.
Електрична схема та пояснення:
РК-висновки 16x2 RS, EN, D4, D5, D6 та D7 підключені до штифтів GPIO 18, 23, 24, 25, 8 та 7 Raspberry Pi відповідно. Контакт Rx і Tx модуля GSM безпосередньо підключений до контактів Raspberry Pi Tx та Rx відповідно (Земля 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. MIC безпосередньо підключений до мікрофона + і мікрофона GSM-модуля, а динамік підключений на sp + та спинах модуля GSM за допомогою цієї схеми підсилювача звуку для посилення вихідного звуку. Ця схема підсилювача звуку є додатковою, і ви можете безпосередньо підключити динамік до модуля GSM без цього підсилювача звуку.
Пояснення програмування:
Частина програмування цього мобільного телефону Raspberry Pi є трохи складною для початківців. Для програми ми використовуємо мову Python. Якщо ви новачок у Raspberry Pi, вам слід ознайомитися з нашими попередніми підручниками щодо початку роботи з Raspberry Pi та встановлення та налаштування ОС Raspbian Jessie в Pi.
У цьому коді ми створили def keypad (): функцію взаємодії простої клавіатури для введення цифр. А для введення алфавітів ми створили def alphaKeypad (): так що та сама клавіатура також може використовуватися для введення алфавітів. Тепер ми зробили цю клавіатуру багатофункціональною такою ж, як і бібліотека клавіатур Arduino. За допомогою цієї клавіатури ми можемо вводити символи та цілі числа, використовуючи лише 10 клавіш.
Як якщо натиснути клавішу 2 (abc2), вона покаже "a", а якщо натиснути ще раз, то замінить "a" на "b", а якщо ще раз натиснути три рази, то на тому ж місці з'явиться "c" в РК-дисплеї. Якщо ми почекаємо деякий час після натискання клавіші, курсор автоматично перейде до наступного положення на РК-дисплеї. Тепер ми можемо ввести наступний символ або число. Така сама процедура застосовується до інших клавіш.
клавіатура def (): для 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)
Тепер нам потрібно написати якусь функцію для керування РК. Функція 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): якщо y == 0: n = 128 + x elif y == 1: n = 192 + x lcdcmd (n)
Після цього нам потрібно написати деякі функції для надсилання SMS, отримання SMS, здійснення дзвінка та відвідування дзвінка.
Функція def call (): використовується для здійснення дзвінка. А функція def receiveCall (дані): використовується для відображення вхідного повідомлення та номера на РК-дисплеї. Нарешті, def участиеCall (): використовується для участі у дзвінку.
Функція def sendSMS (): використовується для написання та надсилання повідомлення за допомогою функції alphaKeypad () . І функція def receiveSMS (дані): використовується для отримання та отримання розташування SMS. Нарешті def readSMS (індекс): використовується для відображення повідомлення на РК-дисплеї.
Ви можете знайти всі вищезазначені функції в коді, наведеному нижче.
Отже, ось як ви можете перетворити Raspberry Pi на мобільний телефон за допомогою модуля GSM. Також перевірте цей смартфон із сенсорним екраном Raspberry Pi.