고급 예제

다양한 도구들을 가지고 마음껏 응용해보세요.

라즈베리 파이-(2)아두이노 연결 제어

2014-12-01 14:25:39

라즈베리 파이에 아두이노 연결하여 아두이노 제어하기


라즈베리 파이를 처음 써보시는 분은 이전 컨텐츠 라즈베리 파이 시작하기_OS설치를 읽고 오시기 바랍니다.
(자신의 라즈베리 파이에 OS가 설치 되어 있으신분은 건너뛰어도 됩니다. 이 컨텐츠에서는 Raspbian을 이용합니다.)

 


이 컨텐츠에서는 라즈베리 파이에 Arduino IDE를 설치해 보고, 라즈베리 파이에서 아두이노에 업로드하여 아두이노 내장 LED(13번 LED)를 제어해 보고. 아두이노에서 보내는 값을 시리얼 통신으로 라즈베리 파이에서 받아서 화면에 출력해 보겠습니다.

우선 라즈베리 파이에 아두이노를 연결하여 아두이노 내장 LED(13번 LED)를 제어해 보겠습니다.



1. 라즈베리 파이에서 스케치를 받기 위해서는 인터넷에 연결해야 합니다. 

바탕화면에 있는 WiFi Config를 실행 합니다. 그 후 Scan버튼을 눌러 연결할 Wifi를 설정하시고 Connect로 연결하시면 됩니다.
(밑의 사진과 같이 Status에 Completed가 나오고 IP address가 제대로 나오면 연결이 되었습니다.)



2. 바탕화면에 있는 LXTerminal을 실행 한 후, sudo apt-get update를 입력하여 패키지 목록을 확인 합니다.

3. 패키지 목록 확인이 끝나셧으면 sudo apt-get install arduino 를 입력하여 아두이노 패키지를 다운받고 설치 합니다.
  설치가 완료 되면 시작 -> 개발에 Arduino IDE가 나옵니다.(아직 실행하지 마세요)


4. 시리얼 포트에 엑세스 하기 위해 pi계정에 tty와 dialout 그룹을 지정하여 권한을 얻습니다.
  sudo usermod -a -G tty pi
  sudo usermod -a -G dialout pi

5. 모두 완료가 되었으면 Arduino IDE를 실행 하고 윈도우에서 했던 방식과 똑같이 보드와 시리얼포트를 설정해 줍니다.
  (윈도우와는 다르게 시리얼 포트는 COM이 아닌 /dev/ttyUSB0입니다.)


 6. Blink예제를 실행 한 후 아두이노에 업로드 하고 아두이노 내장 LED에 불이 깜박이는지 확인해 봅시다.
  (Blink예제는 파일 -> 예제 - > 01. Basics -> Blink 에 있습니다.)

 

라즈베리 파이에서 아두이노와 시리얼 통신하기

이번에는 라즈베리 파이와 아두이노간의 시리얼 통신을 하여 아두이노에서 보내는 데이터를 라즈베리 파이에서 출력해 보도록 하겠습니다.

pyserial을 이용하면 python에서 시리얼 포트를 열고 데이터를 주고 받을 수 있습니다. 
 

위에 Arduino IDE를 설치 한 이후 부터 진행 합니다.
 
1. http://www.sourceforge.net/projects/pyserial/files/latest/pyserial-2.7.tar.gz 에서 pyserial-2.7.tar.gz 파일을 다운 받습니다.

2. 위에 받은 파일은 pi폴더에 저장되어 있습니다. 이 파일 LXTerminal에서 tar -xzf pyserial-2.7.tar.gz 을 입력하여 압축을 풀어줍니다.

3. cd pyserial-2.7을 이용하여 pyserial폴더로 이동하고, LXTerminal에서 sudo python setup.py install 을 입력하여 pyserial을 설치 합니다.
  (1) cd pyserial-2.7
  (2) sudo python setup.py install

4. Arduino IDE를 실행 한 후 밑의 코드를 입력한 후 아두이노로 업로드 합니다.
void setup(){
  serial.begin(9600);
}

void loop(){
  for(int n = 0; n < 100; n++){
    Serial.write(n);
    delay(100);
  }
}

 5. 시작 -> 개발 -> IDLE을 실행 시킨 후 File -> New Window 를 눌러 새창을 연 후 밑의 코드를 입력합니다. 
import serial

port = "/dev/ttyUSB0"
serialFromArduino = serial.Serial(port, 9600)
serialFromArduino.flushInput()

while True:
    if(serialFromArduino.inWaiting() > 0):
        input = serialFromArduino.read(1)
        print(ord(input)
두번째 줄에 ttyUSB0은 확인해보시고 아두이노에서 연결한 포트와 맞게 써주세요.
 

6. 입력 후 저장 하신 다음 F5(혹은 FXTerminal에서 sudo python 파일명.py)를 누르면 Shell창에서 숫자가 차례대로 출력됩니다.

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

라즈베리 파이, 아두이노, 기타

문원진 2015-03-30 16:34:18

궁금한게 있습니다.
지금 라즈베리파이와 아두이노 연결했는대 지금 연결한 라즈베리파이랑 아두이노 제품이 궁금합니다.
라즈베리파이b+ 와 아두이노 메가 2560 을 썻나요?? 아니면 다른걸 썻나요??

윤종윤 2017-09-06 15:36:24

혹시 반대로 라즈베리파이에 있는 데이터를 아두이노로 보낼수 있는 방법이 있나요??