아두이노 GPS BLYNK - adu-ino GPS BLYNK

안녕하세요

아두이노 초보 공대생입니다

이번에 gps 모듈 neo-6m을 사용하여 gps데이터를 받고

받은 데이터를 esp8266 모듈로 와이파이 접속하여 클라우드 서버에 전송하는 코드를 짜고 있는데

소프트웨어 시리얼로 구성하려고 밑처럼

(Serial1 이 와이파이 모듈, gps 가 gps 모듈)

SoftwareSerial Serial1(6, 7);

SoftwareSerial gps(4, 3);

void setup() {

  Serial.begin(9600);

  Serial1.begin(9600);

  WiFi.init(&Serial1);

  if (WiFi.status() == WL_NO_SHIELD) {

    Serial.println("Communication with WiFi module failed!");

    while (true);

 }

  while (status != WL_CONNECTED) {

    Serial.print("Attempting to connect to SSID: ");

    Serial.println(SSID_NAME);

    status = WiFi.begin(SSID_NAME, SSID_PASS);

    delay(10000);

  }

  Serial.println("Connected to wifi");

  gps.begin(9600);

}

void loop() {

  gps.listen();

  if(gps.available()) {

  Serial.write(gps.read());

}

  Serial1.listen();

  if(Serial1.available()) {

  int val = gps.read();

~

로 해보았는데 gps데이터만 받고 서버로 전송은 못하더군요ㅠㅠ

혹시 수정해야할 부분이나

아두이노 우노 말고 하드웨어 시리얼로 해야하는지 등

도움 부탁 드립니다

#include <SoftwareSerial.h>

#include <TinyGPS.h>

// Define which pins you will use on the Arduino to communicate with your 

// GPS. In this case, the GPS module's TX pin will connect to the 

// Arduino's RXPIN which is pin 3.

#define RXPIN 6

#define TXPIN 5

//Set this value equal to the baud rate of your GPS

#define GPSBAUD 9600

// Create an instance of the TinyGPS object

TinyGPS gps;

// Initialize the NewSoftSerial library to the pins you defined above

SoftwareSerial uart_gps(RXPIN, TXPIN);

// This is where you declare prototypes for the functions that will be 

// using the TinyGPS library.

void getgps(TinyGPS &gps);

// In the setup function, you need to initialize two serial ports; the 

// standard hardware serial port (Serial()) to communicate with your 

// terminal program an another serial port (NewSoftSerial()) for your 

// GPS.

void setup()

{

// This is the serial rate for your terminal program. It must be this 

// fast because we need to print everything before a new sentence 

// comes in. If you slow it down, the messages might not be valid and 

// you will likely get checksum errors.

Serial.begin(9600);

//Sets baud rate of your GPS

uart_gps.begin(GPSBAUD);

Serial.println("");

Serial.println("GPS Shield QuickStart Example Sketch v12");

Serial.println("       ...waiting for lock...           ");

Serial.println("");

}

// This is the main loop of the code. All it does is check for data on 

// the RX pin of the ardiuno, makes sure the data is valid NMEA sentences, 

// then jumps to the getgps() function.

void loop()

{

while(uart_gps.available())     // While there is data on the RX pin...

{

int c = uart_gps.read();    // load the data into a variable...

if(gps.encode(c))      // if there is a new valid sentence...

{

getgps(gps);         // then grab the data.

}   

}

}

// The getgps function will get and print the values we want.

void getgps(TinyGPS &gps)

{

// To get all of the data into varialbes that you can use in your code, 

// all you need to do is define variables and query the object for the 

// data. To see the complete list of functions see keywords.txt file in 

// the TinyGPS and NewSoftSerial libs.

// Define the variables that will be used

float latitude, longitude;

// Then call this function

gps.f_get_position(&latitude, &longitude);

// You can now print variables latitude and longitude

Serial.print("Lat/Long: "); 

Serial.print(latitude,5); 

Serial.print(", "); 

Serial.println(longitude,5);

// Same goes for date and time

int year;

byte month, day, hour, minute, second, hundredths;

gps.crack_datetime(&year,&month,&day,&hour,&minute,&second,&hundredths);

// Print data and time

Serial.print("Date: "); Serial.print(month, DEC); Serial.print("/"); 

Serial.print(day, DEC); Serial.print("/"); Serial.print(year);

Serial.print("  Time: "); Serial.print(hour, DEC); Serial.print(":"); 

Serial.print(minute, DEC); Serial.print(":"); Serial.print(second, DEC); 

Serial.print("."); Serial.println(hundredths, DEC);

//Since month, day, hour, minute, second, and hundr

// Here you can print the altitude and course values directly since 

// there is only one value for the function

Serial.print("Altitude (meters): "); Serial.println(gps.f_altitude());  

// Same goes for course

Serial.print("Course (degrees): "); Serial.println(gps.f_course()); 

// And same goes for speed

Serial.print("Speed(kmph): "); Serial.println(gps.f_speed_kmph());

Serial.println();

// Here you can print statistics on the sentences.

unsigned long chars;

unsigned short sentences, failed_checksum;

gps.stats(&chars, &sentences, &failed_checksum);

//Serial.print("Failed Checksums: ");Serial.print(failed_checksum);

//Serial.println(); Serial.println();

delay(10000);

}

Toplist

최신 우편물

태그