Hát akkor itt a baj!
> a modul usb portjára csatlakozok, nem a TX/RX lábakra
Hát persze, hogy a CH340-es is az Rx/Tx lábakra csatlakozik! Hová is csatlakozhatna máshová? :)
Ld. attach!
NMEA-t szotveres soros "porton" kell csatlakoztatni! Különben természetszerűen ütközik az USB-vel.
Megj.#1: az alábbi példát egy nagyobb programomból mazsoláztam ki, ha kifelejtettem valamit
(fordítási hibát kapsz), akkor értelemszerűen pótolni kell (vagy kérdezz, ha abszolút nem megy).
Megj.#2: az időzónát és a táli/nyári automatikus átállást bónuszként tettem bele Neked, mert anno
nekem is sok kutakodásomba került megtalálni a jó megoldást. A legtöbb netes példaprogram mezei
módon bedrótozza a +1 ill. +2 órát, ami azért elég snassz...
Megj.#3: a "valid" változót én vezettem be. Majd láthatod, szépen beáll 1-be, ha elegendő számú
műhódot lát ahhoz, hogy legalább a dátum/idő infó jó legyen.
Megj.#4: ez így csak nagyon az alap program. A GPS moduloknak van ugyanis egy nagy bajuk, hogy
zabálják a naftát (melegszenek és kb. 80mA-t esznek, csúcsban többet is, ha jól emlékszem). Ezért a
kész programban illik a modult altatni. Ezt így kell csinálni, hogy miután megkaptál egy adatsort,
kiadod neki ezt: mySerial.print("$PMTK161,0*28\r\n"); Majd később, egy általad választott időpontban
(pl. 10mp vagy mondjuk 1 perces időközönként) fel kell ébreszteni. Ezt akármilyen karakter
kiadásával elérhetjük, én így szoktam: mySerial.print("\n"); Ide kapcsolódik, hogy a setupban
láthatod a GPS modul hideg/meleg startját. Ha hidegen indítod, akkor sokáig tart, mire megtalál
mindent. De ez már nyalánkság, majd utána olvasol, ha már megy a cuccos, és szükséged lesz rá.
Sok szerencsét!
Károly
=====================================================================================================
#include <SoftwareSerial.h>
#include "Time.h" //
http://www.arduino.cc/playground/Code/Time
#include "Timezone.h" //
https://github.com/JChristensen/Timezone
//Central European Time
TimeChangeRule CEST = {"CEST", Last, Sun, Mar, 2, 120}; //Central European Summer Time
TimeChangeRule CET = {"CET ", Last, Sun, Oct, 3, 60}; //Central European Standard Time
Timezone CE(CEST, CET);
TimeChangeRule *tcr; //pointer to the time change rule, use to get the TZ abbrev
time_t local_time;
static const int RXPin = 14, TXPin = 12; // az ujabb verzioknal: RXPin = D6, TXPin = D5
TinyGPSPlus gps;
SoftwareSerial mySerial(RXPin, TXPin);
void setup() {
Serial.begin(115200);
mySerial.begin(GPSBaud);
delay(100);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
//mySerial.print("$PMTK103*30\r\n"); // GPS cold start
mySerial.print("$PMTK102*31\r\n"); // GPS warm start
// A software serial begin utan jo idovel szabad csak kiadni:
Set_NMEA_Update_Rate(nmea_update_rate);
// stb.
}
void loop() {
int valid = 0;
int gpscount = 0;
while (valid == 0) {
gpscount++;
if (gpscount > 100) break;
while (mySerial.available() > 0) gps.encode(mySerial.read());
valid = gps.satellites.value() > 3 && gps.date.isValid() && gps.time.isValid();
}
if (gps.time.isUpdated() && gps.date.isUpdated()) {
digitalWrite(LED_BUILTIN, LOW);
time_t utc = tmConvert_t(gps.date.year(), gps.date.month(), gps.date.day(), gps.time.hour(),
gps.time.minute(), gps.time.second());
local_time = CE.toLocal(utc, &tcr);
Serial.print(F("Valid: "));
Serial.print(valid);
Serial.print(F("Sat: "));
Serial.print(gps.satellites.value());
Serial.print(F(" Lat: "));
Serial.print(gps.location.lat(), 6);
Serial.print(F(" Long: "));
Serial.print(gps.location.lng(), 6);
Serial.print(F(" Alt: "));
Serial.print(gps.altitude.meters());
Serial.print(F(" m "));
Serial.print(gps.date.year());
Serial.print(F("/"));
Serial.print(gps.date.month());
Serial.print(F("/"));
Serial.print(gps.date.day());
Serial.print(F(" "));
Serial.print(hour(local_time));
Serial.print(F(":"));
Serial.print(minute(local_time));
Serial.print(F(":"));
Serial.print(second(local_time));
delay(500); // csak azért, hogy lássuk fölvillanni a LED-et (teszt)
digitalWrite(LED_BUILTIN, HIGH);
}
// stb.
}
======================================================================================================