[MAKER] 디지털 카메라 만들기 (1)
뭔가 계속 만들어보고 싶은 욕구가 샘솟는데 뭘 만들지? 하고 생각하다가 디지털 카메라를 만들어보기로 했다!
- 목표: 전/후면 카메라를 전환하면서, 본체에 붙어 있는 화면으로 보고 촬영하는 5인치 디지털 카메라
1단계 - 카메라 한 개로 실시간 화면을 보고, 촬영 버튼을 눌러 사진을 microSD 카드에 저장하
2단계 - 두 번째 카메라 추가(전면 카메라)하고, 전·후면 카메라를 전환하여 촬영할 수 있도록 하
3단계 - 버튼과 배선을 정리하기 위한 보조 PCB를 설계하고 제작하
4단계 - 3D 프린터로 케이스를 제작하고, 휴대용 전원을 추가하기
"1단계 - 기본 촬영 기능 구현" 을 세분화하면 다음과 같다.
1-1. 필요한 부품을 선정하고, 부품 간 연결 방식을 확정한다.
1-2. 라즈베리 파이에 운영체제를 설치하고, 개발용 컴퓨터에서 접속할 수 있도록 기본 실행 환경을 구성한다.
1-3. 카메라를 연결하고, 사진 한 장을 촬영하여 microSD 카드에 정상적으로 저장되는지 확인한다.
1-4. 5인치 화면을 연결하고, 카메라의 실시간 영상을 표시한다.
1-5. 브레드보드에 촬영 버튼을 연결하고, 버튼을 한 번 누를 때 입력이 한 번 감지되는지 확인한다.
1-6. 실시간 미리보기, 버튼 입력, 사진 저장 기능을 하나의 프로그램으로 통합한다.
1-7. 촬영 중 상태와 저장 완료 여부를 확인할 수 있는 최소한의 조작 화면을 만든다.
1-8. 전원을 켜면 카메라 프로그램이 자동으로 실행되도록 설정하고, 정상적으로 종료하는 방법을 마련한다.
완료 기준은 개발용 컴퓨터 없이도 본체 화면을 보면서 버튼으로 사진을 촬영하고 저장할 수 있는 것이다.
그럼... 이제 프로젝트를 시작해 보기로 하겠다...
사실 지금 벌려놓은 일 너무 많은데;;ㅋㅋㅋ 수습은 다 언제하지...?
갑자기 다른 주제가 또 재미있어서 이 프로젝트도 중단될 수도 있다;;;;
ADHD의 저주인가.... (필자는 ADHD가 매우 심하다)
#26d5f7
# 1-1 단계 - 부품 선정과 연결 방식 확정
실제 조립 전, 구매할 부품과 연결 방법을 정하는 과정이다.
이 단계의 목표는 구매할 부품의 정확한 모델·수량과 연결에 필요한 케이블을 정하는 것이다.
Raspberry Pi Zero 2 W, 카메라 한 개, 5인치 화면, 물리 촬영 버튼을 기준으로 진행한다.
| 준비물 | 구매할 규격 | 용도 |
| 라즈베리 파이 보드 1개 | Raspberry Pi Zero 2 W (with header) | 운영체제를 실행할 본체 |
| microSD 카드 1개 | JEPID Micro SDCARD UHS-1 32GB | 운영체제 설치 |
| 보드용 전원 장치 1개 | Raspberry Pi 12.5W Micro USB Power Supply (EU) | 보드에 전원 공급 |
| microSD 카드리더기 1개 | 홈플래닛 C타입 USB 3.0 멀티 카드리더기 MSD/SD | 컴퓨터에서 microSD에 운영체제 설치 |
나는 헤더 남땜이 이미 되어있는 본체를 구매했다. 그리고 라즈베리 파이 본사에서 전원 장치 구매하려고 했더니 Vendor가 없다그래서;;; 쿠팡에서 EU 전원 공급 장치를 따로 구매해 주었다...
카드리더기는 분명 좋은 걸로 예전에 샀었는데 친구를 줬나... 암튼 보이지 않아서.....
SD 카드는 256GB 사려다가 일단은 시험용이니 32GB로 구매하였다.
# 1-2 단계 - 운영체제 설치와 기본 실행 환경 구성
SSH는 컴퓨터에서 라즈베리 파이에 접속해 명령을 입력하는 기능이다.
라즈베리 파이에 별도 화변이나 키보드를 연결하지 않아도, 컴퓨터에서 프로그램을 설치하고 실행할 수 있다.
일단 나는 Window 컴퓨터 기준으로 설치를 진행하고, Mac에서 달라지는 부분은 함께 기술하겠다.
사용할 기기 이름은 "pch-camera", 사용자 이름은 "chngwn"으로 통일하겠다.
진행 과정은 다음과 같다.
1. Zero 2 WH 보드, microSD 카드, 카드리더기, micro USB 전원 장치를 준비한다. (보드 전원 연결은 X)
2. 사용할 Wi-Fi 이름과 비밀번호를 확인한다.
3. 컴퓨터에 Raspberry Pi Imager를 설치한다.
Imager는 운영체제를 내려받아서 microSD 카드에 기록해 주는 프로그램이다.
4. microSD 카드를 카드리더기를 사용하여 컴퓨터에 연결한다.
운영체제를 설치하면 카드 안의 기존 자료가 지워지므로, 필요한 파일이 있다면 먼저 컴퓨터로 복사한다.
5. Raspberry Pi Imager를 실행한다.
현재 Imager는 대체로 기기 선택 → 운영체제 선택 → 저장장치 선택 → 사용자 설정 → 기록 순서로 진행한다.
6. 기기 선택 화면 [Device] 에서 Rasberry Pi Zero 2 W를 선택한다. (Zero 2 WH도 동일)
7. 운영체제로 Rasberry Pi OS Lite (32-bit) 를 선택한다.
* 바로 보이지 않으면 Rasberry Pi OS (other) 처럼 추가 버전을 모아 놓은 항목을 연다.
이번에는 32비트 Lite 버전을 기준으로 진행한다. Lite는 바탕화면이 없는 버전이며, 공식 32비트 Raspberry Pi OS는 Zero 2 W에서도 사용할 수 있다.
8. 설치 대상 저장장치 [Storage] 화면에서 microSD 카드를 선택한다.
9. 사용자 설정 화면에서 기기 이름을 입력한다.
[Customisation] 의 [Hostname] 항목에 "pch-camera"를 입력한다. 이것은 네트워크에서 라즈베리 파이를 구분하는 이름이다. 입력란에는 "pch-camera"만 적고, .local 은 붙이지 않는다.
10. 지역과 시간대를 설정한다.
[Localisation] 에서 한국·서울을선택하고,시간대가 Asia/Seoul 인지 확인한다. Wi-Fi 국가를 따로 선택하는 항목이 있다면 KR 또는 South Korea로 설정한다.
11. 라즈베리 파이에 사용할 계정을 만든다.
이 계정은 라즈베리 파이에 접속할 때 사용할 계정이다. [User] 화면에서 다음과 같이 입력한다.
[Username] - chngwn / [Password] - 직접 정한 비밀번호 / [Confirm password] - 같은 비밀번호를 다시 입력
12. Wi-Fi 정보를 입력한다.
Wi-Fi 화면의 [SSID] 또는 네트워크 이름 칸에 2번에서 확인한 Wi-Fi 이름을 입력한다.
비밀번호 칸에는 그 Wi-Fi의 비밀번호를 입력한다.
13. SSH를 켜고, 비밀번호로 접속하도록 설정한다.
[Remote Acces] 화면에서 [Enable SSH] - 켬 / [인증 방식] - Use password authentication 으로 선택한다.
이렇게 설정하면 이후 "chngwn" 라는 사용자 이름과 11번에서 정한 비밀번호로 접속할 수 있다.
14. Raspberry Pi Connect 설정은 건너뛴다.
이번에는 같은 네트워크 안에서 SSH로 접속하는 방식으로 진행한다.
15. 설정을 확인하고 운영체제를 기록한다.
최종 요약 화면에서 기기, 운영체제, microSD 카드, 사용자 설정을 확인한다.
[write] 를 누르고, 선택한 카드의 데이터가 지워진다는 안내를 확인한 뒤 기록을 시작한다. 다운로드/기록/검증이 모두 끝날 때까지 카드 리더기를 빼지 않는다.
16. 완료된 microSD 카드를 컴퓨터에서 꺼낸다.
완료 화면이 나오면 프로그램을 종료한다. 자동으로 꺼내지지 않았다면 컴퓨터의 '안전하게 제거' 기능을 사용한 뒤 카드 리더기를 분리한다. 설치 후 Windows가 카드를 포멧하라고 안내하면 취소한다. 라즈베리 파이용으로 설치된 카드를 다시 포멧하지 않는다.
17. microSD 카드를 Zero 2 W에 넣는다.
보드는 금속 물체가 닿지 않는 평평한 곳에 놓는다.
18. 전원 장치를 PWR IN 단자에 연결한다.
19. 첫 부팅이 끝날 때까지 약 5분 정도 기다린다.
처음에는 저장공간 설정과 사용자 설정 적용 때문에 시간이 걸릴 수 있다. 기다리는 동안 전원을 반복해서 뽑았다 꽂지 않는다. 5분은 첫 접속을 시도하기 위한 대략적인 대기 시간이며, 카드와 환경에 따라 달라질 수 있다.
20. 개발용 컴퓨터를 같은 Wi-Fi에 연결한다.
21. 컴퓨터에서 명령 입력 창을 연다. (Windows는 PowerShell, Mac에서는 터미널 앱)
22. 아래의 SSH 접속 명령을 입력한다.
ssh 사용자_이름@접속할_라즈베리_파이의_주소 (ssh chngwn@pch-camera.local)
23. 처음 접속하는 기기인지 묻는 안내를 확인한다.
"Are you sure you want to continue connecting (yes/no/[fingerprint])?" 라고 뜨면 "yes"를 입력한다.
24. 라즈베리 파이 계정 비밀번호를 입력한다.
"chngwn@pch-camera.local's password:" 라고 나오면 11번에서 만든 비밀번호를 입력하고 [Enter]를 누른다.
비밀번호를 입력해도 글자나 별표가 표시되지 않는 것이 정상이다.
25. 접속에 성공했는지 확인한다.
로그인 후 "maker@pch-camera:~ $"와 같은 문구가 보이면 성공이다.
이제 이 창에서 입력하는 명령은 라즈베리 파이에서 실행된다.
26. 간단한 명령을 하나씩 실행한다.
- "whoami" 명령을 입력하고 현재 사용자 이름(chngwn)이 나오는지 확인한다.
- "hostname" 명령을 입력하고 기기이름(pch-camera)이 나오는지 확인한다.
- "df -h /" 명령을 입력하면 카드의 저장공간 사용량과 남은 공간이 표시된다.
운영체제가 공간 일부를 사용하므로 남은 공간이 카드의 용량보다 작은 것은 정상이다.
27. "sudo poweroff" 명령을 입력하여 종료 명령을 실행한다.
비밀번호를 요구하면 라즈베리 파이 계정 비밀번호를 입력한다. 종료 과정에서 SSH 연결이 끊어지는 것은 정상이다.
28. 종료가 마무리된 후 전원을 분리한다.
30초 정도 기다리고 보드의 LED 활동이 멈춘 것을 확인한 뒤 전우너 케이블을 분리한다.
다음에 사용할 때는 전원을 연결하고 부팅을 기다린 후, 컴퓨터에서 다시 "ssh chngwn@pch-camera.local" 명령으로 접속한다.
아... 진짜 힘드네....
접속이 되지 않을 때는 오류 문구에 따라 확인한다.
| 표시되는 오류 | 먼저 확인할 내용 |
| Could not resolve hostname | pch-camera.local 의 철자를 확인한다. 이름 검색만 실패한 경우 공유기 관리 화면의 연결 기기 목록에서 pch-camera의 IP 주소를 찾아 ssh chngwn@실제IP주소 로 접속한다. |
| Connection timed out | 부팅 대기 시간, Wi-Fi 정보, 같은 네트워크인지 확인한다. 게스트 네트워크의 기기 간 통신 제한도 확인한다. |
| Connection refused | 접속 대상이 맞는지와 Imager에서 Enable SSH를 켰는지 확인한다. |
| Permission denied | 사용자 이름과 라즈베리 파이 계정 비밀번호를 확인한다. Wi-Fi 비밀번호와 구분한다. |
| Windows에서 ssh 명령을 찾을 수 없다고 나옴 | Windows 설정에서 '선택적 기능'을 검색하고 OpenSSH 클라이언트를 설치한 후 PowerShell을 다시 연다. |
하.. 힘드니깐 오늘은 여기까지....