Envio de SMS em massa

Como construímos um módulo de backup SMS com Raspberry Pi Pico W e GPRS SIM800L em MicroPython

Na Woopi, estamos sempre em busca de soluções inovadoras para garantir a continuidade e a eficiência dos serviços que oferecemos aos nossos clientes. Um dos desafios recentes que enfrentamos foi como manter a comunicação fluida em nossa plataforma de envio massivo de mensagens via WhatsApp em caso de interrupções no serviço. Foi assim que surgiu a ideia de desenvolver um módulo de backup para envio de SMS, utilizando tecnologia acessível e altamente personalizável.

Este projeto foi um desafio emocionante, que desenvolvi completamente do zero utilizando MicroPython e componentes como a Raspberry Pi Pico W e o módulo GPRS SIM800L. Neste artigo, quero compartilhar o processo técnico por trás desse desenvolvimento, destacando os passos mais importantes e as decisões que tomei para que este módulo funcionasse como um backup confiável.


O problema a ser resolvido

Nossa plataforma de envio massivo de mensagens via WhatsApp é essencial para muitas empresas que confiam em nós para suas comunicações críticas. No entanto, como um serviço externo, o WhatsApp pode sofrer interrupções ocasionais. Precisávamos de um sistema que pudesse assumir automaticamente para garantir que as mensagens chegassem ao destino.

O envio de SMS surgiu como a solução ideal: é um método comprovado, confiável e amplamente suportado pelas operadoras móveis.


Os componentes do módulo

Para construir este sistema, selecionamos componentes econômicos e fáceis de integrar:

  1. Raspberry Pi Pico W: Escolhi esta placa pela sua potência, versatilidade e baixo custo. Além disso, o suporte ao MicroPython facilitou significativamente o desenvolvimento do código.
  2. Módulo GPRS SIM800L: Este módulo permite a comunicação GSM/GPRS, ideal para o envio de SMS de forma rápida e eficiente.
  3. Fontes de alimentação: Como o SIM800L pode ser exigente em relação ao consumo de energia, usei um regulador de voltagem para garantir uma operação estável.
  4. Antena externa: Para maximizar o sinal em áreas com baixa cobertura.

O desenvolvimento passo a passo

1. Configuração do hardware

O primeiro passo foi conectar corretamente o SIM800L à Raspberry Pi Pico W. É importante considerar que o SIM800L opera com 4V, por isso foi necessário:

  • Utilizar um conversor de nível lógico para comunicar o módulo com a Pico, que opera com 3.3V.
  • Garantir uma alimentação estável com um capacitor para evitar reinicializações inesperadas.

2. Instalação do MicroPython

A Raspberry Pi Pico W tem suporte nativo ao MicroPython. Carreguei o firmware mais recente, configurei o ambiente e testei os pinos GPIO para garantir que estavam funcionando corretamente.

3. Configuração do SIM800L

O módulo SIM800L é controlado por comandos AT. Esses comandos permitem desde verificar o sinal até enviar mensagens SMS. Alguns dos comandos principais que utilizei foram:

  • AT+CSQ: Para verificar a intensidade do sinal.
  • AT+CMGF=1: Para configurar o modo de texto.
  • AT+CMGS: Para enviar uma mensagem.

4. Desenvolvimento do código

Em MicroPython, escrevi um script para:

  1. Ler uma lista de números da nossa plataforma.
  2. Enviar SMS para cada número utilizando os comandos AT.
  3. Atualizar o status de cada mensagem enviada por meio de um PUT na nossa API.
  4. Introduzir um atraso aleatório entre mensagens (de 1 a 6 segundos) para evitar ser bloqueado pela operadora móvel.

O código também inclui tratamento de erros para garantir que, caso uma mensagem falhe, o sistema tente reenviá-la antes de reportar como não entregue.

5. Integração com nossa plataforma

Para conectar o módulo à nossa plataforma de envio massivo de mensagens via WhatsApp, utilizei um endpoint que:

  • Recebe a lista de números e mensagens a serem enviados.
  • Retorna o status atualizado das mensagens enviadas.

Isso garante que, se o WhatsApp não estiver disponível, o sistema automaticamente recorra ao envio de SMS.


Desafios e soluções

1. Sinal fraco do SIM800L
O módulo SIM800L é sensível à qualidade do sinal GSM. Para resolver isso, adicionei uma antena externa, que melhorou significativamente a recepção.

2. Consumo de energia
O SIM800L possui picos de consumo que podem reiniciar o módulo se a alimentação não for adequada. Usei um regulador de voltagem dedicado com um capacitor de 1000 μF para estabilizar a corrente.

3. Latência na resposta do servidor
Para evitar atrasos, implementei um sistema de atraso aleatório e otimizei as consultas à API, reduzindo a sobrecarga.


Resultados

Este módulo se tornou uma solução robusta que garante a continuidade do serviço. Agora, mesmo que o WhatsApp fique temporariamente offline, nossos clientes podem continuar enviando mensagens SMS sem interrupções.


Conclusão

Desenvolver este módulo foi uma experiência gratificante, que demonstrou como ferramentas acessíveis como a Raspberry Pi Pico W e o SIM800L podem resolver problemas críticos de negócios. Espero que este artigo inspire outros desenvolvedores a explorar soluções similares.

Na Woopi, continuamos comprometidos com a inovação e a qualidade. Se você quiser saber mais sobre este desenvolvimento ou implementar uma solução personalizada para sua empresa, não hesite em entrar em contato conosco.

Detalhes do blog

  • Data: 20/12/2024
  • Categoria: Hardware
  • Autor: Sergio De Pietro