“아빠 어디야” 앱 아두이노 소스 판올림

  • GPS 쉴드를 연결하여 현 위치 파악가능하게 수정함.
  • 3번, 4번 핀으로 GPS와 연결하고, 현 위치 상시 파악하며 충격이 500 이상 감지되면 데이터 나타나도록 함.
  • GPS신호를 못 잡으면 데이터 전송하지 않도록 함.
  • 블루투스 전송시 데이터를 받는 앱에 어떻게 전달해야 구분이 편할지는 조금 더 고민해야 함
  • 시리얼모니터의 결과는 다음과 같이 나옴

#include <SoftwareSerial.h>
#include <TinyGPS.h>
#define SHOCK_A_IN_PIN 0

TinyGPS gps;
SoftwareSerial GPSSerial(4, 3);
SoftwareSerial BTSerial(0,1);

void GetGPSdata(TinyGPS &gps);
int iShockValue = 0;
float latitude, longitude;
int year;
byte month, day, hour, minute, second, hundredths;

void setup(){
BTSerial.begin(9600);
Serial.begin(9600);
GPSSerial.begin(9600);

Serial.println(“GPS 위치 수신중..”);
Serial.println(“충격감지센서 조정중..”);
Serial.println(“”);
}

void loop(){
while(GPSSerial.available()) {
int data = GPSSerial.read();
if(gps.encode(data)){
gps.f_get_position(&latitude, &longitude);
gps.crack_datetime(&year,&month,&day,&hour,&minute,&second,&hundredths);
delay(100);
}

iShockValue = 1024- analogRead(SHOCK_A_IN_PIN);
if (iShockValue >= 500){
if(latitude > 0) {
//Serial.print(“충격감도: “);
Serial.println(iShockValue);
//Serial.print(“위도: “);
Serial.println(latitude,5);
//Serial.print(“경도: “);
Serial.println(longitude,5);

//Serial.print(“현재시각: “); Serial.print(hour, DEC); Serial.print(“:”);
//Serial.print(minute, DEC); Serial.print(“:”); Serial.print(second, DEC);
//Serial.print(“.”); Serial.println(hundredths, DEC);

BTSerial.println(iShockValue);
BTSerial.println(latitude);
BTSerial.println(longitude);
delay(100);
}
}
}
}

Leave a Reply

Your email address will not be published. Required fields are marked *