
11주차 화요일 ~ 금요일까지 심화실습평가2 가 있었습니다.
심화 실습 평가 2에서, 라즈베리파이를 이용하여 각종 디바이스를 제어하였습니다.
자세한 내용은 제 github에 올려두었습니다.
총 5개의 디바이스를 제어하는 서버/클라이언트 프로그램입니다.
프로세스는 데몬화를 하였고, 디바이스 제어는 모두 동적 라이브러리를 사용하였습니다.
서버는 해당 장치들에 대한 처리를 담당합니다. Daemon 프로세스로 제작하여 터미널 실행과 무관하게 실행되도록 제작합니다.
stdin, stdout, stderr 역시 모두 정리합니다.
원하는 실행 내용을 서버에 요청합니다. 위에서 언급한 LED, 부저, 조도센서, 7segment, AD/DA컨버터를 작동하여 각각의 실행을 할 수 있습니다.
모든 장치는 thread를 이용하여 처리합니다. LED, 부저, 7segment는 모두 detach하여 사용하며, 조도 및 온도 센서는 join으로 값을 받아 처리하도록 되어있습니다.
LED는 가장 기본적인 장치 중 하나입니다. 해당 프로젝트에서는 LED 밝기를 100%, 75%, 50%, 25%, 0%로 구분합니다.
PWM을 이용하여 LED의 밝기를 제어할 수 있습니다.
클라이언트에서 LED의 밝기를 제어할 수 있습니다.
---------- LED Control Mode ----------
Select your mode:
1. LED 100% ON
2. LED 70% ON
3. LED 50% ON
4. LED 25% ON
5. LED OFF
What do you want to see:
클라이언트에서 부저 재생을 할 수 있습니다. 단순한 beep 소리가 아닌, 음악 소리가 나오도록 제작합니다. 클라이언트에서 부저를 끌 수 있습니다.
---------- BUZZER Control Mode ----------
Select your mode:
1. BUZZER ON
2. BUZZER OFF
What do you want to see:
클라이언트에서 조도 센서의 값을 확인할 수 있습니다. 이 때, 조도 센서는 밝기 값을 파악하여 클라이언트에 돌려줍니다.
LED와 연계하여 만약 밝다면 LED를 끄고, 어둡다면 LED를 켤 수 있습니다.
---------- CDS Control Mode ----------
Select your mode:
1. Check CDS value
2. Control LED with CDS
What do you want to see:
디지털 숫자를 표시할 수 있는 장치입니다. 클라이언트에서 요청 시 매 초 9부터 0까지 거꾸로 숫자를 셉니다. 0에 도달하면 동시에 부저를 울립니다.
---------- FND Control Mode ----------
Select Integer Number(0~9):
현재 온도를 측정하여 클라이언트에 반환합니다.
What do you want to see: 5
CURRENT TEMPERATURE: 23 C
클라이언트는 인터럽트 시그널(SIG_INT) 를 제외한 모든 시그널을 무시하도록 합니다.
서버는 Daemon 프로세스로, 터미널 관련 시그널(SIG_HUP) 를 무시하도록 합니다.
동적 라이브러리의 위치를 daemon 프로세스가 되기 전에 잡아두었습니다. lib 폴더 안에 라이브러리를 수정하여 넣으면 서버를 다운하지 않고도 장치 변경 사항을 처리할 수 있습니다.
서버는 daemon 프로세스로 실행되므로 로그를 통해 실행 상태를 확인할 수 있습니다.
journalctl -f -t devicd_control 을 통해 로그를 볼 수 있습니다.
로그에는 클라이언트 연결 여부, 현재 클라이언트에게 입력받은 값 등을 받을 수 있습니다.
로그는 다음과 같이 나옵니다.
Jun 05 12:26:20 jhBerry device_control[13940]: Daemon Process
Jun 05 12:26:31 jhBerry device_control[13940]: server: got connection from 100.69.83.76
Jun 05 12:26:36 jhBerry device_control[13940]: input: 42
Jun 05 12:26:36 jhBerry device_control[13940]: fnd trhead start: inputNUM=2
Jun 05 12:26:39 jhBerry device_control[13940]: input: 50
Jun 05 12:26:39 jhBerry device_control[13940]: temperature thread start
Jun 05 12:26:39 jhBerry device_control[13940]: temperature thread finish
Jun 05 12:26:39 jhBerry device_control[13940]: send temperature data
Jun 05 12:26:43 jhBerry device_control[13940]: input: 11
Jun 05 12:26:43 jhBerry device_control[13940]: led thread start
Jun 05 12:26:43 jhBerry device_control[13940]: led thread detach
Jun 05 12:26:50 jhBerry device_control[13940]: input: 31
Jun 05 12:26:50 jhBerry device_control[13940]: cds thread start
Jun 05 12:26:50 jhBerry device_control[13940]: cds: bright
Jun 05 12:26:50 jhBerry device_control[13940]: send cds data
Jun 05 12:39:13 jhBerry device_control[13940]: input: 0
Jun 05 12:39:13 jhBerry device_control[13940]: client LOGOUT
| [한화비전 VEDA 4기] 13주차 리뷰 (0) | 2026.06.22 |
|---|---|
| [한화비전 VEDA 4기] 12주차 리뷰 (0) | 2026.06.14 |
| [한화비전 VEDA] 10주차 리뷰 (0) | 2026.05.31 |
| [한화비전 VEDA 4기] 9주차 리뷰 (0) | 2026.05.24 |
| [한화비전 VEDA 4기] 8주차 리뷰 (0) | 2026.05.17 |
댓글 영역