28. Wio Terminal GPS


Wio Terminal GPS

พอดี ผู้เขียน ได้ถอด GPS ติดรถยนต์ ออกมา เนื่องจากวิทยุติดรถยนต์ตัวเดิมเสีย และใช้กับวิทยุเครื่องใหม่ไม่ได้ เลยได้โอกาสนำมาเชื่อมต่อกับ Woi Terminal แล้วไปดาวน์โหลด Library จาก Github มาทดลองเขียนโปรแกรม ก็ได้ผลดีเกินคาด

การต่อสาย
    GPS จะมีอยู่ 4 เส้น ดังนี้
            สายสีแดง เป็นสายไฟ +5 V
            สายสีเขียว เป็นสายสื่อสาร Tx
            สายสีขาว เป็นสายสื่อสาร Rx
            สายสีดำ เป็นสายไฟลบ
   



             
ในการนำไปใช้ จะต้องมีสาย Du pont แบบตัวผู้ทั้งสองปลาย จำนวน 4 เส้น


บอร์ด Wio Terminal ต้องเสียบสายที่ขั้วต่อไปนี้
            ขั้วหมายเลข 4 ไฟ +5V ต่อกับสายสีแดง ของ GPS
            ขั้วหมายเลข 6 สาย GND หรือ ไฟลบ ต่อกับสายสีดำ ของ GPS
            ขั้วหมายเลข 13 พอร์ต D1 (BCM22) ต่อกับสายสีเขียว ของ GPS
            ขั้วหมายเลข 15 พอร์ต D0 (BCM27) ต่อกับสายสีขาว ของ GPS






เขียนโค้ด ใช้ทดสอบ

/*
   plakemphet
   7/02/2022
   Wio Terminal GPS Lat/Lon
  https://github.com/mikalhart/TinyGPSPlus
  Library rename from TinyGPS++.* to TinyGPSpp.* in all    
  ** GPS Pins **
  RED = +5V
  GREEN = Tx connected to Rx on Wio Pin D1 (BCM22)
  WHITE = Rx connected to Tx on Wio P:in D0 (BCM27)
  BLACK = GND
*/

#include <TFT_eSPI.h> // Hardware-specific library

TFT_eSPI tft = TFT_eSPI();
#include "TinyGPSPlus.h"
#include <SoftwareSerial.h>

static const int RXPin = BCM22, TXPin = BCM27;
static const uint32_t GPSBaud = 4800;

// The TinyGPSPlus object
TinyGPSPlus gps;

// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);

void setup()
{
  tft.init();
  tft.setRotation(3);
  tft.fillScreen(TFT_BLACK);
  tft.setTextColor(TFT_WHITE);
  ss.begin(GPSBaud);
  tft.drawString("GPS Info", 0, 0, 4);
  delay(1000);
}

void loop()
{
  showLocation();
  smartDelay(1000);
}

void showLocation()
{
  // Show Location
  tft.drawString("Sat:", 0, 20, 4);
  tft.fillRect(60, 20, 60, 20, TFT_BLACK); // Clear
  tft.drawString(String(gps.satellites.value()), 60, 20, 4);
  tft.drawString("Alt:", 0, 40, 4);
  tft.fillRect(60, 40, 100, 20, TFT_BLACK); // Clear
  tft.drawString(String(gps.altitude.meters()), 60, 40, 4);
  tft.drawString("Lat:", 0, 60, 4);
  tft.fillRect(60, 60, 120, 20, TFT_BLACK); // Clear
  tft.drawString(String(gps.location.lat(), 6), 60, 60, 4);
  tft.drawString("Lon:", 0, 80, 4);
  tft.fillRect(60, 80, 120, 20, TFT_BLACK); // Clear
  tft.drawString(String(gps.location.lng(), 6), 60, 80, 4);
}

static void smartDelay(unsigned long ms)
{
  unsigned long start = millis();
  do
  {
    while (ss.available())
      gps.encode(ss.read());
  } while (millis() - start < ms);
}


  



 ผลที่ได้จากการทำงาน
ผู้เขียนได้ทดสอบการทำงานของโค้ดข้างต้น





โพสต์ยอดนิยมจากบล็อกนี้

14. Wio Terminal EP.01 , เริ่มตันกับ Wio Terminal ด้วย circuitPython

24. Wio Terminal EP.11, อนาล็อกมิเตอร์ วัดความสว่างของแสง