Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Fazendo um telêmetro a laser barato para Arduino

Componentes e suprimentos

Arduino Nano R3
× 1
Elecrow OLED 0,96 '' 128x64
× 1
Fita métrica laser X-40
× 1
Módulo LM2596 DC-DC
× 1

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)
Programador ST-LINK

Aplicativos e serviços online

STMicroelectronics ST-LINK Utility

Sobre este projeto


Precisa de um módulo telêmetro a laser rápido e barato para seu projeto Arduino?

Claro, você pode usar módulos especializados para essa tarefa, mas a maioria deles tem um preço alto. Os módulos VL53L0X / VL53L1X são baratos, mas têm um campo de visão muito grande.

Então eu encontrei uma solução:usar uma fita métrica a laser "X-40" barata como um telêmetro a laser. Esses dispositivos custam US $ 20 ou menos e podem medir distâncias de até 40m com precisão de aproximadamente 3 mm. Mas há dois problemas - não há como obter leituras da fita e as medições são lentas - menos de 1 Hz.

Para resolver esses problemas, fiz engenharia reversa daquela fita métrica a laser e escrevi meu próprio firmware para o STM32 MCU do módulo telêmetro a laser. A velocidade de medição foi importante para mim e posso chegar a ~ 60 Hz, mas a distância máxima estável diminuiu para ~ 6 m (o alcance máximo total é de 37 m, mas não testei).

A precisão da medição da distância pode variar de 1 mm a 10 mm, dependendo da cor do alvo e da distância.

Dimensões do módulo:25x13x50 mm.

AVISO IMPORTANTE:VOCÊ PERDERÁ O FIRMWARE ORIGINAL, PORTANTO O DISPOSITIVO NÃO PODE SER USADO COMO MEDIDA DE FITA LASER MAIS TARDE!

Observe que as fitas métricas a laser "X-40" podem ter diferentes revisões do módulo telêmetro a laser, e meu firmware suporta apenas algumas delas!

"X-40" não é o único nome para fitas métricas a laser com esses módulos - eu sei que existem várias fitas métricas a laser chinesas com módulos adequados.





Etapa 1:desmontagem da fita métrica a laser


Vamos desmontar a fita métrica a laser para obter um módulo de telêmetro a laser.

Você precisa desapertar 7 parafusos da caixa:

Fita métrica a laser desmontada:

Você pode ver um pequeno módulo telêmetro a laser dentro da caixa do dispositivo. Você precisa desconectar os cabos de fita do módulo e remover o módulo da caixa:

Observe que o módulo está marcado como "701A". Meu firmware suporta apenas versões de módulo "512A" e "701A". Vários usuários confirmaram que os módulos "703A" também estão funcionando (não testei).

UPD 11/2019:
Atenção:Foi descoberto que as fitas métricas a laser "x-40" mais recentes vêm com módulos "M88B". A marcação é "88B" no PCB próximo ao MCU. Esses módulos são baseados em STM32F0 MCU (tem pacote QFN-32). Esses módulos não são suportados pelo meu firmware!

UPD 10/2021:
Atenção: adicionado suporte para módulos U85B :veja o link! Eles são usados ​​em tipos modernos de fitas métricas a laser.





Se o seu módulo for compatível, você precisará dessoldar as linhas de alimentação do módulo.





Etapa 2:Programação do módulo telêmetro a laser


Você precisa escrever um firmware especializado para o MCU do módulo para obter a funcionalidade necessária.

1. Em primeiro lugar, você precisa soldar alguns fios para programar o MCU. Pinagem é mostrada na imagem:

Conecte os pinos 7 a 8 do conector do teclado - é necessário ligá-lo.

As linhas "GND" e "Vbat" devem ser conectadas à fonte de alimentação. A faixa de tensão de alimentação é +2,7 ... + 3,3V. Deve haver +3,5 V na linha "Vdd" quando a alimentação é fornecida ao módulo.

As linhas "GND", "SWDIO", "SWCLK", "NRST" devem ser conectadas ao programador ST-LINK. A linha "NRST" é muito importante - o firmware original do MCU está bloqueado, portanto, essa linha é necessária para entrar no modo de programação do MCU.

Alguns programadores têm essa linha e alguns (baratos) não, mas há uma solução alternativa para esse problema.

Além disso, alguns programadores (como o "ST-LINK / V2" original) precisam da linha "Vbat" para ser conectada à linha "VCC / TVCC" do programador.

Exemplo de conexões (este programador não possui linha "NRST"):

2. Instale o "utilitário ST-LINK" no PC. Se você não tem experiência no uso desse software, existem vários tutoriais na web.

Você precisa configurar o utilitário (Destino -> Configurações):

Se o seu programador tiver saída "NRST", você pode simplesmente ligar a energia e pressionar "Destino -> Conectar" no utilitário.

Se não houver essa linha, você precisará seguir estas etapas:
  • Ligue a energia.
  • Conecte a linha "NRST" do módulo ao GND.
  • Pressione "Destino -> Conectar" no utilitário.
  • Desconecte rapidamente a linha "NRST" do GND.
  • O utilitário deve mostrar a conexão

Você deve ter essa imagem:

3. O flash MCU está bloqueado para leitura, então você precisa desabilitar "Proteção contra leitura". Você perderá o firmware original nesta etapa!

Abra o menu Target -> "Option Bytes". Deve haver essas configurações:

Mude "Read Out Protection" para "Disabled" e pressione o botão "Unselect all", depois pressione o botão "Apply". Tente reiniciar o módulo (desconectando a alimentação).

Pressione Alvo -> Conectar. Deve haver informações sobre a conexão bem-sucedida na janela de log e você deve ver o conteúdo da memória - preenchido com 0xFF. Agora você pode carregar o firmware personalizado para o MCU.

4. O firmware necessário é colocado aqui:https://github.com/iliasam/Laser_tape_reverse_engineering/tree/master/Code/Firmware_dist_calculation_fast

Selecione o arquivo HEX adequado para o seu módulo e baixe-o para o Flash MCU usando o "utilitário ST-LINK".





Etapa 3:conectar o módulo telêmetro a laser ao Arduino


Você precisa soldar um fio ou algum conector à almofada TX na placa:

Veja o esquema de conexão abaixo.

Em primeiro lugar, você precisa verificar se o módulo rangefinder está funcionando bem. Nesta etapa, você não precisa conectar o display OLED ao Arduino - basta conectar a linha TX do módulo telêmetro a laser à linha TX do Arduino e os cabos de força do módulo à fonte de alimentação de + 3V.

Crie um esboço vazio e carregue-o no Arduino. Abra o "Serial Monitor" no Arduino IDE. Selecione a taxa de transmissão:250000

Se o módulo rangefinder estiver funcionando bem, você obterá os mesmos dados:

Na verdade, é melhor usar um conversor USB-UART especializado para este teste. Selecione 256000 baudrate em seu utilitário (é a baudrate real de x-40 MCU).

Em segundo lugar, você precisa montar o esquema completo com display.

Conecte a linha TX do módulo telêmetro a laser à linha RX do Arduino (você precisa desconectar esse fio durante o carregamento do programa para o Arduino).

Se tudo estiver funcionando bem, você obterá o mesmo resultado:

Você pode ver o display com 3 números:
  • "COUNT" - contador dos valores recebidos
  • "AMPL" - amplitude do sinal. A barra simbólica ("<--->") abaixo mostra a amplitude graficamente (em escala logarítmica).
  • O maior valor - distância em metros e milímetros.





Etapa 4:calibração zero


Após uma primeira partida, o módulo telêmetro a laser precisa ser calibrado.

Você precisa colocar algum objeto branco a uma certa distância do módulo. A distância para este objeto se tornará uma distância zero para o módulo rangefinder. Para iniciar o processo de calibração, você precisa conectar o teclado da fita métrica a laser e pressionar o botão mais baixo. O módulo emitirá dois bipes - no início e no final da calibração (a duração da calibração é de quase 10 segundos).

Agora você pode usar este módulo telêmetro a laser.

Links:

1. Github - resultados da engenharia reversa e código-fonte.

2. Habr.com - Artigo traduzido pelo Google sobre o processo de engenharia reversa de fita métrica a laser.

Desculpe pelo meu inglês - eu sou de um país que não fala inglês.

Código

  • esboço do Arduino
Esboço do Arduino Arduino
 Sem visualização (somente download). 
Github
Código para a fita laserhttps://github.com/iliasam/Laser_tape_reverse_engineering

Esquemas

Esquema de montagem da placa de ensaio

Processo de manufatura

  1. Como medir a qualidade do ar em OpenSensors
  2. Para que serve um cortador a laser?
  3. Monitoramento de temperatura SMART para escolas
  4. Biblioteca de portas IO de 8 bits para Arduino
  5. Matriz de teclado de prototipagem de 64 teclas para Arduino
  6. TFT Shield para Arduino Nano - Iniciar
  7. Uma entrada analógica isolada para Arduino
  8. Arduino Breath Controller barato (USB-MIDI)
  9. Robô para navegação interna supercool
  10. Defendendo o 5G na fabricação