O projeto SOS é desenvolvido por Pedro de Mattos Mariano Mendes Neto e Ricardo Harms Schiniegoski. Este projeto é desenvolvido para a disciplina de Projeto de Sistema de Informação do curso de Engenharia de Computação da Universidade Estadual de Ponta Grossa (UEPG).
O principal objetivo do projeto é facilitar a obtenção de ajuda em um lar de idosos, porém devido a comunicação entre os ESPs ser feita através de protocolo TCP/IP, é possível adaptar o projeto para atuar através de um servidor, ampliando o raio de atuação.
Para o desenvolvimento do projeto está sendo utilizado os seguintes equipamentos:
- ESP32 - Placa de desenvolvimento NodeMCU-32S
- Acelerômetro - Módulo GY-61 com saídas analógicas em cada um dos seus três eixos
LCD - Display LCD 16x02- Display OLED 128x64
Para a parte de programação do projeto está sendo utilizado as seguintes ferramentas:
- Python3.5 - Linguagem de programação compatível com o MicroPython
- PIP - Sistema gerenciador de pacotes do Python
- Micropython - Versão compacta do Python e otimizada para microcontroladores
- Esptool - Ferramenta para instalação do firmware em ESPs
- Ampy - Adafruit MicroPython Tool, ferramenta para comunicação serial com o ESP, utilizada para manipular os arquivos dentro do ESP
Primeiramente é necessário instalar o Python3.5 e para isso utiliza-se
sudo apt-get install python3.5
Após instalar o Python3.5 deve-se instalar o pip para a versão 3.5 do Python. Para isso deve-se seguir os seguintes passos:
cd [seu_diretorio]
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3.5 get-pip.py
É possível ver a versão atual do pip e o Python utilizando o pip -V
Instalado o pip é possível instalar o esptool utilizando:
pip install esptool
E para instalar o ampy:
pip install adafruit-ampy
Pode haver alguns problemas com o esptool e o ampy devido a necessidade de permissão ao utilizar a porta usb pelo /dev/ttyUSB0, caso isso ocorra, é necessário instalar os dois utilizando o sudo.
O firmware do ESP32 junto com os outros firmwares podem ser encontrados na página de download do MicroPython
Basta baixar o firmware correspondente a sua placa de desenvolvimento. O firmware do ESP32 ainda está em desenvolvimento, portanto há builds diárias.
Após baixar o firmware do ESP32, basta seguir os passos:
esptool.py --port /dev/ttyUSB0 erase_flash
esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash -z 0x1000 esp32-firmware.bin
Para colocar os arquivos no ESP32, utiliza-se o programa ampy:
ampy -p /dev/ttyUSB0 put main.py
Para remover um arquivo no ESP32:
ampy -p /dev/ttyUSB0 rm main.py
Também é possível listar os arquivos e pegar o conteúdo deles:
ampy -p /dev/ttyUSB0 ls
ampy -p /dev/ttyUSB0 get main.py
-
Nível de bateria
A ideia é fazer um divisor de tensão do
VINcom uma resistência equivalente do circuito de 10M. A primeira parte tem uma resistencia de 8M, após a resistência de 8M o circuito se divide indo para o ADC e para um resistor de 2M. Depois do resistor de 2M será ligado ao ground, assim a tensão no ADC será 1/5 da tensão de alimentação.
-
Nível de bateria
-
Limiar do acelerômetro
A partir de qual aceleração (em g) é uma queda.
O circuito do ESP32 está feito de maneira que o GPIO15 atua como a entrada, detectando a borda de subida e chamando uma função quando detecta.
O GPIO2 atua como pino de saída para acionar o buzzer. Já o GPIO5 atua como pino de saída para acionar o LED.git
Já o GPIO4 atua como pino de saída para alimentar o botão, assim é possível fazer um debounce para o botão.
O acelerômetro está ligado no ESP32, sendo o eixo X no GPIO34, o eixo Y no GPIO35 e o eixo Z no GPIO32.
O circuito do ESP32 está feito de maneira que o GPIO15 atua como uma saída para alimentar os botões do receptor. O GPIO2 atua como entrada, chamando uma função em que passa a ser exibido o próximo item da lista. O GPIO4 atua como entrada, chamando a função que remove o item atual da lista. O GPIO19 atua como uma saída para alimentar o buzzer.
Os pinos 21 e 22 são utilizados para comunicação I2C com o display de OLED, sendo o GPIO21 como sda e o GPIO22 como scl.
O projeto está separado pela atuação do ESP32, aonde um irá atuar como servidor e outros ESPs irão atuar como clientes.
Pela necessidade de utilizar uma comunicação WiFi, caso não encontre um ponto de acesso previamente cadastrado, o ESP irá se tornar um ponto de acesso aonde poderá ser cadastrado o SSID e senha.
APENAS PARA A PULSEIRA
Durante o cadastro do Wifi poderá ser possível limpar o cadastro da pulseira.
Após o cadastro do Wifi, se conectado, poderá ser cadastrado a pulseira, com a informação do nome e do quarto.
Após todos os cadastros, a pulseira ficará esperando o botão ser pressionado. Ao pressionar o botão, irá emitir um beep e conectar ao servidor. Caso não seja possível se conectar ao servidor, a pulseira irá emitir um beep extendido.
A pulseira só irá requisitar ajuda uma vez a cada 15 segundos!
APENAS PARA O RECEPTOR
Após o cadastro do Wifi, o receptor irá se tornar um servidor e esperar a conexão da pulseira. Caso haja alguma conexão, será emitido um beep.
Ao pressionar o botão de próximo, é exibido no display a próxima pessoa que requisitou ajuda e sempre que há mais de uma pessoa, um símbolo de + ficará visível no canto do display.
Ao pressionar o botão de remover, o nome atual exibido no display será removido, retornando ao começo da lista.
Foi implementado vários try except de maneira que tratem qualquer erro, salvem o estado atual e reiniciem o ESP32.
EM ANDAMENTO
