1. 오늘 한 것
① 프로젝트 구조 설계
- SHT20 센서 → Arduino Mega → Serial(UART) 통신 → Linux(C언어) 구조 설계.
- 데이터 흐름 및 스레드 분리(UI / 모니터링) 기획.
② 개발 환경 준비
- Arduino IDE 및 SHT20(I2C) 센서 라이브러리 세팅.
- Linux 시리얼 포트 확인 및 권한 설정 (chmod 666 /dev/ttyACM0).
③ 센서 데이터 송신 코드 작성 (Arduino)
- SHT20 온습도 값 읽기.
- Serial.print()를 통한 데이터 패킷 규격화 (예: T:24.5,H:54.3).
C
// 예시 코드 (Arduino)
Serial.begin(9600);
float temp = sht.readTemperature();
Serial.print("T:");
Serial.println(temp);
2. 직면했던 문제 및 해결
- 초기 연결 시 비정상적인 쓰레기 값(예: 221.7도) 출력 현상
- 원인: 시리얼 포트 개방 시 발생하는 하드웨어 초기화 지연 및 버퍼 내 더미(Dummy) 데이터 유입.
- 해결: C언어의 데이터 파싱(Parsing) 단계에서 정상적인 온습도 범위를 벗어나는 비정상 수치(예: 100도 초과)는 무시(Skip)하도록 필터링 예외 처리 로직 추가.
- 센서 라이브러리 충돌 및 호환 이슈
- 원인: 초기 테스트 시 코드와 호환되지 않는 다른 센서(AHT 등) 라이브러리가 섞여 컴파일 에러 발생.
- 해결: 충돌을 일으키는 기존 라이브러리를 완전히 삭제하고, 현재 하드웨어 환경에 정확히 맞는 SHT20 전용 라이브러리로 클린 재설치 진행.
- Linux 시리얼 포트 권한(Permission denied) 문제
- 원인: 우분투 환경에서 일반 사용자 계정으로는 /dev/ttyUSB0 (또는 ACM0) 포트에 접근할 읽기/쓰기 권한이 없음.
- 해결: 터미널에서 sudo chmod 666 /dev/ttyUSB0 명령어를 실행하여 해당 포트에 대한 접근 권한을 수동으로 부여하여 통신 성공.
3. 오늘 배운 핵심 개념
- I2C 센서 통신 원리.
- UART Serial 통신 및 Baudrate(9600) 개념.
4. 현재 진행도
- 센서 데이터 측정 성공.
- Arduino → Linux 시리얼 데이터 전송 및 터미널 수신 확인.
5. 다음 목표
- Linux C 프로그램 기반 멀티스레딩 구현.
- 30도 임계값 기준 하드웨어(LED, 모터) 자동 제어 로직 작성.
'포트폴리오 > [IoT 기반 피지컬 AI 교육일지]' 카테고리의 다른 글
| [ C언어 IoT 프로젝트 개발 ] #3 프로젝트 발표 및 시연 (20일차 기록) (0) | 2026.03.10 |
|---|---|
| [ C언어 IoT 프로젝트 개발 ] #2 멀티스레드 적용 및 위험 자동 감지 (19일차 기록) (0) | 2026.03.10 |
| [ 17일차 기록 ] IoT 기초와 센서 실습 정리 (with. 아두이노) (0) | 2026.03.10 |
| [ 16일차 기록 ] 조립 PC 재고 관리 프로그램 개발기 #7 (최종 산출물 작성: 보고서 및 포트폴리오) (0) | 2026.03.03 |
| [ 15일차 기록 ] 조립 PC 재고 관리 프로그램 개발기 #6 (리팩토링 및 안정화) (0) | 2026.03.03 |