이 DIY 프로젝트에서 우리는 빌드하려는 라즈베리 파이를 사용하여 간단한 휴대 전화 GSM 모듈 전화를 걸거나 응답하고 보내거나 SMS를 읽는 데 사용되는을 , 그리고이 라즈베리 파이 폰이 이상 이야기에 마이크와 스피커가 있습니다 전화 . 이 프로젝트는 또한 모든 전화의 기본 기능을 작동하는 데 필요한 모든 코드와 함께 GSM 모듈과 Raspberry Pi 의 적절한 인터페이스 역할을 할 것 입니다. 이전에 우리는 Arduino를 사용하여 동일한 종류의 Simple Mobile Phone을 만들었습니다. 여기를 확인하십시오.
필수 구성 요소:
- Raspberry Pi 3 (모든 모델)
- GSM 모듈
- 16x2 LCD
- 4x4 키패드 (사용자는 멤브레인 키패드를 사용할 수 있음)
- 10k 냄비
- 브레드 보드
- 점퍼 와이어 연결
- 전원 공급
- 스피커
- 마이크
- SIM 카드
- 스피커
- 오디오 증폭기 회로 (옵션)
작동 설명:
이 Raspberry Pi Mobile Phone Project 에서는 GSM 모듈과 Raspberry Pi 3 를 사용하여 전체 시스템의 기능을 제어하고이 시스템의 모든 구성 요소를 인터페이스했습니다. 영숫자 키패드는 4 × 4 와 같은 입력의 모든 종류의 복용에 사용됩니다: 휴대 전화 번호를 입력 메시지을 입력, 전화, 전송 SMS를 수신 전화를 걸 등 SMS 읽기 GSM 모듈 SIM900A은 전화 및 메시징 네트워크와 통신하는 데 사용됩니다 목적. 또한 음성 통화 및 벨소리를 위한 MIC 및 스피커를 인터페이스했으며 메시지, 지침 및 경고를 표시하는 데 16x2 LCD 가 사용됩니다.
영숫자 는 동일한 키패드를 사용하여 숫자와 알파벳을 모두 입력하는 방법입니다. 이 방법에서는 4x4 키패드를 Raspberry Pi와 인터페이스하고 알파벳을 받아들이는 코드도 작성했습니다. 아래 코드 섹션 에서 코드를 확인 하세요.
이 프로젝트의 작업은 쉽습니다. 모든 기능은 영숫자 키패드를 사용하여 수행됩니다. 프로세스를 올바르게 이해하려면 아래 의 전체 코드와 데모 비디오 를 확인하십시오. 여기서는 아래 프로젝트의 네 가지 기능을 모두 설명하겠습니다.
Raspberry Pi 휴대폰의 네 가지 기능 설명:
1. 전화 걸기:
Raspberry Pi 기반 전화를 사용하여 전화를 걸려면 'C'를 누른 다음 전화를 걸 휴대폰 번호를 입력해야합니다. 숫자는 영숫자 키패드를 사용하여 입력됩니다. 번호를 입력 한 후 다시 'C'를 눌러야합니다. 이제 Raspberry Pi는 AT 명령을 사용하여 입력 한 번호에 통화를 연결하는 과정을 진행합니다.
ATDxxxxxxxxxx;
2. 전화 받기:
전화를받는 것은 매우 쉽습니다. 누군가 GSM 모듈에있는 시스템 SIM 번호로 전화를 걸면 시스템은 수신 발신자 번호와 함께 LCD에 '수신 중…'메시지를 표시합니다. 이제이 통화에 참석하려면 'A'를 누르기 만하면됩니다. 'A'를 누르면 Raspberry Pi는 주어진 명령을 GSM 모듈로 보냅니다.
ATA
3. SMS 보내기:
Raspberry Pi 기반 전화를 사용하여 SMS를 보내려면 'D'를 눌러야합니다. 이제 시스템은 SMS를 보낼 '누구에게'를 의미하는 수신자 번호를 요청합니다. 번호를 입력 한 후 다시 'D'를 누르면 LCD가 메시지를 요청합니다. 이제 일반 모바일에 입력하는 것처럼 키패드를 사용하여 메시지를 입력하고 메시지를 입력 한 후 'D'를 다시 눌러 SMS를 보내야합니다. SMS를 보내려면 Raspberry Pi가 주어진 명령을 보냅니다.
AT + CMGF = 1
그리고 26을 GSM으로 보내 SMS를 보냅니다.
4. SMS 수신 및 읽기:
이 기능도 간단합니다. 여기에서 GSM은 SMS를 수신하여 SIM 카드에 저장합니다. 그리고 Raspberry Pi는 UART를 통해 수신 된 SMS 표시를 지속적으로 모니터링합니다. 새 메시지가있을 때마다 LCD에 "새 메시지"텍스트가 표시되고 SMS를 읽으려면 'B'를 누르기 만하면됩니다. 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은 각각 Raspberry Pi의 GPIO 핀 번호 18, 23, 24, 25, 8 및 7과 연결됩니다. GSM 모듈의 Rx 및 Tx 핀은 각각 Raspberry Pi의 Tx 및 Rx 핀에 직접 연결됩니다 (라즈베리 파이와 GSM의 접지는 서로 연결되어야합니다). 4x4 키패드 행 핀 R1, R2, R3, R4는 Raspberry Pi의 GPIO 핀 번호 12,16, 20, 21에 직접 연결되고 키패드 C1, C2, C3, C4의 열 핀은 GPIO 핀 번호 26, 19에 연결됩니다. Raspberry Pi의 13 및 6. MIC는 GSM 모듈의 mic + 및 mic-에 직접 연결되고 스피커는이 오디오 증폭기 회로의 도움으로 GSM 모듈 용 sp + 및 sp- 핀에 연결되어 출력 오디오를 증폭합니다. 이 오디오 증폭기 회로는 선택 사항이며이 오디오 증폭기없이 스피커를 GSM 모듈에 직접 연결할 수 있습니다.
프로그래밍 설명:
이 Raspberry Pi Mobile Phone 의 프로그래밍 부분은 초보자에게 약간 복잡합니다. 우리가 사용하는 파이썬 언어 여기에 프로그램을. Raspberry Pi를 처음 사용하는 경우 Raspberry Pi 시작하기 및 Pi에서 Raspbian Jessie OS 설치 및 구성에 대한 이전 자습서를 확인해야합니다.
이 코드에서 우리는 숫자 입력을위한 간단한 키패드 인터페이스를 위한 def 키패드 (): 함수를 만들었습니다. 그리고 알파벳을 입력하기 위해 def alphaKeypad ():를 만들었습니다 . 따라서 동일한 키패드를 사용하여 알파벳을 입력 할 수도 있습니다. 이제 우리는이 키패드가 Arduino 키패드 라이브러리와 동일하게 기능하도록 만들었습니다. 이 키패드를 사용하면 10 개의 키만 사용하여 문자와 정수를 입력 할 수 있습니다.
키 2 (abc2)를 누르면 'a'가 표시되고 다시 누르면 'a'가 'b'로 바뀌고 다시 세 번 누르면 같은 위치에 'c'가 표시됩니다. LCD에서. 키를 누른 후 잠시 기다리면 커서가 LCD의 다음 위치로 자동 이동합니다. 이제 다음 문자 또는 숫자를 입력 할 수 있습니다. 다른 키에도 동일한 절차가 적용됩니다.
def 키패드 (): j 범위 (4): gpio.setup (COL, gpio.OUT) gpio.output (COL, 0) ch = 0 i 범위 (4): if gpio.input (ROW) = = 0: ch = MATRIX return ch while (gpio.input (ROW) == 0): pass 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, 키패드 및 기타 구성 요소에 필요한 일부 라이브러리와 정의 된 핀이 포함되어 있습니다.
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 (button, 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 구동을위한 함수를 작성해야합니다. Function 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) if ch & 0x20 == 0x20: gpio.output (D5, 1)………………
def lcdclear (): lcdcmd (0x01) def lcdprint (Str): l = 0; l = len (Str) for i in range (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 (): 호출 에 사용됩니다. 그리고 function def receiveCall (data): 수신 메시지와 번호를 LCD에 표시하는 데 사용됩니다. 마지막으로 def attendCall (): 호출에 참석하는 데 사용됩니다.
Function def sendSMS (): alphaKeypad () 함수 의 도움으로 메시지를 쓰고 보내는 데 사용됩니다. 그리고 함수 def receiveSMS (data): 수신 및 SMS 위치 검색에 사용됩니다. 마지막으로 def readSMS (index): LCD에 메시지를 표시하는 데 사용됩니다.
위의 모든 기능은 아래 코드에서 찾을 수 있습니다.
따라서 이것이 GSM 모듈을 사용 하여 Raspberry Pi를 휴대폰으로 변환 하는 방법 입니다. 이 라즈베리 파이 터치 스크린 스마트 폰도 확인하십시오.