BASIC4MCU | 질문게시판 | 아두이노 GPS(neo-6m)정보를 블루투스(HC06)을 통해 스마트폰으로 가져오는 방법 없을까요?
페이지 정보
작성자 회색고로케 작성일2022-12-01 01:11 조회461회 댓글1건본문
#include <SoftwareSerial.h> // 소프트웨어 시리얼 라이브러리 불러옴
#include <TinyGPS.h>
int BT_RXD = 8; // 아두이노측 수신부 RXD는 8번핀(HC-06측 송신부 TXD와 연결)
int BT_TXD = 7; // 아두이노측 송신부 TXD는 7번핀(HC-06측 수신부 RXD와 연결)
int start_time = millis(); // 시작시간
int current_time = millis();// 현재시간
SoftwareSerial bluetooth(BT_RXD, BT_TXD); // 소프트웨어 시리얼 bluetooth 객체 선언
SoftwareSerial gpsSerial(3,4); //tx 3, rx 4
char c = "";
String str = "";
String targetStr = "GPGGA";
void setup(){
Serial.begin(9600); // 시리얼 통신 시작
bluetooth.begin(9600); // 블루투스 통신 시작
bluetooth.println("Start GPS...");
gpsSerial.begin(9600);
}
void loop(){
current_time = millis(); // 현재 시간 측정
if(current_time - start_time > 3000){ // 현재 시간이 시작시간으로부터 5초 이상이 지나면
double LatF = get_LatF();
float LongF = get_LongF();
bluetooth.print("위도 : "); // 각 센서의 값을 블루투스 모듈을 통해 스마트폰에 전송
bluetooth.println(LatF,15);
bluetooth.print("경도 : ");
bluetooth.println(LongF,15);
bluetooth.println("------------------------------------------");
start_time = current_time; // 시작시간을 현재시간으로 갱신
}
}
double get_LatF()
{
if(gpsSerial.available())
{
c = gpsSerial.read();
if(c == '\n')
{
Serial.println(str);
int first = str.indexOf(",");
int two = str.indexOf(",", first+1);
int three = str.indexOf(",", two+1);
int four = str.indexOf(",", three+1);
int five = str.indexOf(",", four+1);
String Lat = str.substring(two+1, three);
String Lat1 = Lat.substring(0, 2);
String Lat2 = Lat.substring(2);
double LatF = Lat1.toDouble() + Lat2.toDouble()/60;
}
str = "";
}
else
{
str += c;
}
}
float get_LongF()
{
if(gpsSerial.available())
{
c = gpsSerial.read();
if(c == '\n')
{
Serial.println(str);
int first = str.indexOf(",");
int two = str.indexOf(",", first+1);
int three = str.indexOf(",", two+1);
int four = str.indexOf(",", three+1);
int five = str.indexOf(",", four+1);
String Long = str.substring(four+1, five);
String Long1 = Long.substring(0, 3);
String Long2 = Long.substring(3);
float LongF = Long1.toFloat() + Long2.toFloat()/60;
}
str = "";
}
else
{
str += c;
}
}
이렇게 코드를 작성하였는데 스마트폰으로 출력되는 GPS정보는 0밖에 안뜨네요?
혹시 어떻게 하면 되는지 아시는분 있나요...?
댓글 1
조회수 461master님의 댓글
master 작성일
https://www.google.com/search?q=%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8+GPS+HC06+%EC%8A%A4%EB%A7%88%ED%8A%B8%ED%8F%B0&oq=%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8+GPS+HC06+%EC%8A%A4%EB%A7%88%ED%8A%B8%ED%8F%B0&aqs=chrome..69i57j0i546l2j0i30i546j0i546l2j69i61.11119j0j7&sourceid=chrome&ie=UTF-8
웹검색을 하셔야 하고요
소프트웨어 시리얼은 1개의 장치만 연결되어야 합니다.(동시 수신이 1개밖에 안됩니다.)