[라즈베리파이 강좌] 안드로이드 씽스(Android Things) 시작하기 - 1.1 시리얼로 초기화하기

알도 2017-11-15 (수) 17:47 7년전 6053  


 

라즈베리파이 강좌

  안드로이드 씽스(Android Things) 시작하기 - 1.1 시리얼로 초기화하기






  안녕하세요. 메카솔루션 알도입니다.

  오늘은 안드로이드 씽스(Android Things)에 대해서 알아보도록 하겠습니다.


  안드로이드 씽스는 안드로이드 운영체제를 기반으로 한 사물 인터넷 플렛폼입니다. 안드로이드 운영체제나 리눅스 기반의 라즈비안과 다른 점이라면 안드로이드 씽스는 컴퓨터가 아닌 장치 자체를 개발하는 것이 목적이기 때문에, 마치 아두이노처럼 하나의 앱(프로그램)만 실행한다는 점입니다. 컴퓨터로 치면, 여러분들이 컴퓨터 전원을 넣었는데 작업표시줄도 바탕화면도 없이 오직 크롬 브라우져만 실행되고 있는 것입니다. 실행할 앱 하나에만 모든 자원을 집중하기 때문 라즈베리파이의 자원을 최대한 활용할 수 있다는 것입니다.


  안드로이드 씽스는 라즈베리파이만을 위한 것이 아니라 인텔의 에디슨이나 줄, NXP사의 i.MX 시리즈 같은 파트너 사들의 싱글보드 컴퓨터들도 지원하고 있습니다. 지금은 개발 중이지만, 나중에 완성되면, 더 많은 싱글 보드 컴퓨터들을 지원할 것 같습니다. 안드로이드 씽스의 궁극적인 목적은 안드로이드 앱을 개발하듯이 장치를 개발할 수 있게 해주는 것입니다. 안드로이드 씽스 홈페이지에도 보면 처음 부분에 나오는 말이 "당신이 앱을 개발할 수 있다면, 장치도 개발할 수 있습니다.(If you can build an app, you can build a device)"입니다.



   이러한 부분에서 보면 라즈베리파이로 분류하기보다는 안드로이드 앱 개발로 분류되는 것이 더 맞습니다만, 아무리 구글에서 한다고는 해도 아직 개발 중(현재 DP5:Developer Preview 5)이고, 과거 구글이 시도했던 사물 인터넷 플랫폼 '브릴로'처럼 언제 엎어질(?)지 모르기 때문에 당장은 소개만 하는 느낌으로 라즈베리파이 쪽에 넣었씁니다. 또한 라즈베리파이를 리눅스 컴퓨터로 활용하기보다는 아두이노보다 강력한 사물 인터넷 장치로 이용하고자 하시는 분들에게는 더 이상 리눅스 터미널에서 허우적대지 않아도 되는 희소식이 될 것 같습니다.


 


 

     시리얼로 초기화하기


  지난 번에는 안드로이드 씽스 시스템 이미지를 굽고 이 이미지로 라즈베리파이를 부팅하기까지 해봤습니다. 이번 시간에는 시리얼 통신을 이용하여 안드로이드 씽스를 WiFi에 연결하여 후에 안드로이드 스튜디오에서 프로젝트를 업로드 할 준비를 하는데까지 하도록 하겠습니다.



  라즈베리파이를 오래 사용해신 본 분들도 처음 듣거나, 알아도 안해본 것이 시리얼 통신입니다. 와이파이가 되는데 누가 굳이 번거롭게 시리얼 통신을 하려고 할까요? 하지만 시리얼 통신을 활용하면 세팅되지 않은 라즈베리파이에 SSH 접속을하여, 모니터와 키보드/마우스 없이 라즈베리파이를 시작할 수 있습니다.

  우선 FTDI라는 USB to 시리얼 컨버터가 필요합니다. 여기서 중요한 개념이 Logic 레벨이라 하여 대 HIGH의 기준이 3.3V인 것과 5V인 것이 있습니다. 5V이면 정확히 5V일 수가 없으니까, 보통 3.5V 이상이면 HIGH이다 라고 인식하여 3.3V가 들어오면 HIGH도 LOW도 아닌 것이 되어 통신이 안됩니다. 통신이 안될 뿐더러 3.3V 쪽에서는 5V의 전압과 전류를 못 버텨서 칩이 타버릴 수도 있습니다.

  라즈베리파이의 GPIO는 3.3V이기 때문에 절대로 5V를 직접 연결하면 안되는데, 어째서인지 아두이노에 내장된 시리얼 컨버터를 이용하여 연결을 하였을 때 통신도 되고 라즈베리파이가 타버리지도 않았습니다. 결론적인 것만 말씀드리면, 절대 라즈베리파이의 GPIO에 5V를 입력하면 안됩니다. 반드시 3.3V 시리얼 통신을 하셔야됩니다. 하지만 장시간 대용량 통신을 하지 않고, 초기 세팅에만 사용한다면 크게 문제가 되지는 않는다라고 말씀드리겠습니다. 아두이노는 있는데, 3.3V 컨버터가 없고, 굳이 3.3.3V 컨버터를 구입하는데 돈과 시간을 소모하고 싶으시지 않다면 스스로 책임을 지시고 아두이노를 사용하시면 됩니다. 혼란의 여지가 있기 때문에, 아두이노와 연결된 사진은 올리지 않도록 하겠습니다.



라즈베리파이와 시리얼 컨버터의 연결

  SD카드를 라즈베리파이에 연결하고, 시리얼 컨버터와 라즈베리파이를 아래와 같이 연결합니다.


 


  시리얼 포트를 연결할 때, GND는 GND, 전원이 필요할 경우 VCC는 VCC에 연결(3.3V인지 5V)인지 주의해서)하면됩니다. 헷깔리기 쉬운 것이, 송신과 수신이 TX, RX인데, 라즈베리파이의 TX는 라즈베리파이가 신호를 보내는 선이니, 컨버터의 RX에 연결하여야 합니다. 마찬가지로 라즈베리파이의 RX는 라즈베리파이가 신호를 받는 선이니, 컨버터의 TX에 연결하여야 합니다. 라즈베리파이의 GPIO 배치는 아래와 같습니다.


 


  오른쪽 위부분부터 6이 GND, 8이 TX, 10이 RX입니다.


  아두이노의 경우 :

  아두이노의 모서리에 표시되어 있는 TX, RX는 아두이노 기준이고, 아두이노의 컨버터 기준은 반대입니다. 그러므로 아두이노를 시리얼 컨버터로 이용하고자 할 때는 TX는 TX에, RX는 RX에 연결하여야 합니다.


  아직 컴퓨터에서 Putty를 통해 시리얼 연결을 하기 전에는 전원을 입력하지 않습니다.



시리얼을 통한 연결

  컴퓨터로 돌아와서 Putty를 켭니다. 없다면 여기로 가서 알맞은 버전의 Putty를 받거나 아래 링크를 통해 바로 다운 받아서 설치를 합니다.

    Putty 64-bit 0.70버전 다운받기

  다운 받으신 분들은 설치를 하고 Putty를 실행합니다.



  먼저 Connection type을 Serial로 선택하고, 속도는 115200으로 바꿔줍니다. 시리얼 컨버터의 포트번호는 아래와 같이 장치 관리자의 포트에 들어가서 확인합니다.
 


  저는 11번 포트라서 COM 11로 했습니다. 빨간줄 3부분을 모두 설정했으면 Open을 누르고 라즈베리파이에 전원을 연결합니다. 지금까지 잘 따라했다면 다음과 같은 화면이 뜰 것입니다.


부팅 초기입니다.

부팅 후입니다.
 



WiFi 연결 설정하기

  시리얼 통신이 연결된 상태에서 다음과 같이 명령을 입력합니다.

am startservice \
  -n com.google.wifisetup/.WifiSetupService \
  -a WifiSetupService.Connect \
  -e ssid <공유기 이름> \
  -e passphrase <공유기 비밀번호>


  명령을 입력하면 다음과 같은 응답이 뜹니다.



  와이파이가 설정만 된 것이지 아직 접속된 것이 아닙니다. 다음 명령을 통해서 와이파이에 접속합니다.


logcat -d | grep Wifi


  명령을 입력하면 다음과 같은 응답이 뜹니다.




  굉장히 많은 내용이 터미널에 뜨는데 중간에(위 캡처에서는 맨 윗부분 같이) 다음 내용이 뜨면 접속이 된 것입니다.


WifiConfigureator : Successfully connected to 공유기 이름


  안드로이드 씽스가 모니터에 연결되어있다면 다음과 같은 화면을 볼 수 있습니다. 

 


  이제 안드로이드 스튜디오를 통해 앱을 업로드할 준비가 되었습니다.



메이크쉐어 PC버전 로그인
로그인 해주세요.

회원가입

쪽지

포인트

스크랩
기초강좌(배우고)
부품사용법(익히고)
프로젝트(공유하고)
게시판
메이크쉐어 PC버전 로그인