DESENVOLVIMENTO DE UM SISTEMA DE ASSISTÊNCIA DE DIREÇÃO AO MOTORISTA DE BAIXO CUSTO UTILIZANDO RASPBERRY BI E OPEN CV

REGISTRO DOI: 10.69849/revistaft/ra10202601111924


Davi Henrique Risuenho Albuquerque


RESUMO

Este presente trabalho apresenta o desenvolvimento de um sistema de assistência ao motorista de baixo custo, que utiliza visão computacional para o reconhecimento de faixas da rodovia e detecção de possíveis colisões frontais. O mesmo conta com dois hardwares, o principal e o auxiliar. O hardware principal é o Raspberry Pi 4B executando o algoritmo de reconhecimento das faixas da rodovia através imagem obtida por uma câmera conectado nele, os avisos são enviados de forma sem fio por radiofrequência para o hardware auxiliar. O hardware auxiliar são duas pulseiras que recebem o sinal de alerta e acionam um motor de vibração a fim de alertar o motorista de uma situação perigosa O objetivo é tornar essa tecnologia mais acessível pois atualmente é exclusiva de veículos modernos de alto custo. O algoritmo foi aperfeiçoado em um ambiente de testes em um simulador de direção, para replicar diversas condições de condução e iluminação. Posteriormente foi implementada em um veículo real para testar seu funcionamento e os resultados foram satisfatórios. Por fim, os dados e os resultados dos testes obtidos mostraram que o projeto desenvolvido atende aos requisitos propostos de detectar situações perigosas durante a condução de um veículo.

Palavras-chave: Visão computacional, baixo custo, assistência de direção, radiofrequência, transformada de Hough.

ABSTRACT

This paper presents the development of a low-cost driver assistance system that uses computer vision to recognize highway lanes and detect possible head-on collisions. It has two hardware components: the main and the auxiliary. The main hardware is the Raspberry Pi 4B running the highway lane recognition algorithm through images obtained by a camera connected to it. The warnings are sent wirelessly via radio frequency to the auxiliary hardware. The auxiliary hardware consists of two wristbands that receive the warning signal and activate a vibration motor to alert the driver of a dangerous situation. The goal is to make this technology more accessible, as it is currently exclusive to modern, high-cost vehicles. The algorithm was perfected in a test environment in a driving simulator to replicate various driving and lighting conditions. It was later implemented in a real vehicle to test its operation, and the results were satisfactory. Finally, the data and test results obtained showed that the developed project meets the proposed requirements for detecting dangerous situations while driving a vehicle. 

Keywords: Computer vision, low cost, driving assistance, radio frequency, Hough transform.

Uma das principais causas de acidentes de trânsito no Brasil é a falha humana ou a reação ineficiente diante da situação que antecede o acontecimento. Com a evolução das tecnologias, começaram a ser embarcados em veículos modernos os assistentes de direção como o ADAS (Advanced Driver Assistance System), que contam com diversos sensores, câmeras e radares que ajudam a prever a situação perigosa e avisar o motorista para que ele reaja de forma mais eficiente.

Entretanto, a acessibilidade à essas tecnologias é um problema, pois é difícil embarcar esse sistema nos carros populares existentes e não há empresas especializadas em implementar o ADAS em carros de clientes comuns, e sim empresas especializadas em vender soluções para outras grandes empresas de fabricação de veículos. Ou seja, para ter o sistema implementado o usuário terá que escolher a versão mais cara da linha de um veículo moderno.

Esta pesquisa tem como o objetivo o desenvolvimento e a implementação de um sistema de assistência de direção ao motorista de baixo custo utilizando algoritmos em C++, comunicação por rádio frequência, visão computacional e motores de vibração para alertar o motorista de situações perigosas na rodovia, visando evitar acidentes por desatenção.

Segundo dados do ano de 2015 do Observatório Nacional de Segurança Viária (ONSV), 90% dos acidentes ocorrem por falhas humanas, que podem envolver a desatenção humana e até desrespeito à legislação rodoviária.

Para enfatizar ainda mais o problema, de acordo com a Polícia Rodoviária Federal (PRF), no ano de 2023 a reação tardia ou ineficiente do condutor foi a maior causa de acidentes de trânsito, com 9.820 ocorrências. A Figura 1 demonstra as principais causas de acidentes.

Figura 1 – Ranking de Causa de Acidentes em 2023.

Fonte: Azevedo (2024).

Em dados globais, segundo o World Health Organization (WHO), em 2021 teve um número estimado de 1.19 milhões de mortes em rodovias, isso corresponde a uma taxa de 15 mortes a cada 100.000 habitantes. E 92% dessas mortes ocorrem em países de baixa e média renda. A Figura 2 divide os acidentes por regiões e rendas ao redor do mundo.

Figura 2 – Distribuição de acidentes fatais por região e nível de renda em 2021.

Fonte: World Health Organization (2023).

Advanced Driver Assistance System (ADAS) é um sistema embarcado em carros que ajudam o motorista durante a sua condução, podendo até intervir em casos de possíveis acidentes dependendo do nível do sistema.

Basicamente, os artifícios funcionam com base em sensores, radares e/ou câmeras. Nem sempre todas essas formas estão presentes. São exemplos o controle de cruzeiro adaptativo, frenagem automática e manutenção e alerta de mudança de faixa. Mais comuns entre os modelos nacionais, os assistentes do grau zero são aqueles que auxiliam o condutor, mas não tem capacidade de intervir diretamente (Cabral, 2024).

A Figura 3 demonstra os 5 níveis de automação do ADAS, quanto maior o nível mais controle automático o veículo possui em situações perigosas.

Figura 3 – Níveis do ADAS.

Fonte: Borini (2019).

Os sistemas de assistência ao motoristas são itens que são integrados por fabricantes de veículos, sendo difícil serem implementados após o veículo já ser fabricado. Segundo o site AutoSegredos (2023), o carro mais barato no Brasil que conta com essa tecnologia do ADAS já embarcada custa mais de R$100.000, sendo inacessível para a maioria dos brasileiros.

Segundo o site da Peugeot (2025), o modelo mais barato de seu catálogo é o Peugeot 208 Active 1.0 (R$ 91,990,00) e a versão desse mesmo modelo que já conta com o sistema ADAS incluso (208 GT Turbo) custa R$128.990,00, sendo uma diferença de R$ 37.000 para que o cliente tenha o ADAS incluso em seu carro novo.

O Hardware principal será responsável por executar o algoritmo de reconhecimento de imagem do vídeo captado em tempo real da parte dianteira do carro. É composto basicamente do computador (Raspberry Pi 4B), do sensor de imagem (Raspberry CAM) e do transmissor de radiofrequência para a comunicação com o hardware auxiliar. A Figura 4 demonstra a arquitetura inicial do hardware principal.

Figura 4 – Ilustração da arquitetura do Hardware principal.

Fonte: Autor (2024).

A plataforma foi escolhida devido as sua capacidade de processamento estar no escopo do projeto, capaz de executar bibliotecas de processamento de imagens em tempo real sem muitas desvantagens como atrasos ou travamentos.

Raspberry Pi (RPi) é um conjunto de mini-computadores de placa única. Eles contam com componentes integrados em apenas uma multiplataforma. Para um entendimento mais simples, o Raspberry Pi é basicamente um computador em formato de placa, que permite a conexão de periféricos, como mouse, teclado e outros dispositivos. O mini-computador, por conta de suas características, pode ser utilizado para programação, automação, controle de robôs e aplicações mais simples. (Mello, 2022).

Segundo o site da fabricante, o Raspberry Pi 4B conta com um processador (SoC) Broadcom BCM2711, com quatro núcleos Cortex-A72 (ARM v8) na arquitetura de 64 bits, rodando na frequência de 1.8GHz. A memória RAM varia de 1GB até 8GB LPDDR4-3200 SDRAM. A Figura 5 demonstra os principais componentes da placa do Raspberry Pi.

Figura 5 – Componentes do Raspberry Pi 4B.

Fonte: Raspberrypi (2024).

A Raspberry CAM foi escolhida pelo fato de ter compatibilidade nativa com o próprio Raspberry e possuir a conexão por cabo flat diretamente na PCI. Sua qualidade de imagem de vídeo é aceitável para o nível do projeto por possuir uma resolução de até 1080p a 30 quadros por segundo. 

Módulo câmera de 5MP para Raspberry Pi. A conexão é feita através da porta CSI (Camera Serial Interface). Ela possui lente de foco fixo, capaz de fornecer resolução de 2592 x 1944 pixels para imagens estáticas e 1080p30, 720p60 e 640x480p60/90 para vídeos. Esta câmera é compatível com sistema operacional Raspberry Pi OS (antigo Raspbian) rodando nas placas Raspberry Pi B, B+, 2, 3 e 4 (Robocore, 2024). 

A Figura 6 demonstra o sensor de imagem compatível com Raspberry Pi 4B.

Figura 6 – Raspberry Pi CAM Rev 1.3.

Fonte: Robocore (2024)

Para a comunicação entre as duas partes do projeto, o transmissor STX882 foi escolhido por ser compacto e ter um nível de potência de transmissão bom para o alcance na parte interna do veículo automotivo.

O STX882 é um módulo transmissor ASK de 315/433 MHz de tamanho compacto, alta potência, baixo custo e baixa harmonia, que apresenta alta estabilidade e excelente custo-benefício. Sua potência é de até 50 mW sob tensão de 3,6 V e até 100 mW sob tensão de 5,0 V. O STX882 é o módulo ASK com a maior potência transmitida em comparação com outros transmissores ASK do mercado sob tensão de 3,6 V. É fácil de usar e pode ser conectado diretamente ao microcontrolador. (NiceRF, 2025).

A Figura 7 demonstra o transmissor de radiofrequência.

Figura 7 – Transmissor STX882.

Fonte: NiceRf (2025).

Na etapa de testes utilizando um simulador de direção será utilizada uma placa de captura, pois o Raspberry Pi não possui uma entrada de vídeo nativa como um HDMI-IN. O sinal de vídeo HDMI é convertido e transmitido por USB, e o Raspberry reconhece como se fosse uma Webcam USB. A Figura 8 representa a conexão.

Figura 8 – Placa de Captura USB.

Fonte: Autor (2025)

O hardware auxiliar do projeto são as pulseiras de aviso que o motorista utilizaria nos dois pulsos, receberia os avisos de leitura através de vibração, os sinais seriam enviados por rádio frequência pelo algoritmo e transmissor presente no hardware principal. A Figura 9 demonstra a arquitetura inicial do hardware auxiliar.

Figura 9 – Arquitetura do Hardware auxiliar.

Fonte: Autor (2024).

A plataforma escolhida para o protótipo da pulseira foi o Arduino Pro Mini, pois possui um tamanho reduzido por não possuir uma interface USB própria embarcada e baixo consumo de corrente que é extremamente necessário para prolongar a duração de bateria do dispositivo. Seu nível de processamento é aceitável para executar um simples código de recepção de sinal de radiofrequência e o acionamento do motor de vibração.

O Arduino Pro Mini é uma pequena plataforma de prototipagem baseada no microcontrolador ATmega 328P, criada para uso em pequenos projetos eletrônicos, permitindo ainda instalação fácil em protoboards, ocupando mínimo espaço. Fisicamente o Pro Mini apresenta-se extremamente compacto, é uma das menores plataformas da família Arduino, considerado ideal para a montagem de projetos de pequeno porte ou para instalação fácil em protoboards. Comparado ao popular Arduino Uno, por exemplo, tem em média 1/4 do tamanho, combinando toda a funcionalidade possibilitada pelo microcontrolador em uma placa muito pequena, possuindo diversos pinos de conexão (Byteflop, 2024).

 A Figura 10 demonstra a plataforma microprocessada de programação.

Figura 10 – Arduino Pro Mini.

Fonte: Byteflop (2024).

O motor de vibração utilizado terá o tamanho reduzido, com consumo baixo de corrente e que seja compatível com o projeto. Para o controle da vibração e do consumo de corrente, será utilizado o sinal de PWM do Arduíno junto com um circuito transistorizado.

Um motor de vibração de massa rotativa excêntrica (ERM) usa uma pequena massa desequilibrada (geralmente chamamos de peso excêntrico) em um motor DC, quando gira cria uma força centrífuga que se traduz em vibrações. (Ineedmotors, 2020).

 A Figura 11 demonstra o pequeno motor de vibração.

Figura 11 – Micromotor DC.

Fonte: Eletronicabg (2024).

Para a recepção do sinal de radiofrequência vindo do hardware principal, o módulo escolhido foi o SRX882S por ser compacto e ter um baixo consumo de corrente de trabalho (menor que 3mA).

O SRX882S é um novo módulo receptor super-heteródino de 315/433 MHz lançado pela NiceRF. Com baixo consumo de energia, ampla faixa de tensão e alta sensibilidade, pode ser usado com o módulo transmissor ASK da série STX da NiceRF. Ele atende às certificações ROHS, FCC, ETSI e CE. O módulo é fácil de usar e pode ser conectado diretamente ao microcontrolador. (NiceRF, 2025).

A Figura 12 ilustra o receptor de radiofrequência.

Figura 12 – Receptor de radiofrequência SRX882S.

Fonte: NiceRF (2025)

Para a carga e descarga da bateria do hardware auxiliar, será utilizado um módulo integrado de conversão DC-DC, que consta com o circuito integrado IP5306 como controlador principal.

IP5306 é um SoC multifuncional totalmente integrado de gerenciamento de energia, conta com um conversor Boost, um sistema de gerenciamento de carregamento de bateria Li e um sistema que indica o estado de carga da bateria. Fornece uma solução prática para Power Banks e aplicações de carregadores portáteis (Injoinic Technology, 2016).

Para Hart (2011), os conversores DC-DC são circuitos de eletrônica de potência que trabalham no modo de chaveamento e convertem uma tensão contínua para um nível DC diferente, normalmente fornecendo uma saída regulada. O Boost é um tipo de conversor chaveado que opera abrindo e fechando uma chave eletrônica periodicamente, a tensão da saída é maior do que a de entrada.

Para energizar o hardware auxiliar, será utilizada uma bateria de tamanho reduzido de 350mAh de Li-Po (polímero de lítio) em cada pulseira.

A bateria de Li-Po também usa o lítio em sua composição, no lado negativo do componente. Já a extremidade positiva é feita por diferentes compostos químicos, os polímeros. Os polímeros são um tipo de material maleável. Assim, as células energéticas de uma bateria Li-Po possuem um formato de uma bolsa, chamadas em inglês de “pouch cell”. Para completar, as células da bateria Li-Po estão envoltas num material flexível e dobrável. Com a configuração, engenheiros conseguem reduzir o peso das baterias Li-Po em pelo menos 20% (Techtudo, 2016).

A figura 13 ilustra a bateria de Li-Po que será utilizada no projeto.

Figura 13 – Bateria de Li-Po.

Fonte: Autor (2025).

Para a programação do Arduíno Pro mini diretamente pelo Raspberry, será utilizado um conversor USB para serial TTL, que permite a interface entre os dois dispositivos, uma vez que o Raspberry opera em 3.3V e o Arduíno Pro mini, devido ao seu tamanho reduzido, não possui interface USB própria embutida na placa. A Figura 14 representa a placa de conversão.

Figura 14 – Conversor USB-Serial.

Fonte: Mercado Livre (2025)

Para o correto desenvolvimento e execução do algoritmo de detecção, é preciso de uma plataforma que rode um sistema operacional como o Linux. O Raspberry Pi OS (previamente chamado de Raspbian OS) é um sistema operacional baseado em Linux para o Raspberry Pi. 

O Linux, da mesma forma que o Windows (Microsoft) e o macOS (Apple), é um sistema operacional baseado em Unix criado para desktops, mas que também é usado em servidores, smartphones, tablets e outros tipos de dispositivos, incluindo caixas bancários. Ao contrário de seus concorrentes mais famosos, o Linux não foi desenvolvido para fins comerciais e seu software e desenvolvimento são feitos em código aberto, o que significa que qualquer pessoa pode criar e distribuir aplicativos para ele. (Techtudo, 2022).

Segundo a Raspbian (2024), o Raspberry Pi OS é um sistema operacional gratuito baseado no Debian Linux, otimizado para o hardware do Raspberry Pi, e ainda provém muito mais que um sistema operacional puro: contém mais de 35.000 pacotes, softwares pré-compilados unidos em uma forma amigável de fácil instalação no Raspberry Pi.

A linguagem foi escolhida pois é a linguagem de programação nativa do Arduino IDE, e o Raspberry tem suporte à essa linguagem, facilitando a compatibilidade entre as duas partes do projeto.

O C++ é uma linguagem de programação de propósito geral, criada como uma extensão da linguagem C. Sua sintaxe permite programação de alto nível e oferece controle direto sobre o hardware. A linguagem de programação permite o controle preciso sobre recursos do sistema, permitindo otimizações de desempenho e manipulação direta de memória. (Locaweb, 2024).

Segundo o site da IBM (2024), a visão computacional é um campo de inteligência artificial que utiliza aprendizado e máquina e redes neurais para ensinar computadores e sistemas para derivar informações importantes a partir de imagens digitais, vídeos e outros tipos de entradas visuais.

“Inicialmente desenvolvido pela Intel, OpenCV é uma biblioteca gratuita para o processamento em tempo real de imagem. O software se tornou uma ferramenta padrão para estudos relacionados à visão computacional.” (Boesch, 2024).

Para o processamento inicial da imagem obtida em tempo real, após transformar a imagem para escala de cinza, é aplicado um filtro que reduz o ruído da imagem para auxiliar o funcionamento do algoritmo de detecção das faixas e de colisão frontal. A função responsável na biblioteca do OpenCV é a “cv::GaussianBlur”.

O desfoque gaussiano é usado no processamento de imagens, também conhecido como suavização gaussiana. O filtro recebeu o nome do cientista matemático Carl Friedrich Gauss. O objetivo principal do desfoque gaussiano é reduzir o ruído na imagem e os detalhes. Em termos simples, esse efeito de desfoque é adequado para ocultar áreas na imagem sem estragá-las e expor a beleza da imagem. Também é benéfico quando você está tentando imitar ou imitar uma profundidade de campo. (Mae, 2022).

A Figura 15 representa três níveis de desfoque gaussiano da mesma imagem.

Figura 15 – Desfoque Gaussiano.

Fonte: Sharda (2021).

O princípio do desfoque gaussiano é a convolução entre uma matriz kernel gaussiana com uma matriz de pixels e seus valores de iluminação ou cor, reduzindo os valores da matriz resultante, o que suaviza a imagem. A Figura 16 ilustra uma matriz kernel gaussiana, onde é convolucionada com a imagem da Figura 17.

Figura 16 – Matriz kernel gaussiana (esquerda).

Fonte: Yadav (2022)

Figura 17 – Imagem suavizada pela convolução.

Fonte: Yadav (2022).

Uma das principais etapas do processamento da imagem é a obtenção das bordas utilizando a função “cv::Canny” da biblioteca do OpenCV, que segundo Heise (2020), é um algoritmo que funciona através de histerese (possui um limite inferior e superior) para decidir o que é borda ou não, sendo mais eficiente e preciso do que outros algoritmos que apenas utilizam de variações abruptas da iluminação entre pixels da imagem. A Figura 18 demonstra as bordas de uma imagem obtida pela função Canny.

Figura 18 – Bordas de uma imagem obtida pela função Canny.

Fonte: Heise (2020).

Segundo o site do OpenCV (2025), o controle de definição das bordas por histerese possui dois valores: o máximo e o mínimo. A Figura 19 demonstra um gráfico de valores, onde o ponto A está acima do valor máximo e é considerado uma “borda plena”, o ponto C está entre os valores máximo e mínimo e é considerado uma borda pois está conectado ao ponto A. O ponto B apesar de se situar entre os valores máximo e mínimo, não é considerado uma borda pois não está conectado a nenhuma borda que seja considerada uma “borda plena”.

Figura 19 – Gráfico de Canny.

 Fonte: OpenCV (2025).

Para a etapa final do processamento de imagem, será utilizado um algoritmo que utiliza a transformada da Hough para traçar as linhas que correspondem às faixas da rodovia. No OpenCV é utilizado a função “cv::HoughLinesP”.

A transformada de Hough é um método de extração de características usado em análise de imagens. Ela pode ser usada para isolar características de qualquer curva regular, como linhas, círculos, elipses etc. Em sua forma mais simples, a transformada de Hough pode ser usada para detectar linhas retas em uma imagem. (Karri, 2019).

Segundo Karri (2019) essa transformada funciona com base na conversão de linhas no espaço da imagem (Image Space) para pontos correspondentes no espaço de Hough (Hough Space), conforme ilustrado na Figura 20. Nota-se que o gráfico da direita possui parâmetros diferentes (m e c) do da esquerda (x e y), mas representam a mesma reta.

Figura 20 – Conversão de espaços.

Fonte: Karri (2019).

Ainda segundo Karri (2019), devido a m tender ao infinito para retas verticais, usa-se as coordenadas polares para a representação da reta, conforme a Figura 21.

Figura 21 – Coordenadas polares.

Fonte: Karri (2019).

Sabendo disso, o algoritmo traçador de linhas funciona com base na transformada de Hough, pois se tivermos uma “reta” composta de muitos segmentos (faixas da rodovia). Esses segmentos, se convertidos para o espaço de Hough representariam uma tendência de interseção no mesmo ponto, a sensibilidade dessa tendência é normalmente definida pelo limiar de Hough (Hough Threshold), conforme a Figura 22. E ao obter o ponto de interseção no espaço de Hough, obtemos a reta contínua no espaço da imagem.

Figura 22 – Tendência de Interseção.

Fonte: Karri (2019).

Para a programação da lógica utilizando a linguagem C++, será utilizado a Geany IDE, que é muito otimizada para os recursos de processamento presentes do Raspberry Pi. 

Geany é um editor de código ou IDE (Ambiente de Desenvolvimento Integrado) muito leve. É muito adequado para codificação no Raspberry Pi, pois oferece muitas funcionalidades e utiliza com eficiência os recursos do computador, como CPU e, principalmente, RAM (memória do sistema). (Hicks, 2021).

Os simuladores de direção são aplicações que buscam reproduzir a dirigibilidade de um veículo em um ambiente virtual. 

Os simuladores de direção são verdadeiras ferramentas educacionais que servem para capacitar motoristas de forma virtual, possibilitando que vários cenários ocorram ao mesmo tempo, o que seria impossível na vida real. Isso quer dizer, em apenas uma simulação conseguimos inserir elementos como chuva, neblina, derramamento de óleo na pista, sonolência, entre outras experiências. Inclusive, pode-se comparar uma hora de simulação na ferramenta a várias horas de veículo na rua. (Younder, 2019).

BeamNG.drive é um jogo de simulação de direção desenvolvido e publicado pela BeamNG, empresa alemã. O simulador se destaca por possuir físicas de direção e colisão extremamente realistas, além de ter diversos modos e configurações de câmeras.

O motor de física BeamNG está no centro da simulação de veículo mais detalhada e autêntica que você já viu em um jogo. Cada componente de um veículo é simulado em tempo real usando nós (pontos de massa) e vigas (molas). Os acidentes parecem viscerais, pois o jogo usa um modelo de dano incrivelmente preciso. Ao contrário da maioria dos jogos, que usam simulação de física de “corpo rígido”, BeamNG é um simulador de física de “corpo macio”. Em resumo, isso significa que objetos físicos (como carros) são deformáveis. Isso é obtido por meio de estruturas de “nó e viga”. (BeamNG, 2025).

Neste capítulo são apresentadas as etapas de implementação, os aplicativos utilizados e suas versões e as especificações técnicas dos hardwares utilizados. De maneira geral, os procedimentos para obter o resultado da pesquisa são: o desenvolvimento das lógicas dos hardwares (principal e auxiliar), os testes realizados em um simulador de direção e os testes realizados em uma rodovia real.

Na primeira etapa, foram realizadas as pesquisas direcionadas ao funcionamento dos algoritmos de detecção de faixas de rodovia e escolhida a biblioteca de visão computacional (OpenCV). Em seguida, a biblioteca foi instalada e compilada no sistema operacional do Raspberry Pi 4B.

Na segunda etapa, foi desenvolvida a lógica de detecção das vias no hardware principal através do software Geany IDE, na linguagem de programação C++, dentro do sistema operacional do Raspberry Pi 4B.

Na terceira etapa, foi montado o ambiente de testes utilizando uma placa de captura para enviar o vídeo do simulador de direção executado em um PC Windows para o Raspberry Pi 4B. Com os testes, a lógica de detecção das vias e colisão foi aperfeiçoada.

Na quarta etapa, foi construído o hardware auxiliar (pulseiras) para receber os alertas enviados pelo algoritmo do hardware principal. A lógica foi desenvolvida utilizando a linguagem de programação C++ no Arduino Pro Mini através da Arduino IDE.

Na quinta e última etapa, foram feitos os testes de detecção e envio de alertas para as pulseiras em campo no veículo automotivo Renault Logan. Em seguida foi feita a análise dos resultados obtidos.

A lógica principal foi desenvolvida no hardware Raspberry Pi 4B, que contém as seguintes especificações técnicas:

  • Processador: Broadcom BCM2711, Quad-core Cortex-A72, 64-bit, 1.8Ghz;
  • Memória RAM: 2GB LPDDR4-3200 SDRAM;
  • Armazenamento: Cartão micro-SD Samsung 128GB.

A programação em C++ da lógica principal foi desenvolvida através do Geany Programmer IDE:

  • Programa: Geany IDE – A fast and lightweight IDE;
  • Desenvolvedor: Free Software Foundation, Inc.;
  • Versão: 1.38;
  • Compilação: 05 de dezembro de 2023.

O simulador de direção foi executado em um hardware PC-Windows com as seguintes especificações técnicas:

  • Dispositivo: Samsung Galaxy Book 3 Ultra;
  • Sistema Operacional: Windows 11 Home 64-Bit;
  • Processador: Intel® Core™ I7-13700H 2.40GHz; • Placa de vídeo: NVIDIA RTX 4050 6GB VRAM;
  • Memória RAM: 32GB DDR5.

Os detalhes do software do simulador de direção utilizado na etapa de testes são:

  • Programa: Beam.NG.drive;
  • Desenvolvedor: BeamNG;
  • Versão: 18054998.

A lógica auxiliar foi desenvolvida no hardware Arduino Pro Mini, que contém as seguintes especificações técnicas:

  • Processador: ATmega328P, 8 bit, 16Mhz;
  • Memória: 32KB (ROM), 2KB (RAM) e 1KB (EEPROM);
  • Tensão de operação: 5V DC.

A programação em C++ foi desenvolvida no Arduino Pro Mini através da Arduino IDE, que contém os seguintes detalhes:

  • Programa: Arduino IDE; • Desenvolvedor: Arduino.cc;
  • Versão: 1.8.19.

A representação do circuito esquemático foi feita através do software Fritzing, que possui as seguintes informações:

  • Programa: Fritzing Beta;
  • Desenvolvedor: Universidade Potsdam de Ciências Aplicadas;
  • Versão: 0.9.3.

Para os testes e a validação inicial do algoritmo desenvolvido, foi utilizado um ambiente com um simulador de direção rodando em um PC Windows, e a imagem em tempo real do simulador foi transmitida para o Raspberry Pi através do HDMI e uma placa da captura USB. O vídeo é obtido em 576p a 30 frames por segundo por questões de estabilidade. O esquema do ambiente está ilustrado no diagrama de blocos abaixo. A Figura 23 ilustra o fluxo da obtenção do vídeo, e a Figura 24 demonstra esse fluxo na realidade.

Fonte: Autor (2025).

Figura 24 – Imagem sendo recebida pelo Raspberry Pi (esquerda).

Fonte: Autor (2025)

A lógica principal foi executada no hardware principal, responsável por detectar as faixas da rodovia em tempo real e decidir, através do algoritmo implementado, se o motorista está permanecendo na faixa e se está a uma distância segura do veículo na sua frente.

Após obter a imagem do PC pela placa de captura, o algoritmo desenvolvido faz o processamento da imagem para a detecção das faixas. A Figura 25 ilustra cada estágio, e as etapas em ordem de execução são:

  • Escala de cinza (grayscale);
  • Desfoque Gaussiano (gaussian blur);
  • Bordas Canny (canny edges);
  • Transformada de Hough (hough transform).

Figura 25 – Etapas do processamento.

Fonte: Autor (2025).

Para o processamento, são definidos no código do programa parâmetros como o limiar de Hough (Hough threshold), o mínimo comprimento de uma linha gerada e o máxima distância entre duas linhas geradas e o valor máximo e mínimo para a detecção de bordas Canny. Todos esses parâmetros são resumidamente a sensibilidade de detecção de bordas e o ajuste das linhas que serão geradas, que devem ser definidos e testados de acordo com a situação do vídeo recebido pelo programa.

Após todos os estágios do processamento, é gerado duas máscaras de regiões de interesse (ROI – region of interest) referentes às faixas da rodovia, que são os dois retângulos (azul escuro e vermelho) presentes no preview de acordo com a Figura 26. Os retângulos podem ser ajustados em tempo real utilizando teclas específicas para o melhor funcionamento dependendo da altura do carro e do posicionamento da câmera. Importante salientar que também é aplicada uma máscara de região de interesse durante o processamento das bordas Canny. Essa região de interesse tem uma forma trapezoidal e é ajustável no programa. Essa zona é necessária para que a faixa em que o motorista se encontra seja a prioridade de detecção.

Figura 26 – Retângulos de detecção.

Fonte: Autor (2025).

A lógica de detecção de uma faixa pelo programa, utilizando a função deque para maior estabilidade, é que se pelo menos 5% de qualquer linha gerada pela transformada de hough estiver dentro de um retângulo de detecção por pelo menos 12 de 15 frames totais da função deque, é considerado uma faixa detectada. Isso é necessário para evitar variações abruptas de detecções e falsos positivos. O processo é o mesmo para as duas faixas utilizando os dois retângulos. A lógica é ilustrada na Figura 27.

Figura 27 – Lógica de detecção de faixas.

 Fonte: Autor (2025).

Antes de iniciar de fato os envios de alertas, é realizada uma calibração utilizando a também a função deque, para evitar falsos positivos ou detecções de rodovias que possuem apenas uma faixa pintada. O processo de calibração é demonstrado na Figura 28.

Figura 28 – Calibração do sistema.

Fonte: Autor (2025).

Para que não se perda a calibração imediatamente após o sistema estiver calibrado e for detectada a ausência de uma faixa, foi implementado uma lógica de frames perdidos, no qual o sistema só perde a calibração após um tempo (30 frames). Essa parte é necessária para que o programa tenha tempo de enviar o alerta antes de perder a calibração. A lógica está demonstrada na Figura 29.

Figura 29 – Lógica de frames perdidos.

Fonte: Autor (2025).

Há duas possíveis situações de saída de faixa: pela esquerda ou pela direita. O programa detecta uma saída pela esquerda se for detectada a faixa da esquerda e se não for detectada a faixa da direita, como demonstrado na Figura 30. Se for detectado essa saída, o programa envia o alerta por RF para o hardware auxiliar.

Figura 30 – Saída da faixa pela esquerda.

Fonte: Autor (2025).

Usando a mesma lógica, a saída da faixa pela direita é detectada se o programa detectar a faixa da direita e não detectar a faixa da esquerda, como mostra a Figura 31. O alerta correspondente é enviado para o hardware auxiliar.

Figura 31 – Saída da faixa pela direita.

Fonte: Autor (2025).

Os alertas são enviados para o transmissor de radiofrequência usando a biblioteca RCSwitch, o diagrama de conexão está ilustrado na Figura 32.

Figura 32 – Transmissor de radiofrequência conectado ao Pi.

Fonte: Autor (2025).

O alerta de colisão frontal funciona com base nas bordas Canny, não dependendo da transformada de Hough ou da calibração do sistema. A lógica de uma detecção de possível colisão é acionada se 1300 ou mais pixels estiverem presentes na região de interesse de colisão. A região de interesse está destacada na Figura 33 (retângulo central azul claro). E a Figura 34 ilustra como é visto um veículo na frente na etapa de bordas Canny.

Figura 33 – Região de interesse de colisão.

Fonte: Autor (2025).

Figura 34 – Possível colisão detectada.

Fonte: Autor (2025).

As limitações conhecidas do sistema são a baixa luminosidade do ambiente (noite com farol baixo ou apagado), faixas mal pintadas, pistas muito molhadas e trepidação excessiva do veículo.

Há 3 possíveis cenários de ativação do motor de vibração da pulseira:

  1. Colisão detectada: vibra ambas as pulseiras;
  2. Saída pela direita da faixa: vibra somente a pulseira esquerda;
  3. 3. Saída pela esquerda da faixa: vibra somente a pulseira direita.

Importante salientar que o módulo de carga utilizado possui um desligamento automático se for detectada uma corrente de consumo menor que 45mA por 32 segundos (load removal detect timer). Como o consumo médio da pulseira é menor que esse valor, foi necessário aplicar pulsos periódicos utilizando uma saída digital do Arduino no pino KEY do módulo de carga para manter sua saída ativada. A Figura 35 demonstra a lógica do programa executado no hardware da pulseira.

Figura 35 – Lógica do programa da pulseira.

Fonte: Autor (2025).

Inicialmente, o circuito foi montado em uma protoboard comum. No software Fritzing foi realizado a ilustração da montagem do circuito, conforme a Figura 36. Nem todos os componentes estavam presentes na biblioteca do software, mas foram escolhidos equivalentes a nível de demonstração apenas.

Figura 36 – Circuito na protoboard do Fritzing.

 Fonte: Autor (2025).

No mesmo software, também foi gerado o circuito esquemático da pulseira, conforme ilustra a Figura 37. Para o controle do motor, foi utilizado o sinal PWM do pino digital do Arduino em um circuito chaveado com um transistor 2N2222 e um diodo de roda livre 1N4007 (flyback) para evitar danos ao circuito causados por picos de tensão do motor de vibração.

O circuito posteriormente foi montado fora da protoboard e anexado à pulseira de silicone, conforme a Figura 38. Não se fez necessário utilizar a antena helicoidal no receptor de radiofrequência da pulseira devido à distância entre o transmissor ser pequena, reduzindo ainda mais o tamanho dela.

Figura 37 – Esquemático no Fritzing.

Fonte: Autor (2025).

Figura 38 – Protótipo da pulseira.

Fonte: Autor (2025).

Com o motor de vibração ativado (cenário de maior consumo da bateria) e o módulo de carga sem a bateria conectada nos seus terminais, utilizando um multímetro USB observou-se um consumo de potência 0,24W como demonstra a Figura 39.

Figura 39 – Potência do circuito da pulseira.

Fonte: Autor (2025).

De acordo com Injoinic Technology (2016) e o datasheet do módulo de carga,seu conversor boost possui uma eficiência de 92% (0,92). Considerando essa eficiência junto com a capacidade nominal presente na serigrafia da bateria de LiPo (1,29Wh), podemos calcular a capacidade final da bateria no circuito, como demonstra a Equação (1).

Cf = capacidade final;

Eb = eficiência do boost;

Cn = capacidade nominal.

Aplicando os valores, de acordo com a Equação (2) obtemos um valor de capacidade final de 1,18Wh.

Agora com a capacidade final e a potência do circuito, podemos calcular a duração da bateria no pior caso de uso (motor acionado 100% do tempo), como demonstra a Equação (3).     

Td = tempo de duração da bateria (horas);

Cf = capacidade final;

Pp = potência do circuito da pulseira.

Aplicando os valores e de acordo com a Equação (4), obtemos um total de 4.91h, ou aproximadamente 4 horas e 54 minutos de autonomia.

O valor total do custo do projeto atualmente é de R$ 978,50. A plataforma de vendas Aliexpress não envia mais baterias para o Brasil por questões de segurança, por esse motivo foi adicionado os valores da bateria pela plataforma de vendas Mercado Livre, aumentando ligeiramente o custo total.

Tabela 1 – Custo dos componentes do projeto.

 Fonte:  Autor (2025).

Nos testes do projeto na rodovia em um carro real, o hardware principal foi anexado na região central do para-brisas do veículo, e a câmera fixada no para-brisas em si, com o sensor apontado para a frente do carro. A Figura 40 ilustra o hardware principal e a Figura 41 o hardware auxiliar nos pulsos do motorista.

Figura 40 – Hardware principal no para-brisas.

Fonte: Autor (2025).

Figura 41 – Hardware auxiliar no motorista.

Fonte: Autor (2025).

Nos testes na rodovia, os parâmetros do programa como os valores máximos e mínimos de Canny e a região de interesse trapezoidal tiveram que ser ajustados para o melhor reconhecimento das faixas. A posição da câmera deve ser bem fixa devido às trepidações causadas pela condução do veículo. A Figura 42 demonstra o reconhecimento das faixas em andamento e a Figura 43 demonstra o alerta de colisão frontal em funcionamento.

Figura 42 – Reconhecimento das faixas em funcionamento.

Fonte: Autor (2025).

Figura 43 – Alerta de colisão frontal em funcionamento.

Fonte: Autor (2025).

Durante o desenvolvimento dessa Pesquisa, foram realizados estudos sobre os índice de acidentes causados por desatenção e em quais regiões esses acidentes mais ocorrem, que no caso são países menos desenvolvidos. Além disso, pesquisas sobre os assistentes de direção ao motorista (ADAS) foram realizadas, a fim de entender como o seu uso pode reduzir os acidentes veiculares. A acessibilidade a esse tipo de tecnologia ainda é limitada, pois está disponível apenas em carros modernos de alto custo.

A implementação do projeto em um sistema de simulação virtual na etapa de testes foi crucial para o desenvolvimento e aprimoramento do algoritmo de reconhecimento de faixas, pois no simulador de direção é possível alterar várias condições tais como iluminação, distância das faixas, velocidade do veículo e dentre outros. A partir desse refinamento do código foi possível testar o projeto em um carro real.

Nos testes realizados em rodovias, notou-se uma grande sensibilidade da câmera com as vibrações causadas pelo deslocamento do veículo. Fixar bem o sensor de imagem e em um ângulo certo é de suma importância para o bom funcionamento do algoritmo. O aviso de colisão frontal funciona na maior parte do tempo pois não depende das faixas da rodovia devidamente pintadas.

Por fim, com base nos resultados obtidos conclui-se que é possível implementar um assistente de direção ao motorista de baixo custo utilizando visão computacional e avisos táteis por comunicação sem fio, a fim de reduzir o número de acidentes causados por desatenção durante a condução do veículo.

Para trabalhos futuros é sugerido implementar um modo de calibração dos parâmetros do programa mais intuitivo, a fim de expandir a acessibilidade do projeto para veículos com diferentes características. Outra sugestão é utilizar uma câmera que conte com uma estabilização ótica de imagem (OIS) para lidar melhor com a vibração.

AZEVEDO, Lívia. Reação Tardia ou Ineficiente do Condutor é a Principal Causa de Acidentes em 2023. 2024. Disponível em: <https://brasil61.com/n/reacao-tardia-ouineficiente-do-condutor-e-a-principal-causa-de-acidentes-em-2023-bras2410596>. Acesso em 26 de maio de 2024.

AUTOS SEGREDOS. Os Carros mais Baratos com Assistente de Condução. 2023. Disponível em: <https://www.autossegredos.com.br/materias-especiais-3/os-carros-maisbaratos-com-assistente-de-conducao/>. Acesso em 26 de maio de 2024.

BEAMNG. Soft-body physics. 2025. Disponível em: <https://www.beamng.com/game/about/physics/>. Acesso em 06 de abril de 2025.

BYTEFLOP. Arduino Pro Mini – ATMega328P. 2024. Disponível em:<https://www.byteflop.com.br/arduino-pro-mini-atmega328p>. Acesso em 16 de junho de 2024.

BORINI, Gerson. O Futuro das Tecnologias. 2019. Disponível em:<https://autoentusiastas.com.br/2019/05/o-futuro-das-tecnologias/>. Acesso em 2 de junho de 2024.

BOESCH, Gaudenz. What is OpenCV? The Complete Guide (2024). 2024. Disponível em: < https://viso.ai/computer-vision/opencv/>. Acesso em 16 de junho de 2024.

CABRAL, Júlio.  O que é ADAS e como Funcionam as Tecnologias que Evitam Acidentes. 2024. Disponível em: <https://quatrorodas.abril.com.br/noticias/o-que-e-adas-e-como-atecnologia-poupa-voce-de-acidentes#google_vignette>. Acesso em 2 de junho de 2024.

ELETRONICABG. Micro Motor Vibracall Arduíno Robótica 1.2V 5V Kit com 2. 2024. Disponível em: <https://www.eletronicabg.com.br/MLB-3334877239-micro-motor-vibracallarduino-robotica-12v-5v-kit-com-2-_JM>. Acesso em 16 de junho de 2024.

HART, Daniel W. Power Electronics. 1. ed. McGraw-Hill Companies: Estados Unidos, 2011. 476 p.

HEISE, Luísa. Detecção de Bordas e Transformações Morfológicas em Imagens com OpenCV. 2020. Disponível em: <https://medium.com/turing-talks/detec%C3%A7%C3%A3ode-bordas-e-transforma%C3%A7%C3%B5es-morfol%C3%B3gicas-em-imagens-comopencv-8aecf8c8ba2f>. Acesso em 16 de maio de 2025.

HICKS, Seann. Geany on Raspberry Pi. 2021. Disponível em: < https://tangenttechnologies.ca/blog/geany-raspberry-pi/>. Acesso em 27 de abril de 2025.

IBM.  What is Computer Vision? 2024. Disponível em: <https://www.ibm.com/topics/computer-vision>. Acesso em 16 de junho de 2024.

INEEDMOTORS. O que é o Motor de Vibração do Telefone Móvel. 2020.     Disponível em: <https://pt.ineed-motors.com/news/what-s-mobile-phone-vibration-motor-35657683.html>. Acesso em 14 de junho de 2024.

INJOINIC TECHNOLOGY. Fully-Integrated Power Bank System-On-Chip with 2.1A Charger and 2.4A Discharger. China: Injoinic Technology, 2016. Disponível em: <http://www.injoinic.com/wwwroot/uploads/files/20200221/0405f23c247a34d3990ae100c8b 20a27.pdf>. Acesso em 15 de junho de 2024.

KARRI, Surya Teja. Hough Transform. 2019. Disponível em:<https://medium.com/@st1739/hough-transform-287b2dac0c70>. Acesso em 16 de maio de 2025.

LOCAWEB. C++: Guia sobre a Linguagem de Programação. 2024. Disponível em: < https://www.locaweb.com.br/blog/temas/codigo-aberto/c-plus-plus/>. Acesso em 16 de junho de 2024.

MAE, Ashley. O que é desfoque gaussiano em um processamento de imagem e como usálo. 2022. Disponível em: < https://www.aiseesoft.com.br/resource/gaussian-blur.html>. Acesso em 04 de maio de 2025.

MELLO, Marcio. O que é Raspberry Pi, para que Serve e Principais Modelos no Brasil. 2022. Disponível em: <https://victorvision.com.br/blog/o-que-e-raspberry-pi>. Acesso em 14 de junho de 2024.

MERCADO LIVRE. Conversor Usb Serial Rs232 Ftdi Ft232rl Ttl 5v 3v3 Arduino. 2025. Disponível em: < https://produto.mercadolivre.com.br/MLB-1461167006-conversor-usbserial-rs232-ftdi-ft232rl-ttl-5v-3v3-arduino-_JM>. Acesso em 05 de abril de 2025.

NiceRF. STX882: Low Cost & High power: 315/433MHz ASK Transmitter Module. 2025. Disponível em: <https://www.nicerf.com/ask-modules/433mhz-ask-transmitter-modulestx882.html>. Acesso em 16 de maio de 2025.

NiceRF. SRX882S: 315/433MHz Micropower Superheterodyne Receiver Module. 2025. Disponível    em:      <https://www.nicerf.com/ask-modules/superheterodyne-receiversrx882s.html>. Acesso em 16 de maio de 2025.

OPENCV. Canny Edge Detection. 2025. Disponível em: < https://docs.opencv.org/3.4/d7/de1/tutorial_js_canny.html>. Acesso em 04 de maio de 2025.

PORTAL ONSV. 90% dos Acidentes são Causados por Falhas Humanas, Alerta OBSERVATÓRIO. 2015. Disponível em:<https://www.onsv.org.br/comunicacao/materias/90-dos-acidentes-sao-causados-por-falhashumanas-alerta-observatorio>. Acesso em 26 de maio de 2024.

PEUGEOT. Monte seu Peugeot 208. 2024. Disponível em:<https://www.peugeot.com.br/gama/peugeot-208/monte.html >. Acesso em 2 de junho de 2024.

RASPBERRY. Raspberry Pi 4 Tech Specs. 2024. Disponível em:<https://www.raspberrypi.com/products/raspberry-pi-4-model-b/specifications/>, Acesso em 14 de junho de 2024.

RASPBIAN. Welcome to Raspbian. 2024. Disponível em: <https://www.raspbian.org/>. Acesso em 16 de junho de 2024.

ROBOCORE.  Câmera para Raspberry Pi Rev 1.3. 2024. Disponível em:<https://www.robocore.net/acessorios-raspberry-pi/camera-para-raspberry-pi-rev-1-3>. Acesso em 16 de junho de 2024.

SHARDA, Aryaman. Image Filters: Gaussian Blur. 2021. Disponível em: < https://aryamansharda.medium.com/image-filters-gaussian-blur-eb36db6781b1>. Acesso em 04 de maio de 2025.

TECHTUDO. O que é Linux? Tudo o que você Precisa Saber sobre o Sistema Operacional. 2022. Disponível em: <https://www.techtudo.com.br/listas/2022/10/o-que-e-linux-tudo-o-quevoce-precisa-saber-sobre-o-sistema-operacional.ghtml>. Acesso em 16 de junho de 2024.

TECHTUDO. Li-Ion vs Li-Po: conheça as diferenças dos tipos de bateria de celular. 2016. Disponível em: <https://www.techtudo.com.br/noticias/2016/08/li-ion-ou-li-poconheca-diferencas-dos-tipos-de-bateria-de-celular.ghtml>. Acesso em 16 de junho de 2024.

WORLD HEALTH ORGANIZATION – WHO. Global Status Report on Road Safety 2023. 2023. Disponível em: <https://iris.who.int/bitstream/handle/10665/375016/9789240086517eng.pdf?sequence=1>. Acesso em 2 de junho de 2024.

YADAV, Harsh. Computer Vision: Convolution Basics. 2022. Disponível em: <https://medium.com/data-science/computer-vision-convolution-basics-2d0ae3b79346>. Acesso em 04 de maio de 2025.

YOUNDER. Simulador de direção: entenda qual a sua diferença para o videogame. 2019. Disponível em: <https://younder.com.br/blog/simulador-de-direcao-entenda-qual-a-suadiferenca-para-o-videogame/>. Acesso em 06 de abril de 2025.