Índice:
- Etapa 1: vá buscar as coisas
- Etapa 2: cabeçalhos de solda
- Etapa 3: inserir
- Etapa 4: Revenda
- Etapa 5: conecte a antena
- Etapa 6: insira o cartão SIM
- Etapa 7: inicializar
- Etapa 8: mensagens de texto
- Etapa 9: Voz
Vídeo: Tutorial do Arduino Cellular Shield: 9 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
O Arduino Cellular Shield permite fazer chamadas de telefone celular e enviar mensagens de texto. O cérebro dessa blindagem é o SM5100B, que é um módulo celular robusto capaz de realizar muitas das tarefas da maioria dos telefones celulares padrão. Esta blindagem requer o uso de um cartão SIM para se conectar a uma rede celular. O tutorial a seguir é um tutorial básico para inicializar o escudo, enviar e receber mensagens de texto e chamadas telefônicas. Para saber mais sobre a funcionalidade do módulo, certifique-se de verificar as folhas de dados na página de produto do Sparkfun.
Etapa 1: vá buscar as coisas
Você vai precisar de:
(x1) Escudo celular (x1) Cabeçalhos empilháveis Arduino (x1) Antena de banda quádrupla (x1) Arduino Uno
(Observe que alguns dos links nesta página são links de afiliados. Isso não altera o custo do item para você. Eu reinvesti todos os rendimentos que recebo para fazer novos projetos. Se você quiser sugestões de fornecedores alternativos, por favor, deixe-me conhecer.)
Etapa 2: cabeçalhos de solda
Insira os conectores na blindagem e solde-os no lugar.
Etapa 3: inserir
Insira os pinos de cabeçalho nos soquetes do Arduino.
Etapa 4: Revenda
A conexão do cabo da antena ao módulo SM5100B geralmente não é muito boa. Revenda cada uma das conexões do cabo ao módulo para garantir a conectividade.
Etapa 5: conecte a antena
Passe a antena no cabo da antena.
Etapa 6: insira o cartão SIM
Insira o cartão SIM com segurança no soquete do cartão SIM.
Etapa 7: inicializar
Execute o seguinte código no Arduino:
/*
SparkFun Cellular Shield - Pass-Through Sample Sketch SparkFun Electronics escrito por Ryan Owens 3 / Descrição: Este sketch foi escrito para fazer a interface de um Arduino Duemillanove a um Cellular Shield da SparkFun Electronics. A blindagem celular pode ser adquirida aqui: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Neste esboço, os comandos seriais são passados de um programa de terminal para o módulo celular SM5100B; e as respostas do módulo celular são postadas no terminal. Mais informações podem ser encontradas nos comentários do esboço. Um cartão SIM ativado deve ser inserido no suporte do cartão SIM na placa para usar o dispositivo! Este esboço utiliza a biblioteca NewSoftSerial escrita por Mikal Hart da Arduiniana. A biblioteca pode ser baixada neste URL: https://arduiniana.org/libraries/NewSoftSerial/ Este código é fornecido sob a Licença de Atribuição Creative Commons. Mais informações podem ser encontradas aqui: https://creativecommons.org/licenses/by/3.0/ (Use nosso código livremente! Lembre-se de nos dar o crédito quando for devido. Obrigado!) * / #Include // Incluir o NewSoftSerial biblioteca para enviar comandos seriais para o módulo celular. #include // Usado para manipulações de string char received_char = 0; // Manterá o caractere de entrada da porta serial. Célula serial de software (2, 3); // Crie uma porta serial 'falsa'. O pino 2 é o pino Rx, o pino 3 é o pino Tx. void setup () {// Inicializar portas seriais para comunicação. Serial.begin (9600); cell.begin (9600); //Vamos começar! Serial.println ("Iniciando a comunicação SM5100B…"); } void loop () {// Se um caractere vier do módulo de celular… if (cell.available ()> 0) {Entry_char = cell.read (); // Obtenha o caractere da porta serial do celular. Serial.print (entrando_char); // Imprime o caractere de entrada no terminal. } // Se um caractere está vindo do terminal para o Arduino … if (Serial.available ()> 0) {Entry_char = Serial.read (); // Pega o caractere vindo do terminal if (coming_char == '~') // Se for um til …coming_char = 0x0D; //… converter em um retorno de carro else if (entrando_char == '^') // Se for um acento circunflexo para cima… entrando_char = 0x1A; //… converter para ctrl-Z cell.print (coming_char); // Envia o personagem para o módulo de celular. Serial.print (entrando_char); // Echo-lo de volta para o terminal}} / * SM5100B Quck Reference para AT Command Set * A menos que seja indicado o contrário, os comandos AT são encerrados pressionando a tecla 'enter'. 1.) Certifique-se de que a banda GSM adequada foi selecionada para o seu país. Para os EUA, a banda deve ser definida como 7. Para definir a banda, use este comando: AT + SBAND = 7 2.) Depois de ligar o Arduino com o escudo instalado, verifique se o módulo lê e reconhece o cartão SIM. Com uma janela terimal aberta e definida para a porta do Arduino e 9600 buad, ligue o Arduino. A sequência de inicialização deve ser semelhante a esta: Iniciando a comunicação do SM5100B … + SIND: 1 + SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 A comunicação com o módulo começa depois que a primeira linha é exibida. A segunda linha de comunicação, + SIND: 10, nos informa se o módulo pode ver um cartão SIM. Se o cartão SIM for detectado, todos os campos são 1; se o cartão SIM não for detectado, todos os campos são 0. 3.) Aguarde uma conexão de rede antes de começar a enviar comandos. Após a resposta + SIND: 10, o módulo começará automaticamente a tentar se conectar a uma rede. Espere até receber os seguintes repsones: + SIND: 11 + SIND: 3 + SIND: 4 A resposta + SIND do módulo celular informa o status do módulo. Aqui está um resumo rápido dos significados da resposta: 0 Cartão SIM removido 1 Cartão SIM inserido 2 Melodia de toque 3 Módulo AT está parcialmente pronto 4 Módulo AT está totalmente pronto 5 ID de chamadas liberadas 6 Chamada liberada cujo ID = 7 O serviço de rede é disponível para uma chamada de emergência 8 A rede foi perdida 9 Áudio LIGADO 10 Mostrar o status de cada lista telefônica após a frase inicial 11 Registrado na rede Depois de se registrar na rede, você pode iniciar a interação. Aqui estão alguns comandos simples e úteis para começar: Para fazer uma chamada: Comando AT - ATDxxxyyyzzzz Número de telefone com o formato: (xxx) yyy-zzz try ---- cell.print ("ATDxxxyyyzzzz"); Se você fizer uma ligação, certifique-se de consultar a ficha técnica dos dispositivos para conectar um microfone e um alto-falante à blindagem. Para enviar uma mensagem txt: Comando AT - AT + CMGF = 1 Este comando define o modo de mensagem de texto para 'texto'. Comando AT = AT + CMGS = "xxxyyyzzzz" (retorno do carro) 'Texto a ser enviado' (CTRL + Z) Este comando é um pouco confuso para descrever. O número de telefone, no formato (xxx) aaa-zzzz, fica entre aspas duplas. Pressione 'enter' após fechar as cotações. Em seguida, digite o texto a ser enviado. Finalize o comando AT enviando CTRL + Z. Este personagem não pode ser enviado do terminal do Arduino. Use um programa de terminal alternativo como Hyperterminal, Tera Term, Bray Terminal ou X-CTU. O módulo SM5100B pode fazer muito mais do que isso! Verifique as fichas técnicas na página do produto para saber mais sobre o módulo. * /Abra a porta serial no terminal. Em um Mac, isso é feito digitando: screen /dev/tty.usbmodemfa131 9600 (substitua tty.usbmodemfa131 pelo endereço serial do seu Arduino) Espere para ver a seguinte sequência retornada: Iniciando comunicação SM5100B… + SIND: 3 + SIND: 4 + SIND: 11 (Se esta sequência não for retornada, verifique os códigos de erro listados na parte inferior do código acima e depure apropriadamente. Você pode precisar definir o módulo para uso na América do Norte - veja abaixo - antes de registrar na rede (ou seja, + SIND 11)) Envie os seguintes comandos para a porta serial: Envie para uso na América do Norte: AT + SBAND = 7 Defina a hora atual - aa / mm / dd: AT + CCLK = "13/05/15, 11: 02:00 "Enviar chamada de teste: ATD4155551212
Etapa 8: mensagens de texto
Baixe e instale o SerialGSM em sua biblioteca Arduino.
Para enviar uma mensagem de texto, visite o tutorial do módulo celular Tronixstuff e use o código de exemplo 26.3:
Se desejar executar o código de exemplo para receber um texto, conecte um LED ao pino 8 e coloque-o em série com um resistor de 220 ohms para aterramento.
Para enviar uma mensagem de texto, visite o tutorial do módulo celular Tronixstuff e use o código de exemplo 26.5:
Envie um dos seguintes comandos para o seu módulo de celular:
// liga o LED # a1
// desliga o LED # a0
Etapa 9: Voz
Conecte um microfone e um alto-falante à blindagem usando um cabo de áudio aterrado. O fio de sinal central deve ir para os terminais de áudio plus e a blindagem deve ir para os respectivos terminais negativos na blindagem. Esses cabos devem ser conectados da mesma forma no lado do microfone e do alto-falante.
Para inicializar uma chamada de voz, carregue o seguinte código:
//**********************************************************************************
// FAÇA UMA CHAMADA // // CÓDIGO DE BUFFER COM BASE EM: // // //********************************************************************************** #include #define BUFFSIZ 90 //Set up buffer array char at_buffer[BUFFSIZ]; char buffidx; //Network state variables int network_registered; int network_AT_ready; //Code state variables int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; //Will hold the incoming character from the Serial Port. char incoming_char=0; //Create a 'fake' serial port. Pin 2 is the Rx pin, pin 3 is the Tx pin. SoftwareSerial cell(2, 3); void setup() { //Initialize Arduino serial port for debugging. Serial.begin(9600); //Initialize virtual serial port to talk to Phone. cell.begin(9600); //Hello World. Serial.println("Starting SM5100B Communication…"); delay(1000); //Set initial network state network_registered = 0; network_AT_ready = 0; } //Read AT strings from the cellular shield void readATString(void) { char c; buffidx= 0; // start at begninning for (x = 0; x 0) { c=cell.read(); if (c == -1) { at_buffer[buffidx] = '\0'; return; } if (c == '\n') { continue; } if ((buffidx == BUFFSIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; return; } at_buffer[buffidx++]= c; } } } //Process the AT strings void ProcessATString() { if(strstr(at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println("network Network Not Available"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println("network Registered"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println("network AT Ready"); } } void loop() { /* If called for the first time, loop until network and AT is ready */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) { readATString(); ProcessATString(); } } //LET'S MAKE A PHONE CALL! if(firstTimeInOtherLoop == 1){ //Change the 10 digit phone number to whatever you wish cell.println("ATD4155551212"); firstTimeInOtherLoop = 0; } }
To receive a voice call upload the following code
//**********************************************************************************
// ANSWER A CALL // // BUFFERING CODE BASED UPON: // // // ********************************************** ************************************* #include #define BUFFSIZ 90 // Configure buffer array char at_buffer [BUFFSIZ]; char buffidx; // Variáveis de estado da rede int network_registered; int network_AT_ready; // Variáveis de estado do código int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Manterá o caractere de entrada da porta serial. char entrando_char = 0; // Crie uma porta serial 'falsa'. O pino 2 é o pino Rx, o pino 3 é o pino Tx. Célula de série do software (2, 3); void setup () {// Inicializar a porta serial do Arduino para depuração. Serial.begin (9600); // Inicializa a porta serial virtual para falar com o telefone. cell.begin (9600); //Olá Mundo. Serial.println ("Iniciando a comunicação SM5100B…"); atraso (1000); // Define o estado inicial da rede network_registered = 0; network_AT_ready = 0; } // Lê strings AT do escudo celular void readATString (void) {char c; buffidx = 0; // começa no início para (x = 0; x 0) {c = cell.read (); if (c == -1) {at_buffer [buffidx] = '\ 0'; Retorna; } if (c == '\ n') {continue; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; Retorna; } at_buffer [buffidx ++] = c; }}} // Processa as strings AT void ProcessATString () {if (strstr (at_buffer, "+ SIND: 8")! = 0) {network_registered = 0; Serial.println ("rede de rede não disponível"); } if (strstr (at_buffer, "+ SIND: 11")! = 0) {network_registered = 1; Serial.println ("rede registrada"); } if (strstr (at_buffer, "+ SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("rede AT Ready"); }} void loop () {/ * Se chamado pela primeira vez, faz um loop até que a rede e o AT estejam prontos * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// Procurar chamada recebida if (strstr (at_buffer, "+ CPAS: 3")! = 0) {// Atender o telefone cell.println ("ATA"); firstTimeInOtherLoop = 0; }}}
Você achou isso útil, divertido ou interessante? Siga @madeineuphoria para ver meus projetos mais recentes.
Recomendado:
Arduino TFT Graphics Shield: 4 etapas (com imagens)
Arduino TFT Graphics Shield: a.articles {font-size: 110,0%; intensidade da fonte: Negrito; estilo da fonte: itálico; decoração de texto: nenhum; background-color: red;} a.articles: hover {background-color: black;} Este manual explica como fazer um gráfico colorido de 240 x 320 pixels (QVGA)
Digi XBee3 Cellular SMS ActivityBot: 7 etapas
Digi XBee3 Cellular SMS ActivityBot: O Digi XBee3 ™ Cellular SMS ActivityBot é um robô educacional que pode ser controlado com mensagens de texto de qualquer telefone celular, em qualquer lugar do mundo. O ActivityBot, feito pelos amigos de Digi na Parallax Inc. foi projetado para os criadores de robôs pela primeira vez
Botletics LTE CAT-M / NB-IoT + GPS Shield para Arduino: 10 etapas (com imagens)
Escudo Botletics LTE CAT-M / NB-IoT + GPS para Arduino: Visão geralO escudo Botletics SIM7000 LTE CAT-M / NB-IoT usa a nova tecnologia LTE CAT-M e NB-IoT e também tem GNSS integrado (GPS, GLONASS e BeiDou / Compass, Galileo, padrões QZSS) para rastreamento de localização. Existem vários módulos da série SIM7000
Tutorial do Arduino GPS Shield: Calculadora de distância: 5 etapas
Arduino GPS Shield Tutorial: Calculadora de distância: GPS ou Sistema de Posicionamento Global é um sistema de navegação por rádio baseado em satélite que permite obter sua localização e guiá-lo por outros locais através de um mapa bem reconhecido e predefinido como o Google Maps e no mundo de Arduino, este
Tutorial para L298 2Amp Motor Driver Shield para Arduino: 6 etapas
Tutorial para L298 2Amp Motor Driver Shield para Arduino: DescriptionL298 2Amp Motor Driver Shield para Arduino é baseado no circuito integrado do motor L298, um driver de motor de ponte completa. Ele pode acionar dois motores CC 2A separados ou 1 motor de passo 2A. A velocidade e as direções do motor podem ser controladas separadamente