Kết nối Arduino với mô-đun GPS NEO-6M

Kết nối Arduino với mô-đun GPS NEO-6M

Bài đăng này cho thấy cách kết nối Arduino với mô-đun GPS để nhận dữ liệu từ các vệ tinh trong đó mô-đun GPS được sử dụng trong dự án này là u-blox NEO-6M (các mô-đun khác cũng sẽ hoạt động). Với mô-đun GPS NEO-6M, chúng tôi có thể đo vị trí (vĩ độ, kinh độ và độ cao), thời gian, ngày, tốc độ và một số dữ liệu khác. GPS: Hệ thống định vị toàn cầu.

Mô-đun GPS NEO-6M mà tôi đang sử dụng tương tự như mô-đun hiển thị bên dưới:

Nói chung, mô-đun GPS có 4 chân: VCC, RX, TX và GND. Nó sử dụng giao tiếp nối tiếp (giao thức UART) để giao tiếp với vi điều khiển trong đó các chân RX / TX dùng để nhận / truyền dữ liệu từ / đến vi điều khiển.

Yêu cầu phần cứng:

  • Board Arduino
  • Mô-đun GPS NEO-6M
  • Breadboard
  • Dây dẫn

Mạch kết nối Arduino với mô-đun GPS NEO-6M:

Kết nối của Arduino với mô-đun GPS NE0-6M được hiển thị bên dưới.

  • Chân GND của board GPS NEO-6M nối với chân Arduino GND
  • TX nối với chân digital 4 của Arduino
  • chân RX không được nối
  • chân VCC đi đến chân Arduino 5V (có thể được nối với chân 3,3V)

Lưu ý rằng chân RX của mô-đun GPS không được nối do không cần gửi dữ liệu từ Arduino đến nó, trong dự án này, Arduino chỉ nhận dữ liệu từ mô-đun GPS (mô-đun GPS chỉ nhận dữ liệu từ các vệ tinh).

Code Arduino:

Với code bên dưới, chúng tôi có thể nhận được các dữ liệu sau từ mô-đun GPS NEO-6M:

vĩ độ, kinh độ, độ cao, thời gian, ngày và số lượng vệ tinh đang sử dụng. Sau khi tôi tải lên bản phác thảo vào Arduino của mình, tôi nhận được kết quả hiển thị bên dưới (bạn có thể phải chờ một thời gian nếu vị trí không được hiển thị):

Trên thực tế, mô-đun GPS NEO-6M liên tục gửi dữ liệu đến vi điều khiển, dữ liệu thô này được gọi là NMEA. NMEA: Hiệp hội Điện tử Hàng hải Quốc gia.

Chúng ta có thể đọc các Nema nhưng tốt hơn là (nếu tôi có thể nói) giải code (hoặc phân tích) nó, vì lý do đó cần dùng một thư viện Arduino có tên TinyGPS ++ (TinyGPSPlus). Như họ đã nói: Thư viện này cung cấp các phương pháp nhỏ gọn và dễ sử dụng để trích xuất vị trí, ngày, thời gian, độ cao, tốc độ từ các thiết bị GPS tiêu dùng.

Thư viện TinyGPS ++ có thể được tải xuống bằng liên kết dưới đây. Sau khi tải xuống thư viện, giải nén thư mục và thêm nó vào thư mục thư viện Arduino (ví dụ: C: \ Program Files \ Arduino \ library). Bạn nên đổi tên thư mục của TinyGPSPlus.

TinyGPS++ Library  —  direct link

Ngoài ra, tôi đã sử dụng một thư viện khác có tên SoftwareSerial ( SoftwareSerial.h ) vì Arduino UNO có 1 mô-đun UART được sử dụng để liên lạc giữa nó và máy tính xách tay, chúng tôi cần một giao diện nối tiếp khác để giao tiếp giữa Arduino và NEO- Mô-đun GPS 6M, ở đây chúng ta có thể sử dụng phần mềm UART bằng thư viện tích hợp SoftwareSerial.

Code Arduino đầy đủ dưới đây.

// Interfacing Arduino with NEO-6M GPS module

#include <TinyGPS++.h>           // Include TinyGPS++ library

#include <SoftwareSerial.h>      // Include software serial library

TinyGPSPlus gps;

#define S_RX    4                // Define software serial RX pin

#define S_TX    3                // Define software serial TX pin

SoftwareSerial SoftSerial(S_RX, S_TX);    // Configure SoftSerial library

void setup(void) {

  Serial.begin(9600);

  SoftSerial.begin(9600);  

}

void loop() {

  while (SoftSerial.available() > 0) {

    if (gps.encode(SoftSerial.read())) {

      if (gps.location.isValid()) {

        Serial.print("Latitude   = ");

        Serial.println(gps.location.lat(), 6);

        Serial.print("Longitude  = ");

        Serial.println(gps.location.lng(), 6);

      }

      else

        Serial.println("Location Invalid");

      if (gps.altitude.isValid()) {

        Serial.print("Altitude   = ");

        Serial.print(gps.altitude.meters());

        Serial.println(" meters");

      }

      else

        Serial.println("Altitude Invalid");

      if (gps.speed.isValid()) {

        Serial.print("Speed      = ");

        Serial.print(gps.speed.kmph());

        Serial.println(" kmph");

      }

      else

        Serial.println("Speed Invalid");

      if (gps.time.isValid()) {

        Serial.print("Time (GMT) : ");

        if(gps.time.hour() < 10)     Serial.print("0");

        Serial.print(gps.time.hour());

        Serial.print(":");

        if(gps.time.minute() < 10)   Serial.print("0");

        Serial.print(gps.time.minute());

        Serial.print(":");

        if(gps.time.second() < 10)   Serial.print("0");

        Serial.println(gps.time.second());

      }

      else

        Serial.println("Time Invalid");

      if (gps.date.isValid()) {

        Serial.print("Date       : ");

        if(gps.date.day() < 10)      Serial.print("0");

        Serial.print(gps.date.day());

        Serial.print("/");

        if(gps.date.month() < 10)    Serial.print("0");

        Serial.print(gps.date.month());

        Serial.print("/");

        Serial.println(gps.date.year());

      }

      else

        Serial.println("Date Invalid");

      if (gps.satellites.isValid()) {

        Serial.print("Satellites = ");

        Serial.println(gps.satellites.value());

      }

      else

        Serial.println("Satellites Invalid");

    }

  }

}

Mô phỏng GPS Mô-đun Proteus:

Dự án này có thể được mô phỏng với Proteus, một thư viện nhỏ cho mô-đun GPS được thêm trong phiên bản 8.6 (và cao hơn) của phần mềm. Video nhỏ dưới đây cho thấy mô phỏng của dự án.

Tải xuống tệp mô phỏng Proteus (cho phiên bản 8.6 trở lên):

Arduino GPS

 

 

 

 

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *