Neste artigo, vamos explorar a criação de um sistema IoT utilizando o ESP32 e o módulo GSM Sim800L para a detecção de presença utilizando um sensor de movimento e envio de notificações. Este projeto é particularmente útil em ambientes como recepções de hotéis, onde a presença de visitantes pode ser detectada e os recepcionistas notificados via SMS.
Esperamos com esse projeto conseguir melhorar o primeiro protótipo criado, o Presence Pulse, caso tenha interesse em patrocinar esse projeto em andamento e ajudar o desenvolvedor, sinta-se a vontade para realizar doação do valor que achar melhor, agradecemos quaisquer ajuda para que possamos disponibilizar mais tempo para estudo e prototipagem.
Descrição do Projeto
o Primeiro protótipo foi batizado de “Presence Pulse”, e foi resultado de um estudo universitário. Se trata de um sistema inovador que combina módulos de sensor de distância, um módulo GSM e o microcontrolador ESP32 para notificar recepcionistas sobre a presença de visitantes, otimizando o atendimento ao cliente.
Funcionalidades
- Detecção de Presença: Utiliza sensores de proximidade para identificar a presença de visitantes na recepção.
- Notificação de Recepcionistas: Envia notificações via SMS ou chamadas através de um módulo GSM para o celular do recepcionista.
- Programação Flexível: Programado em MicroPython, o sistema oferece fácil adaptação e modificação para diversos cenários.
Estrutura do Código
Arquivo boot.py
from main_semaforo import execute #from main_gsm import execute # Para testar apenas o envio do SMS, execute o main_gsm from machine import Pin import time def main(): resposta = execute() if __name__ == "__main__": main()
Explicação do Código
- Importação de Módulos:
main_semaforo
: Importa a funçãoexecute
que contém a lógica principal do sistema.machine.Pin
: Importa a classePin
da bibliotecamachine
, essencial para controlar pinos GPIO do ESP32.time
: Importa a bibliotecatime
para gerenciar atrasos e intervalos no código.
- Função
main()
:- Chama a função
execute()
, que executa a lógica do semáforo IoT, incluindo a detecção de presença e envio de notificações.
- Chama a função
- Ponto de Entrada:
- Verifica se o script está sendo executado diretamente (
__name__ == "__main__"
), e se sim, chamamain()
.
- Verifica se o script está sendo executado diretamente (
Estrutura de arquivos e pastas
Arquivo main_gsm.py
from gsm_functions import GsmSim800lMsg import time def execute(): gsm = GsmSim800lMsg() resposta = gsm.send() print("Resposta final:", resposta) return resposta
Explicação do Código
- Importação de Módulos:
gsm_functions
: Importa a classeGsmSim800lMsg
que contém métodos para interagir com o módulo GSM Sim800L.time
: Importa a bibliotecatime
para gerenciar atrasos e intervalos no código.
- Função
execute()
:- Instancia a classe
GsmSim800lMsg
criando um objetogsm
. - Chama o método
send()
do objetogsm
, que envia a notificação via SMS. - Imprime a resposta recebida (
print("Resposta final:", resposta)
) e a retorna.
- Instancia a classe
Estrutuda e arquitetura implementada
Classe GsmSim800lMsg
class GsmSim800lMsg: def __init__(self): # Inicialização do módulo GSM pass def send(self): # Lógica para enviar SMS pass
Explicação do Código
- Método
__init__()
:- Inicializa o módulo GSM, configurando os parâmetros necessários para a comunicação.
- Método
send()
:- Contém a lógica para enviar um SMS, incluindo comandos AT para comunicação com o módulo Sim800L.
Componentes Utilizados
- ESP32 WRoom Devkit v1
- Sensor Ultrassônico HC-SR04
- Display OLED 0.91 – I2C 128×32
- Semáforo RGY LED
- GSM Sim800L
- Fonte Ajustável Protoboard 3.3v / 5v
- Regulador de Tensão Step-Down LM2596 DC-DC
Processo de Execução
- Inicialização do Protótipo: Ao ligar, o ESP32 carrega os dados em memória.
- Execução do Boot.py: Inicia automaticamente com
boot.py
, estabelecendo__main__
como ponto de entrada. - Carregamento do Sistema:
main()
carrega o sistema e seus módulos. - Loop Principal: Um loop
while True
emexecute()
mantém o sistema operacional.- Classe Core: Instanciação da
SemafaroIoT
, gerenciando os módulos, incluindoGSMSim800lMsg
. - Medição de Distância: Cálculo da distância via sensor ultrassônico.
- Verificação de Presença: Se a distância for ≤ 200 cm, ativa o modo de notificação.
- Classe Core: Instanciação da
- Ativação da Notificação: Com a presença detectada,
GSMSim800lMsg
envia notificações ao recepcionista. - Registro no Firebase: Dados de presença registrados no Firebase usando
ufirebase
. - Retorno ao Loop: Após a notificação e registro dos dados, o sistema retorna ao início do loop para novo monitoramento.
Montagem e Esquema
Os detalhes sobre a montagem do protótipo e o esquemático serão disponibilizados em breve.
Requisitos
- MicroPython v1.20.0 para ESP32: Download Micropython
- IDE Thonny: Download IDE Thonny
- Biblioteca
ssd1306
: Download SSD1306 - Biblioteca
ufirebase
: Download Ufirebase
Contribuição
Colaboração com Francisco e suporte do Profº Alan, Unimetrocamp. Sugestões e contribuições são bem-vindas. Para doações acesse nosso Link de pagamento para Doação
Imagens do Protótipo
- Presence Pulse Protótipo Final v1.0.1:
Sistema IoT com ESP32 e GSM para notificação com sensor de distância - Presence Pulse mostrando o OLED Display envio ao Firebase:
Sistema IoT com ESP32 e GSM para notificação com sensor de distância - Presence Pulse Conector para alimentação de 12V – 1.5ma:
Sistema IoT com ESP32 e GSM para notificação com sensor de distância - Presence Pulse mensagens SMS recebidas enviadas por GSM com SIM800L + Chip da TIM
Sistema IoT com ESP32 e GSM para notificação com sensor de distância - Presence Pulse Realtime database no-sql Firebase estrutura json enviado pela ESP32 para armazenar as informações:
Sistema IoT com ESP32 e GSM para notificação com sensor de distância - Presence Pulse Protótipo aberto visto ligado e funcionando todos os modulos
Sistema IoT com ESP32 e GSM para notificação com sensor de distância