README ¶
UnBrake
UnBrake
Sobre o projeto
UnBrake é um software que controla de forma remota a configuração, calibração e visualização de ensaios de aceleração e frenagem. O controle do hardware é realizado através de um firmware, desenvolvido pelo ex-aluno João Guimarães, que foi gravado em um arduíno Leornardo para controlar o simulador de frenagem. O UnBrake será utilizado por alunos e professores do curso de Engenharia Automotiva da UnB - Campus Gama.
O software é dividido em três partes, parte local, API e frontend.
A parte local foi realizada utilizando Golang. E é responsável por receber as configurações do ensaio, coletar os dados produzidos pelos sensores do simulador e por fornecê-los em stream para o frontend.
A API foi feita utilizando Django, ela recebe os arquivos de configuração, os relaciona com os ensaios, armazena e realiza a autenticação dos usuários.
O frontend, que foi gerado utilizando React JS, permite que o usuário configure e calibre o ensaio.
Utilizando a aplicação
Execute o binário (checar releases) e acesse a interface da aplicação em https://unbrake.ml ou algum servidor local.
Se o binário estiver em execução, será adicionado um ícone na área de notificações do seu sistema operacional, pelo qual é possível interagir com a aplicação.
- A aplicação não deve ser executada como root (administrador)!
Problemas com a execução? Consulte o troubleshooting
Interagindo com o módulo local
A aplicação irá iniciar e ficará esperando pela seleção de porta por parte
do usuário. No Windows serão listadas todas as portas seriais e no linux
apenas as que baterem com o seguinte padrão /dev/ttyACM*
(é o padrão de nome
dado pelo Linux ao arduíno leonardo).
Se desejar utilizar uma porta não listada, você pode fazer isso via configuração
Configuração do módulo local
As configurações podem ser feitas via arquivo de configuração e/ou variáveis de ambiente.
O arquivo de configuração deve ser criado com o nome config.json
em ~/UnBrake
no Linux e em %APPDATA%/UnBrake
no Windows.
Exemplo de arquivo de configuração:
{
"serialPort": "/dev/ttyACM0",
"mqttHost": "unbrake.ml",
"mqttPort": "8080",
"mqttKey": "minhachavecompermissãodeescrita",
"mqttChannelPrefix": "unbrake/galpao"
}
- serialPort: nome/caminho da porta serial em que a placa está conectada.
Ex:
/dev/ttyACM0
,COM1
. - mqttHost: host do MQTT broker que será utilizado na comunicação
- mqttPort: porta na qual o MQTT broker está escutando
- mqttKey: chave do MQTT broker (emitter-io utilizado)
- mqttChannelPrefix: todos os canais do MQTT terão esse prefixo. Útil para lidar com vários dispositivos em paralelo.
Todos esses parâmetros também podem ser configurados através de variáveis
de ambiente apenas fazendo a alteração do nome do parâmetro de camelcase
para snake case e em caixa alta. Ex: serialPort
se torna SERIAL_PORT
.
As variáveis de ambiente tem precedência sobre o arquivo de configuração. Caso a variável de ambiente não seja setada e nem haja arquivo de configuração, serão usadas valores default onde possível.
Todos esses parâmetros também podem ser configurados através de variáveis
de ambiente apenas fazendo a alteração do nome do parâmetro de camelcase
para snake case e em caixa alta. Ex: serialPort
se torna SERIAL_PORT
.
As variáveis de ambiente tem precedência sobre o arquivo de configuração. Caso a variável de ambiente não seja setada e nem haja arquivo de configuração, serão usadas valores default onde possível.
Logs
Todo o funcionamento da aplicação é registrado em arquivos de log.
No Linux eles são atualmente gravados em ~/UnBrake/logs
,
já no Windows em %APPDATA%/UnBrake/logs
Troubleshooting
Problemas com a parte local
Antes de analisar as seguintes opções cheque o log para ter mais informações.
Não tenho permissão nem de executar o binário
Solução (Linux): Provavelmente o binário está sem permissão de execução. Comando:
chmod +x unbrake
Arquivo de log não aparece no lugar especificado
Solução (Linux): Executar sem sudo
Log informa que tentou abrir arquivo que não foi encontrado
Solução (Linux):
Você especificou o arquivo certo que referencia a placa? Ex: /dev/ttyACM0
Log informa que não tenho permissões para abrir um arquivo
Solução (Linux):
- Verifique a qual grupo o arquivo que representa sua placa pertence
$ ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 188, 0 5 apr 23.01 ttyACM0 # Saída
Nesse exemplo o arquivo pertence ao grupo dialout
(No meu ambiente é uucp
ao invés dialout
)
- Adicione seu usuário ao grupo encontrado
# Trocar 'dialout' pelo grupo encontrado no comando anterior!
sudo usermod -a $USER -G dialout
- Faça logout e login novamente no seu usuário para as alterações funionarem!!! (reiniciar também funciona)
OBS: Esses passos não precisam ser executados sempre, apenas uma vez
Mais detalhes podem ser encontrados aqui
Como contribuir
Contribuições ao nosso projeto são muito bem vindas! Cheque nosso guia de contribuição para mais informações.
Licença
O UnBrake é distribuído sob a licença MIT disponível aqui.
Logo criada por Freepik.
Directories ¶
Path | Synopsis |
---|---|
Generates a self contained binary application which reads data from a serial connection (was developed thinking on arduíno via USB) and send it through network.
|
Generates a self contained binary application which reads data from a serial connection (was developed thinking on arduíno via USB) and send it through network. |