본문으로 바로가기

라즈베리파이 x 아두이노 제어하기

category IoT/Raspberry Pi 2020. 7. 30. 03:22

 

라즈베리파이 모듈 설치 및 설정

 

아두이노와 시리얼 통신을 하기위한 모듈을 설치합니다.

arduino 패키지 설치하실 필요없습니다.

sudo apt-get install pyserial

 

group 을 확인해봅니다.

tty group 에는 pi(계정)가 없네요.

cat /etc/group | egrep -i 'tty|dialout'
tty:x:5:
dialout:x:20:pi

 

usermod 명령어로 tty 그룹에 pi 를 추가 시킵니다.

sudo usermod -a -G tty pi

 

추가 되었습니다.

cat /etc/group | egrep -i 'tty|dialout'
tty:x:5:pi
dialout:x:20:pi

 

다음 id 명령어로도 확인할 수 있습니다.

id
uid=1000(pi) gid=1000(pi) grupper=1000(pi),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),105(input),109(netdev),997(gpio),998(i2c),999(spi)

 

시리얼 연결 확인

USB-Serial adapter 가 보이네요.

lsusb
Bus 001 Device 006: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

파이썬 코드에서 사용될 경로입니다. (연결이 안되있으면 안나옵니다.)

ls /dev/ttyUSB
/dev/ttyUSB0

 

 

아두이노 코드 업로드

 

 

아두이노 IDE 설치 / 적외선 센서 다루기

아두이노(Arduino)란? 아두이노는 오픈 소스를 기반으로 한 단일 보드 마이크로컨트롤러로 완성된 보드(상품)와 관련 개발 도구 및 환경을 말한다. 2005년 이탈리아의 IDII(Interaction Design I

jvvp.tistory.com

 

아두이노를 설치하면서 아두이노에 적외선 센서 제어 코드를 업로한 상태입니다. 

따라서 라즈베리파이와 연결하기만하면(전원공급) 아두이노 메모리에 업로드된 코드에 따라 작동합니다.

 

 

데이터 전송을 하는 코드입니다.

Serial.write(distance)

 

아두이노에 코드가 업로드 되지 않았다면 아두이노 IDE 에서 업로드 시켜야합니다.

라즈베리에서 하실 필요는 없습니다. 윈도우에서 업로드를 시킨 후, 라즈베리파이에 연결하면 됩니다.

 

 

코드

 

아두이노에서 전송하는 데이터를 전송받을 때 라즈베리가 제어하는 LED 에 불을 킵니다.

import RPi.GPIO as GPIO
import serial

GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)

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

while True:
    if(serial.inWaiting() > 0):
        if serial.read():
            GPIO.output(11, True)
    else:
        GPIO.output(11, False)

 

좌 라즈베리파이, 우 아두이노

안보여서 불좀 껏습니다.jpg