O EmbarcaHack é um Hackathon de Sistemas Embarcados promovido pelo EmbarcaTech - Residência Tecnológica em Sistemas Embarcados.
- Apresentação
- Documentos
- Objetivos
- Requisitos Funcionais
- Arquitetura de Hardware
- Arquitetura do Firmware
- Fluxograma
- Indicação do uso de IA
- Conclusão
- Referências
- Licença
Este repositório tem como finalidade apresentar os principais aspectos do desenvolvimento do projeto IncluiAuth, abordando sua arquitetura, implementação e funcionalidades. O IncluiAuth é uma interface de autenticação alternativa, desenvolvida para promover a acessibilidade de pessoas com deficiência, o qual permite a inserção de senhas por meio de um joystick ou por detecção sonora, tornando sistemas de segurança mais inclusivos.
Veja este vídeo de exemplo no YouTube em https://www.youtube.com/watch?v=Q9PgCGsT6_M
.
Este projeto tem como objetivos principais:
- Criar uma solução de autenticação acessível, capaz de atender às necessidades de usuários com diferentes deficiências;
- Proporcionar múltiplos métodos de entrada de senha (joystick e som) para ampliar a acessibilidade de pessoas com limitações motoras nas mãos e dedos, por exemplo;
- Fornecer feedback visual e sonoro durante o processo de autenticação;
- Implementar um sistema de segurança confiável com validação de senha;
- Desenvolver uma solução integrável a diferentes sistemas que demandam controle de acesso, como portas e portões eletrônicos, catracas automatizadas, controle veicular e terminais de atendimento automático, como os utilizados em hospitais e outros ambientes.
Esses objetivos visam promover a inclusão digital, assegurando que pessoas com limitações motoras ou outras deficiências possam utilizar sistemas de autenticação de forma autônoma, segura e eficiente.
Os requisitos funcionais do sistema proposto são:
ID | Requisito Funcional |
---|---|
RF01 | O sistema deve fornecer dois modos de autenticação: via joystick e via detecção sonora (palmas/batidas); |
RF02 | O sistema deve permitir a seleção do método de autenticação via botões físicos (Botões A e B); |
RF03 | O sistema deve exibir informações do status de autenticação em um display OLED (acesso permitido ou negado); |
RF04 | O sistema deve fornecer feedback visual via matriz de LEDs RGB durante o processo de autenticação (opção selecionada, acesso permitido ou negado); |
RF05 | O sistema deve fornecer feedback sonoro (beeps) para indicar as ações do usuário e informar se a autenticação foi bem-sucedida ou negada; |
RF06 | O sistema deve permitir a entrada de senha de 4 dígitos por meio de seleção de posições em uma matriz 5x5; |
RF07 | O sistema deve validar a senha inserida comparando-a com uma senha previamente configurada; |
RF08 | O sistema deve fornecer feedback visual e sonoro distintos para indicar se o acesso foi permitido ou negado; |
RF09 | No modo joystick, o sistema deve permitir a navegação pela matriz utilizando o joystick analógico e a seleção de elementos por meio do botão central; |
RF10 | No modo som, o sistema deve reconhecer sons únicos (vozes, palmas e batidas) para navegação pela matriz e sons duplos (vozes, palmas e batidas) para a seleção de elementos. |
A arquitetura de hardware do sistema contempla os seguintes componentes:
Componente | Descrição |
---|---|
Raspberry Pi Pico W | Microcontrolador responsável por processar os dados e controlar os periféricos. |
Display OLED 128x64 0.96" (conectado via I2C) | Interface de saída visual responsável por exibir mensagens. |
Matriz de LEDs RGB 5x5 WS2812B (controlada via PIO) | Interface de saída visual responsável por exibir animações e a posição da senha. |
Buzzer passivo (controlado via PWM) | Interface de saída sonora responsável por reproduzir beeps para indicar uma ação. |
Joystick analógico KY-023 (conectado às entradas ADC) | Interface de entrada responsável por coletar a posição da senha através de coordenadas X e Y. |
Microfone analógico GY-MAX4466 (conectado à entrada ADC) | Interface de entrada responsável por coletar a posição da senha através de sons (vozes, palmas e batidas). |
2 botões tácteis (chaves push-button 12x12x7.5mm) | Interfaces de entrada responsáveis por coletar o método de autenticação desejado. |
A tabela a seguir apresenta o esquema de conexões dos componentes:
Interface | Componente | Pino |
---|---|---|
ADC0 | VRY (eixo Y do joystick) | 26 |
ADC1 | VRX (eixo X do joystick) | 27 |
ADC2 | Microfone | 28 |
GPIO | Botão A | 5 |
GPIO | Botão B | 6 |
PIO | Matriz de LEDs | 7 |
I2C SDA | Display OLED | 14 |
I2C SCL | Display OLED | 15 |
PWM | Buzzer | 21 |
GPIO | Botão do joystick (SW) | 22 |
As imagens a seguir ilustram a placa BitDogLab utilizada neste projeto:
O firmware foi desenvolvido em linguagem C para o SDK do Raspberry Pi Pico W, utilizando o VSCode como IDE, através da extensão Raspberry Pi Pico, e está estruturado em módulos que incluem:
ID | Módulo | Descrição |
---|---|---|
1 | Inicialização e Configuração de Hardware | Configuração das portas (GPIO, ADC, I2C, PWM e PIO) e inicialização dos periféricos (display OLED, matriz de LEDs, etc). |
2 | Controle da Matriz de LEDs | Gerenciamento dos LEDs RGB WS2812B via PIO e funções para definir cores, resetar e escrever na matriz. |
3 | Gerenciamento de Áudio | Controle do buzzer via PWM e definição de diferentes frequências para feedback sonoro. |
4 | Gerenciamento do Display OLED | Interface com o display via I2C e funções para exibir textos e informações de status. |
5 | Processamento de Entrada do Joystick | Leitura dos valores analógicos dos eixos X e Y e detecção de pressão do botão do joystick. |
6 | Processamento de Entrada Sonora | Detecção de palmas via microfone e temporização para detecção de palmas duplas. |
7 | Lógica de Autenticação | Verificação da senha inserida, gerenciamento do processo de entrada de senha e feedback de acesso permitido ou negado. |
8 | Interface de Usuário | Gerenciamento da seleção do método de autenticação e exibição do status do processo de autenticação. |
O projeto fez uso de Inteligência Artificial (ChatGPT) para auxiliar na redação do relatório, a qual contribuiu para a organização e correção gramatical do texto. Além disso, a extensão LanguageTool foi empregada para aprimorar a revisão linguística.
O projeto IncluiAuth alcançou os objetivos propostos, ao qual proporcionou uma solução inovadora de autenticação voltada para pessoas com deficiência. A implementação dos dois métodos de entrada, joystick e som, oferece flexibilidade para atender diferentes tipos de necessidades, permitindo que usuários com limitações motoras ou outras deficiências utilizem sistemas de autenticação de forma segura e autônoma.
A combinação de feedback visual, por meio da matriz de LEDs e do display OLED, com o feedback sonoro fornecido pelo buzzer, proporciona uma experiência de uso mais intuitiva e acessível. Além disso, a arquitetura modular do firmware facilita a adaptação e a expansão do sistema, permitindo a inclusão de novos métodos de entrada (futuramente por Wi-Fi, por exemplo) e a integração com outras plataformas.
O IncluiAuth demonstra como tecnologias acessíveis e de fácil implementação podem ser combinadas para promover a inclusão digital, contribuindo para a construção de uma sociedade mais acessível e equitativa.
Esse software é licenciado pelo MIT.