- Componentes necessários:
- Explicação de trabalho:
- Explicando quatro recursos do telefone celular Raspberry Pi:
- Diagrama de circuito e explicação:
- Explicação de programação:
Neste projeto DIY vamos construir um telefone celular simples usando Raspberry Pi, no qual o módulo GSM é usado para fazer ou atender a chamada e enviar ou ler o SMS , e também este telefone Raspberry Pi tem microfone e alto-falante para falar sobre este Telefone . Este projeto também servirá como uma interface adequada do Módulo GSM com Raspberry Pi, com todo o Código necessário para operar as funções básicas de qualquer telefone. Anteriormente, construímos o mesmo tipo de telefone móvel simples usando Arduino, verifique aqui
Componentes necessários:
- Raspberry Pi 3 (qualquer modelo)
- Módulo GSM
- LCD 16x2
- Teclado 4x4 (o usuário pode usar o teclado de membrana)
- Pote de 10k
- Tábua de pão
- Jumper de conexão
- Fonte de energia
- Alto falante
- microfone
- Cartão SIM
- Alto falante
- Circuito amplificador de áudio (opcional)
Explicação de trabalho:
Neste projeto de telefone celular Raspberry Pi, usamos o módulo GSM e o Raspberry Pi 3 para controlar os recursos de todo o sistema e fazer a interface de todos os componentes desse sistema. Um teclado alfanumérico 4x4 é usado para receber todos os tipos de entradas, como: inserir o número do celular, digitar mensagens, fazer uma chamada, receber uma chamada, enviar SMS, ler SMS etc. O módulo GSM SIM900A é usado para se comunicar com a rede para chamadas e mensagens objetivo. Também conectamos um MIC e um alto-falante para chamada de voz e som de toque e um LCD 16x2 é usado para mostrar mensagens, instruções e alertas.
Alfanumérico é um método para inserir números e letras usando o mesmo teclado. Neste método, fizemos a interface do teclado 4x4 com Raspberry Pi e escrevemos um código para aceitar alfabetos também, verifique a seção Código no código abaixo.
Trabalhar neste projeto é fácil. Todos os recursos serão realizados usando o teclado alfanumérico. Verifique o código completo e um vídeo de demonstração abaixo para entender corretamente o processo. Aqui vamos explicar todas as quatro características dos projetos abaixo.
Explicando quatro recursos do telefone celular Raspberry Pi:
1. Faça uma ligação:
Para fazer uma chamada usando nosso telefone baseado em Raspberry Pi, temos que pressionar 'C' e, em seguida, inserir o número do celular para o qual queremos fazer a chamada. O número será inserido usando o teclado alfanumérico. Depois de inserir o número, precisamos pressionar 'C' novamente. Agora o Raspberry Pi processará para conectar a chamada ao número inserido usando o comando AT:
ATDxxxxxxxxxx;
2. Receba uma chamada:
Receber uma chamada é muito fácil. Quando alguém está ligando para o número SIM do seu sistema, que está lá no Módulo GSM, o sistema mostrará a mensagem 'Recebendo…' no LCD com o número de entrada do chamador. Agora só precisamos pressionar 'A' para atender a esta chamada. Quando pressionamos 'A', Raspberry Pi enviará o comando dado ao Módulo GSM:
ATA
3. Envie SMS:
Quando quisermos enviar um SMS usando nosso telefone baseado em Raspberry Pi, precisamos pressionar 'D'. Agora o sistema pedirá o número do destinatário, que significa 'para quem' queremos enviar SMS. Depois de inserir o número, precisamos pressionar 'D' novamente e agora o LCD pede a mensagem. Agora precisamos digitar a mensagem, como entramos no celular normal, usando o teclado e, depois de inserir a mensagem, precisamos pressionar o 'D' novamente para enviar SMS. Para enviar SMS, o Raspberry Pi envia o comando dado:
AT + CMGF = 1
E envie 26 para GSM para enviar SMS.
4. Receber e ler SMS:
Esse recurso também é simples. Neste, o GSM irá receber SMS e armazená-lo no cartão SIM. E o Raspberry Pi monitora continuamente a indicação de SMS recebida pelo UART. Sempre que houver uma nova mensagem, o LCD mostrará o texto “Nova mensagem” e, a seguir, basta pressionar 'B' para ler o SMS. A indicação de SMS recebido é:
+ CMTI: “SM”, 6 onde 6 é o local da mensagem onde é armazenada no cartão SIM.
Quando o Raspberry Pi recebe a indicação de 'SMS recebido', ele extrai o local de armazenamento do SMS e envia o comando para o GSM ler o SMS recebido. E mostre um texto de 'Nova Mensagem' no LCD.
AT + CMGR =
Agora o GSM envia a mensagem armazenada para o Raspberry Pi e, em seguida, o Raspberry Pi extrai o SMS principal e exibe-o no LCD.
Nota: Não há codificação para MIC e alto-falante.
Verifique o código completo e um vídeo de demonstração abaixo para entender corretamente o processo.
Diagrama de circuito e explicação:
Os pinos RS, EN, D4, D5, D6 e D7 do LCD 16x2 são conectados ao pino GPIO número 18, 23, 24, 25, 8 e 7 do Raspberry Pi, respectivamente. O pino Rx e Tx do módulo GSM está conectado diretamente ao pino Tx e Rx do Raspberry Pi, respectivamente (o aterramento do Raspberry Pi e o GSM devem estar conectados um ao outro). Os pinos de linha R1, R2, R3, R4 do teclado 4x4 estão diretamente ligados ao pino GPIO número 12,16, 20, 21 do Raspberry Pi e o pino da coluna do teclado C1, C2, C3, C4 estão ligados ao pino GPIO número 26, 19, 13 e 6 de Raspberry Pi. O MIC está diretamente conectado a mic + e mic- do Módulo GSM e o alto-falante é conectado nos pinos sp + e sp- para o Módulo GSM com a ajuda deste Circuito Amplificador de Áudio, para amplificar o áudio de saída. Este circuito amplificador de áudio é opcional e você pode conectar o alto-falante diretamente ao módulo GSM sem este amplificador de áudio.
Explicação de programação:
A parte de programação deste celular Raspberry Pi é um pouco complexa para iniciantes. Estamos usando a linguagem Python aqui para o Programa. Se você é um iniciante no Raspberry Pi, deve verificar nossos tutoriais anteriores de Introdução ao Raspberry Pi e Instalando e configurando o Raspbian Jessie OS no Pi.
Neste código, criamos def keypad (): função para interface de teclado simples para entrada de números. E para inserir alfabetos, criamos def alphaKeypad (): para que o mesmo teclado possa ser usado para inserir os alfabetos também. Agora, tornamos este teclado multifuncional da mesma forma que a biblioteca de teclados do Arduino. Usando este teclado, podemos inserir caracteres e inteiros usando apenas 10 teclas.
Por exemplo, se pressionarmos a tecla 2 (abc2), ele mostrará 'a' e se pressioná-lo novamente, ele substituirá 'a' por 'b' e se pressionarmos novamente três vezes, ele mostrará 'c' no mesmo lugar no LCD. Se esperarmos algum tempo após pressionar a tecla, o cursor se moverá automaticamente para a próxima posição no LCD. Agora podemos inserir o próximo caractere ou número. O mesmo procedimento é aplicado para outras teclas.
teclado def (): para j no intervalo (4): gpio.setup (COL, gpio.OUT) gpio.output (COL, 0) ch = 0 para i no intervalo (4): se gpio.input (ROW) = = 0: ch = MATRIX retornar ch while (gpio.input (ROW) == 0): passar gpio.output (COL, 1)
def alphaKeypad (): lcdclear () setCursor (x, y) lcdcmd (0x0f) msg = "" enquanto 1: tecla = 0 contagem = 0 tecla = teclado () se tecla == '1': ind = 0 maxInd = 6 Key = '1' getChar (Key, ind, maxInd)……………….
Em primeiro lugar, neste script python, incluímos algumas bibliotecas necessárias e pinos definidos para LCD, teclado e outros componentes:
importar RPi.GPIO como gpio importar serial import time msg = "" alpha = "1! @.,:? ABC2DEF3GHI4JKL5MNO6PQRS7TUV8WXYZ90 * #" x = 0 y = 0 MATRIX =,,,] ROW = COL =………………
Agora é hora de orientar os pinos:
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 (botão, gpio.IN) gpio.output (led, 0) gpio.output (buz, 0) gpio.output (m11, 0) gpio. saída (m12, 0)
Em seguida, inicialize a comunicação serial como abaixo:
Serial = serial.Serial ("/ dev / ttyS0", taxa de transmissão = 9600, tempo limite = 2)
Agora precisamos escrever alguma função para dirigir o LCD. Função def lcdcmd (ch): é usada para enviar o comando ao LCD e def lcdwrite (ch): a função é usada para enviar dados ao LCD. Junto com essas funções, def lcdclear (): é usado para limpar o LCD, def setCursor (x, y): é usado para definir a posição do cursor no LCD e def lcdprint (Str): é usado para imprimir string no LCD.
def lcdcmd (ch): gpio.output (RS, 0) gpio.output (D4, 0) gpio.output (D5, 0) gpio.output (D6, 0) gpio.output (D7, 0) se 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) se ch & 0x10 == 0x10: gpio.output (D4, 1) se ch & 0x20 == 0x20: gpio.output (D5, 1)………………
def lcdclear (): lcdcmd (0x01) def lcdprint (Str): l = 0; l = len (Str) para i no intervalo (l): lcdwrite (ord (Str)) def setCursor (x, y): se y == 0: n = 128 + x elif y == 1: n = 192 + x lcdcmd (n)
Depois disso, precisamos escrever algumas funções para enviar SMS, receber SMS, fazer uma chamada e atender a chamada.
Função def call (): é usada para fazer a chamada. E a função def receiveCall (data): é usada para mostrar a mensagem recebida e o número no LCD. Finalmente, def atendeChamada (): é usado para atender a chamada.
Função def sendSMS (): é usada para escrever e enviar a mensagem com a ajuda da função alphaKeypad () . E a função def receiveSMS (dados): é usada para receber e recuperar a localização de SMS. Finalmente def readSMS (índice): é usado para exibir a mensagem no LCD.
Você pode encontrar todas as funções acima no Código fornecido a seguir.
É assim que você pode converter seu Raspberry Pi em um telefone celular com a ajuda do módulo GSM. Verifique também este smartphone com tela de toque do Raspberry Pi.