Arduino x Raspberry Pi

Arduino x Raspberry Pi: Quais as diferenças entre as placas? 4

Nos últimos tempos, as placas de prototipação rápida e kits de desenvolvimento passaram a ser disponibilizados de maneira muito mais acessível – tanto em preço quanto em disponibilidade no mercado – aos profissionais, hobistas e makers. As mais famosas são Arduino e Raspberry Pi.

E quem “puxa” isso é o Arduino, plataforma de desenvolvimento de sistemas embarcados surgida em 2005 que tornou possível, barato e acessível o aprendizado de sistemas embarcados em todo o mundo.

Com o intuito de ser um computador portátil, de baixo custo e que estimulasse o ensino de computação e programação para estudantes que não tiveram contato com isso até então, a Raspberry Pi teve sua primeira placa disponível a venda em 2012. Desde então, a Raspberry Pi se consolidou como uma das principais plataformas de prototipação de sistemas embarcados com sistema operacional Linux, sendo também adorada e adotada por profissionais, hobistas e makers em todo o mundo.

Mas quais as diferenças entre o Arduino e a Raspberry Pi? É isto que este post visa esclarecer.

Arduino: O que é? 

Há um grande número de placas da plataforma Arduino disponíveis no mercado, inclusive você pode produzir a sua própria, já que o Arduino se trata de um projeto Open-Source em hardware e software, como pode ser visto aqui. Um dos mais populares e acessíveis Arduinos é o Arduino UNO.

Figura 1 – Arduino UNO, uma das mais populares e acessíveis placas Arduino do mercado

Entretanto, todas elas possuem alguns elementos em comum:

  • Um microcontrolador, usualmente de baixo custo (originalmente os ATMEGA, sendo hoje já possível de utilizar microcontroladores de outros fabricantes senão a ATMEL), rodando a frequências tipicamente iguais ou inferiores a 48MHz
  • Poucos kB de memória RAM e Flash
  • Conexão USB, para alimentação e programação
  • Pin-headers ou pin-sockets para GPIOs, entradas analógicas, saídas PWM, etc.
  • Os pin-headers ou pin-sockets já são no formato certo para o encaixe dos Shields Arduino (placas de expansão, que permitem adicionais mais funcionalidades e recursos ao seu sistema embarcado)
  • LEDs, sendo pelo menos 1 livre para o usuário / desenvolvedor

Apesar de utilizarem microcontroladores de baixo custo e, consequentemente, mais limitados, estes são perfeitamente aplicáveis a grande maioria de projetos makers e hobistas (sobretudo para fins de aprendizagem), não sendo, portanto, um impeditivo para quem deseja realizar projetos mais simples. Já se você busca um microcontrolador mais robusto, para utilizar um sistema operacional de propósito geral, o Arduino não é o caminho.

É até possível se utilizar sistemas operacionais de tempo real (FreeRTOS, por exemplo), porém nada muito além disso. Devido a estas características, a grande maioria dos projetos com Arduino é feito na modalidade bare-metal (sem sistema operacional embarcado), com alguns poucos utilizando um sistema operacional de tempo real.

Em termos de bibliotecas e recursos para o desenvolvedor, a comunidade mundial do Arduino é gigantesca. Muito provavelmente, já existe biblioteca para todos os sensores, memórias e atuadores que você desejar, assim como projetos para se basear e chegar mais rápido ao resultado. Ou seja, para finalidade de aprendizado e/ou prototipação rápida de sistemas embarcados mais simples, Arduino é uma solução que cai como uma luva.

Para conhecer mais detalhes sobre essa placa acesse o post “O que é Arduino?

Raspberry Pi: O que é?

Em termos simples, podemos dizer que a Raspberry Pi é “muito turbinada” em relação ao Arduino. A Raspberry Pi possui recursos computacionais e de hardware que permitem seu uso como um computador pessoal comum, logo possui muito, mas muito mais “poder de fogo” que um Arduino.

Ao invés de um microcontrolador de baixo custo e mais limitado, a Raspberry faz uso de um SoC (System on Chip), podendo conter mais de uma CPU e suporte a protocolos e conexões avançadas (Ethernet, USB, HDMI, wifi, etc.).

Assim como o Arduino, as placas da linha Raspberry Pi são Open-Source tanto em hardware quanto em software. Isso significa que você pode, se desejar, construir sua própria placa baseada na Raspberry Pi também. E assim como o Arduino, há várias placas na linha Raspberry Pi, sendo uma das mais populares a Raspberry Pi 3B+.

Figura 2 – Raspberry Pi 3B+

Apesar dos vários modelos disponíveis, todas as Raspberry Pi dispõe de:

  • Um SoC, com uma ou mais CPUs, rodando a pelo menos 700MHz
  • 256MB ou mais de memória RAM
  • Suporta como memória de massa cartões micro-SD de até 64GB (Raspberry Pi 3B+)
  • Interfaces USB
  • Interface HDMI
  • Suporte a câmera via interface CSI (Camera Serial Interface)
  • 26 ou 40 pinos no header de expansão, permitindo uso de GPIOs, protocolo UART, protocolo I²C, etc.

Em termos de conectividades, os modelos 3B+ e 4B da linha Raspberry Pi possuem suporte a wifi (2.4GHz e 5GHz), Bluetooth (clássico e BLE) e Ethernet, sendo então placas muito interessantes para prototipar e projetar sistemas embarcados em Internet das Coisas. 

Em termos de comunidade de desenvolvimento, há uma comunidade mundial gigantesca para a Raspberry Pi, a qual fornece suporte, bibliotecas e exemplos diversos. Além disso, por operar com um sistema operacional de propósito geral (usualmente, Linux), os recursos são vastos para desenvolvimento, sendo uma ótima solução voltada a automação de baixo custo.

Qual é melhor para meu projeto? 

Você pode observar que ambas são placas de prototipação rápida / kits de desenvolvimento muito úteis no dia-a-dia de profissionais, hobistas e makers, ambas dispondo de uma comunidade mundial gigantesca e com inúmeras bibliotecas e exemplos disponíveis de graça na Internet. Mas e a diferença entre elas? Qual é ou quais são?

Para melhor organizar as diferenças, vou dividi-las em tópicos:

  1. Poder computacional: em termos de poder computacional, a Raspberry Pi tem o mesmo porte de um computador de uso pessoal comum, ou seja, roda a frequências altas (700MHz ou mais), utiliza um sistema operacional de propósito geral (uma distro Linux, por exemplo), utiliza as mesmas aplicações de um computador pessoal comum, possui megabytes (ou gigabytes) de memória RAM e possui memória de armazenamento em massa na casa de unidades ou dezenas de gigabytes. Já o Arduino não é capaz de rodar um sistema operacional de propósito geral, possui kilobytes de memória RAM e memória de armazenamento e roda, tipicamente, no máximo a 48MHz.

    Em suma, comparando Raspberry Pi e Arduino em termos de poder computacional, podemos dizer que a Raspberry Pi está várias ordens de grandeza acima.

    Quer utilizar todo o poder computacional de um computador comum no seu projeto? Raspberry Pi pode ser uma ótima opção. 
  2. Operação em tempo real: sistemas operacionais de propósito geral não possuem capacidade de rodar em hard real time. Isso significa que podem ocorrer latências (mínimas, mas existem) na execução de aplicações. Isso faz com que este tipo de sistema operacional não seja apto a funcionar em projetos com altíssima criticidade em tempo, como controle de aviões militares, por exemplo.Já Arduinos (e outras plataformas semelhantes) com microcontroladores que utilizam sistemas operacionais de tempo real (RTOS) podem garantir altíssima fidelidade nos tempos de execução das tarefas, atendendo às exigências de projetos com altíssima criticidade em tempo.


    Portanto: busca algo hard real time? Vai de Arduino (ou outra plataforma que permita utilizar sistemas operacionais de tempo real).  

  3. Versatilidade: como dito no tópico anterior, as placas da linha Raspberry Pi operam com sistemas operacionais de propósito geral. Isso significa dizer que tarefas muito importantes e corriqueiras, como por exemplo aplicação de camadas de segurança de rede, acesso remoto, atualização remota de software e backup, já são normalmente cobertas pelo sistema operacional, bastando o desenvolvedor utilizar tais recursos. Já com Arduino, se algo desse tipo for possível, pode ter certeza que seria uma dor de cabeça sem fim implementar.

    Logo, se deseja que seu projeto seja versátil para as tarefas do dia-a-dia, a Raspberry Pi é uma opção adequada. 
  4. Custo final: às vezes, o projeto que estamos trabalhando pode requerer um hardware baratíssimo, com poucos recursos computacionais. Ou seja, um hardware que seja capaz de lidar com tarefas simples, custando pouco. Nesse caso, usar uma Raspberry Pi pode ser o equivalente a matar uma formiga com uma bola de canhão. Já um Arduino (ou outra plataforma equivalente) pode ser uma ótima solução.

 

Arduino e Raspberry Pi em um produto

Muita calma nessa hora. Sei que parece tentador pegar um Arduino ou uma Raspberry Pi, fazer seu produto e vender, mas é preciso tomar alguns cuidados.

Um dos maiores cuidados é quanto a licenças de hardware e software. Apesar de ser um projeto open-source em hardware e software, há ressalvas no uso comercial do Arduino. Você pode sim utilizá-lo num produto, porém se utilizar o framework Arduino no projeto, você é obrigado pela LGPL (licença do Arduino) a liberar os arquivos-objeto do seu firmware.

Se o seu software não for bem arquitetado, isso pode se tornar um grande problema em se tratando de proteger seu software contra cópias indevidas. Além disso, se você resolver fazer a placa (PCB) de seu produto baseado no design (arquivos de projeto) de um Arduino, você é obrigado a liberar o design (arquivos de projeto) de sua PCB via uma licença Creative Common. Isso pode ser um baita problema também, principalmente se você fizer produtos de produção em massa e quiser que ninguém copie.

Já quanto a Raspberry Pi, você até pode utilizá-la em seu produto, porém é proibido utilizar a marca Raspberry Pi para seu produto. Outro porém é: se você usar Linux, você pode precisar usar bibliotecas com licenças de software diversas, o que requer que você gerencie tudo isso para se proteger e ao mesmo tempo não ferir as licenças de software aplicáveis.

Ainda, por padrão, o Kernel Linux é licenciado sob a GPL-2.0. Isso significa que qualquer modificação no Kernel Linux que você faça para seu produto, você deve, obrigatoriamente, liberar / divulgar tal modificação para a comunidade. Logo, é preciso arquitetar muito bem uma solução no quesito de software para se proteger e ainda ficar dentro da legalidade das licenças de software aplicáveis.

Outro cuidado muito importante é quanto a robustez de hardware. As placas das linhas Arduino e Raspberry Pi são feitas com finalidade de serem úteis para prototipação rápida em ambiente controlado / não hostil.

Isso significa dizer que não foram feitas para suportar condições de temperaturas extremas, exposição continuada ao sol, exposição continuada a alta umidade do ar, imunidade a ruídos elétricos em ambiente industrial, dentre outros fatores ambientais. Se você ignorar isso, você com certeza terá muita dor de cabeça com seus projetos em campo.

Por fim, outro grande cuidado a ser tomado é quanto à segurança / proteção de software gravado. Como dito no parágrafo anterior, as placas das linhas Arduino e Raspberry Pi são feitas com finalidade de serem úteis para prototipação rápida em ambiente controlado / não hostil.

Logo, não foram feitas para proteger o software que está gravado em sua memória contra quem quer copiar o software de seu produto. Inclusive, a Raspberry Pi utiliza um cartão micro-SD como armazenamento em massa, tornando possível a qualquer um que tenha acesso a seu equipamento fazer uma cópia ou modificação no conteúdo dele.

Conclusão

Conforme visto neste post, há pontos diversos a serem considerados na escolha entre Arduino e Raspberry Pi para você prototipar seu projeto. Comparar estes pontos com as especificações exigidas pelo seu projeto é fundamental para escolher a plataforma mais adequada.

Se você visar o lado comercial, ou seja, criar um produto baseado em uma dessas plataformas, os cuidados são ainda maiores, abrangendo (mas não se limitando): licenças de hardware e software, robustez de hardware e segurança do software embarcado de seu projeto.

As plataformas estão aí para serem usadas e ajudar, mas tenha sempre em mente que são projetadas para prototipação rápida. Portanto, utilize e escolha a plataforma para seu projeto com sabedoria e moderação.

Gostou do assunto? Que tal assistir um webinar aqui do FilipeFlop sobre isso? Veja neste link.

Faça seu comentário

Acesse sua conta e participe

4 Comentários

  1. Grande Pedro, EXCELENTE artigo, se eu tinha alguma dúvida, qualquer que fosse, foi devidamente removida.

    1. Professor, muito obrigado pelo elogio! Fico feliz que gostou do artigo!

  2. Raspeberry com rede industrial! Por exemplo, rede canopen? Funciona ?

    1. Olá Leonardo,

      Você pode ver esse git aqui: https://github.com/mpcrowe/canopen-raspberrypi

      É necessário um módulo externo, mas ele pode funcionar com canopen pelo que observei nesse git.

      Abraços!
      Vinícius – Equipe FilipeFlop