산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

SmartWay: 진동모터·RGB LED·GPS·아두이노 MKR Fox 1200 종합 키트 – 아이 안심 등하교 관리

부품 및 소모품

점퍼 와이어 (일반) 1세트
범용 NPN 트랜지스터 1개 (진동모터 회로용)
세라믹 커패시터 0.1µF 1개 (진동모터 회로용)
저항 1k옴 1개 (진동모터 회로용)
저항 221옴 1개 (RGB LED 회로용)
RGB 디퓨즈드 공통 캐소드 LED 1개
GPS 모듈 GY-NEO6MV2 1개
진동 모터 셀 1개
UDOO 2AA 배터리 홀더 (RTC용) 1개
아두이노 MKR Fox 1200 1개

필수 도구

앱 및 온라인 서비스

프로젝트 소개

개요

부모는 자녀의 등하교 안전과 정시 도착, 정해진 경로 준수를 항상 걱정합니다. SmartWay는 이 걱정을 덜어줍니다. GPS로 자녀 위치를 실시간 모니터링해 설정된 경로를 벗어나면 즉시 부모에게 이메일 알림을 보내고, 등하교 도착/지각 시에도 알립니다. 부모는 안심하고 커피를 즐길 수 있습니다.

SmartWay: 진동모터·RGB LED·GPS·아두이노 MKR Fox 1200 종합 키트 – 아이 안심 등하교 관리

기능

기기 착용 시점부터 귀가까지 지속적으로 위치 모니터링. RGB LED와 진동모터로 아이에게 경로 이탈/지각 경고, 도착 축하 알림 제공.

SmartWay: 진동모터·RGB LED·GPS·아두이노 MKR Fox 1200 종합 키트 – 아이 안심 등하교 관리

Sigfox 패킷은 12바이트로 제한되어 압축된 데이터 전송 필요. 기타 변수는 Sigfox 백엔드에서 설정.

SmartWay: 진동모터·RGB LED·GPS·아두이노 MKR Fox 1200 종합 키트 – 아이 안심 등하교 관리

전송 가능한 4가지 패킷

경고 시스템

아이 착용 기기에서 LED 색상과 진동으로 상태 알림: 등교/귀가(녹색), 지각(주황), 경로 이탈(적색+진동)

SmartWay: 진동모터·RGB LED·GPS·아두이노 MKR Fox 1200 종합 키트 – 아이 안심 등하교 관리

장점

프로젝트 제작

1단계: 필요 물품

점퍼 와이어, NPN 트랜지스터, 세라믹 커패시터 0.1µF, 저항 220Ω(3개), 1kΩ(1개), RGB LED, GPS 모듈, 진동 모터, 아두이노 MKR Fox 1200, 2xAA 배터리 홀더, AA 배터리 2개
SmartWay: 진동모터·RGB LED·GPS·아두이노 MKR Fox 1200 종합 키트 – 아이 안심 등하교 관리

2단계: 회로 연결

프리츠(Fritzing) 이미지 참조 (여러 장으로 분할)
SmartWay: 진동모터·RGB LED·GPS·아두이노 MKR Fox 1200 종합 키트 – 아이 안심 등하교 관리

3단계: 코드 이해

코드는 여러 함수로 구성:

주요 코드 발췌 (functions.h)

// Warn System
void setOutputs() { pinMode(R,OUTPUT); pinMode(G,OUTPUT); pinMode(B,OUTPUT); pinMode(motorPin,OUTPUT); }
void vibrateMotor() { digitalWrite(motorPin,HIGH); delay(1000); digitalWrite(motorPin,LOW); }
void ledGreen() { analogWrite(R,0); analogWrite(G,255); analogWrite(B,0); }
void ledOrange() { analogWrite(R,255); analogWrite(G,45); analogWrite(B,0); }
void ledRed() { analogWrite(R,255); analogWrite(G,0); analogWrite(B,0); }
void resetLED() { analogWrite(R,0); analogWrite(G,0); analogWrite(B,0); }

// Get GPS
bool getGPS(int run) {
  while(Serial1.available()>0) {
    if(gps.encode(Serial1.read())) {
      if(run==1) processData(); else if(run==2) synchRTC();
      if(gps.location.isValid() && gps.time.isValid() && gps.date.isValid()) return true;
      else return false;
    }
  }
  if(millis()>10000 && gps.charsProcessed()<10) { while(1); } // GPS 오류 시 정지
}

// Synch RTC
void synchRTC() {
  rtc.begin();
  uint16_t year = String(gps.date.year()).substring(2).toInt(); // 2018→18
  rtc.setTime(gps.time.hour(), gps.time.minute(), gps.time.second());
  rtc.setDate(gps.date.day(), gps.date.month(), year);
}

// Process Location
bool processData() {
  if(gps.location.isValid()) {
    latitude = gps.location.lat(); longitude = gps.location.lng();
    // 테스트용 고정 좌표 (실제 사용 시 주석 해제)
    // latitude = 53.355504; longitude = -6.258452;
    
    if(check.isOut() && check.track()) { warn.offTrackLoop(); }
    if(check.isHomeTime() && arrivedSchool) {
      if(check.isHome()) warn.arrivedHomeLoop(); else warn.lateLoop();
    } else if(check.isSchoolTime() && arrivedHome) {
      if(check.isSchool()) warn.arrivedSchoolLoop(); else warn.lateLoop();
    }
  }
}

// Do Actions
struct Do {
  void offTrackLoop() { if(offTrackVar) parseData(0); vibrateMotor(); ledRed(); delay(1000); vibrateMotor(); resetLED(); offTrackVar=true; delay(120000); }
  void lateLoop() { if(!lateVar) parseData(1); vibrateMotor(); ledOrange(); delay(1000); resetLED(); lateVar=true; }
  void arrivedHomeLoop() { lateVar=false; offTrackVar=false; vibrateMotor(); ledGreen(); delay(1000); resetLED(); parseData(2); arrivedHome=true; arrivedSchool=false; }
  void arrivedSchoolLoop() { lateVar=false; offTrackVar=false; vibrateMotor(); ledGreen(); delay(1000); resetLED(); parseData(3); arrivedHome=false; arrivedSchool=true; }
};

// Send Package
void parseData(int state) {
  SigFox.beginPacket();
  if(state==0) SigFox.print("off track");
  else if(state==1) SigFox.print("late");
  else if(state==2) SigFox.print("at home");
  else SigFox.print("at school");
  SigFox.endPacket();
}

설정 필요 변수 (TODO 주석 확인)

가이드 이미지 참조하여 설정하세요.

사용 라이브러리

SigFox, ctype, RTCZero, String, TinyGPS++ (모두 GNU LGPL/GPL, 퍼블릭 도메인)

셋업

회로 배선 확인. MKR Fox 설정은 아두이노 튜토리얼, Sigfox 라이브러리는 여기 참조.

백엔드 프로그램 (Sigfox 콜백 설정)

  1. Sigfox 백엔드 로그인
  2. 상단 메뉴 'Device Type' 클릭
  3. 자신의 MKR Fox 선택 후 'Edit'
  4. 좌측 'Callbacks' → 우상단 'New' → 'Custom Callbacks'
  5. 폼 작성 후 메시지 형태 확인 (이미지 참조)

마무리

TODO 변수 맞춤 설정 후 코드 업로드. GPS 모듈 파란 불 깜빡이면 컴퓨터 분리, 배터리 장착 완료. 아크릴 판 2장으로 인클로저 제작, 모서리 열처리로 90도 곡면 처리, 케이블 타이로 고정. 상단 투명 커버 일부 가려 배선 숨김.
SmartWay: 진동모터·RGB LED·GPS·아두이노 MKR Fox 1200 종합 키트 – 아이 안심 등하교 관리

배경

자녀 등교 시 걱정되는 마음, 잘 압니다. SmartWay로 안심하고 아이를 학교에 보내세요.

SmartWay: 진동모터·RGB LED·GPS·아두이노 MKR Fox 1200 종합 키트 – 아이 안심 등하교 관리

제조공정

  1. AC 정류자 모터의 이해: 설계, 유형 및 응용 분야
  2. Raspoulette: 태양광 자율 닭장 문 시스템 프로토타입
  3. 심플 파이 로봇 – 라즈베리파이로 2WD 자율 로버 만들기
  4. DC 모터 문제 진단·점검 단계별 가이드
  5. 리니어 모터 이해: 전기 에너지에서 정밀 직선 운동으로
  6. BLDC 모터(브러시리스 DC 모터) 전문 가이드: 원리, 구조, 응용
  7. 기어 모터 감속기 설명: 작동 원리와 필수 이유
  8. 서보 모터 설명: 작동 원리와 중요성
  9. 서보 모터 감속기 이해: 기능, 이점, 적용
  10. 엔진 스타터 모터: 작동 원리 및 중요성