[IoT Project] 아두이노와 라즈베리파이 간의 시리얼 통신

안녕하세요.

이번 글은 아두이노와 라즈베리파이 간의 시리얼 통신에 대한 글입니다.

먼저, 시리얼 통신이 무엇인지에 대해 설명을 합니다.

그리고 J-bot에서는 시리얼 통신을 활용하였는가? 에 대해 적었습니다.

J-bot이 궁금하신가요? 아래 글들을 읽어보세요.

나만의 비서 로봇, J-bot 만들고 있습니다.
google-aiy-voice-kit 활용기
google-aiy-voice-kit 셋팅

아래는 J-bot의 동작 동영상입니다.

https://youtu.be/Xv3_kfhknEM

위 동영상 처럼 손이 가까이 오거나 답변을 한 후 로봇이 팔을 움직이기 위해서

시리얼 통신을 활용하였습니다.


시리얼 통신

시리얼 통신은 이종의 보드 간에 데이터를 주고 받는 방법 중 하나입니다.

시리얼 통신을 위해서 필요한 것들에 대해 소개를 하겠습니다.


  • Rx, Tx, GND 선 연결

    • 아두이노는 USB로 연결할 경우, 하드웨어는 따로 생각할 필요없습니다. 준비 끝!

    • 아두이노 내부에 칩이 있습니다. 그래서 USB만 연결해도 시리얼 통신을 할 수 있습니다.





  • 보레이트 (Baudrate) 설정

    • 보레이트는 시리얼 통신의 속도를 말합니다.

    • 아두이노와 라즈베리파이 모두 같은 보레이트로 설정해야합니다.

    • 9600 bps, 19200 bps, 38400 bps, 115200 bps 등이 있습니다.

    • bps 는 bit per second로 1초에 보낼수 있는 비트 수를 의미합니다.

    • 9600bps는 1초에 9600 bit를 보낼 수 있습니다.



  • 데이터 포맷

    • 한 번 데이터를 보낼 때, 아래 그림의 데이터 포맷과 같이 8bit씩 보냅니다.

    • 만약 “hello”라는 텍스트를 시리얼 통신을 통해 전송하면 ‘h’, ‘e’, ‘l’, ‘l’, ‘o’로 하나씩 전송됩니다.




사진 <시리얼 데이터 포맷> - http://nptel.ac.in/courses/Webcourse-contents/IIT-KANPUR/microcontrollers/micro/ui/Course_home2_11.htm

fig2.jpg





J-bot은 시리얼 통신을 어떻게 활용하는가?



J-bot은 아래와 같이 아두이노와 라즈베리파이를 활용합니다.

아두이노

  • 내부적으로는 서보모터를 제어하고 그리고 초음파 센서의 거리값을 수집

  • 1초에 10번 모터의 각도와 거리값을 라즈베리파이에게 전송합니다.

  • 라즈베리파이에서 모터를 몇 도로 동작하라는 신호를 받으면 모터 제어

라즈베리파이


  • 아두이노로부터 받는 데이터를 활용하여 여러 동작 수행

  • 라즈베리파이에서 아두이노로 원할 때 명령을 내릴 수 있습니다.


코드를 보면서 이야기 합시다.

먼저 아두이노에서 송수신을 어떻게 하는지 보겠습니다.

아두이노에서 라즈베리파이로 센서 데이터를 보내는 코드는 아래와 같습니다.

image.png

아두이노에서 라즈베리파이로 보내는 센서 데이터는 아래의 형식으로 표현합니다.

초음파 거리 (cm) * 서보 모터 각도 (deg)

50 * 40

위와 같은 데이터라면 거리 50cm, 각도 40도라는 의미입니다.

위에는 제가 단순하게 데이터 포맷을 정한 것입니다.

(필요하다면 데이터 길이, 데이터, 데이터 검증 byte 등으로 구성하여 보내기도 합니다.)

아두이노가 라즈베리파이로부터 데이터를 받아 처리하는 코드는 아래와 같습니다.

image.png

위 코드는 라즈베리파이가 ‘모터를 몇도로 회전하라’ 라는 데이터를 보내는데, 그 데이터를 받는 부분입니다.

위의 코드에서 매 루프마다 serial.read를 통해 입력되는 문자가 있는지 체크합니다.

문자가 있을 경우, inputString이라는 문자열에 추가합니다.

만약 입력된 문자가 ‘*’일 경우, 문자열이 끝나는 것으로 생각합니다.

그리고 * 앞의 데이터를 추출하고, goal_servo_val에 넣습니다.


라즈베리파이에서 아두이노로부터 센서 데이터를 받는 코드는 아래와 같습니다.

image.png

SerialComm은 시리얼 통신을위한 모듈입니다. 초기화, 읽기, 쓰기 함수를 만들었습니다.

init함수에서 먼저 아두이노와 연결되는 드라이버를 초기화합니다.

그리고 read 함수는 아두이노에서 보낸 데이터에서 거리와 각도값을 추출합니다.

*을 구분자로 활용하여 첫번째 데이터가 거리, 두번째 데이터가 각도라는것을 알 수 있고 변수에 저장합니다.

motorcontrol 함수는 아두이노에게 회전할 각도를 전송하는 함수입니다.

main에서는 serial_comm의 객체를 만들고

쓰레드를 하나 만들어서 serial.read를 반복적으로 호출합니다.


결론

라즈베리파이 하나만으로 시스템을 구성하는게 아니라 두개를 같이 쓴 이유는

두개의 역할이 다르며, 각자의 역할을 하는게 효율적이기 때문입니다.

라즈베리파이는 통신, 영상처리, 음성처리 등을 하고

아두이노는 반복적이고 실시간으로 수행해야하는 작업 ( 모터를 제어하는 것이나 10hz로 센서 데이터를 수집)을 하고요!

여기까지해서 시리얼 통신에 대해 적어봤는데요.

읽어주셔서 감사합니다.


This page is synchronized from the post: ‘[IoT Project] 아두이노와 라즈베리파이 간의 시리얼 통신’

[IoT Project] 나만의 비서 로봇, J-bot 만들고 있습니다.

로봇 소개

오늘 소개할 로봇은 나만의 비서 로봇!

제 이름이 Jacob이라.. 이름은 J-bot이라고 지었습니다.

image.png

아직은 볼품없지만, 외형도 갖추고 기능도 하나하나 넣다보면

멋진 로봇이 될거라 믿습니다.


설명

지난 글들에서 google-aiy-voice-kit 를 구매하고 가지고 논 것으로 글을 썼습니다.
google-aiy-voice-kit 활용기
google-aiy-voice-kit 셋팅

이어서 이 로봇도 voice-kit를 활용하여 개발하고자 합니다.

먼저 동영상부터 보시죠!

https://www.youtube.com/watch?v=Xv3_kfhknEM

구현한 기능은 아래와 같습니다.

  • Google assistance 연동
  • 나만의 명령 수행
  • 카메라 촬영
  • 초음파 센서로 가까이 오면 로봇 팔 움직이기
  • 대답 후에 팔 흔들기

구현

하드웨어는 아래와 같이 구성돼있습니다.

  • Voice-kit with 라즈베리파이
  • 카메라
  • Arduino
  • 초음파 센서
  • 서보모터

image.png

코드는 아래와 같습니다.

  • main.py
  • serial_comm.py : arduino와 serial 통신 하는 부분
  • vision.camera.py : camera 이미지 가져오는 부분
  • vision.face_detector.py : face detector하는 부분, 라즈베리파이에서는 너무 느리다.
  • j-bot-arduino : 아두이노에서 모터와 초음파센서를 활용하는 부분

아래 저장소에 업데이트하고 있습니다.
https://github.com/passionbull/J-bot

몇 개 중요한 부분에 대해서만 설명을 하자면..


PC

PC에서 중요한 부분은 아래의 루프이다.

    with aiy.audio.get_recorder():
        while True:
            status_ui.status('ready')
            print('Press the button and speak')
            button.wait_for_press()
            status_ui.status('listening')
            # text is what I said (speech to text)
            # audio is answer of assistant
            text, audio = assistant.recognize()
            local, answer = local_commands(text)
            if local is False:
                aiy.audio.play_audio(audio, assistant.get_volume())
            sc1.action()
  • 버튼이 눌리고 나서 음성을 인식한다.
  • 인식한 음성이 local 명령어인지 체크한다.
  • 아니라면 google_assistant의 답변을 재생한다.
  • 다음으로 아두이노에게 팔을 흔들라고 명령한다.

아두이노

아두이노는 pc로부터 특정 신호를 받을 때, 모터를 제어해야한다.

void setup() {
  Serial.begin(9600);
  leftArm.attach(9);  // attaches the servo on pin 9 to the servo object
  int ultraEvent = timer.every(50, doUltra, (void*)0); //do function per 1sec
  int motorEvent = timer.every(10, doMotor, (void*)0);
  inputString.reserve(200);
  servo_val = 90;
  goal_servo_val = 90;
}
  • 또한, 주기적으로 pc에게 거리 정보와 모터의 각도를 전송한다.
  • 아래 코드는 이를 위한 셋업 코드이다.
  • timer를 사용하여 주기적으로 모터 제어와, 초음파 센서 거리 측정을 수행한다.
  • 시리얼 통신 초기화, PC로부터 데이터를 받는 부분, 보내는 부분 모두 필요하다.

계획

  • 3D 프린터로 외형 제작
  • 로봇 얼굴 달기
  • 근처에 사람이 오면, 푸쉬 알림

관심이 있으신 분들은 언제든 환영입니다.

제가 외형 설계에는 좀 약한 부분이라..

혹시나 로봇의 외형을 해보고 싶으신 분들 있다면 너무 좋을것 같아요!

이 로봇을 만들기 위해 필요한 재료는 voice-kit이 전부입니다!

많은 관심 부탁드립니다!!


This page is synchronized from the post: ‘[IoT Project] 나만의 비서 로봇, J-bot 만들고 있습니다.’

[IoT Project] Google AIY Voice Kit Setting

AIY Voice Kit 셋팅 관련 기록

AIY Voice Kit 활용이라는 글에서 AIY Kit의 하드웨어, 소프트웨어를 셋팅하였습니다.

주요 소자들을 끼고 박스에 잘 넣은 다음,

Google AIY Project에서 제공해주는 라즈비안 OS 이미지를 SD카드에 넣어줍니다.

이제 추가적으로 필요한 여러 셋팅들을 설치해야하는데요.

제가 라즈베리파이에 여러가지 셋팅한 것을 기록해놨습니다.

많은 도움이 됐으면 좋겠습니다!


라즈베리파이 카메라를 이용한 사진 촬영



  • raspistill -w 1640 -h 922 -o image.jpg

  • raspistill -o image.jpg -hf -vf -w 320 -h 240 //상하반전






AIY Voice Kit 한국어 설정


/home/pi/AIY-projects-python/src/aiy/i18n.py

_DEFAULT_LANGUAGECODE = ‘ko-KR’ 로 바꾼다.

<img class=”alignnone size-full wp-image-63” src=”http://45.76.217.116/wordpress/wp-content/uploads/2018/06/i18n
수정_한국어.png” alt=”” width=”633” height=”280” />


  • 한국어 설정을 해도 구글 어시스턴트 핫키는 안되는 것 같다. 확인 해보기


raspberry pi 한국어 설치


sudo apt-get install ibus ibus-hangul fonts-unfonts-core




Raspberrypi 화면 설정


sudo nano /boot/config.txt

VNC로 접속을 할 때, 적절한 해상도를 설정하지 않으면 불편하다.

hdmi_mode=16 –> 1080p







Text to speech 설치


text to speech를 하는 여러가지 방법이 있다.
1. Google cloud text to speech


  • voice에 대한 여러 설정이 가능하다.

  • 아직 한국어는 여성음성만 된다. (Male로 설정해봤으나 안됨.)

  • 400만 쿼리 요청에 대해 무료

  • 인증키 발급 필요하다.


설치 방법

  • pip3 install –upgrade google-cloud-texttospeech

  • pip3 uninstall protobuf

  • sudo pip3 install protobuf==3.5.2

  • sudo apt-get install mpg321



image.png


2. Google speech


  • google에서 제공하는 서비스

  • 따로 인증키가 필요없음

  • 무료임

  • 한국어 지원됨


설치 방법

  • sudo pip3 install google_speech

  • sudo apt-get install sox libsox-fmt-mp3




3. AIY Kit 자체 지원


  • aiy.audio.say(‘Hello’)

  • 한국어 지원 X






자동 실행



  • sudo nano /etc/systemd/system/assist.service

  • sudo systemctl enable assist.service

  • sudo systemctl start assist.service








Github 코드 업데이트

https://github.com/passionbull/J-bot

이 저장소에서 확인하실 수 있습니다.


This page is synchronized from the post: ‘[IoT Project] Google AIY Voice Kit Setting’

Google AIY Voicekit - Do-it-yourself intelligent speaker

Google AIY Voicekit

Do-it-yourself intelligent speaker


Screenshots

53416295_Alt01.jpg
1_GSwbU8qR4dq9OG4_2Azypw.png
images.jpg

Hunter’s comment

Hello everyone!

I want to tell you about Google AIY Voicekit.

This kit helps you to build your own intelligent speaker such as Amazon echo, Google home.

With the Google Assistant built-in, build an intelligent speaker that can understand you, and respond when you ask it a question or tell it to do something.

Let`s create your own projects that use voice recognition to control robots, music, games, and more.

There are some examples using Voicekit.

https://www.youtube.com/watch?v=XYj_TAf-4-8

https://www.youtube.com/watch?v=GqQajvZq08E

Thank you very much!!


https://aiyprojects.withgoogle.com/voice/


Contributors

Hunter: @jacobyu



Steemhunt.com

This is posted on Steemhunt - A place where you can dig products and earn STEEM.
View on Steemhunt.com

This page is synchronized from the post: ‘Google AIY Voicekit - Do-it-yourself intelligent speaker’

[IoT Project] Google AIY Voice Kit 활용기

안녕하세요!!

AIY Voice kit라고 아시나요?

image.png

AIY는 artificial intelligence it yourself의 줄임말로

손쉽게 인공지능 (AI)를 자기만의 작품에 적용해봐라! 라는 의미인 것 같습니다.

Do it yourself for AI!!

Google에서 소프트웨어 제공하고, 쉽게 따라할 수 있도록 개발 키트도 판매하고 있습니다.

https://steemit.com/kr/@jacobyu/aiy-ai-for-diy

이전 글에서 한번 사봐야지 생각했었는데
이제야 구매했습니다.

6개월 전이군요.. ㅜㅜ

동영상

저는 AIY Kit를 활용하여 나만의 로봇을 만드는 것이 목표입니다.

  • Google assistant를 활용한 여러 서비스
  • 목소리로 명령
  • 추가적인 센서 & 모터 부착 및 제어
  • 네비게이션 시스템
  • 3D 프린터로 외형 제작

먼저 동영상을 볼까요?

https://www.youtube.com/watch?v=hzR-1F338t4

농담이 인상깊었습니다.

그리고 쉽게 캘린더에 일정을 등록할 수 있습니다.

추가적으로 특정 키워드에 따른 동작을 수행하도록 할 수 있습니다.

IP를 말해줘는 제가 등록한 명령입니다.

추후, 사진찍어달라던데.. 스팀잇 최신 글 제목 읽어줘라던지..

여러 명령을 추가할 수 있습니다.

이제 조립부터 설치까지 간단히 설명을 해보겠습니다.


조립

image.png

image.png

책상이 좁아 바닥에서 조립을 했습니다.

노트북을 펴놓고 사이트를 보면서 했습니다.

https://aiyprojects.withgoogle.com/voice-v1/

제가 산 건 V1 버젼인데요.

이 버젼은 라즈베리파이 B3와 호환됩니다.

image.png

보이스 킷 안에는 아래와 같은 주요 부품이 있습니다.

  • 마이크 모듈
  • 스피커
  • Voice Hat 추가 보드

주어진 부품들을 라즈베리파이에 부착을 하면

위의 사진과 같습니다.

저는 추가적으로 카메라도 부착하였습니다.

다음에 하드보드지? 카드보드지?를 접은 다음에..

잘 넣으면 끝입니다..

많이 생략이 됐나요? 사진을 많이 찍었어야 했는데..

짜잔!! 금방 완성해버렸습니다!!

image.png

위에 마이크가 부착되어있고
왼쪽에 스피커, 오른쪽에 카메라를 부착하였습니다.

Youtube에 조립 동영상도 많아서 잘 모르겠을 때 봤습니다.
https://www.youtube.com/watch?v=jQK0VDWIzus


소프트웨어

하드웨어를 완성했다면 이제 소프트웨어입니다.

Google AIY Kit project에서 제공해주는 라즈베리파이 OS 이미지를 다운받습니다.
https://github.com/google/aiyprojects-raspbian/releases

다운 받은 이미지를 micro sd카드에 넣어야합니다.
전 win32diskImager를 사용하여 이미지를 넣었습니다.


코드 동작

위에까지 했다면 준비는 끝났습니다.

AIY-projects-python/src/examples/voice 폴더에 여러 예제가 있습니다.
바로 동작시켜볼 수 있습니다.

image.png

예제로는 google assistant, cloud speech가 있습니다.

예제의 경우 모두 영어로만 동작하기 때문에 한국어로 동작시키려면

약간의 설정 변경이 필요합니다.

자세한 내용은 글이 길어져

다음 글에 이어서 작성하겠습니다.


결론

사용자들이 쉽게 사용할 수 있게 해놨습니다.

음성처리, 딥러닝 등에 대해 잘 몰라도
직접 개발을 해볼 수 있게 해주는 키트입니다.

지금까지 키보드, 마우스로 입력을 받았다면
구글이 음성인식을 잘해놔서
이제는 음성으로도 입력을 쉽게 받을 수 있다를 보여주는 것 같습니다.

여기에 이제
아두이노도 붙이고
카메라를 이용한 영상처리도 해보고
나만의 로봇을 하나 만들어보고자 합니다.

감사합니다!!


This page is synchronized from the post: ‘[IoT Project] Google AIY Voice Kit 활용기’

[일기] 웹툰 '덴마' 피규어, 지로, 가야, 롯

image.png

오늘 피규어가 집에 도착하였는데, 기념으로 글을 씁니다.

위의 사진을 보고 아시는 분들이 있을까요?

위의 피규어들은 덴마라는 웹툰에서 등장하는 인물들입니다.

피규어들의 이름은 왼쪽부터 순서대로

지로, 가야, 롯입니다.

각 피규어가 300개 한정판이라고 해서 구매했는데 퀄리티가 좋습니다!

내 돈 주고 산 첫 피규어들!! 만족합니다.

image.png


덴마를 왜 좋아할까?

개인적인 생각으로는..

덴마는 흡입력 있는 스토리, 개성있는 주인공들, 훌륭한 그림

개그와 사랑과 모험과 추리 등등 많은 것을 포함하고 있습니다.

좋아하는 편은 지로와 이델, 고드 이야기인데

스포가 되지 않는 선에서 한마디로 적어보자면..

지로의 힘든 일들을 이겨내고 멋진 놈이 됐다.
이델의 지구 끝까지 사랑을 찾아서..
고드의 사랑 이야기도 재밌습니다.

내가 좋아하는 장면!

image.png

과거의 나에게 고생했다. 너가 잘 버텨왔기에 지금의 내가 있다.

라고 말하는 장면입니다.

뭉클했습니다.


한번쯤 볼만한 웹툰!

덴마!!

여러분에게 추천해요!


This page is synchronized from the post: ‘[일기] 웹툰 ‘’덴마’’ 피규어, 지로, 가야, 롯’

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×