- Необходими компоненти:
- Работно обяснение:
- Обяснение на четирите характеристики на мобилния телефон Raspberry Pi:
- Електрическа схема и обяснение:
- Обяснение на програмирането:
В този проект „Направи си сам“ ще изградим прост мобилен телефон с помощта на Raspberry Pi, в който GSM модул се използва за осъществяване или отговаряне на повикване и изпращане или четене на SMS , а също така този телефон Raspberry Pi има микрофон и високоговорител, за да говори по този Телефон . Този проект ще служи и като правилно свързване на GSM модула с Raspberry Pi, с целия код, необходим за управление на основните функции на всеки телефон. Преди това сме изградили същия вид прост мобилен телефон, използвайки Arduino, проверете тук
Необходими компоненти:
- Raspberry Pi 3 (всеки модел)
- GSM модул
- 16x2 LCD
- 4x4 клавиатура (потребителят може да използва мембранна клавиатура)
- 10к пот
- Макет
- Свързване на джъмперни проводници
- Захранване
- Високоговорител
- MIC
- СИМ-карта
- Високоговорител
- Схема на аудио усилвател (по избор)
Работно обяснение:
В този проект за мобилен телефон Raspberry Pi използвахме GSM модул и Raspberry Pi 3 за контрол на функциите на цялата система и взаимодействие с всички компоненти в тази система. А 4x4 клавиатурата от екрана се използва за вземане на всички видове суровини като: Въведете мобилен номер, тип съобщения, извършване на повикване, приемане на обаждане, изпращане на SMS, чете SMS и т.н. GSM модул SIM900A се използва за връзка с мрежата за обаждането и съобщения предназначение. Също така сме свързали MIC и високоговорител за звук за гласово повикване и позвъняване, а 16x2 LCD се използва за показване на съобщения, инструкции и сигнали.
Буквено- цифровият е метод за въвеждане на числа и азбуки, като се използва една и съща клавиатура. В този метод сме свързали клавиатура 4x4 с Raspberry Pi и написахме код за приемане на азбуки, проверете кода в раздела Код по-долу.
Работата по този проект е лесна. Всички функции ще се изпълняват с помощта на буквено-цифрова клавиатура. Проверете пълния код и демонстрационното видео по-долу, за да разберете правилно процеса. Тук ще обясним всичките четири характеристики на проектите по-долу.
Обяснение на четирите характеристики на мобилния телефон Raspberry Pi:
1. Обадете се:
За да осъществите обаждане с помощта на нашия телефон, базиран на Raspberry Pi, трябва да натиснем „C“ и след това да въведем мобилния номер, на който искаме да осъществим обаждане. Номерът ще бъде въведен с помощта на буквено-цифрова клавиатура. След въвеждане на номера отново трябва да натиснем „C“. Сега Raspberry Pi ще обработи за свързване на повикването към въведения номер с помощта на AT команда:
ATDxxxxxxxxxx;
2. Получаване на обаждане:
Получаването на обаждане е много лесно. Когато някой се обажда на системния номер на вашата система, който е там в GSM модула, тогава системата ви ще покаже съобщение „Incoming…“ върху LCD с входящ номер на повикващия. Сега просто трябва да натиснем „A“, за да присъстваме на това обаждане. Когато натиснем „A“, Raspberry Pi ще изпрати дадена команда на GSM модула:
ATA
3. Изпратете SMS:
Когато искаме да изпратим SMS с помощта на нашия телефон, базиран на Raspberry Pi, трябва да натиснем „D“. Сега Системата ще поиска номер на получател, което означава „на кого“ искаме да изпратим SMS. След въвеждане на номера трябва отново да натиснем „D“ и сега LCD ще поиска съобщение. Сега трябва да напишем съобщението, както въвеждаме в нормален мобилен телефон, с помощта на клавиатурата и след въвеждане на съобщението трябва да натиснем отново буквата „D“, за да изпратим SMS. За да изпратите SMS Raspberry Pi изпраща дадена команда:
AT + CMGF = 1
И изпратете 26 до GSM, за да изпратите SMS.
4. Получавайте и четете SMS:
Тази функция също е проста. По този начин GSM ще получава SMS и ще го съхранява в SIM картата. А Raspberry Pi непрекъснато наблюдава получените SMS индикации през UART. Всеки път, когато има ново съобщение, LCD ще покаже текст „Ново съобщение“ и тогава просто трябва да натиснем „B“, за да прочетем SMS. Индикацията за получено SMS е:
+ CMTI: “SM”, 6 Където 6 е местоположението на съобщението, където то се съхранява в SIM картата.
Когато Raspberry Pi получи тази индикация „SMS Получено“, тя извлича местоположението за съхранение на SMS и изпраща команда на GSM за четене на получения SMS. И покажете текст „Ново съобщение“ над LCD дисплея.
AT + CMGR =
Сега GSM изпраща съхранено съобщение до Raspberry Pi и след това Raspberry Pi извлича основния SMS и го показва на LCD дисплея.
Забележка: Няма кодиране за MIC и високоговорител.
Проверете пълния код и демонстрационното видео по-долу, за да разберете правилно процеса.
Електрическа схема и обяснение:
16x2 LCD щифта 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. MIC е директно свързан към mic + и mic- на GSM модула, а високоговорителят е свързан към sp + и spin-овете за GSM модул с помощта на тази схема за усилване на аудио, за да усили изходния звук. Тази схема на аудио усилвателя не е задължителна и можете директно да свържете високоговорителя към GSM модул без този аудио усилвател.
Обяснение на програмирането:
Програмирането на част от този Raspberry Pi Mobile Phone е малко сложно за начинаещи. Тук използваме езика Python за програмата. Ако сте начинаещ в Raspberry Pi, трябва да проверите предишните ни уроци за Първи стъпки с Raspberry Pi и Инсталиране и конфигуриране на Raspbian Jessie OS в Pi.
В този код създадохме def keypad (): функция за взаимодействие с проста клавиатура за въвеждане на числа. А за въвеждане на азбуки създадохме def alphaKeypad (): така че същата клавиатура може да се използва и за въвеждане на азбуки. Сега сме направили тази клавиатура многофункционална, същата като библиотеката на клавиатурата Arduino. С помощта на тази клавиатура можем да въвеждаме символи и цели числа, като използваме само 10 клавиша.
Подобно на това, че ако натиснем клавиш 2 (abc2), той ще покаже „а“ и ако го натиснем отново, тогава той ще замени „а“ на „б“ и ако отново натиснем три пъти, то ще покаже „с“ на същото място в LCD. Ако изчакаме известно време след натискане на клавиша, курсорът автоматично ще се премести на следващата позиция в LCD. Сега можем да въведем следващия знак или номер. Същата процедура се прилага и за други ключове.
клавиатура def (): за j в обхват (4): gpio.setup (COL, gpio.OUT) gpio.output (COL, 0) ch = 0 за i в обхват (4): ако gpio.input (ROW) = = 0: ch = MATRIX връща ch докато (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 скрипт сме включили някои необходими библиотеки и дефинирани щифтове за LCD, клавиатура и други компоненти:
импортиране RPi.GPIO като gpio време за сериен импорт 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", baudrate = 9600, timeout = 2)
Сега трябва да напишем някаква функция за управление на LCD. Функция def lcdcmd (ch): използва се за изпращане на команда към LCD и def lcdwrite (ch): функцията се използва за изпращане на данни към LCD. Заедно с тези функции, def lcdclear (): се използва за изчистване на LCD, def setCursor (x, y): се използва за задаване на позицията на курсора на LCD и def lcdprint (Str): се използва за отпечатване на низ на LCD.
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 (данни): използва се за показване на входящото съобщение и номер на LCD. И накрая def участиеCall (): използва се за присъствие на разговора.
Функция def sendSMS (): използва се за писане и изпращане на съобщението с помощта на функцията alphaKeypad () . И функцията def receiveSMS (данни): използва се получаване и извличане на местоположението на SMS. Накрая def readSMS (индекс): използва се за показване на съобщението на LCD.
Можете да намерите всички горепосочени функции в кода, даден по-долу.
Така че по този начин можете да конвертирате вашия Raspberry Pi в мобилен телефон с помощта на GSM модул. Също така проверете този смартфон със сензорен екран Raspberry Pi.