Fazendo seu primeiro projeto com a Beaglebone Blue - acionamento de motores DC

Muito provavelmente, a grande maioria de hobistas e profissionais em sistemas embarcados já trabalhou ou ouviu falar das placas da linha Beaglebone. Apesar da vasta linha de SBCs (Single-Board Computers) disponível, há uma SBC dedicada para projetos na área de robótica: a Beaglebone Blue.

 

Beaglebone blue.
Figura 1 - Beaglebone blue.

 

Este artigo irá, além de apresentar as principais características desta placa, mostrar como fazer um pequeno projeto com a Beaglebone Blue em C para controlar motores DC, utilizando a Robotics Cape Library.

 

 

Material necessário

 

Para fazer este experimento será necessário:

  • Uma placa Beaglebone Blue operacional (com acesso à Internet, conexão SSH, enfim, já inteiramente configurada);
  • Uma bateria LiPo de 2 células (7,4 V). Carga recomendada: 1100 mAh ou superior;
  • De um a quatro motores DC de 4 até 6 V de tensão de operação. Importante: cada motor não deve consumir mais do que 1,2 A de corrente!

 

 

Overview do hardware

 

Abaixo segue um overview do hardware da Beaglebone Blue.

 

Recursos de hardware

 

A BeagleBone Blue possui um conjunto de recursos de hardware dedicado para projetos de robótica, indo desde recursos de sensoriamento até controle de motores DC e servo-motores. Observe a figura 2, onde tais recursos de hardware estão em evidência.

 

Projeto com a Beaglebone Blue - Recursos de hardware da Beaglebone Blue.
Figura 2 - Recursos de hardware da Beaglebone Blue.

 

SiP (System in-Package)

 

A BeagleBone Blue utiliza o SiP Octavo Systems OSD3358, o qual possui as seguintes características:

  • Processador AM335x (ARM Cortex-A8, rodando a 1 GHz), muito similar ao utilizado na Beaglebone Black;
  • Memória eMMC de 4 GB;
  • 512 MB de memória RAM DDR3;
  • Assim como as demais BeagleBones do mercado, possui 2 PRU (Programmable Real-Time Units) de 32 bits rodando a 200 MHz, destinados ao uso em aplicações que necessitem de abordagem Real-Time.

Além disso, se mais memória de armazenamento for necessária em um determinado projeto, é possível utilizar uma imagem para a placa gravada em um SD Card (veja slot do SD Card na figura 3) e, assim, ter-se mais memória disponível. Para baixar as imagens oficiais disponíveis, acesse este link e, para saber como colocá-la no SD Card e fazer a BeagleBone utilizá-la, acesse este outro link.

 

Figura 3 - slot para SD-Card

 

Periferia de hardware

 

Um resumo da periferia de hardware da placa pode ser visto abaixo:

  • Suporte à bateria: possui circuitos para utilizar e recarregar uma bateria LiPo de 2 células (7,4 V). A recarga é feita SOMENTE através de uma fonte de alimentação de 12 V (vendida separadamente);
  • Conectividade WI-FI e Bluetooth (BLE e Bluetooth 4.1);
  • Uma USB 2.0 Client para alimentação (da parte lógica) e comunicação;
  • Uma USB 2.0 HOST;
  • Circuitaria para controle de até 8 servo-motores;
  • Circuitaria para controle de até 4 motores DC (consumindo até 1,2 A cada um). Há controle de sentido de rotação e velocidade de giro (com PWM);
  • Um chip IMU de 9 eixos, disponibilizando: acelerômetro, magnetômetro e giroscópio (através do chip MPU9250);
  • Barômetro e termômetro (através do chip BMP280);
  • I/O: 11 LEDs programáveis e 2 botões programáveis.

 

Além disso, possui conectores destinados a:

  • Conectores para até 4 encoders;
  • Conector para módulo GPS;
  • Conectores para até 4 canais de ADC e GPIOs;
  • Conectores para UART e I²C;
  • Conector para SPI;
  • Conector para rádio DSM 2.

Conexões / conectores

 

Uma peculiaridade da BeagleBone Blue é o uso de conectores do tipo JST. Embora não sejam tão comuns entre os hobistas, estes conectores têm como característica serem bem firmes na conexão e por possuírem pequenas dimensões físicas. Como desvantagem, este tipo de conector costuma ser mais caro que os mais convencionais.

 

Em resumo, apesar de mais caros, o uso de conectores JST para projetos que estão sujeitos à vibração constante (robôs, por exemplo) é uma ótima escolha. Para saber a lista completa dos conectores JST presentes na Beaglebone Blue, acesse este link.

 

 

Bibliotecas de software

 

Uma biblioteca de software feita especialmente para permitir o uso de todos os recursos da placa é a Robotics Cape Library.

Esta biblioteca é totalmente open-source e destinada para desenvolver projetos de robótica em C na BeagleBone Blue (também é possível utilização na BleagleBone Black, desde que nesse caso seja utilizado um shield/cape chamado Robotics Cape). Apesar de já ser parte integrante das imagens mais recentes da Beaglebone Blue, esta biblioteca pode ser obtida neste link (repositório oficial).

 

 

Primeiro projeto - acionamento de motor DC

 

Descrição e montagem

 

Como primeiro projeto, será feito um controle de velocidade e sentido de rotação de motores DC (um, dois, três ou quatro motores simultâneos). Para isso, será utilizada a Robotics Cape Library.

A montagem é simples e rápida:

  • Ligue a bateria no soquete próprio dela na Beaglebone Blue (se necessário, também ligar o adaptador 12 V para fazer a carga da bateria);
  • Para cada motor que desejar controlar: ligar um chicote com conector JST de duas vias (JST-ZH, com 1,5 mm de espaçamento), e conectar o conector JST a um dos soquetes destinado a motores.

 

Código-fonte

 

O código-fonte do projeto foi baseado nos exemplos encontrados no repositório da própria biblioteca. O código fonte pode ser visto abaixo. Salve-o com o nome de primeiro_projeto_bbblue.c na sua Beaglebone Blue.

Para compilar, execute o comando abaixo:

 

 

E, por fim, para rodar o projeto, execute o comando abaixo.

 

 

Para parar o programa, aperte Ctrl + C.

 

 

Conclusão

 

Este artigo apresentou a placa de desenvolvimento Beaglebone Blue, a placa da linha das Beaglebone dedicada à robótica. Dentre suas características, a principal delas é a grande quantidade de periféricos de robótica (sensores, conexões e circuito de controle de motores DC), fazendo com que projetos de robótica desenvolvidos com a Beaglebone Blue não necessitem de muitos circuitos extras / externos.

 

Além disso, como exemplo de utilização da placa, foi feito um projeto de controle de sentido de rotação e velocidade de até quatro motores DC, utilizando para isso a biblioteca Robotics Cape Library.

 

 

Saiba mais

 

Utilizando motor DC com Arduino UNO e Adafruit Motor Shield v2.3

Controle de servomotores com Arduino e ESP8266

Controle de Motores

 

 

Referências

 

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Pedro Bertoleti
Sou engenheiro eletricista formado pela Faculdade de Engenharia de Guaratinguetá (FEG - UNESP) e trabalho com Android embarcado em Campinas-SP. Curioso e viciado em tecnologia, sempre busco me aprimorar na área de sistemas embarcados (modalidades bare-metal, RTOS, Linux embarcado e Android embarcado).Para mais informações, acesse minha página no Facebook:https://www.facebook.com/pbertoleti

Deixe um comentário

avatar
 
  Notificações  
Notificar