-
ESP-IDF RTC DS3231(vscode)소프트웨어 2023. 8. 5. 11:48
#esp32 윈도우 vscode 환경
#선행(필수) ESP-IDF 윈도우 개발환경 세팅(VSCODE)
#선행(필수) ESP-IDF 외부 폴더에서 예제 파일 실행(VSCODE)
DS3231 모듈은 I2C 통신을 하는 RTC입니다.
로컬 환경에서 시간 정보가 필요할 때 사용됩니다.
CR2032가 들어가는 큰 모델과,
CR1025가 들어가는 작은 모델이 있습니다.
DS3231이 시계 모드로 사용될 때는 약 3µA 의 전력을 소모합니다.
CR2032 용량은 약 200mAh
CR1025 용량은 약 30mAh
- CR2032를 사용할 경우 200,000/3 = 66,666시간/24시간/365일 = 7.6년
- CR1025를 사용할 경우 30,000/3 = 10,000시간/24시간/365일 = 1.1년
ESP32로부터 전원을 공급 받고 있을 때는 배터리의 전력을 소비하지 않기 때문에,
위의 수명은 전원 연결이 없을 때의 예상 수명입니다.
이 글은 CR1025를 사용한 DS3231 모듈의 시간 확인 예제입니다.
1.결선
2.ESP-IDF Sample project 생성
3.components 설치
링크에서 아래 세 component를 다운 받습니다.
- ds3231
- esp_idf_lib_helpers
- i2cdev
또는 아래 파일을 다운 받아줍니다.
프로젝트 폴더 안에 components 폴더를 만들고
다운 받은 세 components를 복사합니다.
4.예제 코드
main.c
#include <stdio.h> #include <freertos/FreeRTOS.h> #include <freertos/task.h> #include <ds3231.h> #include <string.h> void ds3231_test(void *pvParameters) { i2c_dev_t dev; memset(&dev, 0, sizeof(i2c_dev_t)); ESP_ERROR_CHECK(ds3231_init_desc(&dev, 0, 21, 22)); struct tm time = { .tm_year = 123, // (2023 - 1900) .tm_mon = 11, .tm_mday = 15, .tm_hour = 0, .tm_min = 50, .tm_sec = 10 }; ESP_ERROR_CHECK(ds3231_set_time(&dev, &time)); while (1) { vTaskDelay(pdMS_TO_TICKS(2000)); if (ds3231_get_time(&dev, &time) != ESP_OK) { printf("Could not get time\n"); continue; } printf("%04d-%02d-%02d %02d:%02d:%02d \n", time.tm_year + 1900, time.tm_mon + 1, time.tm_mday, time.tm_hour, time.tm_min, time.tm_sec); } } void app_main() { ESP_ERROR_CHECK(i2cdev_init()); xTaskCreate(ds3231_test, "ds3231_test", configMINIMAL_STACK_SIZE * 3, NULL, 5, NULL); }
idf.py flash monitor
2초에 한 번씩 시간을 읽어와 출력하는 예제입니다.
'소프트웨어' 카테고리의 다른 글
ESP32 PIN-OUT (0) 2023.04.12 ESP-IDF 쿨링팬 FG센서, PWM제어(vscode) (0) 2023.04.11 ESP-IDF FreeRTOS - Buffer (vscode) (0) 2023.03.30 ESP-IDF 메모리 - SRAM (vscode) (0) 2023.03.28 ESP-IDF 메모리 - Flash (vscode) (0) 2023.03.25