Εμφάνιση αποτελεσμάτων : 1 έως 7 από 7

Θέμα: Φορητό GPS

  1. #1
    Μέλος Το avatar του χρήστη Ακρίτας
    Όνομα
    Γιώργος
    Εγγραφή
    Jan 2009
    Περιοχή
    Θεσσαλονίκη - Αλεξανδρούπολη
    Μηνύματα
    1.427

    Προεπιλογή Φορητό GPS

    Χριστός Ανέστη και Χρόνια Πολλά.

    Η ιδέα για την κατασκευή ήρθε περιδιαβαίνοντας το e-bay για πειραματικές αρδουινοκαταστάσεις. Στην ουσία πήρα αυτό το module και αυτήν την οθόνη και τα κούμπωσα με τη βοήθεια ενός Atmega328. Η οθόνη είναι φτιαγμένη έτσι ώστε να κουμπώνει ακριβώς επάνω στον αρδουίνο, έτσι στην πλακέτα αντέγραψα την διάταξη των ακροδεκτών. Το GPS είναι πλήρως αυτόνομο και ο μικροελεγκτης χρησιμοποιείται μόνο για την σειριακή λήψη των δεδομένων και τη μεταφορά τους στην οθόνη.

    Ο κώδικας βασίζεται στις βιβλιοθήκες: MCUFRIEND_kbv από τον κατασκευαστή της οθόνης και TinyGPS++ από τον Mikal Hart. Τα εύσημα σε αυτούς.

    Το συνολικό κόστος, εκτός από την τροφοδοσία, είναι λιγότερο από 12 Ε. Καθόλου άσχημα.

    Η τροφοδοσία μπορεί να γίνει από 6 μπαταρίες ΑΑ ή για πιο extreme καταστάσεις από ένα power bank. Στην περίπτωση αυτή θα πρέπει να αφαιρεθεί το regulator των 5V.

    Η συσκευή μπορεί να μας δώση τη θέση μας, το υψόμετρο, τον χρόνο, την ταχύτητα, την διόπτευση / απόσταση από κάποιο σταθερό σημείο που θα προσδιορίσουμε και άλλα τέτοια. Χάρτες μην περιμένετε.

    Στις παρακάτω φωτογραφίες φαίνεται η συσκευή σε λειτουργία με τροφοδοσία από τη θύρα USB που χρησιμεύει και για τη φόρτωση του κώδικα (μέσω ενός USB to TTL μετατροπέα).

    Βελτιώσεις θα γίνουν πολλές, κυρίως στον κώδικα αλλά και στο υλικό. Η μιά θα αφορά την αντικατάσταση της κεραίας (επάνω αριστερά) με μια πιο μεγάλη και με ενσωματωμένο LNA. Η άλλη θα αφορά την προσθήκη ενός δεύτερου regulator 5V για το GPS αφού το ένα μόνο του ζορίζεται.

    Edit.

    Τις φωτογραφίες και το σχηματικό θα τα ανεβάσω μόλις το επιτρέψει το σύστημα.

    14 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη Ακρίτας : 16-04-17 στις 22:44
    So much behind us! Still far to go!
    Pink Floyd

  2. 6 μέλη ευχαρίστησαν τον Ακρίτας για αυτό το χρήσιμο μήνυμα:

    alfadex (19-04-17), GiwrgosTH (27-04-17), manolena (18-04-17), nikakis30 (21-04-17), SeAfasia (18-04-17), usa (24-04-17)

  3. #2
    Μέλος Το avatar του χρήστη Ακρίτας
    Όνομα
    Γιώργος
    Εγγραφή
    Jan 2009
    Περιοχή
    Θεσσαλονίκη - Αλεξανδρούπολη
    Μηνύματα
    1.427

    Προεπιλογή

    Άντε λοιπόν να δούμε και τις φωτογραφίες...

    Πατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  FrC 001b.jpg Εμφανίσεις:  434 Μέγεθος:  119,3 KB Πατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  FrC 002b.jpg Εμφανίσεις:  410 Μέγεθος:  144,1 KB Πατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  FrC 003b.jpg Εμφανίσεις:  440 Μέγεθος:  140,2 KB Πατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  FrC 004b.jpg Εμφανίσεις:  408 Μέγεθος:  102,6 KB Πατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  FrC 005b.jpg Εμφανίσεις:  324 Μέγεθος:  121,0 KB


    Και το θεωρητικό που θα αλλάξει λίγο σε ότι αφορά την τροφοδοσία:

    Πατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  GPS.JPG Εμφανίσεις:  340 Μέγεθος:  113,7 KB

    Κουτί προς το παρόν δεν έχει. Ψάχνω κάτι σε αδιάβροχο.

    7 Not allowed! Not allowed!
    So much behind us! Still far to go!
    Pink Floyd

  4. Ένα μέλος ευχαρίστησε τον Ακρίτας για αυτό το χρήσιμο μήνυμα:

    aktis (17-04-17)

  5. #3
    Συντονιστής Το avatar του χρήστη lepouras
    Όνομα
    Γιανννης
    Εγγραφή
    Jan 2011
    Περιοχή
    ΚΑΙΣΑΡΙΑΝΗ
    Μηνύματα
    7.017

    Προεπιλογή

    Γιώργο σου ξέφυγε στο σχέδιο η είσοδος του πρώτου regulator των +5V
    καθάρισα και από τα άσχετα το θέμα. συγχαρητήρια πάντως για την κατασκευή σου.

    1 Not allowed! Not allowed!
    «Η Ιστορία διδάσκει πως ουδείς διδάσκεται απ’ αυτήν».
    Ποτέ δεν νικάς έναν ηλίθιο ,θα σε ρίξει στο επίπεδό του και θα σε κερδίσει λόγω πείρας.

    www.drakotrypa.gr Να σκέφτεσαι σαν άνθρωπος της δράσης,και να δρας σαν άνθρωπος της σκέψης...

  6. #4
    Μέλος Το avatar του χρήστη Ακρίτας
    Όνομα
    Γιώργος
    Εγγραφή
    Jan 2009
    Περιοχή
    Θεσσαλονίκη - Αλεξανδρούπολη
    Μηνύματα
    1.427

    Προεπιλογή

    Γιάννη, ευχαριστώ. Είναι που καθάριζα το θεωρητικό του Kicad για να το κάνω εικόνα και να το ανεβάσω. Έτσι κι αλλιώς έχω ήδη προσθέσει άλλο ένα regulator που δίνει μόνο στο GPS. Θα ανεβάσω το διορθωμένο. Και τον κώδικα επίσης.

    1 Not allowed! Not allowed!
    So much behind us! Still far to go!
    Pink Floyd

  7. #5
    Μέλος Το avatar του χρήστη Ακρίτας
    Όνομα
    Γιώργος
    Εγγραφή
    Jan 2009
    Περιοχή
    Θεσσαλονίκη - Αλεξανδρούπολη
    Μηνύματα
    1.427

    Προεπιλογή

    Τελικά έτσι είναι καλύτερα.

    Πατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  GPSb.jpg Εμφανίσεις:  169 Μέγεθος:  137,1 KB


    Και ο ...

    Κώδικας:
    /*  This sketch is based on TinyGPS++ and MCUFRIEND_kbv libraries examples.  
     *  Many thanks to creators.
     *  By Akritas.
     */
    
    #include <Adafruit_GFX.h>
    #include <Fonts/FreeSans9pt7b.h>
    #include <MCUFRIEND_kbv.h>
    #include <TinyGPS++.h>
    #include <SoftwareSerial.h>
    
    static const int RXPin = 10, TXPin = 11;
    static const uint32_t GPSBaud = 9600;
    
    TinyGPSPlus gps;
    
    MCUFRIEND_kbv tft;
    
    #define BLACK   0x0000
    #define BLUE    0x001F
    #define RED     0xF800
    #define GREEN   0x07E0
    #define CYAN    0x07FF
    #define MAGENTA 0xF81F
    #define YELLOW  0xFFE0
    #define WHITE   0xFFFF
    #define GREY    0x7BEF
    
    SoftwareSerial ss(RXPin, TXPin);
    
    void setup()
    {
      ss.begin(GPSBaud);
      tft.reset();
      tft.begin(0x9325);       // define TFT controller 
      tft.setRotation(0);      // portrait
      tft.fillScreen(BLUE);
      tft.setTextSize(1);
      tft.setTextColor(WHITE);
      tft.setFont(&FreeSans9pt7b);
      tft.fillRect(5, 5 + 5, 230, 22, BLUE);
      tft.setCursor(5 ,5 + 18);             
      tft.print("Date/Time: ");
      tft.fillRect(5, 65 + 5, 230, 22, BLUE);
      tft.setCursor(5, 65 + 18);
      tft.print("Location: ");
      tft.fillRect(5, 125 + 5, 230, 22, BLUE);
      tft.setCursor(5, 125 + 18);
      tft.print("Course/Speed: ");
      tft.fillRect(5, 185 + 5, 230, 22, BLUE);
      tft.setCursor(5, 185 + 18);
      tft.print("Distance/Course To Fix:");
      tft.fillRect(5, 245 + 5, 230, 22, BLUE);
      tft.setCursor(5, 245 + 18);
      tft.print("Altitude:");
    }
    
    void loop()
    {
      // This sketch displays information every time a new sentence is correctly encoded.
      while (ss.available() > 0)
        if (gps.encode(ss.read()))
          displayInfo();
    
      if (millis() > 5000 && gps.charsProcessed() < 10)
      {
        tft.fillRect(5, 5 + 5, 230, 22, BLUE);  // change only x, y, length
        tft.setCursor(5 ,5 + 18);              // change only x, y
        tft.print("No GPS detected!");
        while(true);
      }
    }
    
    void displayInfo()
    {
      if (gps.date.isValid())
      {
        tft.fillRect(5, 30 + 5, 230, 22, BLUE);
        tft.setCursor(5, 30 + 18);
        tft.print(gps.date.day());
        tft.print("/");
        tft.print(gps.date.month());
        tft.print("/");
        tft.print(gps.date.year());
        tft.print("  ");
      }
      else
      {
        tft.fillRect(5, 30 + 5, 230, 22, BLUE);
        tft.setCursor(5, 30 + 18); 
        tft.print("  INVALID");
      }
    
      tft.print("  / ");
      if (gps.time.isValid())
      {
        if (gps.time.hour() < 10) tft.print("0");
        tft.print(gps.time.hour());
        tft.print(":");
        if (gps.time.minute() < 10) tft.print("0");
        tft.print(gps.time.minute());
        //tft.print(":");
        //if (gps.time.second() < 10) tft.print("0");
        //tft.print(gps.time.second());
        //tft.print(".");
        //if (gps.time.centisecond() < 10) tft.print("0");
        //tft.print(gps.time.centisecond());
      }
      else
      {
        tft.print("INVALID");
      }
    
      if (gps.location.isValid())
      {
        tft.fillRect(5, 90 + 5, 230, 22, BLUE);
        tft.setCursor(5 ,90 + 18);
        tft.print(gps.location.lat(), 6);
        tft.print("  /  ");
        tft.print(gps.location.lng(), 6);
      }
      else
      {
        tft.fillRect(5, 90 + 5, 230, 22, BLUE);
        tft.setCursor(5, 90 + 18);
        tft.print("INVALID");
      }
     
      if ((gps.course.isValid()) and (gps.speed.isValid()))
      { 
        tft.fillRect(5, 150 + 5, 230, 22, BLUE);
        tft.setCursor(5, 150 + 18); 
        tft.print(gps.course.deg());
        tft.print(" deg  /  ");
        tft.print(gps.speed.kmph());
        tft.print(" kmph");
      }
      else
      {
        tft.fillRect(5, 150 + 5, 230, 22, BLUE);
        tft.setCursor(5, 150 + 18); 
        tft.print("INVALID");
      }
    
      if (gps.location.isValid())
      {
        static const double FIX_LAT = 40.χχχχχχ, FIX_LON = 25.χχχχχχ;
        double distanceToFix =
          TinyGPSPlus::distanceBetween(
            gps.location.lat(),
            gps.location.lng(),
            FIX_LAT,
            FIX_LON);
        double courseToFix =
          TinyGPSPlus::courseTo(
            gps.location.lat(),
            gps.location.lng(),
            FIX_LAT,
            FIX_LON);
            
        tft.fillRect(5, 210 + 5, 230, 22, BLUE);
        tft.setCursor(5, 210 + 18); 
        tft.print(distanceToFix/1000, 3);
        tft.print("  km");
        tft.print(" / "); 
        tft.print(courseToFix, 2);
        tft.print("  deg");
      }
      else
      {
        tft.fillRect(5, 210 + 5, 230, 22, BLUE);
        tft.setCursor(5, 210 + 18);
        tft.print("INVALID");
      }
       
      if (gps.altitude.isValid())
      { 
        tft.fillRect(5, 270 + 5, 230, 22, BLUE);
        tft.setCursor(5, 270 + 18); 
        tft.print(gps.altitude.meters());
        tft.print("  mtrs"); 
      }
      else
      {
        tft.fillRect(5, 270 + 5, 230, 22, BLUE);
        tft.setCursor(5, 270 + 18); 
        tft.print("INVALID");
      }
       
      delay(5000);
    }
    Το αποτέλεσμα

    Πατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  FrC.jpg Εμφανίσεις:  223 Μέγεθος:  118,3 KB

    3 Not allowed! Not allowed!
    So much behind us! Still far to go!
    Pink Floyd

  8. #6
    Μέλος Το avatar του χρήστη p.gabr
    Όνομα
    Παναγιώτης
    Εγγραφή
    Feb 2011
    Περιοχή
    Aχαρναί
    Μηνύματα
    3.867

    Προεπιλογή

    Αγαπητέ ΓΕΩΡΓΙΕ Χριστός Ανέστη και χρόνια πολλά για την ονομαστική σου Εορτή.

    Ωραία κατασκευή μπράβο σου ,δώσε και τα data στον πομπό να σε βρίσκουμε

    0 Not allowed! Not allowed!

  9. #7
    Μέλος Το avatar του χρήστη Ακρίτας
    Όνομα
    Γιώργος
    Εγγραφή
    Jan 2009
    Περιοχή
    Θεσσαλονίκη - Αλεξανδρούπολη
    Μηνύματα
    1.427

    Προεπιλογή

    Αληθώς Ανέστη ο Κύριος. Να είσαι καλά, Παναγιώτη και με τη σειρά μου χρόνια πολλά στους συνονόματους (είμαστε και πολλοί).
    Τώρα περιμένω μια καλύτερη κεραία και μετά θα δω τί θα κάνω με πηγή ισχύος.

    1 Not allowed! Not allowed!
    So much behind us! Still far to go!
    Pink Floyd

Παρόμοια Θέματα

  1. Διαφορα GPS με A-GPS
    By αλπινιστης in forum Συσκευές GSM / GPS / Tablet
    Απαντήσεις: 29
    Τελευταίο Μήνυμα: 11-01-15, 23:54
  2. φορητά ηχεία
    By ninolas in forum Παρουσίαση Ολοκληρωμένων Κατασκευών
    Απαντήσεις: 24
    Τελευταίο Μήνυμα: 03-04-14, 01:02
  3. Φορητό ηχοσύστημα
    By asterasteri in forum Συσκευές Εικόνας-Ήχου
    Απαντήσεις: 15
    Τελευταίο Μήνυμα: 21-10-11, 00:08
  4. Φορητό ηχοσυστηματάκι
    By bestever in forum Κυκλώματα Εικόνας-'Ηχου & Φωτισμού
    Απαντήσεις: 3
    Τελευταίο Μήνυμα: 09-06-11, 18:39
  5. Φορητό aircondition
    By Panoss in forum Ηλεκτρονικά
    Απαντήσεις: 9
    Τελευταίο Μήνυμα: 06-07-06, 00:02

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας