Índice:

Painel de controle da motocicleta Raspberry Pi: 9 etapas (com imagens)
Painel de controle da motocicleta Raspberry Pi: 9 etapas (com imagens)
Anonim
Raspberry Pi Motorcycle Dashboard
Raspberry Pi Motorcycle Dashboard

Como estudante de tecnologia de multimídia e comunicação em Howest Kortrijk, tive que fazer meu próprio projeto de IoT. Isso combinaria todos os módulos seguidos no primeiro ano em um grande projeto. Como eu dirijo muito minha motocicleta no meu tempo livre, decidi usar minhas habilidades adquiridas no MCT para construir algo para minha motocicleta: Um painel inteligente.

O MotoDash é um painel movido a Raspberry Pi projetado para motociclistas fanáticos que dá ao piloto a capacidade de monitorar seu desempenho.

Quais são os recursos deste painel?

  • Visualizando o ângulo de inclinação atual
  • Visualizando a aceleração atual
  • Capacidade de monitorar a temperatura do óleo
  • Mudar automaticamente para o tema escuro ao andar no escuro
  • Registre dados de suas viagens e veja suas próprias estatísticas

Suprimentos

Unidade de computação principal:

Raspberry Pi Este é o principal controlador do sistema

Eletrônicos:

  • Carregador USB para motocicleta 12V-5 VMain fonte de alimentação para RPi
  • Relé com fusível de 4 pinos 12VSwitch para ligar / desligar o circuito de alimentação do RPi
  • Placa de ensaio com fios de jumper (opcional) Para teste e prototipagem
  • Um conjunto de resistores

    Diferentes cores de fio de 0,2 mm

  • Breakout Pi plusEsta é uma placa de prototipagem onde você pode soldar todos os seus componentes. Ele é feito para caber diretamente em cima do Raspberry Pi, para que as dimensões do projeto sejam mínimas.

Sensores e módulos:

  • Sensor de temperatura à prova d'água DS18B20 de 1 fio Sensor de temperatura do óleo
  • Giroscelerômetro de 3 eixos MPU6050Tilt / sensor de aceleração
  • Resistência dependente de luz (LDR)
  • MCP3008 - ADC de 8 canais e 10 bits com interface SPI

    Tela TFT SPI (ou qualquer outra tela lcd que atenda às suas necessidades)

    LED RGB

Carcaça:

  • Caixa de plástico
  • Estojo framboesa pi

Ferramentas:

  • Ferro de solda e solda
  • Parafusos e espaçadores de 2,5 mm
  • Conectores de cabo à prova d'água
  • Supercola

Etapa 1: Prototipagem

Prototipagem
Prototipagem
Prototipagem
Prototipagem

Antes de tornar tudo permanente, montaremos o projeto em uma placa de ensaio. Esta etapa pode ser ignorada se você tiver certeza absoluta de que não cometerá erros. O esquema elétrico / placa de ensaio pode ser encontrado no PDF abaixo. Monte o circuito exatamente como descrito. Certifique-se de usar apenas o pino de 3,3 V e não o pino de 5 V no RPi. Além disso, antes de ligar o Raspberry Pi, verifique o circuito. Certifique-se de que não há shorts!

Etapa 2: Preparando o Raspberry Pi

Preparando o Raspberry Pi
Preparando o Raspberry Pi

Em primeiro lugar, vamos configurar o Raspberry Pi. O Raspberry Pi é um mini computador capaz de rodar seu próprio sistema operacional. Para este projeto, é responsável por processar sensordata, hospedar o site, executar o backend e banco de dados,…

1. Instale a imagem Raspbian personalizada

A imagem fornecida já contém os pacotes de software necessários para iniciar este projeto:

  • Apache para o frontend do site
  • MariaDB para o banco de dados
  • PhpMyAdmin para manipular o banco de dados
  • Permissões personalizadas para evitar problemas

A imagem personalizada pode ser baixada aqui.

Um tutorial para instalar imagens pode ser encontrado aqui:

Assim que a imagem estiver instalada, conecte o Raspberry Pi ao seu PC com um cabo Ethernet. Agora você pode usar um cliente SSH para se conectar a ele no endereço IP 169.254.10.1

É uma boa prática definir imediatamente uma nova senha usando o comando passwd

2. Configurando AP sem fio

Quando o projeto estiver finalizado, queremos ser capazes de nos conectar ao RPi via wi-fi, então vamos transformá-lo em um AP sem fio. Um tutorial para isso pode ser encontrado aqui.

Você só precisa seguir este tutorial até a etapa 7. A etapa 8 não é necessária, pois não precisamos fazer a ponte de uma conexão de Internet, mas criar uma rede autônoma.

3. Habilitando interfaces

Acesse raspi-config

sudo raspi-config

Vá para as opções de interface e habilite 1 fio, SPI e I2C e reinicie o Pi

3. Configurando drivers para o monitor

Inicializando o display

Edite o arquivo / etc / modules

sudo nano / etc / modules

Adicione as 2 linhas a seguir

spi-bcm2835fbtft_device

Agora edite /etc/modprobe.d/fbtft.conf

sudo nano /etc/modprobe.d/fbtft.conf

Adicione a seguinte linha

opções fbtft_device name = tm022hdh26 gpios = reset: 25, dc: 24, led: 18 rotate = 90 speed = 80000000 fps = 60

Reinicie o Pi. Se você vir a luz de fundo da tela acender, tudo correu bem. Isso inicializará a tela toda vez que o Pi for inicializado, no entanto, ele apenas exibirá uma tela preta agora. Para obter o conteúdo do Pi no visor, precisamos copiar o conteúdo da tela principal para o pequeno LCD. Usaremos um serviço chamado 'fbcp' para isso.

Instalando o serviço fbcp

sudo apt-get install cmake

git clone

cd rpi-fbcp

construção mkdir

construção de cd /

cmake..

faço

sudo install fbcp / usr / local / bin / fbcp

Agora instalamos o serviço. No entanto, como estamos usando o Pi sem cabeça, não há tela disponível para copiar o conteúdo. Para forçar o Pi a produzir o conteúdo da tela, edite /boot/config.txt

sudo nano /boot/config.txt

Encontre e descomente ou adicione as seguintes linhas a este arquivo:

hdmi_force_hotplug = 1

hdmi_cvt = 640 480 60 0 0 0 0

display_rotate = 0

hdmi_group = 2

hdmi_mode = 87

Reinicialize o RPi e teste o serviço fbcp digitando fbcp no console. Agora você deve ver o conteúdo da tela no LCD.

Executando fbcp na inicialização

Edite /etc/rc.local e adicione a seguinte linha entre o endereço IP e a linha de saída

fbcp &

Agora, o visor deve ligar cada vez que o RPi inicializa

Etapa 3: Banco de dados

Base de dados
Base de dados

Para registrar e armazenar sensordata, projetei meu próprio banco de dados, que contém 4 tabelas. O diagrama EER é mostrado na imagem acima.

1. Dispositivos

Esta tabela contém todos os sensores. Ele descreve o nome do sensor, descrição e unidade de medição. Esta tabela tem uma relação um-para-muitos com as ações da tabela, pois no meu caso, o sensor do acelerador pode realizar diferentes tarefas.

2. Ações

Esta tabela armazena ações para diferentes sensores. Uma ação está sempre ligada a um sensor específico. Por exemplo: a ação 'TEMP' está vinculada ao dispositivo que mede a temperatura. Este seria o sensor de temperatura de 1 fio.

3. História

Esta tabela contém todos os registros do sensor. Cada registro tem um id de ação, um valor, um timestamp e um rideid

4. Passeios

Esta tabela armazena diferentes passeios. Cada vez que o usuário inicia um novo passeio, uma nova entrada nesta tabela é feita

Para obter esse banco de dados em seu Raspberry Pi, vá até meu GitHub e clone / baixe o repositório. No banco de dados, você encontrará 2 arquivos.sql. Execute-os no ambiente de trabalho PhpMyAdmin ou MySQL. Agora o banco de dados deve estar em seu RPi.

Etapa 4: Backend

Se ainda não o fez, vá para o meu GitHub e clone / baixe o repositório. Na pasta Backend você encontrará o backend completo do projeto.

A pasta contém classes para leitura de sensores em / helpers, arquivos para se comunicar com o banco de dados em / repositories e o aplicativo principal está localizado na raiz com o nome app.py.

Instalação de pacotes Python

Antes de tentarmos executar qualquer coisa, primeiro precisamos instalar alguns pacotes para python. Vá para o terminal do seu RPi e digite os seguintes comandos:

pip3 instalar mysql-connector-python

pip3 instalar flask-socketio

pip3 instalar flask-cors

pip3 instalar gevent

pip3 install gevent-websocket

NOTA IMPORTANTE: se você alterou sua senha Mariadb / Mysql, altere a senha em config.py!

Teste o back-end

Execute app.py usando o interpretador python3 (/ usr / bin / python3). Certifique-se de que não haja erros.

Executando o back-end na inicialização

Edite motoDash_backend.service e altere YOURFILEPATH para o caminho onde o repositório está salvo.

Agora copie este arquivo para / etc / systemd / system /

sudo cp motoDash_backend.service /etc/systemd/system/motoDash_backend.service.

Agora, o back-end será iniciado automaticamente sempre que o RPi for inicializado.

Etapa 5: Frontend

A parte dianteira
A parte dianteira
A parte dianteira
A parte dianteira

Acesse o repositório GitHub. Copie o conteúdo do diretório Frontend em / var / www / html.

Isso é tudo que você deve fazer para que o front-end funcione. Esta pasta contém todas as páginas da web, estilos e scripts para a interface da web. Ele também se comunica com o back-end. Para testar se tudo funciona como deveria, certifique-se de estar conectado ao seu RPi e digite o endereço IP do RPi em um navegador. Você deverá ver a página inicial da interface da web.

Observação: o site é responsivo, então você pode usá-lo tanto no celular quanto no desktop

Etapa 6: Exibir o painel na tela

Exibindo o painel na tela
Exibindo o painel na tela

O frontend tem sua própria página da web oculta, usada apenas para a tela pequena. Faremos o Pi inicializar automaticamente neste site em modo de tela inteira.

Certifique-se de que o RPi está configurado para logon automático no desktop em raspi-config nas opções de inicialização

sudo raspi-config

Agora vá para a pasta de configuração oculta e crie um novo arquivo lá

cd.config

sudo mkdir -p lxsession / LXDE-pi

sudo nano lxsession / LXDE-pi / autostart

Adicione as seguintes linhas neste arquivo e salve

@xscreensaver -no-splash

@xset está desligado

@xset -dpms

@xset s noblank

@ chromium-browser --noerrors --disable-session-crashed-bubble --disable-infobars --kiosk --incognito

Agora, o Pi deve inicializar nesta página da Web todas as vezes

Etapa 7: soldando os eletrônicos

Soldando a Eletrônica
Soldando a Eletrônica
Soldando a Eletrônica
Soldando a Eletrônica
Soldando a Eletrônica
Soldando a Eletrônica
Soldando a Eletrônica
Soldando a Eletrônica

Pegue a placa de expansão e faça o layout de seus componentes de maneira estruturada. Não vou discutir o layout de como soldou os componentes nele, pois fiz um trabalho muito ruim. Usei cabeçalhos de pinos separados na placa, de modo que só precisei conectar os sensores e módulos ao pino certo. Certifique-se de saber qual pino é para quê!

Algumas dicas durante a soldagem:

  • Use fios isolados ao cruzar distâncias maiores. A última coisa que você quer são curtos em seu circuito
  • Após soldar um componente ou fio, verifique sua continuidade com um multímetro. Verifique também se há curtos-circuitos regularmente.
  • Não use solda demais ou de menos!
  • Se você não sabe como soldar, pratique primeiro em outra placa de prototipagem. Um tutorial sobre soldagem pode ser encontrado aqui.

Agora solde os fios longos o suficiente para os sensores e coloque um filme retrátil ao redor deles para garantir que tudo não esteja em curto e limpo.

Quando terminar, verifique se há curtos ou conexões ruins e verifique se todas as conexões com o esquema elétrico estão corretas. Depois de ter certeza de que tudo está feito corretamente, vá em frente e coloque a placa de breakout no RPi, aparafuse bem com alguns parafusos de 2,5 mm e espaçadores. Prenda os sensores nos pinos corretos e teste todos usando o site.

Etapa 8: Fonte de alimentação

Para alimentar o Raspberry Pi, usaremos um adaptador USB 12V-5V. Este adaptador será conectado à bateria da motocicleta. Para garantir que o RPi seja ligado quando a chave de ignição for ligada, usaremos um relé. O relé fechará o circuito de alimentação RPi quando detectar uma tensão da luz traseira (a luz traseira sempre acende ao ligar a ignição).

Para um tutorial mais detalhado sobre isso, confira esta página: https://www.hondagrom.net/threads/2017-gromsf-msx125sf-wire-up-auxiliary-power-for-pcv-wb2-and-other-fuel -controladores.16921 /

Etapa 9: Alojamento

Habitação
Habitação
Habitação
Habitação
Habitação
Habitação

Caixa de exibição

Para a tela, pegue uma caixa de plástico rígido do tamanho da tela. Faça um orifício quadrado tão grande quanto a tela e os orifícios correspondentes para aparafusar a tela. Na frente, você precisa fazer mais 2 orifícios para o LED RGB e o LDR.

Montei esta caixa em cima de um suporte de smartphone usando um parafuso.

Sensor de temperatura

Para abrigar o sensor de temperatura, imprimi em 3D um medidor de óleo que cabe na minha motocicleta.

Raspberry Pi

Monte o Raspberry Pi em um lugar seguro dentro da motocicleta, coloquei sob um dos para-lamas usando algumas tiras de velcro. E protegeu-o das intempéries usando uma caixa e um pouco de plástico.

Acelerômetro

Monte o acelerômetro em local seguro, de preferência no próprio quadro da motocicleta.

Observação:

Você não precisa ter exatamente a mesma carcaça que eu tinha, você é livre para terminá-la como quiser. Apenas certifique-se de que os componentes eletrônicos estejam protegidos da chuva e da poeira.

Recomendado: