구글 AIY Voice Kit에 미세먼지 센서를 연결 잉여개발


미국에 주문한 구글 홈 미니는 배송 중입니다만,,, 사진은 인공지능스피커 구글 AIY 보이스 키트입니다. 
  • Ok Google 음성을 통해 날씨도 묻고 할 수 있습니다. 다만, 영어만 알아 듣는... 한국말 할 줄 아냐고 영어로 물어보면 그렇다고 대답합니다.(거짓말은 아닌데 한국말로 이야기하라고 하면 하긴 합니다^^) 
  • 이 제품의 단점은 개발자용이라는 것. 라즈베리파이 3를 사서 연결하고, 일련의 설치 과정을 거쳐야 합니다. 리눅스도 사용 가능해야 하고, 뭔가 기능을 추가하려면 파이썬도 알아야겠지요.~ 
재작년에 사놓았던 미세먼지센서와 임시로 연결해 보았습니다. 와이어를 막 날려서 복잡하죠 ㅜㅜ 


파이썬2로 신나게 짜놨는데, 구글 보이스 킷은 파이썬3라서 코드를 좀 고쳐야 했습니다. 저 미세먼지 센서는 전원을 넣으면 계속 팬이 작동하는 것이어서, 별도로 1채널 릴레이를 연결하여 제어하였는데 라즈베리파이의 GPIO는 3V라서 레벨컨버터를 임시로 추가했습니다. 

키트에서 기본으로 제공하는 assistant_library_with_local_commands_demo.py 코드에 미세먼지 제어 코드를 합치면, 아래 동영상과 같이 작동시킬 수 있습니다. 

발음이 좋은 편은 아닌 거 같아서, 네이버의 파파고한테 "Ok Google", "Air quality"라고 말하라고 시켰습니다^^ 


2018-02-10
  • 15분에 한번씩 자동으로 초미세먼지 값을 측정한 후, 음성으로 알려주도록 기능을 추가했습니다.
2018-02-11
  • 아래 그림은 구글 홈 미니입니다. 외부 전원이 필요하고, 스마트폰의 소리를 구글 홈 미니로 블루투스 연결을 통해 출력할 수도 있습니다. 
  • AIY Voice 킷에서는 알람 설정이 안되는데, 이건 당연히 되구요^^ 역시 영어만 알아듣습니다. 소리는 생각보다는 나쁘지 않고 2~3미터 떨어진 곳에서 말해도 알아듣는 편입니다. 
  • (주의) 일단 제어하려는 스마트폰과 같은 대역(2.4GHz or 5GHz)에 접속해야 하며, 5GHz WiFi 연결에서 애를 먹었는데, 선호 채널을 5.785GHz대역으로 변경하니 접속이 되었습니다.(미국을 선택했을 때에는 미국에서 WiFi에 사용하는 주파수 대역과 비슷한 채널을 골라야겠지요. 2.4GHz도 역시 안되었지만 찾아보지는 않았어요.) 사용한 공유기는 ipTIME AS3004NS BCM입니다. 


2018-02-20
  • 샤오미의 공기청정기 쪽에서 쓴다는 플랜타워의 미세먼지 센서를 테스트해보았습니다. 연결용 케이블은 알리익스프레스에서 구입했습니다. 
  • 좀 더 확인해 보아야겠지만, 정확도는 아직 좀... 




핑백

덧글

  • 궁금 2018/05/30 15:28 # 삭제 답글

    혹시 aiy voice kit으로 미세먼지 센서 연결해서 사용하는 방법좀 알려주실수 있나요?ㅠㅠ
  • 무재칠시 2018/05/31 21:54 #

    광범위한 질문이라서 댓글로 답하기에는... 어려움이 있어 보입니다.

    AIY VOICE KIT도 라즈베리파이기반으로 되어 있으므로, 라즈베리파이에 미세먼지센서 연결하는 방법을 찾아보시면 참고가 될 듯합니다. 보통 TX,RX,GND를 연결하면 되는데, 이게 전압이 3.3V, 5V등으로 다른 경우가 있어서, 중간에 레벨컨버터를 써야할 경우도 있습니다.(저의 경우)

    일단 하드웨어적으로 연결이 되면, 센서 데이터를 디코딩해야할텐데 저는 파이썬으로 되어 있는 소스를 찾아서 조금 수정해서 이용했습니다. 유명한 먼지센서라면 누군가는 다 짜서 올려놓았을 거예요.

    그 다음부터는 AIY VOICE KIT의 설명서를 보고 하면 되겠습니다.~
  • 구름 2018/06/01 01:25 # 삭제 답글

    혹시 수정한 assistant_library_with_local_commands_demo.py 코드를 공유해주실 수 있나요 ㅠㅠ 포스팅 잘 보고 aiy kit로 실습해보려 하는데 미세먼지센서 소스는 찾았는데 합치기가 쉽지가 않네요..
  • 무재칠시 2018/06/01 23:18 # 답글

    구글 보이스킷이 말을 알아듣게 하기 위해, def process_event(assistant, event): 함수 안에

    elif text == 'air quality':
    assistant.stop_conversation()
    say_dust_value()

    위 코드를 추가합니다. say_dust_value() 이름은 적당히 바꾸실 수 있고, 'ip address'라고 말을 시켜서 말을 알아듣는지 확인 후 위 코드를 추가해야겠지요.

    def say_dust_value():
    # 미세먼지 센서 값을 읽는 부분을 이곳에 추가한 후,
    pm25inside = 미세먼지센서읽는함수명을쓰시고

    aiy.audio.say(' PM2.5 is not good. current value is ' + str(pm25inside) + ' micro gram.')

    위 과정을 하기 전에, credential등 AIY_VOICEKIT설명서에 나와 있는 과정을 먼저 잘 따라서 처리해 주어야 합니다. 조금 과정이 복잡했던 것으로 기억합니다.
  • 무재칠시 2018/06/01 23:19 #

    띄어쓰기가 없어졌네요. elif문 밑 2줄과 def밑에는 각각 공백4개씩이 있어야겠지요.
댓글 입력 영역