No hackspace , temos muitos Raspberry Pi diferentes, com os quais ensinamos crianças a programar em python, criar robôs e vários dispositivos úteis. Obviamente, estamos fazendo a mesma coisa no Arduino. Ao longo dos três anos de vida, alma a alma, com essas plataformas extremamente diferentes, tivemos várias idéias sobre como tornar um robô de treinamento mais correto, levando em consideração os prós e contras de cada peça de ferro. Todos esses pensamentos se materializaram em um novo dispositivo, que será discutido mais adiante.
Basicamente, projetamos um módulo de expansão compatível com Arduino para RPi, que contém um driver de motor e um regulador de energia. É claro que este módulo é um controlador auto-suficiente para um robô educacional, mas é o sanduíche RPi + Arduino que demonstra a abordagem ideologicamente correta para criar robôs. Como essa coisa se parece, quais características tem e onde pode ser aplicada, continue lendo.Um pouco de históriajá se passaram 4 anos desde o lançamento da série Raspberry Pi Modelo B. Ao mesmo tempo, foi o hype em torno do RPi que, em parte, nos levou a criar nosso espaço de hacks. Afinal, a primeira coisa que começamos a ensinar foi ensinar robótica infantil no RPi. Após as primeiras lições com alunos do ensino médio, com base na Escola de Informática N.N. Krasovsky Ural, começamos a pensar em nosso laboratório-oficina, aberto a todos os aflitos.Nossas lições evoluíram para um curso básico, que foi posteriormente adaptado ao Arduino. A continuação deste curso deveria ser projetos específicos nos quais as crianças pudessem aplicar o conhecimento adquirido na operação de microcontroladores e vários componentes úteis. Dedicamos toda uma classe de projetos de treinamento à criação de robôs móveis, tanto com base no Raspberry Pi quanto no Arduino.Nosso primeiro robô baseado em RPi foi criado especificamente como um manual para trabalhar com os alunos. Era um robô de duas rodas, no qual os caras praticavam trabalhando com motores e todos os tipos de sensores, preparando-se simultaneamente para a competição. Como chassi, foi utilizado um motor de engrenagem tamiya. O motorista do motor era drv8833 da TI. Na versão do robô LineFollower, havia dois sensores de reflexão caseiros. No andar superior do robô foi instalada uma placa de ensaio sem solda com 400 pontos.
O robô provou ser excelente, então, com o tempo, a plataforma experimentou um kit diferente. Além do LineFollower, que, a propósito, chamamos de rastreador à nossa maneira, o robô usava sensores de reflexão ótica, telêmetros ultrassônicos, pintados com uma caneta de feltro em um papel e, finalmente, era controlado via wifi, transmitindo a imagem de uma webcam.Com o tempo, ficou claro que o motor não era o mais popular, mas também muito barulhento. O corpo do robô não acomodava toda a lista de desejos e não era compatível com os designers comuns. E o mais importante, surgiu a idéia de criar um módulo de extensão para o RPi, que salvaria o robô de comunicações e dispositivos "rotineiros" desnecessários. Assim começou o projeto de um robô de rodas, com o codinome MR-K-1 e depois MR-K-2. Desde o início, começamos a fornecer furos de aterrissagem para ambas as plataformas, e o modelo do robô com o Arduino a bordo é apresentado abaixo.
Esta é uma modificação da batalha, na qual os estudantes que controlam um robô via bluetooth tendem a estourar balões montados em uma máquina inimiga. A estrutura foi ampliada, o motor de engrenagem foi substituído por um motor amarelo chinês (e às vezes branco) comum em chinês. O gabinete foi adaptado para o construtor multiplo, agora está coberto de orifícios quadrados. Tudo isso levou várias semanas. Mas o trabalho no módulo de expansão foi um pouco atrasado. E o problema não era tanto a complexidade da implementação, mas a falta de tempo, agravada pelo perfeccionismo :)Omódulo de extensão RPiDuino Alexander Vasiliev, o blog extremamente útil líder alex-exe.ru , tornou-se o principal desenvolvedor do módulo. , , . RPiDuino, Raspberry Pi Arduino.
, .
, . . , atmega328 arduino- . atmega .

, USB-UART , CP2102. Arduino- , .
, . , . DRV8833 Pololu, - . , — 1.

, . , . LM2596, RPi, , .

, .

RPiDuino GPIO Raspberry Pi, . atmega328 RPi UART.

GPIO , .
RPiDuino |
| 7.5-24 ( ) 7.5-10.5 ( ) |
| 0,5 4, , , |
|
| 5 |
: // | 1.5/2/3 |
| 1% |
| 5.52.1 |
|
| 2,7-10,5 |
/ | 1/2 |
| 50 |
|
| 855622 855633 ( RaspberryPi)
|
| 49 |
Robô controlado remotamente com base no RPi + RPiDuinoUma boa demonstração dos recursos do RPi é um robô controlado remotamente. Ele pode mostrar o trabalho coordenado do RPi e do Arduino, onde a plataforma mais antiga está envolvida no processamento de vídeo e na interface do usuário, e a segunda executa suas tarefas robóticas de rotina.
Agora, o robô possui uma webcam com suporte de hardware para compactação de mjpg, conectada ao Raspberry via USB. O robô se apega ao WiFi através do roteador USB TL-WN722N. Os motores são reforçados, com uma proporção de 1: 120. As rodas são grandes com borracha macia para aderir ao linóleo no nosso espaço hacks. Os codificadores nos motores ajudam a nivelar a variação no impulso do motor. Tudo isso é alimentado por duas baterias Li - ion do tamanho 18650.Como tudo funcionaNo RPiDuino, está sendo executado um programa que escuta os comandos de movimento do UART e envia alguma telemetria de volta. Nos meus projetos, eu uso a biblioteca SerialFlow , escrita para meu primeiro quadrocopter. O código do programa para o RPiDuino também pode ser encontrado no github.No lado do Raspberry Pi, as coisas são um pouco mais complicadas. Primeiro, o robô é controlado pela interface da web, então tive que criar um pequeno servidor da web em python. A tela de controle possui setas para definir a direção do movimento, um regulador de velocidade, telemetria e uma janela para exibir o fluxo da webcam. Para transmitir o vídeo, tradicionalmente uso o mjpg-streamer.Se você deseja repetir algo semelhante no seu robô, o algoritmo de instalação será o seguinte.1) Instale o mjpg-streamer e configure a transferência do fluxo de vídeo para http.2) Instale o pacote pyserial.3) Baixe e descompacte o arquivo com a parte do servidor do programa de controle.4) Preenchemos o esboço de controle do RPIDuino.5) Configure o wifi no RPi.6) Configure a execução automática do programa de controle no RPi.RPiDuino e ROSOutra razão pela qual precisávamos desse módulo de extensão foi a capacidade de mostrar aos alunos o conceito certo de robô. Agora parece algo assim: “Veja, pessoal, o robô tem um computador host que gerencia cálculos complexos. Ele pode reconhecer imagens, criar um mapa usando o lidar e o SLAM. Tudo isso tira muitos recursos dele, para que ele não possa mais controlar com sensibilidade as rodas de um robô terrestre, e Deus o livre, estabilizando o quadrocóptero em vôo. Para essas operações no nível da medula espinhal, existe outro computador especializado em tarefas simples específicas e que não se distrai com mais nada. "Esses dois computadores são conectados por um barramento de dados, através do qual eles se comunicam entre si e com outros módulos".É aqui que o conceito de ROS surge. Nesse caso, o núcleo do sistema está girando no RPi e RPiDuino é o nó do ROS. A propósito, já criamos um pequeno pacote para gerenciar o RPIDuino através do ROS. Em breve publicaremos um artigo separado sobre esse tópico.O que vem a seguir?A versão beta do módulo provou ser digna. Agora, um pequeno número de placas pode ser obtido em nosso espaço no hacks , escreva para uma pessoa interessada. Planejamos criar a próxima versão, com novos drivers de mecanismo, com indicadores adicionais e outras vantagens. O código fonte do fórum certamente será publicado. Teremos o maior prazer em qualquer crítica e participação!