본 연구의 목표는 큐브셋을 통해 우주 시스템을 이해하고 창의 임무 설계, 요구 조건 분석, 그리고 시스템 기본 설계 및 제작을 통해 학교에서 배워온 지식을 실제 응용하여 공학과 과학의 관계와 차이를 배우고 관련 전공에 대한 흥미를 유발하기 위함에 있다. 다양한 환경센서를 성층권에서 측정하는데 목적이 있다.
목차
CubeSat - Real Time Clock Breakout Board
RTC (Real Time Clock) Breakout Board
RTC는 시계이다. 고정밀 DS3231RTC칩을 사용한 리얼타입 클럭 모듈이다. CR2032 배터리가 포함되어 있어, 전원이 공급되지 않아도 시계가 동작한다.
RTC 모듈은 초, 분, 시, 일, 요일, 달, 년 단위의 시간을 데이터로 사용할 수 있다. 초기값을 입력하고, 코인셀 배터리를 연결하면 그 시간을 기억하여 사용할 수 있다.
RTC (Real Time Clock) 특징
실시간 시계는 날짜와 시간을 추적할 수 있다. 먼저 프로그램을 업로드하여 날짜와 시간을 설정해야 하지만 설정 후에는 "백업" 코인 셀 배터리로 인해 전원이 차단되어도 실시간 시계가 몇 년 동안 시간을 유지한다. 이 실시간 시계를 사용하여 데이터 또는 이미지에 대한 타임스탬프를 생성한다.
DS3231 AT24C32 클록 모듈 Arduino용 실시간 클록 모듈 IIC RTC 모듈
1. 차원: 38mm* 22mm * 14mm
2. 무게:. 8g
3. 사용전압 : 3.3 -. 5.5V
4. 클럭 칩: 고정밀 클럭 칩 DS3231
5. 시계 정확도 2ppm, 약 1분 오차
6. 프로그래밍 가능한 구형파 출력
7. 실시간 시계, 초, 분, 시, 일, 날짜, 월, 연도를 생성할 수 있으며 2100년까지의 시간을 제공하며 윤년 보상이 있다.
8. 메모리 칩:. AT24C32(32K의 저장 용량)
9. IIC 버스 인터페이스, 최대 전송 속도 400KHz(작동 전압 5V)
10. IIC 다른 장치는 계단식으로 연결될 수 있으며 24C32 주소는 단락 A0/A1/A2에 의해 수정될 수 있으며 기본 주소는 0x57 이다.
RTC 구입하기
RTC모듈은 네이버등에서 다음과 같다.
RTC 하드웨어 연결
구성은 다음과 같다.
MKR1000 과 연결하기 위해 I2C 핀을 사용한다.
RTC 라이브러리
라이브러리 매니저에서 RTCLib를 검색후 , "install all" 로 라이브러리를 설치한다.
MKR1000과 RTC 연결하기
microUSB 케이블을 사용하여 Arduino MKR1000을 컴퓨터에 연결합니다. MKR1000의 녹색 "ON" 표시등과 DS3231의 빨간색 "POWER" 표시등이 모두 켜져야 한다.
RTC 소프트웨어 코딩
하드웨어 연결, 소프트웨어 코딩이 완료되면 다음과 같이 동작 화면을 확인할 수 있다.
------------------------------------------------------
개발환경 : WINDOWS 10
아두이노 IDE : 1.8.13
------------------------------------------------------
01 연결
- 아두이노와 PC 연결
- 아두이노 IDE 실행
- 메뉴 → 툴 → 보드:아두이노 UNO 확인
- 메뉴 → 스케치 → 확인/컴파일
// Date and time functions using a DS3231 RTC connected via I2C and Wire lib
#include "RTClib.h"
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup () {
Serial.begin(57600);
#ifndef ESP8266
while (!Serial); // wait for serial port to connect. Needed for native USB
#endif
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
if (rtc.lostPower()) {
Serial.println("RTC lost power, let's set the time!");
// When time needs to be set on a new device, or after a power loss, the
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
// When time needs to be re-set on a previously configured device, the
// following line sets the RTC to the date & time this sketch was compiled
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
void loop () {
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.print(" since midnight 1/1/1970 = ");
Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println("d");
// calculate a date which is 7 days, 12 hours, 30 minutes, 6 seconds into the future
DateTime future (now + TimeSpan(7,12,30,6));
Serial.print(" now + 7d + 12h + 30m + 6s: ");
Serial.print(future.year(), DEC);
Serial.print('/');
Serial.print(future.month(), DEC);
Serial.print('/');
Serial.print(future.day(), DEC);
Serial.print(' ');
Serial.print(future.hour(), DEC);
Serial.print(':');
Serial.print(future.minute(), DEC);
Serial.print(':');
Serial.print(future.second(), DEC);
Serial.println();
Serial.print("Temperature: ");
Serial.print(rtc.getTemperature());
Serial.println(" C");
Serial.println();
delay(3000);
}
02 컴파일 확인
스케치>확인/컴파일(CTRL+R) 를 선택해서 컴파일을 진행한다.
03 아두이노 업로드
컴파일이 이상없이 완료되면 스케치>업로드(CTRL+U) 를 선택해서 컴파일 파일을 업로드 한다.
04 동작 확인
다음과 같이 동작을 확인할 수 있다.
05 시간 조정하기
만약 시간 조정이 필요하다면, 다음과 같이 25번 라인을 주석 처리하고 28번 라인에서 시간을 변경후 업로드 한다.
프로그램을 업로드하고 직렬 모니터를 확인하십시오. 날짜와 시간은 정확할 것이다.. (이렇게 하면 컴퓨터에서 시간이 복사되므로 컴퓨터의 시간이 올바른지 확인한다..)
마지막으로 "//"를 원래 위치에 다시 추가하고 프로그램을 한 번 더 업로드한다. 시계는 정확하면 더 이상 시간을 조정할 필요가 없으므로 이 라인을 다시 비활성화한다.
마무리
아두이노와 CubeSat 을 위한 RTC 를 연결하고, 간단한 코딩으로 센서를 쉽게 실습할 수 있다.
모두의 아두이노 환경 센서 책
[모두의 아두이노 환경 센서] 책은 예스24, 인터넷 교보문고, 알라딘, 인터파크도서, 영풍문고, 반디앤루니스 , 도서11번가 등에서 구입할 수 있다. 이 책에서는 PMS7003, GP2Y1010AU0F, PPD42NS, SDS011 미세먼지 센서, DHT22 온습도 센서, MH-Z19B 이산화탄소 센서, ZE08-CH2O 포름알데히드 센서, CCS811 총휘발성유기화합물 TVOC, GDK101 방사선(감마선) 센서, MQ-131 오존(O3) 센서, MQ-7 일산화탄소, MICS-4514 이산화질소 센서, MICS-6814 암모니아 센서, DGS-SO2 아황산가스(SO2) 센서, BME280 기압 센서, GUVA-S12SD 자외선(UV) 센서, MD0550 기류 센서, QS-FS01 풍속 센서(Wind speed) 를 사용한다.
'큐브셋 초소형 인공위성' 카테고리의 다른 글
CubeSat - OV5642 ArduCam Mini Module Camera Shield 5MP Plus (0) | 2021.09.06 |
---|---|
CubeSat - DS18B20 Digital Temperature Sensor (0) | 2021.09.05 |
CubeSat - Sound Detector (SEN-12642) (0) | 2021.09.03 |
CubeSat - MicroSD Card Breakout Board (0) | 2021.09.02 |
CubeSat HM3301-Grove - Laser PM2.5 Sensor (0) | 2021.09.02 |
CubSet - How to Use Processing Software (0) | 2021.09.02 |
CUBESAT - Arduino and the MKR1000 WiFi Microcontroller (0) | 2021.09.01 |
CUBESAT PROTOTYPE RESOURCES (0) | 2021.09.01 |
댓글