Índice:

TinyLiDAR em um Pi ?: 9 etapas (com imagens)
TinyLiDAR em um Pi ?: 9 etapas (com imagens)

Vídeo: TinyLiDAR em um Pi ?: 9 etapas (com imagens)

Vídeo: TinyLiDAR em um Pi ?: 9 etapas (com imagens)
Vídeo: tinyLiDAR From Concept to Creation 2024, Outubro
Anonim
TinyLiDAR em um Pi?
TinyLiDAR em um Pi?

Olá de novo!

Bem, agora que você passou um bom tempo com o tinyLiDAR e seu Arduino - seu Raspberry Pi talvez esteja se sentindo um pouco solitário;)

O pi tem uma porta I2C certo? Então, por que não conectá-lo e experimentá-lo lá ?! Bom plano, mas se você já tentou - você deve ter notado que os dados parecem um pouco estranhos.

Sim, o pi já construiu pull-ups de 1.8K, então você terá que cortar os pads I2C no tinyLiDAR para tirar os pull-ups de 4.7K do circuito - consulte o manual de referência para detalhes. Mas esse não é o motivo dos dados estranhos.

É porque o barramento I2C do pi não está exatamente de acordo com as especificações. Tem sido assim desde que o pi foi introduzido pela primeira vez devido ao conjunto de chips Broadcom. Desde o início, eles não suportaram adequadamente um recurso I2C chamado "alongamento do relógio".

Você pode ler mais sobre esse bug de h / w aqui.

Etapa 1: O que é alongamento do relógio?

O que é alongamento do relógio?
O que é alongamento do relógio?

Como você deve saber, o barramento I2C consiste em 3 fios. Estes são para relógio (SCL), dados (SDA) e terreno comum. O relógio e as linhas de dados são do tipo coletor aberto / dreno aberto, o que significa que eles precisam de resistores pull-up conectados a um trilho de alimentação positivo para dar-lhes um alto lógico. Para obter um nível lógico baixo, qualquer dispositivo no barramento pode puxar a linha para o aterramento comum.

De acordo com o padrão I2C, o dispositivo Master é aquele que fornece o sinal de clock na linha SCL, mas se esta taxa for muito rápida, então o dispositivo Slave pode desacelerá-lo simplesmente mantendo pressionada a linha do clock até que esteja pronto para lidar com as informações. Isso é o que chamamos de "alongamento do relógio".

Oficialmente, o alongamento do relógio foi listado como um recurso opcional no padrão I2C, mas é um recurso muito comum que é necessário para a maioria dos escravos "inteligentes" que precisam de algum tempo extra para fornecer dados do sensor, etc.

Etapa 2: Uma ajudinha de porcos que voam

Para lidar com esse bug I2C h / w, encontramos uma pequena biblioteca gratuita chamada "pigpio". É uma biblioteca muito popular, rápida e leve escrita em C. Ela é executada como um daemon de segundo plano para o Raspberry Pi e nos permite controlar o I2C, bem como qualquer GPIO, facilmente a partir do python. A biblioteca trata as portas I2C mais como GPIO e, portanto, contornou o bug de alongamento do clock I2C. Como todos os softwares no pi, a biblioteca pigpio é apenas uma simples "inclusão" de distância, então vamos lá!

Etapa 3: TL; Versão DR

Configurar PiAtivar SSH para fazer login com a biblioteca PuttyInstall pigpio Obtenha o arquivo zip tinyLiDAR Descompacte e execute o Putty

Opcional:

Configurar SublimeText com WinSCP

Etapa 4: Instalação

Instalação
Instalação

Para o nosso Raspberry Pi 3, usamos o sistema operacional padrão New Out Of the Box Software (NOOBS Lite v2.4). Ele contém uma versão padrão do Python já instalada para nós, pronta para codificar. Você pode baixar o sistema operacional aqui.

Depois de instalado em um cartão micro SD, você deve conectar um teclado e um monitor para que possa fazer o login no pi pela primeira vez:

Nome de usuário: pi Senha: framboesa

Em seguida, você pode iniciar um servidor de shell seguro (SSH) com estes comandos:

sudo systemctl enable sshsudo systemctl start ssh

Em seguida, precisaremos do endereço IP do pi em sua rede para que possamos fazer o login com PuTTY. Para conseguir isso, basta digitar:

hostname -I

E procure um endereço de formato IPv4 (para nossa configuração era: 192.168.0.27)

As etapas acima permitirão que o pi funcione "sem cabeça", o que significa que você não precisará digitar no teclado novamente e também não será mais necessário um monitor de vídeo. Faremos login através da rede por meio de uma conexão SSH segura daqui para frente. O comando acima faz com que o servidor SSH seja iniciado automaticamente sempre que o pi for ligado. Isso é conveniente para nós enquanto estamos codificando, mas pode ser um risco de segurança mais tarde (ser paranóico é bom), então, quando estiver pronto, você pode desativar este recurso SSH de inicialização automática usando este comando:

sudo systemctl disable ssh

Este comando deve ser digitado no teclado conectado ao pi, é claro.

PuTTY é um programa de terminal necessário para emitir comandos do PC para o pi, portanto, você deve obter a cópia mais recente daqui.

Instale e inicie o PuTTY. Você precisará digitar o endereço IP acima na entrada Nome do host e usar as configurações SSH padrão. Dê à sessão o nome que desejar e clique em Salvar. Em seguida, clique em carregar e clique em ABRIR para iniciar uma sessão.

Isso deve levar você à tela de login do pi. Use o mesmo nome de usuário e senha usados anteriormente.

Etapa 5: Instale o Pigpio

Agora, a única coisa que precisamos instalar depois disso seria a biblioteca pigpio e podemos fazer isso usando os seguintes comandos.

Dica: você pode simplesmente copiar [ctrl + c] e colar [clique com o botão direito do mouse] estes e quaisquer outros comandos no terminal PuTTY

sudo apt-get update

sudo apt-get install pigpio python-pigpio python3-pigpio

Etapa 6: Opcional: configuração do sistema Dev

Opcional: configuração do sistema Dev
Opcional: configuração do sistema Dev

Portanto, aqui vai uma dica que pode ajudar a economizar algum tempo em seu mundo de desenvolvimento de código. Nós realmente odiamos os editores de texto baseados em Unix. A interface do usuário normalmente é desajeitada e as fontes são péssimas. GNU nano é quase suportável, mas nenhum é tão refinado quanto SublimeText que você pode baixar aqui

Temos um ambiente de desenvolvimento baseado em Windows e adoramos usar este editor de texto sempre que possível. Portanto, a dica aqui é configurar seu sistema para poder usar este editor de texto profissional nativamente em sua área de trabalho do Windows para codificar diretamente em seu pi sem cabeça.

Como? Usando um aplicativo gratuito chamado WinSCP, que você pode baixar aqui

Etapa 7: Configurando o WinSCP

Configurando WinSCP
Configurando WinSCP
Configurando WinSCP
Configurando WinSCP

WinSCP é um programa de transferência de arquivos seguro que oferece uma representação gráfica dos arquivos presentes em seu rpi, como o que você vê no gerenciador de arquivos em seu PC com Windows.

Portanto, vá em frente e instale os dois programas acima agora.

Em seguida, você terá que fazer alguns ajustes para que todos funcionem corretamente.

Para WinSCP, você pode clicar em NOVO Site. Usaremos as configurações de SFTP padrão e você só precisa inserir o endereço IP (para nome do host) de seu pi e o nome de login (para nome de usuário). Você pode optar por deixar a senha em branco, se desejar - ele solicitará a senha sempre que você fizer login.

Em seguida, clique no botão Avançado e, em seguida, clique no lado esquerdo para as configurações do Shell de ambiente. No lado direito, altere o menu suspenso "Padrão" para a opção "sudo su -". Isso permitirá que as alterações sejam gravadas em seu pi sem erros de permissão quando você clicar em salvar do SublimeText.

Defina SublimeText como Editor Padrão no WinSCP

Para fazer isso, clique no botão Ferramentas na tela de configurações de login do WinSCP, onde você iniciou a caixa de diálogo NewSite. As duas capturas de tela mostram como isso está configurado, mas basicamente você irá clicar para configurar a preferência dos Editores e Adicionar um Editor que será um Editor Externo. Você pode então procurar o arquivo.exe de onde este editor está localizado em seu computador.

Etapa 8: (w) obter o Código

(w) obter o Código
(w) obter o Código

Uma vez feito isso, vá em frente e faça o login com WinSCP e PuTTY.

Agora que estamos prontos, podemos iniciar nosso código tinyLiDAR.

Crie um diretório chamado tinyLiDAR em seu diretório home / pi.

Você pode fazer isso clicando com o botão direito do mouse no lado direito da tela do WinSCP e escolhendo Novo / Diretório.

Agora, no terminal PuTTY, você pode digitar

cd t

e pressione tab para permitir que ele autocomplete seu comando para chegar ao diretório tinyLiDAR.

Uma vez aqui, digite o seguinte:

wget

para obter os arquivos diretamente do nosso servidor. Podemos então descompactá-los digitando

descompacte r

e pressione tab para preencher automaticamente o nome novamente

Para executá-lo, basta digitar

python tlgui.py

E seu tinyLiDAR estará respondendo a todos os seus comandos no pi:)

Etapa 9: Observação para hackers em breve

Vá em frente e dê uma olhada nos bastidores clicando duas vezes em qualquer um dos arquivos de código do WinSCP. Eles são os únicos com uma extensão.py. Os arquivos devem ser abertos no SublimeText diretamente no seu PC. Altere o que quiser e clique em Salvar. Suas alterações serão salvas diretamente no seu pi.

Quando estiver pronto, execute-o novamente usando a tecla de seta para cima para o último comando digitado ou apenas digite-o novamente e pressione Enter:

python tlgui.py

Você deve ter notado que o layout da GUI do Terminal parece um pouco melhor do que a versão do Arduino. É porque o PuTTY oferece suporte a caracteres Unicode, então fomos capazes de usar alguns caracteres extras de controle do cursor para torná-lo mais refinado.

Também há um comando adicionado aqui (em comparação com a versão do Arduino) que é "dc" para a função de leitura contínua. Experimente e veja o que você pensa.

Isso é tudo!

Obrigado por ler e divirta-se hackeando o pi:)

Recomendado: