Primeiros passos com o SIM800L enviando SMS

Aproveitei a black fraude e comprei alguns componentes, dentre os quais, o SIM800L, que não saiu caro, mas em compensação algumas das funcionalidades não estão disponíveis. Não conhece?

Apresentação do SIM800L

Bem, o SIM800 é esse módulo pequeno da foto sobre o teclado. Alguns vendedores tem esse modelo mais simples que vem com duas antenas. Outros tem um módulo em uma board com os devidos reguladores e nesse caso, os cuidados são menores.

Essa board lhe propicia a capacidade de enviar SMS, receber/fazer ligações e conectar-se à internet através de um chip válido. Ele é ótimo para integração de projetos de segurança para pontos fixos ou móveis e no caso de utilização móvel, uma excelente opção é trabalhar junto com esse minúsculo GPS desse outro artigo.

Cuidados iniciais





No anúncio do comprador, algumas recomendações são explícitas dado o número de devoluções que aconteceram. No primeiro momento pensa-se em problemas com o módulo, mas de fato o vendedor narra que em 100% dos casos o problema era com a SOLDA. Isto é, os compradores fizeram uma solda ruim dos PINOS, que é a coisa mais fácil de soldar.

Eu estou velho e minha visão já não é mais aquela da adolescência, não tenho as mãos cirúrgicas de muitos makers e raramente tenho contato com estanho, mas parece que até eu consegui fazer a solda desse cara, então vou deixar como “dica de um leigo” pra mostrar os cuidados que tomei – e sequer precisei usar fluxo de solda!

1 – Escolha do lado a soldar
SIM800L - frente e costa
SIM800L – frente e costa

Esse módulo permite solda nas duas faces da placa. Qual utilizar? Bem, você pode utilizar qualquer uma, mas na parte de baixo da placa estão dispostos alguns componentes SMD que poderiam sofrer alguns tipos de dano em seu funcionamento por um erro com o ferro de solda ou resíduos de estanho. Na face superior tem apenas o encaixe da antena, que é bem mais tolerante a um contato com o ferro e qualquer resíduo de solda para aquele lado não dá tanto trabalho para corrigir, além de que pode até ficar por lá mesmo, uma vez que a antena possui um pad.

2 – Alinhamento dos pinos a 90o

Uma coisa que me incomoda profundamente é o desalinhamento da solda. Detesto colocar o componente sobre a protoboard e ver ele inclinado, ou então, colocar os jumpers e ficar parecendo a torre de Pisa. É fácil fazer com que fique minimamente desalinha ou então, perfeitamente alinhado. Para fazer a solda, o primeiro passo foi colocar os pinos “espetados” na protoboard. Então coloquei o SIM800L encaixado nesses pinos e olhando a protoboard horizontalmente, coloquei um calço na parte de trás do SIM800L para que mantivesse alinhado ao máximo. Olhe como é simples fazer isso:

Alinhamento dos 90 graus na protoboard
Alinhamento dos 90 graus na protoboard

Apesar de causar uma impressão de estar um pouco inclinado, não está. Repare na área da parte de trás, próximo ao plástico. Tem uma camada fina de espaço entre o SIM800L e a protoboard.

3 – Escolher o estanho correto

Dá pra fazer com qualquer um? Provavelmente sim, mas quando faço solda delicada eu prefiro utilizar o estanho mais fino, porque não há risco de formar pelotas de solda. E é verdade isso, depois que passei a utilizá-lo, minhas soldas tem me feito passar bem menos vergonha. Então eu tenho feito a solda com estanho de 0.3mm e para remoção de solda eu uso o estanho de 1mm. A diferença é notável:

Estanho ideal
Estanho ideal
4 – Primeiro ponto de solda

Como disse anteriormente, não sou especialista em solda, mas um amigo engenheiro de hardware me explicou diversas coisas relacionadas ao processo de soldagem.

  • Solda do pino de ground

O pino de ground normalmente tem uma ilha quadrada. O ponto de ground normalmente tem uma área maior de massa metálica, então ela demora mais a atingir a temperatura ideal para solda por causa da dissipação. E sempre acontece isso, portanto esse é um ponto de paciência.

  • Fazendo o ponto de solda

Não derreta a solda no ferro para depois passar sobre o ponto de solda. Se você jogar a solda sobre um ponto frio, não haverá soldagem, haverá apenas um estanho abraçando o pino e repousando sobre a ilha. A solda acontece por fusão e para a solda aderir ao ponto adequadamente, é necessário que a ilha e o pino sejam aquecidos adequadamente. Eu coloco o ferro de solda inclinado tocando uma pequena região dele sobre o pino e a ilha simultaneamente. Então toco o estanho do lado oposto, onde o ferro não toca o pino e a ilha. Quando o pino e ilha estiverem na temperatura ideal, o estanho passará a derrete e a fusão será a ideal. No ponto do ground isso leva um pouco mais de tempo, seja delicado e tenha paciência.

  • Não sopre a solda para esfriar

Se você soprar a solda, poderá proporcionar um descolamento ou trincá-la durante a fusão. Deixe que ela resfrie naturalmente. Para não aquecer muito toda a região da placa, dê um pequeno intervalo entre uma solda e outra. Outra coisa que você pode fazer é intercalar a soldagem, fazendo um pino oposto ao outro por vez, de forma a permitir o resfriamento da região recém soldada.

  • Prencha adequadamente a área de solda

Você não deve por pouco e nem demasiado estanho. O ideal é que o pino esteja envolto em estanho e que a ilha esteja completamente coberta e sem furos ou texturas.  Não deixe que fique em forma de gota. Se acontecer, toque o ferro para remover o excesso e se possível, verifique o resultado com uma lupa após fazer cada ponto.

Depois de soldar os primeiros 2 pontos, você já pode seguramente remover o calço que estava alinhando o componente em 90 graus, pois já não haverá mais condição de movimentação para desalinhá-lo. O resultado do primeiro ponto de solda (como disse, não sou bom nisso):

Primeiro ponto de solda
Primeiro ponto de solda

Claro, você também não deve deixar fritando por tempo indeterminado ou isso fará com que a ilha se solte e aí é merda permanente.

Uma coisa que não me incomoda nem um pouco é queimar o verniz arredor ao ponto de solda. Não se incomode com isso, o importante é que a solda fique adequada. O resultado final da minha solda é esse abaixo. Como você pode ver, não é um trabalho especialista, mas está seguindo ao máximo as dicas que citei acima.

Solda pronta
Solda pronta

Alimentação

Esse é outro cuidado que se deve ter. Não dá pra utilizar os pinos do Arduino (ou qualquer outro que seja) para alimentá-lo, porque ele necessita de 2A de pico. Nem uma porta USB serve, você precisará mesmo de uma fonte que forneça corrente o suficiente.

A tensão pode ir de 3.7V à 4.2. Eu utilizei essa bateria Li-Io 3.7V@6800mAh. Não significa que ele está recebendo 6.8A na alimentação, significa apenas que ele essa bateria consegue alimentar a 3.7V 6.8A em uma hora. Utilizando-o com o SIM800 essa bateria deve durar até 3 horas, que é mais do que o suficiente para esse artigo. Eu recomendo que seu primeiro contato seja utilizando uma bateria dessas, que você encontra facilmente no mercado livre e é muito barata.

Pinout





A pinagem é muito simples quando utilizando um módulo como esse. Já o próprio SIM800L tem uma pinagem um pouco mais elaborada para o circuito, como você pode ver na página 15 do datasheet. Já nos pinos do módulo, encontrei no google images uma boa representação pra por nesse artigo (porque tenho preguiça de fazer minha própria imagem):

SIM800L pinout
SIM800L pinout

Wiring

TX no RX e vice versa, esse é o primeiro passo. Daí, você pode utilizar um softserial no Arduino UNO ou uma serial do Arduino Leonardo ou Mega, ou utilizar um ESP8266, Raspberry etc. Tudo depende apenas de o dispositivo pretendido possuir uma forma de comunicação serial. Para o teste, vou utilizar um FTDI mesmo. Lembre-se de que o GND deve ser comum entre a MCU/CPU e o SIM800L. Lembre-se de que como dito mais acima, não deve-se utilizar os pinos de alimentação de nenhuma board microcontrolada ou microprocessada. Lembre-se também que você deve prover uma fonte com 3.7V a 4.2V de tensão à 2A. Eu estou utilizando uma li-ion 3.7V@6800mAh que você encontra fácil nesse link do mercado livre. Mais uma vez, tomado pela preguiça, procurei no google images alguma que me livrasse de ter que fazê-lo. Encontrei essa aqui que achei legal:

Wiring com Arduino
Wiring com Arduino

O exemplo mostra Arduino, mas qualquer outro dispositivo seria a mesma coisa; GND comum, uma alimentação dedicada para o SIM800L, TX de um no RX do outro e vice-versa.

Conectando e enviando comandos AT

Os comandos AT são simples caracteres enviados via serial que são interpretados pelo receptor (no caso, o SIM800L). Por isso, testá-lo inicialmente com um FTDI se torna uma tarefa muito simples, porque você não precisará escrever uma linha de código sequer, apenas o comando. E testar o envio de um SMS é ridiculamente simples. Você pode utilizar qualquer programa em Linux que faça comunicação serial como o Screen, GTKTerm, CuteCom, Minicom, QTSerial, Python-serial, etc. A comunicação serial é feita na velocidade de 9600kbauds. Depois na IDE do Arduino mostrarei no código (mais adiante nesse artigo) como enviar comandos AT diretamente (onde nesse caso especificamos a velocidade) e como fazê-lo através de uma confortável biblioteca.

Outra coisa importante é deixar esse módulo em modo de economia quando não estiver sendo utilizado, então, sigamos.

Pino de reset

Esse pino recebe de 2.7V à 2.9V, sendo 2.8V o típico, por um período mínimo de 300us.

Modo de economia

o SIM800H possui 2 modos de economia. Não sei se se aplica ao SIM800L porque não vou testar, mas não faz mal nenhum fazê-lo se não tiver a mesma preguiça que eu. Um deles é a funcionalidade mínima e a outra é dormindo mesmo. Em modo sleep utiliza-se:

Para funcionalidade mínima, deve-se utilizar:

No modo de funcionalidade mínima, existem 3 opções possíveis, que aponto juntamente com seu respectivo consumo:

flag Consumo (mA) em sleep
0 0.796
1 1.16
4 0.892

Quando “0”, mantém-se em funcionalidade mínima. Se “1”, se mantém completamente funcional. Por fim em 4, entra em modo de vôo.

Esse módulo possui auto-bauding entre 1200 e 57600kbps. Daria para fazer até conversação com esse módulo, pois ele possui 2 pintos de entrada para microfone de eletreto, mas infelizmente nesse módulo eles não estão disponíveis. Os ajustes de áudio poderiam ser feitos com o comando AT+CMIC e daí por diante. Além disso, obviamente ele tem também saída para speakers, também indisponíveis nesse módulo. Se você procurar no Mercado Livre encontrará módulos prejetados para disponibilizar a interface de comunicação por voz e o preço é exatamente o mesmo que paguei nesse.

Primeira mensagem

Ao ligar o módulo, a primeira coisa que le faz é enviar uma string hexa “00 49 49 49 49 FF FF FF FF” à 115200. Se você manteve o autobauding, só verá sujeira na tela, mas essa mensagem pode ser ignorada.

A partir da página 13 dos comandos AT do manual do SIM900 você tem toda a informação necessária para dominar o módulo. Nesse artigo o objetivo é apenas fazer o teste antes de fazer algo mais elaborado, então vamos direto ao comando para enviar o SMS.

Comando AT para enviar o SMS

Os comandos básicos para tal são:

Os comandos são terminados com “\r\n”, então configure isso no programa de comunicação serial que estiver utilizando. Para enviar o SMS através de um Arduino por exemplo, o código ficaria:

Com biblioteca é tão fácil quanto, mas isso fica pra um próximo artigo.

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.