quinta-feira, 24 de janeiro de 2013

Conectando o Arduino na Raspberry Pi Via GPIO

Palavras-chave: Arduino, RPi, Raspberry Pi, GPIO, MCP14050BCP.

Nota: todos os  links para sites e ferramentas encontram-se no final do post.

Depois de escrever alguns tutoriais sobre o Arduino e a Raspberry Pi, pensei em conectá-los pelo barramento GPIO.

Após algumas pesquisas pela internet encontrei o blog do Andre Miller que utilizou o Buffer CD4050 no seu projeto. A curiosidade falou mais alto e resolvi experimentar.

COMPONENTES

1 MC14050BCP;
1 Arduino Uno;
1 Raspberry Pi;
1 Protoboard;
Fios.

RASPBERRY PI

Edite o arquivo cmdline.txt que se encontra na primeira partição do cartão SD para:

dwc_otg.lpm_enable=0 console=ttyAMA0,9600 kgdboc=ttyAMA0,9600 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Na sequência edite o inittab localizado no diretório /etc (segunda partição do cartão SD).

 T0:23:respawn:/sbin/getty -L ttyAMA0 9600 vt100

ARDUINO

Atualize a IDE do Arduino para a última versão e faça o download da biblioteca SoftSerial (hoje com o nome de NewSoftSerial12.zip). Ao término descompacte o arquivo na pasta libraries.

O código abaixo foi baseado no exemplo que acompanha a biblioteca SoftSerial. Copie-o integralmente e faça o upload.

/*----------------------------------------------------------
#
# Conectando o Arduino na Raspberry Pi Via GPIO
#
# O codigo abaixo foi baseado no exemplo que acompanha
# a biblioteca SoftSerial
# 
----------------------------------------------------------*/

#include <SoftwareSerial.h>

SoftwareSerial mySerial(8, 9); // RX, TX no Arduino

void setup()  
{
  // Abrir a comunicaço serial e aguardar a resposta da porta:
  Serial.begin(57600);
  while (!Serial) {
    ; // Esperar a porta serial para conectar. Necessario apenas para o Arduino Leonardo (ATmega32u4).
  }

  Serial.println("Conectado!");

  // Definir o baudrate para a transferencia de dados
  mySerial.begin(9600);

}

void loop()
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}


MONTAGEM

A Figura 1 mostra o barramento GPIO da Raspeberry Pi e a Figura 2 os pinos do MC14050BCP.

Figura 1 - Barramento GPIO da Raspberry Pi.
Figura 2 - MCP14050BCP.
A seguir tem-se o esquema de ligação entre o Arduino e a RPi, Figura 3.

FIgura 3 - Montagem.
O Arduino é conectado ao computador pela porta USB, energizando o circuito e possibilitando a utilização do Serial Monitor.

TESTE

Abra o Serial Monitor e ligue a Raspberry Pi para acompanhar o processo de boot, Figura 4.

Figura 4 - Processo de Boot da Raspberry Pi no Serial Monitor do Arduino.
Note que não é possível fazer o login pelo Serial Monitor, mas sim pelo PuTTY.

MATERIAIS/LINKS RELACIONADOS

SoftSerial - http://arduino.cc/en/Reference/SoftwareSerial


Blog Andre Miller - http://www.andremiller.net/content/raspberry-pi-and-arduino-via-gpio-uart

5 comentários:

Fernando Verga disse...

Cleber, este MC14050BCP onde consigo compra-lo?

Obrigado!

Fernando Verga disse...

Cleber, onde consigo comprar este componente MC14050BCP

Binary Codec disse...

Olá Fernando, comprei pelo site da Farnell.

Fernando Verga disse...

Cleber, pode me enviar o LINK? estou no site da Farnell procurando por MC14050BCP mas nada encontro.

Obrigado!

Binary Codec disse...

Oi Fernando, os que estão disponíveis na Farnell são SMD.

http://www.farnellnewark.com.br/searchresults.aspx?dskeyword=MC14050&idproducttype=0&idproductcolor=0&iddept=0&nupricerangestart=1&nupricerangeend=9999999&type=2

É o primeiro da lista. Abs.