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

SmartWay

구성품 및 소모품

점퍼 와이어(일반)
전체
× 1
범용 트랜지스터 NPN
진동 모터 셀 회로용
× 1
세라믹 커패시터 0.1µF
진동 모터 셀 회로용
× 1
저항 1k 옴
진동 모터 셀 회로용
× 1
저항 221옴
RGB LED 회로용
× 1
RGB 확산 공통 음극
× 1
GPS 모듈 GY-NEO6MV2
× 1
진동 모터 셀
× 1
RTC용 UDOO 2AA 배터리 홀더
× 1
Arduino MKR Fox 1200
× 1

필요한 도구 및 기계

납땜 인두(일반)

앱 및 온라인 서비스

Arduino 웹 편집기
Sigfox

이 프로젝트 정보

개요

부모는 항상 자녀를 걱정합니다. 부모는 자녀가 지정된 경로를 따라 정시에 학교에 도착하고 제시간에 집에 도착하기를 바랍니다.

SmartWay는 부모의 일상 생활에서 이러한 걱정을 제거하는 것을 목표로 합니다. SmartWay는 자녀가 등하교할 때 자녀를 모니터링하여 자녀가 항상 목적지인 학교에 도착할 수 있는 적절한 경로를 따르도록 합니다.

SWay는 GPS를 사용하여 자녀의 지리적 위치를 모니터링하고 자녀가 지정된 경로를 벗어나면 즉시 부모에게 이메일을 보냅니다. SmartWay는 또한 자녀가 집이나 학교에 도착할 때 부모에게 이메일을 보내고 자녀가 지각할 경우 알려줍니다. 이렇게 하면 부모는 자녀가 학교와 집에 안전하게 도착한다는 사실을 알고 편안하게 앉아서 커피를 즐길 수 있습니다.

기능

SmartWay는 아이가 깨어났을 때부터 집에 도착할 때까지 아이의 지리적 위치를 지속적으로 모니터링합니다. 이 장치에는 RGB LED와 진동 모터가 장착되어 있어 자녀가 학교에 올바로 가지 않거나 지각할 경우 경고하고 학교에 도착하면 축하해 줍니다.

이 장치는 자녀의 안전을 보장하기 위해 여러 기능을 통해 작동합니다.

<울>
  • 첫 번째 루프 if(오프 트랙) 자식이 할당된 경로에서 벗어났는지 감지합니다. 장치에는 이것이 발생하는 횟수를 감지하는 시스템이 있습니다. 자녀가 처음으로 코스를 이탈하면 LED가 빨간색으로 바뀌고 모터가 진동하여 장치가 경고하고 2분 동안 코스로 돌아올 수 있습니다. 자녀가 2분 더 코스를 벗어나 있으면 부모는 자녀가 자신의 지리적 위치와 함께 코스를 벗어났다는 경고 이메일을 받게 되며, 자녀가 도착할 때까지 2분 간격으로 이메일이 수신 가능하게 전송됩니다. 집이나 학교에서
  • if(학교 시간)if(홈 타임) 루프가 학교와 집에 갈 시간인지 감지한 다음 장치는 아이가 학교나 집에 도착했는지 확인합니다. 아이가 제시간에 도착하면 LED가 녹색으로 바뀌고 장치는 부모에게 자녀가 학교나 집에 도착했음을 알리는 이메일을 보냅니다. 아이가 도착 시간과 함께 목적지에 도착했습니다. 그렇지 않고, 학교가 시작할 시간이고 자녀가 학교에 없는 경우에도
  • 장치는 12바이트의 정보만 보낼 수 있으므로 보낼 때 컴팩트 패킷이 필요합니다. 다른 변수는 SigFox 백엔드에서 구성됩니다.

    기기가 보낼 수 있는 패킷은 4개입니다.

    <울>
  • 어린이가 코스에서 벗어났습니다 - ("코스에서 벗어남")
  • 아이가 집에 도착했습니다 - ("집에서")
  • 아이가 학교에 도착했습니다 - ("학교에서")
  • 아이가 늦었습니다 - ("늦은")
  • 경고 시스템

    장치를 착용한 어린이는 학교에 도착하거나 집에 도착하거나 목적지에 늦게 도착하거나 코스를 이탈할 때마다 알림을 받습니다.

    작동 중인 기기

    혜택

    이 기기를 사용하는 부모는 다음과 같은 이점을 누릴 수 있습니다.

    <울>
  • 자녀가 안전하게 등하교할 수 있도록 보장
  • 자녀가 이 위치에 정시에 도착하도록 하십시오.
  • 자녀가 물론 일탈하지 않도록 하십시오
  • 에너지 절약 및 저렴한 비용 - 오래 지속되는 배터리
  • 프로젝트 구성

    1단계:필수 장비

    프로젝트를 시작하려면 재료를 수집해야 합니다. 이 프로젝트에는 다음이 필요합니다.

    <울>
  • 점퍼 와이어
  • 1, NPN 트랜지스터
  • 1, 세라믹 커패시터(0.1µF)
  • 3, 저항기(220Ω)
  • 1, 저항(1KΩ)
  • 1, RGB LED
  • 1, GPS 모듈
  • 1, 진동 모터 셀
  • 1, Arduino MKR1200 여우
  • 1, 2x AAA/AA 배터리 상자
  • 2, AA 배터리
  • 2단계:회로 연결

    다음 단계는 회로를 연결하는 것입니다. 아래 Fritzing 이미지는 이것이 어떻게 수행되는지 보여줍니다. 배선에 여러 부분이 있으므로 서로 다른 이미지로 분할됩니다.

    3단계:코드 승인

    코드는 여러 기능으로 구성되며 각 기능은 프로젝트 구성에서 특정 역할을 수행합니다.

    <울>
  • 경고 시스템
  • GPS 받기
  • RTC 동기화
  • 프로세스 위치
  • 패키지 보내기
  • 작업 수행
  • 이 섹션은 아래에 설명되어 있습니다.

    <울>
  • 경고 시스템
  • <사전><코드> 무효 setOutputs(){ pinMode(R, OUTPUT); 핀모드(G, 출력); 핀모드(B, 출력); pinMode(motorPin, OUTPUT);}void vibrateMotor() // 모터 셀 진동{ digitalWrite(motorPin, HIGH); 지연(1000); digitalWrite(motorPin, LOW);}void ledGreen() // LED, 녹색{ analogWrite(R, 0); analogWrite(G, 255); analogWrite(B, 0);}void ledOrange() // LED, 주황색{ analogWrite(R, 255); analogWrite(G, 45); analogWrite(B, 0);}void ledRed() // LED, 빨간색{ analogWrite(R, 255); analogWrite(G, 0); analogWrite(B, 0);}void resetLED() // LED 끄기{ analogWrite(R, 0); analogWrite(G, 0); analogWrite(B, 0);}

    코드의 이 섹션은 functions.h에서 찾을 수 있습니다. 파일. 코드는 현재 상태에서 장치를 착용한 어린이에게 알립니다. 전반적으로 이 루프는 RGB LED와 진동하는 모터 셀을 제어합니다.

    <울>
  • GPS 받기
  • bool getGPS(int run){ while(Serial1.available()> 0) { if(gps.encode(Serial1.read())) { if(run ==1) { processData(); } else if(실행 ==2) { synchRTC(); } if(gps.location.isValid() &&gps.time.isValid() &&gps.date.isValid()) { true를 반환합니다. } else { false를 반환합니다. } } } if(millis()> 10000 &&gps.charsProcessed() <10) { Serial.println("오류 - GPS 모듈이 오류로 응답함"); Serial.println("종료 코드"); Serial.println("______________________________________________________"); 동안(1) {}; }} 

    GPS 모듈로부터 위치와 시간을 수신하는 루프입니다. 이 루프가 하는 일은 3가지가 있으며 설정 루프에서 사용됩니다. GPS를 동기화하기 위해 온보드 RTC를 GPS에 동기화하는 데 사용되며 메인 루프에서 장치의 지리적 위치를 가져오는 데 사용됩니다.

    <울>
  • RTC 동기화
  • void synchRTC(){ Serial.println("RTC 동기화 중"); Serial.println("______________________________________________________"); Serial.println(" 확인 - RTC 초기화"); rtc.begin(); Serial.println(" 확인 - 동기화 시간"); // 변수의 처음 2자리를 잘라야 합니다. (2018 -> 18) uint16_t yearRAW =gps.date.year(); 문자열 yearString =문자열(연도RAW); yearString.remove(0,1); uint16_t 연도 =yearString.toInt(); rtc.setTime(gps.time.hour(), gps.time.minute(), gps.time.second()); rtc.setDate(gps.date.day(), gps.date.month(), 연도); Serial.println("성공 - RTC 동기화됨"); Serial.println("______________________________________________________"); Serial.println(""); Serial.println(""); Serial.println("");} 

    이 코드 섹션은 온보드 RTC를 GPS 모듈에서 수신한 시간과 동기화하고 먼저 GPS 모듈에서 데이터를 읽은 다음 처리합니다. 그런 다음 루프는 온보드 RTC의 현재 시간을 수신된 시간으로 설정하고 RTC를 시작합니다.

    <울>
  • 프로세스 위치
  • bool processData(){ if(gps.location.isValid()) { 위도 =gps.location.lat(); 경도 =gps.location.lng(); 위도 =53.355504; 경도 =-6.258452; if(check.isOut()) { if(check.track()) { Serial.println("범위 초과"); 경고.offTrackLoop(); } } if(check.isHomeTime() &&arrivalSchool) { if(check.isHome()) { Serial.println("집에서"); warn.arrivedHomeLoop(); } else { Serial.println("늦은 -> 홈"); 경고.lateLoop(); } } else if(check.isSchoolTime() &&arrivalHome) { Serial.println("."); if(check.isSchool()) { Serial.println("학교에서"); 경고.arrivedSchoolLoop(); } else { Serial.println("늦은 -> 학교"); 경고.lateLoop(); } } else { Serial.println("온 웨이"); } }} 

    이 루프는 장치의 위치를 ​​처리하고 현재 시간과 비교하여 이 시간에 아이가 있어야 하는 위치를 확인합니다. 그런 다음 결과에 따라 적절한 조치를 취합니다.

    <울>
  • 작업
  • struct Do{ 무효 offTrackLoop() { if(offTrackVar) { parseData(0); } 진동모터(); led레드(); 지연(1000); 진동모터(); 리셋LED(); offTrackVar =참; 지연(120000); } 무효 lateLoop() { if(!lateVar) { parseData(1); } 진동모터(); led오렌지(); 지연(1000); 리셋LED(); lateVar =참; } 무효 arrivalHomeLoop() { lateVar =거짓; offTrackVar =거짓; 진동모터(); led그린(); 지연(1000); 리셋LED(); parseData(2); 도착한 집 =사실; 도착한 학교 =거짓; } 무효 arrivalSchoolLoop() { lateVar =거짓; offTrackVar =거짓; 진동모터(); led그린(); 지연(1000); 리셋LED(); parseData(3); 도착한 집 =거짓; 도착한 학교 =사실; }}; 

    이 구조체는 프로세스 위치에서 제공한 응답에 대한 조치를 취하기 위해 호출됩니다. RGB LED와 진동하는 모터 셀을 토글하는 어린이에게 경고합니다. 또한 필요한 경우 SigFox로 패키지를 보냅니다.

    <울>
  • 보내기 패키지
  • void parseData(int state){ SigFox.beginPacket(); // 메시지 전송 프로세스 시작 if(state ==0) // off track { SigFox.print("off track"); // 메시지 보내기 } else if(state ==1) // late { SigFox.print("late"); // 메시지 보내기 } else if(state ==2) // 집에 도착했습니다. { SigFox.print("at home"); // 메시지 보내기 } else // 도착한 학교 { SigFox.print("at school"); // 메시지 전송 } SigFox.endPacket();} 

    이 함수는 데이터를 SigFox로 전송하고 패킷 전송을 시작한 다음 적절한 값을 파싱합니다.

    변수 설정

    코드에는 TODO가 그 뒤에 주석으로 작성된 여러 변수가 포함됩니다. 이 변수는 클라이언트에 맞게 사용자 정의해야 하며 클라이언트는 설정하라는 메시지가 표시됩니다.

    <울>
  • 수업 시간
  • 어린이가 여행하는 데 걸리는 시간
  • 학교가 끝나는 시간
  • 디버깅?
  • 학교 위치 정보(LAT, LNG),
  • 홈 위치 정보(LAT, LNG),
  • 아래 가이드는 변수 설정을 안내합니다.

    라이브러리

    SigFox - copyright (c) 2016 Arduino LLC GNU Lesser General Public License 이 라이브러리는 공개 도메인입니다.

    ctype - copyright (c) 2006 GNU General Public License에 따른 Free Software Foundation, 이 라이브러리는 공개 도메인입니다.

    RTCZero - GNU Lesser General Public License에 따른 copyright (c) 2015 Arduino LLC, 이 라이브러리는 공개 도메인에 있습니다.

    문자열 - copyright (c) 2009-10 Hernando Barragan, copyright (c) 2011 Paul Stoffrengen은 GNU Lesser General Public License에 따라 공개 도메인에 있습니다.

    TinyGPS++ - copyright (c) 2008-13 Mikal Hart, under the GNU Lesser General Public License, 이 라이브러리는 공개 도메인입니다.

    설정

    회로가 올바르게 배선되었는지 확인하십시오. MKR 여우 설정에 대한 자세한 내용은 여기를 클릭하여 Arduino 자습서를 참조하십시오. Arduino SigFox 라이브러리에 대해 더 알고 싶으시면 여기를 클릭하십시오.

    백엔드 프로그램

    백엔드를 프로그래밍하려면 등록된 Arduino MKR1200 여우가 있어야 합니다.

    <울>
  • 1단계
  • SigFox 백엔드를 열고 SigFox 계정에 로그인합니다.

    <울>
  • 2단계
  • 페이지 상단의 드롭다운 메뉴에서 "장치 유형"을 클릭하십시오.

    <울>
  • 3단계:
  • Arduino MKRfox를 선택하고 편집을 클릭하십시오.

    <울>
  • 4단계:
  • 왼쪽 메뉴에서 콜백을 선택하고 오른쪽 상단 모서리에 있는 "새로 만들기" 버튼으로 이동합니다.

    <울>
  • 5단계:
  • 새로 만들기를 클릭하면 여러 콜백 구성 옵션이 표시됩니다. 사용자 정의 콜백을 클릭하십시오.

    다음 창이 열리면 주어진 양식을 작성하여 콜백을 생성해야 합니다.

    마지막에 메시지는 다음과 같아야 합니다.

    이제 확인을 클릭하면 모든 설정이 완료됩니다.

    최종

    마지막으로 해야 할 일은 아래 코드를 업로드하여 "TODO"로 표시된 변수를 원하는 대로 사용자 정의했는지 확인하고 GOS 모듈의 파란색 표시등이 깜박일 때까지 기다린 다음 컴퓨터에서 마이크로 컨트롤러를 분리한 다음 배터리 상자에 배터리를 넣습니다. 모든 준비가 완료되었습니다.

    나는 장치를 안전하게 유지하고 매력적으로 보이도록 인클로저를 설계했으며 두 개의 아크릴을 사용하고 가장자리를 90도로 휘게 녹였습니다. 내부에 모든 회로와 그 아래에 배터리 상자를 배치한 다음 두 개의 케이블 타이를 사용하여 플라스틱 조각을 함께 묶었습니다.

    결국 나는 모든 전선을 보이지 않게 숨기고 프로젝트의 두뇌만 보이게 하기 위해 상단 부분(투명 덮개)을 덮었습니다.

    배경

    저는 개인적으로 자녀를 학교에 보내는 간단한 작업을 수행하는 것이 얼마나 스트레스가 될 수 있는지 알고 있습니다. 모든 사람들은 자녀가 등교하는 동안 일어날 수 있는 모든 일에 대해 걱정하고 있습니다.

    이 프로젝트는 자녀를 학교에 보낼 때 스트레스를 받는 모든 사람들을 대상으로 합니다. SWay는 자녀가 안전하게 학교에 도착할 것이라는 사실을 알고 안심할 수 있도록 합니다.

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    스마트웨이
    전체 코드

    맞춤형 부품 및 인클로저

    기본적으로 Fritzing에 포함되지 않음 arduino_mkr_fox_1200_fixed_gwlzp1tuih_uh8ucYEGxI.fzpz

    회로도

    whole_WZeRYkIUCF.fzz

    제조공정

    1. AC 정류자 모터
    2. Raspoulette 프로토타입
    3. 간단한 파이 로봇
    4. DC 모터를 확인하는 방법
    5. 리니어 모터란?
    6. BLDC 모터 소개
    7. 기어 모터 감속기 란 무엇입니까?
    8. 서보 모터 란 무엇입니까?
    9. 서보 모터 감속기 란 무엇입니까?
    10. 엔진 스타터 모터 이해