아두이노 실시간 시계로 이슬람 기도 시간 알림 장치 만들기
부품 및 소모품
| 부품 | 수량 |
| Arduino UNO | 1 |
| Nokia 5110 LCD 디스플레이 (84×48 모노크롬) | 1 |
| DS1307 RTC 모듈 (Seeed Pi RTC) | 1 |
필요 도구
- 프리미엄 수-수 점퍼 와이어 (40개, 75mm)
- 브레드보드 (400핀)
소프트웨어
프로젝트 개요
그레고리력 날짜와 일일 이슬람 기도 시간(파즈르, 주흐르, 아스르, 마그립, 이샤)을 표시하는 실시간 시계 장치입니다. Arduino UNO, DS1307 RTC, Nokia 5110 LCD만으로 간단하게 구현할 수 있습니다.
주요 부품 설명
Arduino UNO
ATmega328P 기반 오픈소스 마이크로컨트롤러 보드로, 14개 디지털 I/O(6개 PWM), 6개 아날로그 입력, 16MHz 클럭, 32KB 플래시 메모리를 제공합니다.
DS1307 RTC
저전력 완전 BCD 실시간 시계/달력 칩입니다. 초/분/시/요일/일/월/년 정보를 제공하며, 윤년 자동 보정, 12/24시간 형식 지원, 배터리 백업 전환 기능이 내장되어 있습니다. I2C 인터페이스(SCL, SDA)로 통신합니다.
Nokia 5110 LCD
PCD8544 컨트롤러를 사용하는 84×48 픽셀 모노크롬 디스플레이입니다. SPI 유사 시리얼 버스로 제어하며 백라이트 밝기 조절이 가능합니다. 핀아웃: VCC, GND, RST(리셋), CE(칩 인에이블), D/C(데이터/명령), DIN(데이터 입력), CLK(클록), BL(백라이트).
지역 설정 방법 (코드 수정)
코드 161번째 줄의 calcPrayerTimes() 함수 매개변수를 본인 지역에 맞게 수정해야 합니다.
calcPrayerTimes(year, month, dayOfMonth, 경도, 위도, 타임존, 파즈르_트와일라잇, 이샤_트와일라잇, fajr, sunRise, zuhr, asr, maghrib, isha);
필요 정보:
- 위도/경도/타임존
- 파즈르(새벽) 및 이샤(밤) 트와일라잇 각도 (국가/학파별 차이 존재)
예시: 카이로(이집트) - 경도 30.2, 위도 30, 타임존 +2, 파즈르 -19.5°, 이샤 -17.5°
calcPrayerTimes(year, month, dayOfMonth, 30.2, 30, 2, -19.5, -17.5, fajr, sunRise, zuhr, asr, maghrib, isha);
좌표는 IslamicFinder 웹사이트에서 도시 검색으로 확인 가능합니다.
프로그램 동작 원리
년/월/일/경도/위도/타임존/트와일라잇 각도를 입력받아 6가지 기도 시간(파즈르, 일출, 주흐르, 아스르, 마그립, 이샤)을 계산합니다. 계산 알고리즘은 Mahmoud Adly Ezzat 님의 공개 코드를 기반으로 하며, 라디안/도 변환, 0~360°/0~24h 정규화, 더블 값을 시:분으로 변환하는 헬퍼 함수가 포함됩니다.
소스 코드
전체 코드는 Arduino IDE에 붙여넣어 업로드하세요. 주요 라이브러리: Wire.h, Adafruit_GFX.h, Adafruit_PCD8544.h. RTC 통신, 디스플레이 제어, 기도 시간 계산 로직이 포함되어 있습니다.
회로도
Arduino UNO, DS1307(I2C: A4=SDA, A5=SCL), Nokia 5110(SPI: D3~D7) 간 연결 배선도입니다.