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

Como conectar um sensor ultrassônico Lego Mindstorms NXT ao Raspberry Pi

Resumo

Conecte diretamente um sensor ultrassônico Lego Mindstorms NXT a um Raspberry Pi. Um buffer de barramento TCA9517 I2C e um pino GPIO adicional para SCL são necessários. Um pequeno programa C ++ para ler a distância medida é fornecido.

Introdução

Raspberry Pi (Pi), apesar de algumas deficiências, é definitivamente meu SBC favorito. De longe a maior comunidade e cada detalhe está bem documentado. Lego Mindstorms, por outro lado, meu kit de construção de robôs favorito. Ao contrário de outros kits de robôs, oferece possibilidades ilimitadas para construir robôs. Hoje um robô de carro, amanhã um robô rastreado e no dia seguinte um braço de robô de 6 eixos - tudo é possível. A versão NXT do kit tem um poderoso microcontrolador baseado em ARM em seu ouvido, que é suficiente para a maioria das aplicações de robô simples, mas não o suficiente para quaisquer projetos avançados como visão computacional. Recentemente, a Lego publicou EV3, um novo kit com um cérebro muito mais poderoso que é, como o Raspberry Pi, movido pelo Linux. Mesmo assim, esse cérebro não é capaz de computar imagens de alta resolução a uma velocidade razoável. Portanto, ainda quero combinar o poder do framboesa pi com as possibilidades ilimitadas do Lego. Até onde sei, há um projeto que realiza isso, chamado BrickPi. Embora seja bem-sucedido, acho que tem várias deficiências, quero abordar neste e nos artigos seguintes. Em primeiro lugar, é compatível apenas com os sensores NXT baseados em I2C mais antigos e não com os novos sensores EV3 baseados em UART. Além disso, ele não conecta diretamente os sensores ao pi, mas usa dois microcontroladores Atmega (compatíveis com Arduino) para se comunicar com os sensores. Adicionar novos sensores ou qualquer outra mudança requer um novo firmware. Além disso, o BrickPi usa drivers de motor L293D que só são capazes de fornecer correntes em torno de 0,6 A, enquanto um motor Lego NXT consome até 2 A após travar [Características do motor NXT]. Neste artigo, quero mostrar como conectar diretamente um Lego Mindstorms Sensor ultrassônico (sensor US) para o Pi sem o uso de nenhum microcontrolador adicional.

Desafios

Minha primeira tentativa de conectar o sensor US ao Pi foi simples. Basta conectar as duas linhas de sinal I2C usando um modificador de nível simples com dois n-fets [AppNote]. O deslocador de nível deve ser necessário porque o sensor dos EUA usa níveis lógicos de 5 V e o pi apenas 3,3 V. Em seguida, conecte 5 V e 9 V ao sensor e inicie um programa de teste simples e não obteve - nada. Depois de verificar os fios e o software duas vezes, conectei o analisador lógico e percebi que o sensor US não consegue responder a nenhuma solicitação, nem mesmo reconhecer seu próprio endereço. O primeiro e maior desafio é a conexão de hardware entre o Pi e o sensor. Os protocolos de hardware e software são bem descritos pela Lego, incluindo esquemas [Lego HDK] e embora use I2C, não podemos conectar o sensor diretamente ao pi. Como você pode ver no Esquema 1, o sensor tem resistores pullup muito fracos (82 k) e resistores em série muito fortes (4,7 k) em suas linhas I2C. Os segundos resistores são nosso principal problema. Como você deve saber, o Pi usa resistores pullup fortes de 1.8 k em suas linhas I2C. Devido ao resistor em série, o sensor é incapaz de puxar para baixo qualquer uma das linhas I2C e, portanto, não é capaz de responder a quaisquer solicitações do mestre I2C. A Figura 1 mostra uma simulação aproximada desta situação. A linha azul mostra os dados que o sensor tenta enviar, a linha verde mostra os dados recebidos pelo Pi. Como você pode ver, o sensor é incapaz de puxar a linha de dados simulada para baixo. Você também pode notar que qualquer circuito de mudança de nível é desnecessário neste estado porque o forte resistor pull-up para 3,3 V domina a linha também em nível alto. A única solução para este problema, que encontrei até agora, é usar um TCA9517, um buffer bidirecional de 2 canais para I2C. Além disso, este chip se preocupa com a mudança de nível. O segundo desafio decorre de um bug de firmware no sensor dos EUA. É descrito aqui nos fóruns mbed, por exemplo. Há também um artigo que descreve como analisar a comunicação entre o Lego Mindstorms NXT e o sensor dos EUA usando um analisador lógico (alemão). Para resumir, um ciclo de clock adicional (alternar na linha SCL) é necessário entre gravar o registro no sensor e realmente ler os dados do sensor. Isso obviamente não é compatível com qualquer hardware I2C padrão ou implementação de software. Você pode escrever uma implementação I2C de software especial usando qualquer par de GPIOs, mas é mais simples apenas conectar outro GPIO do Pi à linha SCL e alterná-lo entre escrever o registro no sensor e ler o conteúdo dos registros.

Hardware

Hardware necessário para um protótipo simples: Para este protótipo, usei uma placa de pão com uma pequena placa de quebra de sensor Lego Mindstorms feita sob medida. Esta placa imita o controle de 9 V e a proteção da porta do sensor do Lego Mindstorms NXT [Lego HDK]. Para um protótipo simples, você não precisa do circuito de comutação de 9 V (os dois fets) ou dos resistores em série adicionais e dos diodos nas linhas I2C. Você pode simplesmente conectar 9V ao pino 1 do cabo, GND ao pino 2 e 3, 5 V ao pino 4 (omitindo o diodo D1), SCL_5V ao pino 5 e SDA_5V ao pino 6. Para mais detalhes:Como conectar um Lego Mindstorms NXT Sensor ultrassônico para o Raspberry Pi

Processo de manufatura

  1. IoT básica - RaspberryPI HDC2010 como
  2. Registrador de temperatura Raspberry Pi
  3. Monitoramento de temperatura no Raspberry Pi
  4. Sensor de temperatura Python e Raspberry Pi
  5. Estação meteorológica Raspberry Pi
  6. A integração dos dados do sensor com o microprocessador Raspberry Pi
  7. Sensor ultrassônico (HC-SR04) + Raspberry Pi
  8. Sensor de movimento usando Raspberry Pi
  9. Sensor de umidade do solo Raspberry Pi
  10. Temperatura do Raspberry Pi e sensor de luz