나의 여행과 일상 일기장

(3) 캡스톤디자인 3강_라즈베리파이와 아두이노 시리얼 통신 본문

일상일기

(3) 캡스톤디자인 3강_라즈베리파이와 아두이노 시리얼 통신

똥글똥글 2022. 4. 24. 14:33
반응형

1. 라즈베리파이와 아두이노 시리얼통신

https://manli000.wordpress.com/2016/02/12/%EB%9D%BC%EC%A6%88%EB%B2%A0%EB%A6%AC%ED%8C%8C%EC%9D%B4-%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8-%EC%8B%9C%EB%A6%AC%EC%96%BC-%ED%86%B5%EC%8B%A0/ 블로그 참고

 

https://stackoverflow.com/questions/47735693/python-cannot-import-name-serial 문제해결

 

라즈베리파이에 직접적인 조도센서 연결에 어려움이 있었다 <- 납땜을 해야 했고 전용케이블을 구입 해야 했기 때문에 기존의 아두이노를 이용해서 라즈베리파이와 시리얼 통신하는 쪽으로 방향을 잡았다.

라즈베리파이와 아두이노 시리얼통신을 이용해서 아두이노로부터 값을 받아오려고 함

라즈베리파이와 아두이노 연동완료

 

2. 조도센서 시리얼통신

오픈소스HW 과목을 참고하여 구현

조도센서에 완전 밀착할 정도로 손을 가까이 대야 인식가능

 

1) 아두이노 코드(arduino_serial)

int lightPin = 0;

void setup(){
    Serial.begin(9600);
}

void loop(){
    Serial.printIn(analogRead(lightPin));
    delay(1000);
}

//계속 loop문을 돌면서 라즈베리파이에 아날로그값을 넘겨준다.

 

2) 라즈베리파이 파이썬 코드(serialard.py)

import serial

port='/dev/ttyACMO'
SerialFromArduino = serial.Serial(port, 9600)

SerialFromArduino.flushInput()

while True:
    input_s = serialFromArduino.readline()
    print(input_s)

//아두이노의 아날로그값을 라즈베리파이에서 디지털 값으로 변환하여 출력

 

3) 사진

3. 조도센서와 라즈베리파이 파이카메라 연동(최종)

http://www.3demp.com/community/boardDetails.php?cbID=233 블로그 참고(파이썬으로 파이카메라 제어)

 

https://m.blog.naver.com/PostView.nhn?blogId=dokkosam&logNo=221168232261&proxyReferer=https%3A%2F%2Fwww.google.com%2F  블로그 참고 <- 저항을 사용해야 조도센서 인식이 더 잘된다.

1) 라즈베리파이 파이썬 코드(serialard.py)

import serial
from picamera import PiCamera
from time import sleep

camera = PiCamera()
port='/dev/ttyACMO'

SerialFromArduino = serial.Serial(port, 9600)
SerialFromArduino.flushInput()

while True:
    input_s = serialFromArduino.readline()
    print(input_s)
    if(input_s <'150':
       camera.start_preview()
       sleep(3)
       camera.rotation =180
       camera.capture('/home/pi/capture/pic.jpg')
       camera.stop_preview()
    else:
        continue

//조도값이 150 보다 작으면 파이캠이 촬영하고 파일을 '/home/pi/capture/pic.jpg' 형식으로 저장

// 조도값이 150 이상이면 while문을 계속 돈다.

//조도센서와 파이카메라는 연동 완료, 3주차는 초음파 센서를 연동하여 데이터베이스에 값을 넣을 수 있게 해야 한다.

 

4. 초음파센서와 라즈베리파이 연동(라즈베리파이와 바로 연결하는 방법, 라즈베리파이와 아두이노 연동하는 방법)

https://tony2012.tistory.com/17 블로그참고

 

1) 아두이노 코드(arduino_micro)

int trig = 9;
int echo = 8;

void setup(){
    Serial.begin(9600);
    pinMode(trig, OUTPUT);
    pinMode(echo, INPUT);
}

void loop(){
    DigitalWrite(trig, HIGH);
    DelayMicroseconds(10);
    DigitalWrite(trig, LOW);

    int distance = pulseIn(echo, HIGH) * 17 / 1000;

    Serial.print(distance);
    delay(1000);
}

//trig(보내는 값), echo(되돌아오는 값)으로 거리를 구할 수 있다.

 

2) 라즈베리파이 파이썬 코드(serialmicro.py)

import serial

ser = serial.Serial('dev/ttyACOM', 9600);

while 1:
    dustval = ser.readline();
    print dustval;

// 아두이노 초음파 센서의 아날로그값을 디지털값으로 변환하여 출력 한다. 실행 결과 초음파센서는 잘 작동된다.

 

3) 사진

반응형