카테고리 없음

아두이노- python 시리얼 통신

햎피 2022. 6. 11. 23:44
반응형

아두이노와 파이썬 시리얼 통신하는 방법에 대해서 알아보겠다.
목표는 아두이노 소리센서를 이용해서 음성인식을 하는것인데,
소리센서로 음성인식을 하려면 푸리에변환이라는 걸 해줘야한다고한다.
소리센서로 들어오는 것은 0부터 1023까지의 정수값이고, 전압값의 디지털 신호이다.
나중에 파이썬으로 푸리에변환을 하여 음성인식까지 해 볼 예정이다..!

아두이노 코드 :
입력받은 소리(소리의 세기)를 파이썬으로 시리얼 통신을 통해 전달하는 코드

int soundSensor = A0;
int threshold = 300;

void setup() {
  Serial.begin(9600);
  pinMode(soundSensor, INPUT);

}

void loop() {
  int val = analogRead(soundSensor);
  if (val >= threshold) {
    Serial.println(val);
  }
  else {
    delay(1);
  }
}



다음은 파이썬 코드이다.
아두이노에서 입력받은 정수값을 출력하고, npy 파일로 만들어주는 코드

#arduino
import serial
import time
import numpy as np

#arduino
ser = serial.Serial('COM3',9600,timeout=1)


a = np.array([])

t_end = time.time() + 4 #60 * 3

while time.time() < t_end:
    if ser.readable():
        val = ser.readline()
        try:
            val = val[:len(val)-2].decode()
            print(val)
            a = np.append(a,np.array([int(val)]))
        except:
           print(val)
np.save('amplitude',a)


테스트 동영상 :


근데 동영상을 보면 알겠지만, 말하면 모두 1023의 가장 높은 값으로 인식한다...
왜일까..?
소리센서가 너무 저사양이라서 그럴까,,?
다음에는 고사양의 소리센서로 테스트해봐야겠다..!

반응형