Fazendo o Keyestudio GSM / GPRS Shield funcionar através da biblioteca Amperka

Quero apresentar uma biblioteca para o GSM / GPRS Shield para Arduino da Keyestudio. Eu comprei este dispositivo por causa do preço. Na China, ficou quase duas vezes mais barato que o seu homólogo da Amperka e três vezes o do iAruino. A razão para escrever este texto é a falta de uma biblioteca aceitável no Keyestudio para trabalhar com ele. O trabalho com um conjunto de comandos AT não é considerado. Bibliotecas para outros dispositivos semelhantes não se encaixavam diretamente. De qualquer forma, não consegui fazê-los funcionar.

Na minha opinião, tive que adaptar a biblioteca Amperkovskaya mais elaborada para este painel e, assim, tentar manter a compatibilidade do código escrito para o escudo Amperkovsky.

Na verdade, conecte-se à biblioteca: github.com/andrewinc/keyestudio-gsm-gprs-shield
Aparência Keyestudio GSM / GPRS Shield
A Amperka usa um chip Sim900R em seu escudo, e aqui está o Sim900. A diferença mais importante no sinal ST: está na biblioteca de origem e na blindagem, mas não no Keyestudio. Enquanto isso, teria claramente ativado ou desativado o chip. Mas há um botão SIM900_Power, que me levou a pensar mal sobre a falta de capacidade do software para ligar o chip. Felizmente, eles estavam errados.

Pino 9 - controla a inclusão do chip, o mesmo substituto do botão liga / desliga, PK é indicado na placa Amperka.

Uma pequena diferença na versão do chip não afetou seus recursos; em qualquer caso, consegui iniciar uma chamada, enviar e receber SMS usando os exemplos fornecidos na biblioteca. Eu acho que essa é a direção principal do uso desse escudo.

Configurações físicas


A placa se comunica com o Arduino através de uma interface UART. Para quem não conhece o UART, esses são os pinos TX e RX. Por TX - os dados seguem do Arduino e por RX - de volta.

Há também um switch "UART_Port - DBG_Port", mas eu não usei essa porta. A opção permaneceu no "UART_Port".

A peculiaridade do quadro é que ele não funciona imediatamente. Se você prestar atenção ao estado dos jumpers após abrir a embalagem (veja a foto acima), poderá ver as conexões TXD c 0 e RXD com 1. Os mesmos pinos são usados ​​no Arduino para TX e RX. Este é exatamente o problema, porque eles estão ocupados para baixar o esboço, eles também são usados ​​para trocar informações através do objeto Serial, incl. e para depuração. Ao conectar o Arduino ao escudo, ocorre um conflito e o firmware falha.

Serial de software


Sabe-se que o Arduino UNO possui apenas uma interface serial, mas toda a sua família é, por exemplo, o Arduino Mega. Serial1 está associado a um par de TX1 e RX1, da mesma forma para Serial2 e Serial3.
Para usar o Arduino UNO, é razoável usar o software Serial. Basta conectar a biblioteca apropriada e criar o próprio objeto, indicando os pinos do Arduino aos quais os sinais TXD e RXD vêm da blindagem:

#include <SoftwareSerial.h> SoftwareSerial mySerial(6, 7); 

Neste exemplo, TXD está conectado ao pino 6 e RXD está conectado ao 7.

Chip de habilitação de software


O pino de ligar / desligar o chip - 9, diferentemente do TX e RX, não pode ser conectado a outros pinos do Arduino; em qualquer caso, não havia interruptores na blindagem para isso.

Para ligar o chip, você precisa enviar um sinal alto de 9 pinos, aguarde 1-3 segundos e aplique um sinal baixo a ele. Geralmente, no código, você pode ver a espera nos segundos 5-15. Tudo isso se assemelha à manipulação do botão liga / desliga em um telefone celular e, posteriormente, baixá-lo e estabelecer uma conexão com a rede.

Na biblioteca de origem da Amperka, houve feedback através do sinal ST. Por meio dele, no processo de ativação, o estado foi verificado: o chip está ligado? Infelizmente, na ausência desse sinal, os métodos on e off do chip são semelhantes aos irmãos gêmeos, devido ao fato de que um strobe de 9 pinos também é enviado para desligar. Esses métodos não foram combinados em um por causa da compatibilidade de código e por causa da preguiça comum .

Como isso funciona


A própria biblioteca está conectada com a linha:

 #include <GPRSk_Shield_Arduino.h> 

Em seguida, você pode criar um objeto com base na classe GPRSk e passar o mesmo mySerial para o construtor ou especificar o hardware Serial1, Serial2, etc. Um exemplo:

 GPRSk gprs(mySerial); 

Serial e mySerial geralmente são inicializados na função de configuração; no entanto, se você não planeja enviar informações de depuração para o monitor IDE do Arduino, pode fazer apenas com a inicialização do mySerial.

Depois disso, o chip é desligado usando o método gprs.powerOn () e, em seguida, é chamado gprs.init (), que retornará verdadeiro se o chip estiver pronto para receber / transmitir informações.

Quando todas essas tarefas estiverem concluídas, você pode enviar SMS:

 gprs.sendSMS("+79007654321", "Hello SMS from Keyestudio!"); 

Leia novas postagens:

 char message[160]; char phone[16]; char datetime[24]; if (gprs.ifSMSNow()) { gprs.readSMS(message, phone, datetime); } 

fazer chamadas:

 gprs.callUp("+79007654321"); 

etc.

Dentro da estrutura da biblioteca, exemplos "Amperkov" são anexados, onde apenas o Serial1 é alterado para software. Eles foram testados no Keyestudio GSM / GPRS Shield e mostraram seu desempenho.

Nutrição


Observações mostraram que este “sanduíche” do escudo Arduino UNO e GPRS carece de energia do USB. Isso é expresso emitindo sistematicamente false com o método gprs.init ()
Também havia energia insuficiente de 200mA (9V) no conector de energia padrão do Arduino, além da energia USB. Em vez disso, algumas vezes gprs.init () passou e outras não. Acredito que a fonte de alimentação 5V 1-1.5A será suficiente.

Desvantagens:


  1. A biblioteca usa pausa delay (), que interrompe a execução de todo o código do controlador.
  2. Supõe-se que nenhum código PIN esteja instalado no cartão SIM
  3. O texto das mensagens SMS não suporta cirílico.

Espero que esta biblioteca possa ser útil, bem como algumas notas sobre como trabalhar com esse escudo.

Source: https://habr.com/ru/post/pt403843/


All Articles