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.

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <rc_usefulincludes.h>
#include <roboticscape.h>
#include <time.h>
#include <signal.h>

#define PAUSA_MOTOR     100000 //100000us = 100ms

int main(void)
{
    int duty;
    int  motores_ativos = 1;

    //Inicializa biblioteca
    if(rc_initialize())
    {
        perror("Falha ao inicializar biblioteca robotics cape.");
        return -1;
    }

    //Inicializa / ativa hardware de controle do motor
    rc_enable_motors();
    rc_set_motor_all(0.0);

    //executa até Ctrl+C nao ser pressionado
    while (motores_ativos == 1)
    {
        printf("\r\n[SENTIDO HORARIO]\n\n");

        //sentido horario
        for (duty=0; duty<101; duty++)
        {
            printf("\r\nSentido horario: duty: %d\n\n",duty);
            rc_set_motor_all((float)duty/100);
            if (rc_get_state() == EXITING)
            {
                motores_ativos = 0;
                break;
            }
            rc_usleep(PAUSA_MOTOR);
        }

        if (motores_ativos == 0)
            continue;

        printf("\r\n[SENTIDO HORARIO]\n\n");

        //sentido anti-horario
        for (duty=0; duty>-101; duty--)
        {
            printf("\r\nSentido anti-horario: duty: %d\n\n",duty);
            rc_set_motor_all((float)duty/100);
            if (rc_get_state() == EXITING)
            {
                motores_ativos = 0;
                break;
            }
            rc_usleep(PAUSA_MOTOR);
        }
    }

    //Desativa hardware de controle de motor e finaliza programa
    rc_disable_motors();
    return 0;
}

Para compilar, execute o comando abaixo:

gcc primeiro_projeto_bbblue.c -o primeiro_projeto_bbblue -lm -lrt -lpthread -lroboticscape

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

primeiro_projeto_bbblue

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

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Linux Embarcado » Fazendo seu primeiro projeto com a Beaglebone Blue – acionamento de motores DC

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: