죄송합니다. 새로운 방법으로 레이아웃을 했는데, 모바일에서는 보기는 불편하실 수 있습니다.
라즈베리파이 강좌
모니터 없이 시작하기 - 1. 시리얼 통신을 통한 방법
안녕하세요. 메카솔루션 알도입니다.
오늘은 라즈베리파이를 모니터 없이 시작하는 방법을 알아보겠습니다.
처음 라즈베리파이를 구입했을 때 집에 모니터와 키보드/마우스가 없어서 시작에 어려움을 겪거나 계속 사용했음에도 새 이미지를 구워서 초기 세팅을 할 때,무엇보다 책상 위에 라즈베리파이를 위한 키보드/마우스가 자리를 차지하고, 원 컴퓨터의 그것과 헷깔리는 등 에로 사항이 다소 발생하게 됩니다.
그래서 모니터 없이 라즈베리파이를 시작하는 방법을 정리해 보았습니다. 먼저 기본 준비는 운영체제 설치하기를 참조하시기 바랍니다.
리눅스나 애플 컴퓨터 사용자는 이런 방법이 전혀 필요 없으니 이 글의 마지막 부분을 보신 후, SSH 활성화와 터미널을 통한 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 컨버터를 구입하는데 돈과 시간을 소모하고 싶으시지 않다면 스스로 책임을 지시고 아두이노를 사용하시면 됩니다. 혼란의 여지가 있기 때문에, 아두이노와 연결된 사진은 올리지 않도록 하겠습니다.
시리얼 Enable
서론이 길었네요. 이제 시작을 하도록 하겠습니다. 운영체제 설치하기를 참고하여 이미지를 굽는 부분까지 하셨다면, 시리얼 통신을 할 수 있도록 시리얼 통신을 Enable 시켜줘야 합니다. SD카드에 들어가서 config.txt. 파일을 열고 맨 마지막에
enable_uart=1
을 복사해서 붙여넣습니다. 저장하고 닫아줍니다.
SSH Enable
이제 SSH를 Enable 시켜주겠습니다. Raspi-config를 통하지 않고 SSH를 Enable 시켜주는 방법은 바로 SD카드에 확장자와 내용 없이 SSH 파일을 만들어주는 것입니다. 방법은 [보기] - [옵션] - [폴더 및 파일 보기 옵션]에서 [알려진 파일 형식의 파일 확장명 숨기기]가 체크된 것을 풀어줍니다.
텍스트 파일을 만든 후, 확장자 없이 SSH로 이름을 바꿔줍니다. SD카드를 안전하게 제거고 라즈베리파이에 꽂아 줍니다.
라즈베리파이와 시리얼 컨버터의 연결
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를 받거나 아래 링크를 통해 바로 다운 받아서 설치를 합니다.
먼저 Connection type을 Serial로 선택하고, 속도는 115200으로 바꿔줍니다. 시리얼 컨버터의 포트번호는 아래와 같이 장치 관리자의 포트에 들어가서 확인합니다.
저는 11번 포트라서 COM 11로 했습니다. 빨간줄 3부분을 모두 설정했으면 Open을 누릅니다.
IP를 통한 SSH 연결과 달리 시리얼은 아무리 기다려도 초기 화면이 뜨지 않습니다. 위 화면에서 Enter를 눌러주면, 시리얼 연결이 잘 되었을 경우 아래와 같이 초기화면이 뜹니다.
시리얼 연결에 성공하였습니다.
터미널을 통한 WiFi 연결
언제까지고 시리얼을 사용할 수는 없으니 바로 와이파이 연결을 하도록 하겠습니다. 다음 명령을 실행하여 wpa_supplicant.conf 파일을 엽니다. wpa_supplicant.conf는 와이파이의 이름과 비밀번호에 대한 정보를 갖고 있는 파일입니다.
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
새 이미지의 SD카드일 경우 파일 안에 아무 내용이 없고, 사용하시던 것이라면 기존에 사용하시던 와이파이에 대한 정보가 있을 것입니다. 다음과 같이 연결할 와이파이에 대한 내용을 추가해 줍니다.
network = {
ssid = "<와이파이 이름>"
psk = "<와이파이 비밀번호>"
}
ssid 는 와이파이 이름, psk 는 비밀번호에 해당하는 변수 같은 것이 되겠습니다. 비밀번호가 없다면,
network = {
ssid = "<와이파이 이름>"
key_mgmt = NONE
}
숨겨진 네트워크(공유기 세팅에서 와이파이 이름이 다른 사람에게 뜨지 않게 한 경우)일 경우
network = {
ssid = "<와이파이 이름>"
scan_ssid = 1
psk = "<와이파이 비밀번호>"
}
로 해줍니다.
와이파이와 연결이 되었다면 ifconfig wlan0 명령을 통해 확인할 수 있습니다. 연결이 되지 않았다면 sudo reboot 명령을 통해 재부팅을 해봅니다.
다행히(?)도 재부팅을 한다고 연결이 끊어지지는 않습니다.
ifconfig wlan0를 통해 위와 같이 와이파이접속 여부를 확인합니다. inet addr이 보인다면 제대로 연결된 것입니다.
마무리
라즈베리파이를 이용하고자 하는데, 모니터/키보드/마우스가 없거나, 이동이 잦거나, 라즈베리파이를 여러대 사용하는 등 기타 모니터/키보드/마우스를 통한 초기 세팅이 제한되거나 불편한 분들을 위하여 이번 포스트를 준비하였습니다.
시리얼 통신을 통한 방법의 장점은 어디서든지 라즈베리파이를 모니터 없이 사용할 수 있다는 부분이고, 단점은 시리얼 컨버터가 있어야 한다는 점입니다. 마지막에 터미널에서 wpa_supplicant.conf 파일을 조작하여 와이파이에 접속하였는데, 리눅스나 애플 사용자 분들은 라즈비안 이미지에 직접 접근이 가능하기 때문에, 처음 SD 카드를 구운 때부터 SSH 활성화와 와이파이까지 설정하신 후, 라즈베리파이에 SD카드를 넣은 후 전원을 넣고, ip 대신 raspberrypi.local로 접속하시면 됩니다. 윈도우에서는 라즈비안의 리눅스 이미지에 접근이 안되며, 유틸리티를 써서 접근하더라도 이미지가 손상될 위험이 있기 때문에, 아직은 이 방법을 사용하는데 제한이 있습니다. 만약 이미 사용 중인 라즈베리파이가 있다면, SD카드 리더를 이용해서 와이파이 설정을 할 수도 있습니다. 윈도우에서는 제한이 되기 때문에 이 방법은 나중에 정리하도록 하겠습니다.