1.4 KiB
1.4 KiB
Linux Kernel Driver 기반 시계와 불쾌지수 표시기
Raspberry Pi 4에서 커널 모듈과 유저 프로그램을 나눠 작성한 임베디드 프로젝트입니다.
커널 모듈은 GPIO, I2C, 센서 입력을 처리합니다. 유저 프로그램은 커널 모듈에서 값을 읽어 OLED에 시간, 온습도, 불쾌지수를 표시합니다.
사용한 것
CLinux Kernel ModuleGPIOI2CioctlDS1302DHT11SSD1306Rotary Encoder
하드웨어
- Raspberry Pi 4
- DS1302 RTC
- DHT11 온습도 센서
- 로터리 엔코더
- I2C OLED
- 8채널 LED
파일
driver.c: 커널 모듈 코드application.c: OLED 화면과 불쾌지수 계산 코드Makefile: 커널 모듈 빌드 설정
동작
- DS1302에서 시간을 읽습니다.
- DHT11에서 온도와 습도를 읽습니다.
- 로터리 엔코더 입력으로 화면 페이지를 바꿉니다.
- 커널 모듈은 character device를 만들고
read/write/ioctl인터페이스를 제공합니다. - 유저 프로그램은 커널 모듈에서 받은 값으로 OLED 화면을 갱신합니다.
- 불쾌지수 단계에 따라 LED 출력을 바꿉니다.
빌드
make
sudo insmod driver.ko
gcc -o application application.c
sudo ./application
메모
- 로터리 엔코더 입력은 커널 쪽에서 디바운싱합니다.
- 센서와 디스플레이 핀은
driver.c안의 정의를 기준으로 합니다.